@hashicorp/react-docs-page

17.9.1 • Public • Published

DocsPage

The DocsPage component lets you create a Hashicorp branded docs page in NextJS projects using next-mdx-remote. This is a very highly abstracted component with slightly more involved usage since it renders an entire collection of pages.

Example Usage

This component is intended to be used on an optional catch-all route page, like pages/docs/[[...page]].mdx - example source shown below:

import DocsPage from '@hashicorp/react-docs-page'
// Imports below are only used server-side
import { getStaticGenerationFunctions } from '@hashicorp/react-docs-page/server'

//  Set up DocsPage settings
const BASE_ROUTE = 'docs'
const NAV_DATA = 'data/docs-nav-data.json'
const CONTENT_DIR = 'content/docs'
const PRODUCT = {
  name: 'Packer',
  slug: 'packer',
}

function DocsLayout(props) {
  return (
    <DocsPage baseRoute={BASE_ROUTE} product={PRODUCT} staticProps={props} />
  )
}

const { getStaticPaths, getStaticProps } = getStaticGenerationFunctions({
  strategy: 'fs',
  navDataFile: NAV_DATA,
  localContentDir: CONTENT_DIR,
  product: PRODUCT.slug,
})

export { getStaticPaths, getStaticProps }

export default DocsLayout

This may seem like a complex example, but there is a lot going on here. The component is taking care of an entire base-level route, including an index page and its potentially hundreds of sub-pages, while providing a minimal interface surface area.

In order for the search functionality to work properly, this component requires a .env file with the following keys filled in:

NEXT_PUBLIC_ALGOLIA_APP_ID
NEXT_PUBLIC_ALGOLIA_INDEX
NEXT_PUBLIC_ALGOLIA_SEARCH_ONLY_API_KEY

Props

See props.js for more information on props.

/@hashicorp/react-docs-page/

    Package Sidebar

    Install

    npm i @hashicorp/react-docs-page

    Weekly Downloads

    468

    Version

    17.9.1

    License

    MPL-2.0

    Unpacked Size

    100 kB

    Total Files

    29

    Last publish

    Collaborators

    • abhishek-hashicorp
    • dstaley
    • cameronperera
    • alexju
    • consul-ui-services
    • wenincode-hashicorp
    • hashicb
    • britt.lindgren
    • paulhcp
    • nandereck
    • tstormk
    • hashibot-hds
    • lackeyjb1
    • youriwims
    • jpogran
    • _natmegs
    • thrashr888
    • melsumner
    • mwickett
    • didoo
    • zchsh
    • hcitsec
    • gregone
    • meirish
    • enmod
    • kaxcode
    • anubhavmishra-hashicorp
    • hashibot-web
    • cstitt-hashi
    • kstraut
    • mocohen
    • dhaulagiri