Code Monkey home page Code Monkey logo

markdown-navbar's Introduction

Markdown-Navbar

npm npm npm GitHub file size in bytes

A React component renders an interactive navbar panel of Markdown docs for your blog or website.

Demo on Netlify

Features

Implement some regular functions easily by using this component, such as:

  • Display the structure tree of your article defined by the headings.
  • Render anchors that navigate to specific headings in the article.
  • Share one URL to readers to navigate to a specific area of the article.

Install

yarn add markdown-navbar # or `npm i markdown-navbar --save`

Quickstart

Edit markdown-navbar-demo-online

import React from 'react';
import ReactDOM from 'react-dom';
// One third-part component for render markdown documentation
import ReactMarkdown from 'react-markdown';
import MarkdownNavbar from 'markdown-navbar';
// The default style of markdown-navbar should be imported additionally
import 'markdown-navbar/dist/navbar.css';

const article = `# Markdown-Navbar Demo

## Chicken Chicken

Chicken Chicken Chicken Chicken Chicken.

* Chicken Chicken Chicken Chicken Chicken.
* Chicken Chicken Chicken Chicken Chicken.
* Chicken Chicken Chicken Chicken Chicken.

### Chicken Chicken Chicken

Chicken Chicken Chicken Chicken Chicken.

#### Chicken Chicken Chicken Chicken

Chicken Chicken Chicken Chicken Chicken Chicken.`;

function App() {
  return (
    <div className="App">
      <div className="article">
        <ReactMarkdown source={article} />
      </div>
      <div className="navigation">
        <MarkdownNavbar source={article} />
      </div>
    </div>
  );
}

ReactDOM.render(<App />, document.getElementById('root'));

Tips

  • The component only parses article headings at level 2 and below. The article title, which is usually used once in an article, will not appear in the navigation bar.
  • The component needs to be used in conjunction with your article content. When using this component, you must ensure that your article under the same page content.
  • Please confirm that every heading of your markdown document is different by each other when the value of property declarative is setted as true.

Props

Property Data Type Default Value Description
className string "" The className that defines the outermost container of navbar
source string "" Markdown text content
headingTopOffset number 0 Anchor displacement relative to the top of the window (for the anchor jump)
updateHashAuto boolean true Automatically update the hash value of browser address when page scrolling if true
declarative boolean false Use the text of the title from Markdown content as the hash value for the anchor if true
ordered boolean true Whether the title contains a numerical prefix, such as: 1. 2. 2.2
onNavItemClick function (event, element, hashValue) => {} The event callback function after clicking navbar item
onHashChange function (newHash, oldHash) => {} The event callback function before the hash value of browser address changing

License

MIT license

markdown-navbar's People

Contributors

dependabot[bot] avatar nick950222 avatar parksben avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.