Skip to main content
Community Plugin
View plugin on GitHub
See starters using this

A illustration of file that is the @rocketseat/gatsby-theme-docs logo

@rocketseat/gatsby-theme-docs-core

Core theme for @rocketseat/gatsby-theme-docs with no additional theming or style opinions. Includes all of the data structures you need to get up and build a documentation website.

PRs welcome!

License Follow @rocketseat

FeaturesGetting startedUsageContributingLicense

🚀 Features

  • MDX for docs;
  • Sidebar customization with Yaml;

⚡️ Getting started

Using Yarn:

yarn add @rocketseat/gatsby-theme-docs-core

Using NPM:

npm i @rocketseat/gatsby-theme-docs-core

🔥 Usage

Theme options

Key Default Required Description
basePath / No Root url for all docs
configPath config No Location of config files
docsPath docs No The site description for SEO and social (FB, Twitter) tags
githubUrl - No The complete URL of your repository. For example: https://github/rocketseat/gatsby-themes
baseDir - No If your Gatsby site does not live in the root of your project directory/git repo, pass the subdirectory name here (docs, for example)
withMdx true No If necessary, you can add your own MDX options to the theme. To do so, make sure you turn this option to false and include gatsby-plugin-mdx on your gatsby-config
branch master No Default branch of the repository

Example usage

// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: `@rocketseat/gatsby-theme-docs-core`,
      options: {
        basePath: `documentation`,
        configPath: `config`,
        docsPath: `docs`,
        githubUrl: `https://github.com/rocketseat/gatsby-themes`,
        baseDir: `www`,
      },
    },
  ],
};

The sidebar is highly customizable, you can create a file under the config folder named sidebar.yml. If you add a basePath in the theme options, you don’t need to add it before the links, the useSidebar hook will append it.

Here is an example:

# Simple item
- label: 'Home'
  link: '/'
# With list of subitems
- label: 'With dropdown'
  items:
    - label: 'My Example'
      link: '/my-example'

useSidebar

To get all the sidebar items, you can use the useSidebar hook. Example:

import React from 'react';
import { useSidebar } from '@rocketseat/gatsby-theme-docs-core';

export default function Sidebar() {
  const data = useSidebar();

  console.log(data);
  /*
    [
      {
        "node": {
          "label": "Home",
          "link": "/",
          "items": null,
          "id": "a2913be3-af3c-5fc9-967e-a058e86b20a9"
        }
      },
      {
        "node": {
          "label": "With dropdown",
          "link": null,
          "items": [{ "label": "My Example", "link": "/my-example" }],
          "id": "c7d9606c-4bda-5097-a0df-53108e9f4efd"
        }
      }
    ]
  */
}

Docs Fields

Inside your docs folder, you can create MDX files. The filename will be the page path.

Add a title to the frontmatter of the MDX file and place the content below it. For example:

---
title: 'My Example'
description: 'A simple description for this page'
image: 'banner.png'
disableTableOfContents: false
---

Your amazing page

Every file must have a custom title. Description and image are not required.

Shadowing

Check the Shadowing in Gatsby Themes docs to understand how to customize this theme!

In general, you will need to create two files (Docs.js and Homepage.js) into src/@rocketseat/gatsby-theme-docs-core/components/templates to shadow/override it.

✨ Contributing

Thanks for being interested in contributing! We’re so glad you want to help! Please take a little bit of your time and look at our contributing guidelines and our code of conduct! All type of contributions are welcome, such as bug fixes, issues or feature requests.

📝 License

Licensed under the MIT License.


Made with 💜 by Rocketseat :wave: check our community!