[
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets).\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md).\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@1.5.0/schema.json\",\n  \"changelog\": [\n    \"@changesets/changelog-github\",\n    { \"repo\": \"jpedroschmitz/rocketdocs\" }\n  ],\n  \"commit\": false,\n  \"linked\": [\n    [\"@rocketseat/gatsby-theme-docs\", \"@rocketseat/gatsby-theme-docs-core\"]\n  ],\n  \"access\": \"public\",\n  \"baseBranch\": \"main\",\n  \"updateInternalDependencies\": \"patch\",\n  \"ignore\": [\"gatsby-starter-rocketdocs\"]\n}\n"
  },
  {
    "path": ".commitlintrc.json",
    "content": "{\n  \"extends\": [\"@commitlint/config-conventional\"]\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\ncharset = utf-8\nend_of_line = lf\ntrim_trailing_whitespace = true\ninsert_final_newline = true"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"parserOptions\": {\n    \"ecmaVersion\": 2020,\n    \"sourceType\": \"module\",\n    \"ecmaFeatures\": {\n      \"jsx\": true\n    }\n  },\n  \"plugins\": [\"import\", \"jsx-a11y\", \"react\", \"react-hooks\", \"prettier\"],\n  \"extends\": [\"plugin:react/recommended\", \"airbnb\", \"prettier\"],\n  \"rules\": {\n    \"prettier/prettier\": \"error\",\n    \"react/jsx-filename-extension\": [\n      \"warn\",\n      {\n        \"extensions\": [\".jsx\", \".js\"]\n      }\n    ],\n    \"import/prefer-default-export\": \"off\",\n    \"no-param-reassign\": \"off\",\n    \"react/jsx-one-expression-per-line\": \"off\",\n    \"react/jsx-props-no-spreading\": \"off\",\n    \"react/forbid-prop-types\": \"off\",\n    \"react/jsx-fragments\": \"off\",\n    \"react/function-component-definition\": [\n      2,\n      {\n        \"namedComponents\": \"function-declaration\"\n      }\n    ]\n  },\n  \"env\": {\n    \"browser\": true,\n    \"jest\": true,\n    \"node\": true\n  }\n}\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "# Learn how to add code owners here:\n# https://help.github.com/en/articles/about-code-owners\n\n*                @jpedroschmitz\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Code of Conduct\n\nThis Code of Conduct outlines our expectations for participants within the community as well as steps to reporting unacceptable behavior. Our goal is to make explicit what we expect from participants in this community as well as its leaders. We are committed to providing a welcoming and inspiring community for all and expect our code of conduct to be honored. Anyone who violates this code of conduct may be banned from the community.\n\nOur community strives to:\n\n- **Be welcoming, friendly and patient**.\n- **Be considerate**: Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that you might not be communicating in someone else’s primary language.\n- **Be respectful**: Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.\n- **Be understandable**: Disagreements, both social and technical, happen all the time and this project is no exception. It is important that we resolve disagreements and differing views constructively. Remember that we're different. The strength of our project comes from its varied community, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn't mean that they're wrong. Don't forget that it is human to err and blaming each other doesn't get us anywhere, rather offer to help resolving issues and to help learn from mistakes.\n\nThis code serves to distill our common understanding of a collaborative, shared environment, and goals. We expect it to be followed in spirit as much as in the letter.\n\n### Diversity Statement\n\nWe encourage everyone to participate and are committed to building a community for all. Although we may not be able to satisfy everyone, we all agree that everyone is equal. Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong.\n\nAlthough this list cannot be exhaustive, we explicitly honor diversity in age, gender, gender identity or expression, culture, ethnicity, language, national origin, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, and technical ability. We will not tolerate discrimination based on any of the protected characteristics above, including participants with disabilities.\n\n### Reporting Issues\n\nIf you experience or witness unacceptable behavior—or have any other concerns—please report it by contacting us via hey@joaopedro.dev. All reports will be handled with discretion. In your report please include:\n\n- Your contact information.\n- Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional witnesses, please include them as well. Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record, please include a link.\n- Any additional information that may be helpful.\n\nAfter filing a report, a representative will contact you personally. If the person who is harassing you is part of the response team, they will recuse themselves from handling your incident. A representative will then review the incident, follow up with any additional questions, and make a decision as to how to respond. We will respect confidentiality requests for the purpose of protecting victims of abuse.\n\nAnyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the representative may take any action they deem appropriate, up to and including a permanent ban from our community without warning.\n\n_This Code Of Conduct follows the template established by [TODO Group](https://todogroup.org)_.\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Contribution guidelines\n\n## Table of Contents\n\n- [Getting started](#getting-started)\n  - [Language](#language)\n    - [For native English speakers](#for-native-english-speakers)\n  - [Code of Conduct](#code-of-conduct)\n- [How can I help?](#how-can-i-help)\n  - [Documentation](#documentation)\n  - [Issues](#issues)\n    - [Submitting an issue](#submitting-an-issue)\n  - [Feedback](#feedback)\n  - [Code](#code)\n    - [Prerequisites](#prerequisites)\n    - [Local Development](#local-development)\n- [Commiting](#commiting)\n  - [Why all these rules?](#why-all-these-rules)\n- [Pull Requests](#pull-requests)\n  - [Changesets](#changesets)\n\n## Getting started\n\nFirst off, we would like to thank you for taking the time to contribute and make this a better project!\n\nHere we have a set of instructions and guidelines to reduce misunderstandings and make the process of contributing to Rocket Docs as smooth as possible.\n\nWe hope this guide makes the contribution process clear and answers any questions you may have.\n\n### Language\n\nPlease, while contributing or interacting in any way in this project, refrain from using any language other than **English**.\n\n#### For native English speakers\n\nTry to use simple words and sentences. Don't make fun of non-native English speakers if you find something wrong about the way they express themselves.\n\nTry to encourage newcomers to express their opinions, and make them comfortable enough to do so.\n\n### Code of Conduct\n\nWe expect that project participants to adhere to our Code of Conduct. You can check the [full text](CODE_OF_CONDUCT.md) so that you may understand the kind of conduct we are expecting and what actions will and will not be tolerated.\n\nBy participating in this project, you agree to abide by its terms.\n\n## How can I help?\n\nHere are some ways you can help along with some guidelines.\n\n### Documentation\n\nAs a user of our themes, you're the perfect candidate to help us improve our documentation!\n\nTypos, errors, lack of examples and/or explanation and so on, are just some examples of things that could be fixed and/or improved.\n\nYou could even make improvements to this guide! :)\n\nWhile documenting, try to keep things simple and clear.\n\n### Issues\n\nSome issues are created with missing information, without a template, not reproducible, or plain\ninvalid.\n\nYou can make them easier to understand and resolve.\n\n#### Submitting an issue\n\n- Please search for similar issues before opening a new one;\n- Use one of the corresponding issue templates;\n- Use a clear and descriptive title;\n- Include as much information as possible by filling out the provided issue template;\n\n### Feedback\n\nThe more feedback the better! We're always looking for more suggestions and opinions on discussions. That's a good opportunity to influence the future direction of this project.\n\nThis includes submitting an enhancement suggestion, including completely new features and minor improvements to existing functionality.\n\n### Code\n\nYou can use issue labels to discover issues you could help out with:\n\n- [`bug` issues](https://github.com/jpedroschmitz/rocketdocs/labels/kind%3A%20bug)\n  are known bugs we'd like to fix;\n- [`enhancement` issues](https://github.com/jpedroschmitz/rocketdocs/labels/type%3A%20feature%20request)\n  are features we're open to include.\n\nThe\n[`help wanted`](https://github.com/jpedroschmitz/rocketdocs/labels/help%20wanted)\nand\n[`good first issue`](https://github.com/jpedroschmitz/rocketdocs/labels/good%20first%20issue)\nlabels are especially useful.\n\nWhen you see an issue that is already assigned, please check to see if there isn't someone working on it already (maybe try asking in the issue). This is to prevent unnecessary work for everyone involved.\n\n#### Prerequisites\n\n- [Node.js](http://nodejs.org/) >= v12 must be installed.\n- [Yarn](https://yarnpkg.com/en/docs/install)\n\n#### Local Development\n\nThis repository uses [Yarn Workspaces][] and [changesets][] to develop multiple packages together as a monorepo. Be sure to install [Yarn][] before setting up the development environment.\n\nTo get started, clone the repository:\n\n```sh\ngit clone git@github.com:LekoArts/gatsby-themes.git --depth=1\n```\n\nInstall the dependencies:\n\n```sh\nyarn\n```\n\nAfter yarn has linked packages and installed the dependencies in the repo, you can inspect the locally available workspaces with:\n\n```sh\nyarn workspaces info\n```\n\nAs all themes are set up with a respective example page (to view the theme/changes), you could for example run the \"@rocketseat/gatsby-theme-docs\" workspace with the example \"rocketdocs\" like:\n\n```sh\nyarn workspace gatsby-starter-rocketdocs start\n```\n\n## Commiting\n\nWhen commiting on the repository, make sure to use the [Commitizen CLI](https://www.npmjs.com/package/commitizen) by using the `yarn commit` command. It will format your commit message following the configuration we have defined.\n\n### Why all these rules?\n\nWe try to enforce these rules for the following reasons:\n\n- Automatically generating changelog;\n- Communicating in a better way the nature of changes;\n- Triggering build and publish processes;\n- Automatically determining a semantic version bump (based on the types of commits);\n- Making it easier for people to contribute, by allowing them to explore a more structured commit history.\n\n## Pull Requests\n\nWhen opening a pull request, please be sure to update any relevant documentation in the READMEs or write some additional tests to ensure functionality. Also include a high-level list of changes.\n\n### Changesets\n\nThis repository uses [changesets][] to do versioning. What that means for contributors is that you need to add a changeset by running `yarn changeset` which contains what packages should be bumped, their associated semver bump types, and some markdown which will be inserted into changelogs.\n\n[yarn workspaces]: https://yarnpkg.com/en/docs/workspaces\n[changesets]: https://github.com/atlassian/changesets\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\n---\n\n<!-- Verify first that your issue is not already reported -->\n\n<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks! -->\n\n<!-- If possible complete *all* sections as described. Don't remove any section. -->\n\n**Description of bug**\n\n<!-- A clear and concise description of what the bug is. -->\n\n**To Reproduce**\n\n<!--\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n-->\n\n**Expected behavior**\n\n<!-- A clear and concise description of what you expected to happen. -->\n\n**Exception or Error**\n\n<pre><code>\n<!-- If the issue is accompanied by an exception or an error, please share it below: -->\n<!-- ✍️-->\n</code></pre>\n\n**Screenshots**\n\n<!-- If applicable, add screenshots to help explain your problem. -->\n\n**Environment:**\n\n<!--\n Add information about your environment\n - OS: [e.g. iOS, Ubuntu]\n - Browser [e.g. Chrome (69.0.3472.3), Firefox (62.0.3)]\n - Node [e.g 8.9.1]\n - Etc\n If you want, you can also run `gatsby info` in the terminal\n-->\n\n**Additional context**\n\n<!-- Add any other context about the problem here. -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/documentation-report.md",
    "content": "---\nname: Documentation report\nabout: Use this template for documentation related issues\n---\n\n<!-- Verify first that your issue is not already reported -->\n\n<!-- Please only use this template for documentation related issues -->\n\n<!-- If possible complete *all* sections as described. Don't remove any section. -->\n\n**Description of issue**\n\n<!-- A clear description what needs changing, why should it be changed? How is it useful? -->\n\n**Usage example**\n\n<!-- Is there a usage example? -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/enhancement-request.md",
    "content": "---\nname: Enhancement request\nabout: Suggest an idea for this project\n---\n\n<!-- Verify first that your issue is not already reported -->\n\n<!-- Please only use this template for submitting enhancement requests -->\n\n<!-- If possible complete *all* sections as described. Don't remove any section. -->\n\n**What would you like to be added**:\n\n<!-- A clear and concise description of what would you like to be added. -->\n\n**Why is this needed**:\n\n<!-- A clear and concise description of why is it needed. -->\n\n**Is your enhancement request related to a problem? Please describe.**\n\n<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->\n\n**Additional context**\n\n<!-- Add any other context or screenshots about the enhancement request here. -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.md",
    "content": "---\nname: Question 🤔\nabout: Usage question or discussion about Gatsby.\n---\n\n<!--\n  To make it easier for us to help you, please include as much useful information as possible.\n\n  You can also chat with us on our forum: https://github.com/jpedroschmitz/rocketdocs/discussions\n\n  Before opening a new issue, please search existing issues.\n-->\n\n## Summary\n\n## Relevant information\n\n<!-- Provide as much useful information as you can -->\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE",
    "content": "<!-- If this is your first time, please read our contribution guidelines: (https://github.com/jpedroschmitz/rocketdocs/blob/main/.github/CONTRIBUTING.md) -->\n\n<!-- Verify first that your pull request is not already proposed -->\n\n<!-- Refrain from using any language other than English -->\n\n<!-- If possible complete *all* sections as described. Don't remove any section. -->\n\n**Changes proposed**\n<!--- Describe the change below, including rationale and design decisions -->\n\n<!--- Include \"Fixes #[issue_number]\" if you are fixing an existing issue -->\n\n**Additional context**\n<!-- Add any other context or screenshots about the feature request here. -->\n"
  },
  {
    "path": ".github/labeler.json",
    "content": "{\n  \"labels\": {\n    \"type: ci\": [\".github/workflows/**\"],\n    \"type: meta\": [\".github/**\"],\n    \"type: example\": [\"examples/**\"],\n    \"type: gatsby-theme-docs\": [\"@rocketseat/gatsby-theme-docs/**\"],\n    \"type: gatsby-theme-docs-core\": [\"@rocketseat/gatsby-theme-docs-core/**\"]\n  }\n}\n"
  },
  {
    "path": ".github/lock.yml",
    "content": "# Configuration for lock-threads - https://github.com/dessant/lock-threads\n\ndaysUntilLock: 365\nissue-lock-labels: 'outdated'\nlockComment: false\n"
  },
  {
    "path": ".github/workflows/commit.yml",
    "content": "name: Lint commit\n\non: pull_request\n\njobs:\n  commit:\n    name: Lint commit messages\n    runs-on: ubuntu-latest\n\n    env:\n      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Set up Node\n        uses: actions/setup-node@v3\n        with:\n          node-version: lts/*\n\n      - name: Install dependencies\n        uses: bahmutov/npm-install@v1\n\n      - name: Check commit message\n        uses: wagoid/commitlint-github-action@v1\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "name: Lint\n\non: pull_request\n\njobs:\n  code:\n    name: Lint code\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Set up Node\n        uses: actions/setup-node@v3\n        with:\n          node-version: lts/*\n\n      - name: Install dependencies\n        uses: bahmutov/npm-install@v1\n\n      - name: Run ESLint\n        run: yarn lint\n"
  },
  {
    "path": ".github/workflows/publish-starters.yml",
    "content": "name: Publish Starters\n\non:\n  workflow_dispatch:\n\njobs:\n  publish-starters:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Set up Node\n        uses: actions/setup-node@v3\n        with:\n          node-version: lts/*\n\n      - name: publish:starters\n        uses: LekoArts/actions-push-subdirectories@master\n        env:\n          API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          args: examples jpedroschmitz starter-name\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  release:\n    name: Release\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Set up Node\n        uses: actions/setup-node@v3\n        with:\n          node-version: lts/*\n\n      - name: Install dependencies\n        uses: bahmutov/npm-install@v1\n\n      - name: Create Release Pull Request or Publish to npm\n        id: changesets\n        uses: changesets/action@v1\n        with:\n          commit: 'chore(release): publish'\n          title: 'Changesets: Version Packages'\n          publish: yarn release\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Typescript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# dotenv environment variables file\n.env\n\n# gatsby files\n.cache/\npublic\n\n# Mac files\n.DS_Store\n\n# Yarn\nyarn-error.log\n.pnp/\n.pnp.js\n# Yarn Integrity file\n.yarn-integrity\n\n.netlify/\n\n# Editors\n.vscode/*\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n\n# NPM lock files\npackage-lock.json\n"
  },
  {
    "path": ".husky/.gitignore",
    "content": "_\n"
  },
  {
    "path": ".husky/commit-msg",
    "content": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\nyarn commitlint --edit $1\n"
  },
  {
    "path": ".husky/common.sh",
    "content": "command_exists () {\n  command -v \"$1\" >/dev/null 2>&1\n}\n\n# Workaround for Windows 10, Git Bash and Yarn\nif command_exists winpty && test -t 1; then\n  exec < /dev/tty\nfi\n"
  },
  {
    "path": ".husky/pre-commit",
    "content": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\nyarn lint-staged\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"printWidth\": 80,\n  \"semi\": true,\n  \"singleQuote\": true,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"all\"\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/.npmignore",
    "content": ".cache/\nnode_modules/\npublic/\n\n.vscode\n.DS_Store\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/CHANGELOG.md",
    "content": "# @rocketseat/gatsby-theme-docs\n\n## 4.0.1\n\n### Patch Changes\n\n- [#156](https://github.com/jpedroschmitz/rocketdocs/pull/156) [`10de666`](https://github.com/jpedroschmitz/rocketdocs/commit/10de6661b08f5c9551c223ef26f027dbb18aa8e2) Thanks [@tekmaven](https://github.com/tekmaven)! - Fix peerDependencies to React 18\n\n## 4.0.0\n\n### Major Changes\n\n- [#150](https://github.com/jpedroschmitz/rocketdocs/pull/150) [`ed4b5b3`](https://github.com/jpedroschmitz/rocketdocs/commit/ed4b5b31dd60f732abced13d09df97671e9af828) Thanks [@tekmaven](https://github.com/tekmaven)! - Upgrade to Gatsby v5\n\n### Patch Changes\n\n- Updated dependencies [[`ed4b5b3`](https://github.com/jpedroschmitz/rocketdocs/commit/ed4b5b31dd60f732abced13d09df97671e9af828)]:\n  - @rocketseat/gatsby-theme-docs-core@4.0.0\n\n## 3.2.0\n\n### Minor Changes\n\n- [#146](https://github.com/jpedroschmitz/rocketdocs/pull/146) [`a4903ae`](https://github.com/jpedroschmitz/rocketdocs/commit/a4903ae1f5bb24cdb075b15f374135e7da554511) Thanks [@aaronamm](https://github.com/aaronamm)! - Add `gatsbyRemarkPlugins` option\n\n### Patch Changes\n\n- Updated dependencies [[`a4903ae`](https://github.com/jpedroschmitz/rocketdocs/commit/a4903ae1f5bb24cdb075b15f374135e7da554511)]:\n  - @rocketseat/gatsby-theme-docs-core@3.2.0\n\n## 3.1.0\n\n### Minor Changes\n\n- [#124](https://github.com/jpedroschmitz/rocketdocs/pull/124) [`c4f8d21`](https://github.com/jpedroschmitz/rocketdocs/commit/c4f8d213010b61f20183632f9fc407fb659c151d) Thanks [@aaronamm](https://github.com/aaronamm)! - Support additional YAML files\n\n### Patch Changes\n\n- Updated dependencies [[`c4f8d21`](https://github.com/jpedroschmitz/rocketdocs/commit/c4f8d213010b61f20183632f9fc407fb659c151d)]:\n  - @rocketseat/gatsby-theme-docs-core@3.1.0\n\n## 3.0.0\n\n### Major Changes\n\n- [#109](https://github.com/jpedroschmitz/rocketdocs/pull/109) [`0ef266e`](https://github.com/jpedroschmitz/rocketdocs/commit/0ef266ef3ba56d690759fc270dcea21ba31b74aa) Thanks [@thinkybeast](https://github.com/thinkybeast)! - Add support for Gatsby v4\n\n### Patch Changes\n\n- [#113](https://github.com/jpedroschmitz/rocketdocs/pull/113) [`3c2acfc`](https://github.com/jpedroschmitz/rocketdocs/commit/3c2acfc89f89a9d94643b8fcb4b7694a7c4c1031) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - Update dependencies to their latest version\n\n* [#115](https://github.com/jpedroschmitz/rocketdocs/pull/115) [`528373b`](https://github.com/jpedroschmitz/rocketdocs/commit/528373be3002558fbc0e16436f2b937724268a91) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - fix: createPages only for docs content\n  chore: update dev dependencies\n* Updated dependencies [[`3c2acfc`](https://github.com/jpedroschmitz/rocketdocs/commit/3c2acfc89f89a9d94643b8fcb4b7694a7c4c1031), [`528373b`](https://github.com/jpedroschmitz/rocketdocs/commit/528373be3002558fbc0e16436f2b937724268a91)]:\n  - @rocketseat/gatsby-theme-docs-core@3.0.0\n\n## 2.4.0\n\n### Minor Changes\n\n- [#92](https://github.com/jpedroschmitz/rocketdocs/pull/92) [`fa2cc45`](https://github.com/jpedroschmitz/rocketdocs/commit/fa2cc45f23a387737c6207bad8fac1ce3f4d75b0) Thanks [@benomatis](https://github.com/benomatis)! - Allow changing font family\n\n## 2.4.0\n\n### Minor Changes\n\n- [#84](https://github.com/jpedroschmitz/rocketdocs/pull/84) [`52ea0430`](https://github.com/jpedroschmitz/rocketdocs/pull/84/commits/52ea043013226279e92e79a06beb25fb3b599fc1) - Allow changing font family\n\n## 2.3.3\n\n### Patch Changes\n\n- [#101](https://github.com/jpedroschmitz/rocketdocs/pull/101) [`14d6c25`](https://github.com/jpedroschmitz/rocketdocs/commit/14d6c251ee713812ef98d3e222cd87628c4ec070) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - Updated dependencies: @rocketseat/gatsby-theme-docs-core@2.3.2\n\n## 2.3.1\n\n### Patch Changes\n\n- [#84](https://github.com/jpedroschmitz/rocketdocs/pull/84) [`c6c4ada`](https://github.com/jpedroschmitz/rocketdocs/commit/c6c4ada2d468b95a91bcbeb7ef1360a2f15f5c5d) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - fix repositoryUrl option as required field\n\n- Updated dependencies [[`4a1dd6d`](https://github.com/jpedroschmitz/rocketdocs/commit/4a1dd6d016e4ed973e54df4a8c6a60f6e900ffbb)]:\n  - @rocketseat/gatsby-theme-docs-core@2.3.1\n\n## 2.3.0\n\n### Minor Changes\n\n- [#74](https://github.com/jpedroschmitz/rocketdocs/pull/74) [`22c1ce3`](https://github.com/jpedroschmitz/rocketdocs/commit/22c1ce3124e540d51cac50f21b71e9eaf21524b3) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - **New**\n\n  - feat: add support for Gatsby v3\n  - feat: add repositoryUrl option to theme (#47)\n\n  **Docs**\n\n  - docs: add more examples of theme usage\n  - docs: rename master to main\n\n  **Other**\n\n  - chore(deps): update packages\n  - refactor: change colors for blockquote\n\n### Patch Changes\n\n- Updated dependencies [[`22c1ce3`](https://github.com/jpedroschmitz/rocketdocs/commit/22c1ce3124e540d51cac50f21b71e9eaf21524b3)]:\n  - @rocketseat/gatsby-theme-docs-core@2.3.0\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2021 João Pedro Schmitz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/README.md",
    "content": "<p align=\"center\">\n  <img src=\"https://rocketseat-cdn.s3-sa-east-1.amazonaws.com/theme-docs.svg\" alt=\"A illustration of file that is the @rocketseat/gatsby-theme-docs logo\" width=\"100\">\n</p>\n\n<h2 align=\"center\">\n  @rocketseat/gatsby-theme-docs\n</h2>\n\n<p align=\"center\">\n  Out of the box Gatsby Theme for creating documentation websites easily and quickly.\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/PRs-welcome-%238257E6.svg\" alt=\"PRs welcome!\" />\n\n  <img alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-%238257E6\">\n\n  <a href=\"https://twitter.com/intent/follow?screen_name=jpedroschmitz\">\n    <img src=\"https://img.shields.io/twitter/follow/jpedroschmitz.svg?label=Follow%20@jpedroschmitz\" alt=\"Follow @jpedroschmitz\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#-features\">Features</a> •\n  <a href=\"#-getting-started\">Getting started</a> •\n  <a href=\"#-docs\">Docs</a> •\n  <a href=\"#-contributing\">Contributing</a> •\n  <a href=\"#-license\">License</a>\n</p>\n\n## 🚀 Features\n\n- 📝 MDX for docs;\n- 🛣 Yaml-based sidebar navigation;\n- 📱 Responsive and mobile friendly;\n- 🖥 Code highlighting with [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) and [react-live](https://github.com/FormidableLabs/react-live) support;\n- 🥇 SEO (Sitemap, schema.org data, Open Graph and Twitter tags).\n- 📈 Google Analytics support;\n- 📄 Custom docs schema;\n- 🖱 Table of Contents;\n- ⚡️ Offline Support & WebApp Manifest;\n- and much more 🔥\n\n## ⚡️ Getting started\n\n1. Create the website.\n\n   ```sh\n   npx gatsby new rocketdocs https://github.com/jpedroschmitz/gatsby-starter-rocketdocs\n   ```\n\n2. Start developing.\n\n   ```sh\n   cd rocketdocs\n   gatsby develop\n   ```\n\n3. Are you ready for launch? 🚀\n\n   Your site is now running at `http://localhost:8000`\n\n## 📄 Docs\n\nLooking for docs? Check our live demo and documentation [website](https://rocketdocs.netlify.app).\n\n## ✨ Contributing\n\nThanks 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](https://github.com/jpedroschmitz/rocketdocs/blob/main/.github/CONTRIBUTING.md) and our\n[code of conduct](https://github.com/jpedroschmitz/rocketdocs/blob/main/.github/CODE_OF_CONDUCT.md)! All type of contributions are welcome, such as bug fixes, issues or feature requests.\n\n## 🗺 Changelog\n\nAll notable changes to this project will be documented on the [CHANGELOG](https://github.com/jpedroschmitz/rocketdocs/blob/main/%40rocketseat/gatsby-theme-docs/CHANGELOG.md) file.\n\n## 📝 License\n\nLicensed under the [MIT License](https://github.com/jpedroschmitz/rocketdocs/blob/main/%40rocketseat/gatsby-theme-docs/LICENSE).\n\n---\n\nMade with 💜 by João Pedro\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/gatsby/wrapPageElement.js",
    "content": "/* eslint-disable */\nimport React from 'react';\nimport { MDXProvider } from '@mdx-js/react';\n\nimport Code from '../src/components/Code';\n\nconst preToCodeBlock = (preProps) => {\n  if (\n    // children is code element\n    preProps.children &&\n    // if children is actually a <code>\n    preProps.children.type &&\n    preProps.children.type.name &&\n    preProps.children.type.name === 'code'\n  ) {\n    // we have a <pre><code> situation\n    const {\n      children: codeString,\n      className = '',\n      ...props\n    } = preProps.children.props;\n\n    const match = className.match(/language-([\\0-\\uFFFF]*)/);\n\n    return {\n      codeString: codeString.trim(),\n      className,\n      language: match != null ? match[1] : '',\n      ...props,\n    };\n  }\n  return undefined;\n};\n\nconst components = {\n  pre: (preProps) => {\n    const props = preToCodeBlock(preProps);\n\n    if (props) {\n      return <Code {...props} />;\n    }\n\n    return <pre {...preProps} />;\n  },\n  code: (props) => <code className=\"inline-code\" {...props} />,\n  table: ({ children, ...rest }) => (\n    <div style={{ overflowX: `auto` }}>\n      <table {...rest}>{children}</table>\n    </div>\n  ),\n};\n\nexport function wrapPageElement({ element }) {\n  return <MDXProvider components={components}>{element}</MDXProvider>;\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/gatsby/wrapRootElement.js",
    "content": "/* eslint-disable */\nimport React from 'react';\nimport { ThemeProvider } from '@emotion/react';\n\nimport defaultTheme from '../src/styles/theme';\nimport GlobalStyle from '../src/styles/global';\n\nexport function wrapRootElement({ element }) {\n  return (\n    <ThemeProvider theme={defaultTheme}>\n      <>\n        <GlobalStyle />\n        {element}\n      </>\n    </ThemeProvider>\n  );\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/gatsby-browser.js",
    "content": "export { wrapRootElement } from './gatsby/wrapRootElement';\nexport { wrapPageElement } from './gatsby/wrapPageElement';\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/gatsby-config.js",
    "content": "const withDefault = require('@rocketseat/gatsby-theme-docs-core/util/with-default');\n\nmodule.exports = (options) => {\n  const themeOptions = withDefault(options);\n\n  return {\n    siteMetadata: {\n      defaultTitle: `Rocket Docs by João Pedro Schmitz`,\n      siteTitle: `Rocket Docs`,\n      siteTitleShort: `Rocket Docs`,\n      siteDescription: `Easy to use Gatsby Theme to create documentation websites`,\n      siteUrl: `https://rocketdocs.netlify.app`,\n      siteAuthor: `@jpedroschmitz`,\n      siteImage: `/banner.png`,\n      siteLanguage: `en`,\n      basePath: themeOptions.basePath,\n      docsPath: themeOptions.docsPath,\n    },\n    plugins: [\n      {\n        resolve: `gatsby-source-filesystem`,\n        options: {\n          name: `homepage`,\n          path: themeOptions.homePath || `${__dirname}/src/text`,\n        },\n      },\n      {\n        resolve: `@rocketseat/gatsby-theme-docs-core`,\n        options: themeOptions,\n      },\n      `gatsby-plugin-catch-links`,\n      `gatsby-plugin-emotion`,\n      `gatsby-plugin-react-helmet`,\n    ].filter(Boolean),\n  };\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/gatsby-ssr.js",
    "content": "export { wrapRootElement } from './gatsby/wrapRootElement';\nexport { wrapPageElement } from './gatsby/wrapPageElement';\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/index.js",
    "content": "// beep\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/package.json",
    "content": "{\n  \"name\": \"@rocketseat/gatsby-theme-docs\",\n  \"version\": \"4.0.1\",\n  \"main\": \"index.js\",\n  \"description\": \"Out of the box Gatsby Theme for creating documentation websites easily and quickly.\",\n  \"author\": \"João Pedro Schmitz <hey@joaopedro.dev> (@jpedroschmitz)\",\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"keywords\": [\n    \"documentation\",\n    \"open source\",\n    \"gatsby\",\n    \"gatsby-plugin\",\n    \"gatsby-theme\",\n    \"react\",\n    \"docs\",\n    \"mdx\"\n  ],\n  \"homepage\": \"https://github.com/jpedroschmitz/rocketdocs/tree/main/@rocketseat/gatsby-theme-docs#readme\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jpedroschmitz/rocketdocs.git\",\n    \"directory\": \"@rocketseat/gatsby-theme-docs\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/jpedroschmitz/rocketdocs/issues\"\n  },\n  \"dependencies\": {\n    \"@emotion/react\": \"^11.11.0\",\n    \"@emotion/styled\": \"^11.11.0\",\n    \"@mdx-js/react\": \"^2.3.0\",\n    \"@rocketseat/gatsby-theme-docs-core\": \"^4.0.0\",\n    \"gatsby-plugin-catch-links\": \"^5.9.0\",\n    \"gatsby-plugin-emotion\": \"^8.9.0\",\n    \"gatsby-plugin-mdx\": \"^5.9.0\",\n    \"gatsby-plugin-react-helmet\": \"^6.9.0\",\n    \"mdx-utils\": \"^0.2.0\",\n    \"parse-numeric-range\": \"^1.3.0\",\n    \"polished\": \"^4.2.2\",\n    \"prism-react-renderer\": \"^1.2.1\",\n    \"prop-types\": \"^15.8.1\",\n    \"react-helmet\": \"^6.1.0\",\n    \"react-icons\": \"^4.8.0\",\n    \"react-live\": \"^4.0.1\",\n    \"react-use\": \"^17.4.0\",\n    \"url-join\": \"^4.0.1\"\n  },\n  \"peerDependencies\": {\n    \"gatsby\": \"^5.0.0\",\n    \"react\": \"^18.0.0\",\n    \"react-dom\": \"^18.0.0\"\n  }\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/@rocketseat/gatsby-theme-docs-core/components/Docs.js",
    "content": "/* eslint-disable react/prop-types */\nimport React from 'react';\nimport Docs from '../../../components/Docs';\n\nexport default function Docspage({ data: { mdx }, pageContext, children }) {\n  return (\n    <Docs mdx={mdx} pageContext={pageContext}>\n      {children}\n    </Docs>\n  );\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/@rocketseat/gatsby-theme-docs-core/components/Homepage.js",
    "content": "/* eslint-disable react/prop-types */\nimport React from 'react';\nimport Home from '../../../components/Homepage';\n\nexport default function Homepage({ children }) {\n  return <Home>{children}</Home>;\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Code/LiveCodeScope.js",
    "content": "import { css, jsx } from '@emotion/react';\n\nexport default {\n  css,\n  jsx,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Code/index.js",
    "content": "import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Highlight, { defaultProps } from 'prism-react-renderer';\nimport rangeParser from 'parse-numeric-range';\nimport theme from 'prism-react-renderer/themes/dracula';\nimport { LiveProvider, LiveEditor } from 'react-live';\n\nimport { copyToClipboard } from '../../util/copy-to-clipboard';\nimport scope from './LiveCodeScope';\nimport {\n  CopyCode,\n  LineNo,\n  Pre,\n  PreHeader,\n  LiveWrapper,\n  LivePreview,\n  LiveError,\n  StyledEditor,\n} from './styles';\n\nconst calculateLinesToHighlight = (meta) => {\n  const RE = /{([\\d,-]+)}/;\n\n  if (RE.test(meta)) {\n    const strlineNumbers = RE.exec(meta)[1];\n    const lineNumbers = rangeParser(strlineNumbers);\n    return (index) => lineNumbers.includes(index + 1);\n  }\n\n  return () => false;\n};\n\nexport default function CodeHighlight({\n  codeString,\n  className,\n  live,\n  highlight,\n  title,\n  lineNumbers,\n}) {\n  const [copied, setCopied] = useState(false);\n  const language = className && className.replace(/language-/, '');\n\n  const shouldHighlightLine = calculateLinesToHighlight(highlight);\n\n  const handleClick = () => {\n    setCopied(true);\n    copyToClipboard(codeString);\n\n    setTimeout(() => {\n      setCopied(false);\n    }, 4000);\n  };\n\n  if (live) {\n    return (\n      <LiveProvider\n        code={codeString}\n        noInline\n        theme={theme}\n        transformCode={(code) => `/** @jsx mdx */${code}`}\n        scope={scope}\n      >\n        <LiveWrapper>\n          <LivePreview />\n\n          <StyledEditor>\n            <CopyCode onClick={handleClick} disabled={copied} hasTitle>\n              {copied ? 'Copied!' : 'Copy'}\n            </CopyCode>\n\n            <LiveEditor />\n          </StyledEditor>\n\n          <LiveError />\n        </LiveWrapper>\n      </LiveProvider>\n    );\n  }\n\n  return (\n    <>\n      {title && <PreHeader>{title}</PreHeader>}\n      <div className=\"gatsby-highlight\">\n        <Highlight\n          {...defaultProps}\n          code={codeString}\n          language={language}\n          theme={theme}\n        >\n          {({\n            className: blockClassName,\n            style,\n            tokens,\n            getLineProps,\n            getTokenProps,\n          }) => (\n            <Pre\n              className={blockClassName}\n              style={style}\n              hasTitle={title}\n              hasLanguage={!!language}\n            >\n              <CopyCode\n                onClick={handleClick}\n                disabled={copied}\n                hasTitle={title}\n              >\n                {copied ? 'Copied!' : 'Copy'}\n              </CopyCode>\n              <code>\n                {tokens.map((line, index) => {\n                  const lineProps = getLineProps({ line, key: index });\n\n                  if (shouldHighlightLine(index)) {\n                    lineProps.className = `${lineProps.className} highlight-line`;\n                  }\n\n                  return (\n                    <div {...lineProps}>\n                      {lineNumbers && <LineNo>{index + 1}</LineNo>}\n                      {line.map((token, key) => (\n                        <span {...getTokenProps({ token, key })} />\n                      ))}\n                    </div>\n                  );\n                })}\n              </code>\n            </Pre>\n          )}\n        </Highlight>\n      </div>\n    </>\n  );\n}\n\nCodeHighlight.propTypes = {\n  codeString: PropTypes.string.isRequired,\n  className: PropTypes.string.isRequired,\n  highlight: PropTypes.string,\n  live: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  title: PropTypes.string,\n  lineNumbers: PropTypes.string,\n};\n\nCodeHighlight.defaultProps = {\n  live: false,\n  title: null,\n  lineNumbers: null,\n  highlight: null,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Code/styles.js",
    "content": "import styled from '@emotion/styled';\nimport { darken } from 'polished';\nimport {\n  LiveError as AuxLiveError,\n  LivePreview as AuxLivePreview,\n} from 'react-live';\n\nexport const Pre = styled.pre`\n  text-align: left;\n  padding: ${({ hasLanguage }) => (hasLanguage ? `2rem` : `1rem`)} 1rem 1rem\n    1rem;\n  overflow: auto;\n  white-space: pre;\n  word-spacing: normal;\n  word-break: normal;\n  border-radius: ${({ hasTitle }) => (hasTitle ? '0 0 5px 5px' : '5px')};\n  -webkit-overflow-scrolling: touch;\n  overflow-wrap: break-word;\n  box-shadow: 1px 1px 20px rgba(20, 20, 20, 0.27);\n\n  code {\n    float: left;\n    min-width: 100%;\n    padding-right: 1rem;\n  }\n\n  .token-line {\n    line-height: 22px;\n    font-size: 14px;\n    min-width: 100%;\n  }\n\n  .highlight-line {\n    background-color: #44475a;\n    margin-left: -1rem;\n    margin-right: -2rem;\n    padding: 0 0.75rem;\n    border-left: 4px solid ${({ theme }) => theme.colors.primary};\n  }\n`;\n\nexport const LiveWrapper = styled.div`\n  border-radius: 5px;\n  box-shadow: 1px 1px 20px rgba(20, 20, 20, 0.27);\n  overflow: hidden;\n  margin-bottom: 32px;\n`;\n\nexport const StyledEditor = styled.div`\n  font-family: Hack, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n    'Courier New', monospace;\n  font-variant: no-common-ligatures no-discretionary-ligatures\n    no-historical-ligatures no-contextual;\n  overflow: auto;\n  position: relative;\n\n  textarea,\n  pre {\n    font-size: 14px !important;\n    line-height: 22px !important;\n    padding: 1rem !important;\n  }\n\n  * > textarea:focus {\n    outline: none;\n  }\n\n  .token {\n    font-style: normal !important;\n  }\n`;\n\nexport const LivePreview = styled(AuxLivePreview)`\n  position: relative;\n  padding: 0.5rem;\n  background: white;\n  color: black;\n  height: auto;\n  overflow: hidden;\n`;\n\nexport const LiveError = styled(AuxLiveError)`\n  display: block;\n  color: rgb(248, 248, 242);\n  white-space: pre-wrap;\n  text-align: left;\n  font-size: 14px;\n  font-family: Hack, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n    'Courier New', monospace;\n  font-variant: no-common-ligatures no-discretionary-ligatures\n    no-historical-ligatures no-contextual;\n  padding: 1rem;\n  background: rgb(255, 85, 85);\n`;\n\nexport const PreHeader = styled.div`\n  background-color: ${darken('0.05', '#282a36')};\n  color: rgb(248, 248, 242, 0.75);\n  font-size: 12px;\n  line-height: 18px;\n  margin-top: 0.5rem;\n  padding: 0.8rem 1rem;\n  border-radius: 5px 5px 0 0;\n`;\n\nexport const LineNo = styled.span`\n  display: inline-block;\n  width: 2rem;\n  user-select: none;\n  opacity: 0.3;\n`;\n\nexport const CopyCode = styled.button`\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 1;\n  border-radius: ${({ hasTitle }) => (!hasTitle ? '0 5px 0 5px' : '0 0 0 5px')};\n  padding: 0.25rem 0.6rem;\n  border: none;\n  cursor: pointer;\n  background: #44475a;\n  color: rgb(248, 248, 242);\n  transition: all 200ms ease;\n  font-size: 12px;\n\n  :disabled {\n    cursor: not-allowed;\n  }\n\n  :not(:disabled) {\n    :hover,\n    :focus {\n      background: ${({ theme }) => theme.colors.primary};\n    }\n  }\n`;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Docs/EditGithub.js",
    "content": "/* @jsx jsx */\nimport { useTheme, jsx, css } from '@emotion/react';\nimport PropTypes from 'prop-types';\nimport { MdEdit } from 'react-icons/md';\n\nexport default function EditGithub({ repositoryEditUrl, repositoryProvider }) {\n  const theme = useTheme();\n\n  if (repositoryEditUrl) {\n    return (\n      <a\n        href={repositoryEditUrl}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        css={css`\n          display: flex;\n          align-items: center;\n          text-decoration: none;\n          margin-top: 48px;\n          color: ${theme.colors.text};\n          opacity: 0.8;\n          font-size: 14px;\n          font-weight: normal;\n        `}\n      >\n        <MdEdit style={{ marginRight: '5px' }} />\n        Edit this page on {repositoryProvider}\n      </a>\n    );\n  }\n\n  return null;\n}\n\nEditGithub.propTypes = {\n  repositoryEditUrl: PropTypes.string,\n  repositoryProvider: PropTypes.string,\n};\n\nEditGithub.defaultProps = {\n  repositoryEditUrl: null,\n  repositoryProvider: null,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Docs/PostNav/index.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'gatsby';\nimport { MdKeyboardArrowRight, MdKeyboardArrowLeft } from 'react-icons/md';\n\nimport { Container, Post } from './styles';\n\nexport default function Docs({ prev, next }) {\n  return (\n    <Container>\n      {prev && (\n        <Post isLeft>\n          <Link to={prev.link}>\n            <MdKeyboardArrowLeft />\n            <div>\n              <p>Prev</p>\n              <h3>{prev.label}</h3>\n            </div>\n          </Link>\n        </Post>\n      )}\n      {next && (\n        <Post>\n          <Link to={next.link}>\n            <div>\n              <p>Next</p>\n              <h3>{next.label}</h3>\n            </div>\n            <MdKeyboardArrowRight />\n          </Link>\n        </Post>\n      )}\n    </Container>\n  );\n}\n\nDocs.propTypes = {\n  prev: PropTypes.shape({\n    label: PropTypes.string,\n    link: PropTypes.string,\n  }),\n  next: PropTypes.shape({\n    label: PropTypes.string,\n    link: PropTypes.string,\n  }),\n};\n\nDocs.defaultProps = {\n  prev: null,\n  next: null,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Docs/PostNav/styles.js",
    "content": "import styled from '@emotion/styled';\n\nexport const Container = styled.section`\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n\n  padding: 48px 0;\n  width: 100%;\n\n  @media (max-width: 780px) {\n    flex-direction: column;\n  }\n`;\n\nexport const Post = styled.div`\n  transition: all 200ms;\n  ${({ isLeft }) => !isLeft && 'margin-left: auto;'}\n\n  a {\n    display: flex;\n    text-decoration: none;\n    justify-content: center;\n    align-items: center;\n    width: 100%;\n    height: 100%;\n\n    svg {\n      width: 25px;\n      height: 25px;\n      color: ${({ theme }) => theme.colors.text};\n\n      ${({ isLeft }) => (isLeft ? 'margin-right: 16px' : 'margin-left: 16px')};\n    }\n\n    p {\n      letter-spacing: 0.142em;\n      text-transform: uppercase;\n      font-size: 12px;\n      margin: 0;\n      color: ${({ theme }) => theme.colors.text};\n    }\n\n    h3 {\n      color: ${({ theme }) => theme.colors.text};\n      border: none;\n      margin: 0;\n      padding: 0;\n      font-size: 16px;\n    }\n  }\n\n  &:hover {\n    opacity: 0.8;\n\n    a svg {\n      opacity: 0.8;\n    }\n  }\n\n  @media (max-width: 780px) {\n    width: 100%;\n    ${({ isLeft }) => isLeft && 'margin-bottom: 16px'};\n\n    a {\n      justify-content: ${({ isLeft }) => (isLeft ? 'flex-start' : 'flex-end')};\n    }\n  }\n`;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Docs/TOC/index.js",
    "content": "import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme } from '@emotion/react';\nimport useWindowScroll from 'react-use/lib/useWindowScroll';\nimport useWindowSize from 'react-use/lib/useWindowSize';\n\nimport slug from '../../../util/slug';\n\nimport { Wrapper, Container } from './styles';\n\nexport default function TableOfContents({ headings, disableTOC, contentRef }) {\n  const { y } = useWindowScroll();\n  const theme = useTheme();\n  const { width, height } = useWindowSize();\n  const [offsets, setOffsets] = useState([]);\n\n  const isMobile = width <= 1200;\n\n  useEffect(() => {\n    if (!isMobile || disableTOC) {\n      const allHeadings = contentRef.current?.querySelectorAll(`h2, h3`);\n\n      setOffsets(\n        allHeadings &&\n          Array.from(allHeadings)\n            .map((heading) => {\n              const anchor = heading.querySelector(`a`);\n              if (!anchor) return {};\n\n              return {\n                id: heading.id,\n                offset: heading.offsetTop + anchor.offsetTop,\n              };\n            })\n            .filter(Boolean),\n      );\n    }\n  }, [width, height, contentRef, isMobile, disableTOC]);\n\n  const activeHeading = useMemo(() => {\n    if (!isMobile || disableTOC) {\n      const windowOffset = height / 2;\n      const scrollTop = y + windowOffset;\n\n      if (offsets) {\n        for (let i = offsets.length - 1; i >= 0; i -= 1) {\n          const { id, offset } = offsets[i];\n          if (scrollTop >= offset) {\n            return id;\n          }\n        }\n      }\n    }\n\n    return null;\n  }, [offsets, height, y, isMobile, disableTOC]);\n\n  if (!disableTOC) {\n    return (\n      <Wrapper>\n        <Container>\n          <h2>On this page</h2>\n          <nav>\n            <ul>\n              {headings\n                .filter((heading) => heading.depth === 2 || heading.depth === 3)\n                .map((heading) => {\n                  const headingSlug = slug(heading.value);\n\n                  return (\n                    <li\n                      key={heading.value}\n                      style={{\n                        marginLeft: heading.depth === 3 ? `8px` : null,\n                      }}\n                    >\n                      <a\n                        href={`#${headingSlug}`}\n                        style={{\n                          color:\n                            activeHeading === headingSlug\n                              ? theme.colors.primary\n                              : theme.colors.text,\n                        }}\n                      >\n                        {heading.value}\n                      </a>\n                    </li>\n                  );\n                })}\n            </ul>\n          </nav>\n        </Container>\n      </Wrapper>\n    );\n  }\n\n  return <Wrapper />;\n}\n\nTableOfContents.propTypes = {\n  headings: PropTypes.array,\n  disableTOC: PropTypes.bool.isRequired,\n  contentRef: PropTypes.shape({ current: PropTypes.object }).isRequired,\n};\n\nTableOfContents.defaultProps = {\n  headings: null,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Docs/TOC/styles.js",
    "content": "import styled from '@emotion/styled';\n\nexport const Wrapper = styled.div`\n  position: sticky;\n  top: 0;\n  order: 2;\n\n  padding-top: 72px;\n  max-height: calc(100vh - 72px);\n  overflow-y: auto;\n  overflow-x: hidden;\n  width: 100%;\n  max-width: 200px;\n\n  @media (max-width: 1200px) {\n    position: relative;\n    top: auto;\n    order: 0;\n    max-width: 100%;\n    margin-left: 0;\n    padding-top: 0;\n  }\n`;\n\nexport const Container = styled.div`\n  h2 {\n    text-transform: uppercase;\n    font-size: 14px;\n    font-weight: bold;\n    letter-spacing: 0.142em;\n    margin-top: 0rem;\n    border: none;\n    margin: 0 0 16px 0;\n  }\n\n  nav ul {\n    padding-left: 0;\n    margin-bottom: 0;\n    list-style: none;\n\n    li {\n      margin-bottom: 12px;\n      line-height: 1.1;\n\n      a {\n        font-size: 14px;\n        font-weight: 400;\n        text-decoration: none;\n        transition: all 0.2s;\n        overflow-wrap: break-word;\n\n        &:hover {\n          text-decoration: underline;\n        }\n      }\n    }\n  }\n\n  @media (max-width: 1200px) {\n    margin: 0 0 24px 0;\n    padding-bottom: 16px;\n    border-bottom: 1px solid rgba(120, 117, 122, 0.2);\n  }\n`;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Docs/index.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Layout from '../Layout';\nimport SEO from '../SEO';\nimport PostNav from './PostNav';\nimport EditGithub from './EditGithub';\n\nexport default function Docs({ mdx, pageContext, children }) {\n  const { prev, next, repositoryEditUrl, repositoryProvider } = pageContext;\n  const { title, description, image, disableTableOfContents } = mdx.frontmatter;\n  const { headings } = mdx;\n  const { slug } = mdx.fields;\n\n  return (\n    <>\n      <SEO title={title} description={description} slug={slug} image={image} />\n      <Layout\n        disableTableOfContents={disableTableOfContents}\n        title={title}\n        headings={headings}\n      >\n        {children}\n        <EditGithub\n          repositoryEditUrl={repositoryEditUrl}\n          repositoryProvider={repositoryProvider}\n        />\n        <PostNav prev={prev} next={next} />\n      </Layout>\n    </>\n  );\n}\n\nDocs.propTypes = {\n  mdx: PropTypes.shape({\n    body: PropTypes.string,\n    headings: PropTypes.array,\n    frontmatter: PropTypes.shape({\n      title: PropTypes.string,\n      description: PropTypes.string,\n      image: PropTypes.string,\n      disableTableOfContents: PropTypes.bool,\n    }),\n    fields: PropTypes.shape({\n      slug: PropTypes.string,\n    }),\n  }).isRequired,\n  pageContext: PropTypes.shape({\n    prev: PropTypes.shape({}),\n    next: PropTypes.shape({}),\n    repositoryEditUrl: PropTypes.string,\n    repositoryProvider: PropTypes.string,\n  }).isRequired,\n  children: PropTypes.node.isRequired,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Header.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { GiHamburgerMenu } from 'react-icons/gi';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nconst Container = styled.header`\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n\n  height: 40px;\n  margin-bottom: 24px;\n\n  h2 {\n    margin: 0;\n    border: none;\n    padding: 0;\n    font-size: 18px;\n\n    @media (max-width: 359px) {\n      font-size: 14px;\n    }\n  }\n\n  button {\n    border: none;\n    background: none;\n    cursor: pointer;\n    margin-right: 16px;\n\n    display: flex;\n    justify-content: flex-start;\n    align-items: center;\n  }\n\n  @media (min-width: 780px) {\n    display: none;\n  }\n`;\n\nexport default function Header({ handleMenuOpen }) {\n  const { site } = useStaticQuery(\n    graphql`\n      query {\n        site {\n          siteMetadata {\n            siteTitle\n          }\n        }\n      }\n    `,\n  );\n\n  const { siteTitle } = site.siteMetadata;\n\n  return (\n    <Container>\n      <button aria-label=\"Open sidebar\" type=\"button\" onClick={handleMenuOpen}>\n        <GiHamburgerMenu size={23} aria-hidden=\"true\" />\n      </button>\n      <h2>{siteTitle}</h2>\n    </Container>\n  );\n}\n\nHeader.propTypes = {\n  handleMenuOpen: PropTypes.func.isRequired,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Homepage.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Layout from './Layout';\nimport SEO from './SEO';\n\nexport default function Home({ children }) {\n  return (\n    <Layout>\n      <SEO />\n      {children}\n    </Layout>\n  );\n}\n\nHome.propTypes = {\n  children: PropTypes.node.isRequired,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Layout/index.js",
    "content": "/* @jsx jsx */\nimport { useState, useRef, Fragment } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport PropTypes from 'prop-types';\n\nimport TableOfContents from '../Docs/TOC';\nimport Sidebar from '../Sidebar';\nimport Header from '../Header';\nimport Overlay from '../Overlay';\nimport { Container, Main, Children } from './styles';\n\nexport default function Layout({\n  children,\n  disableTableOfContents,\n  title,\n  headings,\n}) {\n  const contentRef = useRef(null);\n  const [isMenuOpen, setMenuOpen] = useState(false);\n  const disableTOC =\n    disableTableOfContents === true || !headings || headings.length === 0;\n\n  const handleMenuOpen = () => {\n    setMenuOpen(!isMenuOpen);\n  };\n\n  return (\n    <Fragment>\n      <Overlay isMenuOpen={isMenuOpen} onClick={handleMenuOpen} />\n      <Container>\n        <Sidebar isMenuOpen={isMenuOpen} />\n        <Main>\n          <Header handleMenuOpen={handleMenuOpen} />\n          {title && (\n            <h1\n              css={css`\n                display: none;\n\n                @media (max-width: 1200px) {\n                  display: block;\n                }\n              `}\n            >\n              {title}\n            </h1>\n          )}\n          <Children ref={contentRef}>\n            {title && (\n              <h1\n                css={css`\n                  @media (max-width: 1200px) {\n                    display: none;\n                  }\n                `}\n              >\n                {title}\n              </h1>\n            )}\n            {children}\n          </Children>\n          <TableOfContents\n            headings={headings}\n            disableTOC={disableTOC}\n            contentRef={contentRef}\n          />\n        </Main>\n      </Container>\n    </Fragment>\n  );\n}\n\nLayout.propTypes = {\n  children: PropTypes.oneOfType([\n    PropTypes.arrayOf(PropTypes.node),\n    PropTypes.node,\n  ]).isRequired,\n  disableTableOfContents: PropTypes.bool,\n  title: PropTypes.string,\n  headings: PropTypes.array,\n};\n\nLayout.defaultProps = {\n  disableTableOfContents: false,\n  title: '',\n  headings: null,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Layout/styles.js",
    "content": "import styled from '@emotion/styled';\n\nexport const Container = styled.div`\n  width: 100%;\n  max-width: 1400px;\n  margin: 0 auto;\n  padding: 0 24px;\n\n  display: grid;\n  grid-template-columns: 280px calc(100% - 320px);\n  grid-auto-flow: row;\n  grid-gap: 40px;\n\n  @media (max-width: 780px) {\n    padding: 24px;\n    grid-template-columns: 100%;\n  }\n`;\n\nexport const Main = styled.main`\n  height: 100%;\n  padding-top: 36px;\n  width: 100%;\n\n  display: flex;\n  justify-content: flex-start;\n  position: relative;\n\n  @media (max-width: 1200px) {\n    flex-direction: column;\n  }\n\n  @media (max-width: 780px) {\n    padding-top: 0;\n  }\n`;\n\nexport const Children = styled.div`\n  width: 100%;\n  max-width: calc(75% - 64px);\n  padding-right: 64px;\n\n  @media (max-width: 1200px) {\n    max-width: 100%;\n    padding-right: 0;\n    order: 3;\n  }\n\n  h1,\n  h2,\n  h3,\n  h4,\n  h5,\n  h6 {\n    overflow-wrap: break-word;\n  }\n`;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Logo.js",
    "content": "import React from 'react';\n\nexport default function Logo(props) {\n  return (\n    <svg width={180} height={34} viewBox=\"0 0 180 34\" fill=\"none\" {...props}>\n      <path\n        d=\"M37.504 9.983c-1.515 0-2.763 1.204-2.763 2.723v11.521h2.763v-11.52h6.589V9.982h-6.589zM60.566 17.079V12.68c0-1.492-1.222-2.723-2.763-2.723h-8.927c-1.515 0-2.764 1.204-2.764 2.723v8.798c0 1.492 1.223 2.723 2.764 2.723h8.927c1.515 0 2.763-1.205 2.763-2.723v-4.4zm-2.763 0v4.399h-8.927V12.68h8.927v4.399zM66.093 9.983c-1.515 0-2.764 1.204-2.764 2.723v8.798c0 1.492 1.223 2.723 2.764 2.723l9.724-.13v-2.593h-9.724v-8.798h9.724v-2.592l-9.724-.131zM91.655 9.983H87.91l-5.474 5.734h-1.089V9.983h-2.763v14.218h2.763v-5.76H82.94l5.686 5.76h3.8l-7.307-7.436 6.536-6.782zM95.77 21.478V18.44l11.692-.13v-5.63c0-1.492-1.223-2.723-2.764-2.723h-8.927c-1.515 0-2.763 1.204-2.763 2.723v8.798c0 1.492 1.222 2.723 2.763 2.723l11.691-.131v-2.592H95.771zm0-8.798h8.928v3.037h-8.927V12.68zM114.396 5.82h-1.063l-1.7 2.069v2.068h-2.099v2.723l2.099-.026v8.824c0 1.493 1.222 2.723 2.763 2.723l4.464-.13v-2.593h-4.464v-8.85l4.862-.079V9.957h-4.862V5.82zM133.819 18.44c0-1.492-1.223-2.723-2.764-2.723h-6.961V12.68h9.725v-2.592l-9.725-.131c-1.514 0-2.763 1.204-2.763 2.723v3.037c0 1.493 1.222 2.723 2.763 2.723h6.961v3.038h-9.724v2.592l9.724.13c1.515 0 2.764-1.204 2.764-2.722V18.44zM148.246 9.983h-8.928c-1.514 0-2.763 1.204-2.763 2.723v8.798c0 1.492 1.222 2.723 2.763 2.723l11.691-.13v-2.593h-11.691v-3.037l11.691-.131v-5.63c0-1.518-1.222-2.723-2.763-2.723zm0 5.734h-8.928V12.68h8.928v3.037zM165.463 9.983l-11.691.13v2.593h11.691v3.037l-11.691.131v5.63c0 1.492 1.222 2.723 2.763 2.723h8.928c1.514 0 2.763-1.204 2.763-2.723v-8.798a2.759 2.759 0 00-2.763-2.723zm0 11.495h-8.928V18.44h8.928v3.038zM175.138 12.628l4.862-.079V9.957h-4.862V5.794h-1.063l-1.7 2.068v2.069h-2.099v2.723l2.099-.026v8.824c0 1.492 1.222 2.723 2.763 2.723l4.463-.131v-2.592h-4.463v-8.824z\"\n        fill=\"#121214\"\n      />\n      <path\n        d=\"M27.434.662l-4.49-.655a.389.389 0 00-.319.079l-1.913 2.46a.593.593 0 00-.106.55c.053.184-.106.341-.292.315l-1.568-.34a.657.657 0 00-.664.235l-6.217 7.855c-.107.157-.32.21-.505.131l-2.365-1.047a.62.62 0 00-.637.052l-1.196.812a.669.669 0 01-.664.052l-.585-.288a.666.666 0 00-.93.42l-.425 1.858c-.106.445.08.89.478 1.126l.904.55 2.896 1.754 1.408.864c.399.236.903.184 1.249-.104l2.364-2.043c.186-.157.479-.21.691-.078l.718.366a.61.61 0 00.717-.104l1.196-1.1a.618.618 0 01.69-.105l1.78.812c.266.13.585.052.771-.183l.824-1.048 6.244-7.881a.636.636 0 00-.372-1.021l-1.382-.314c-.292-.053-.425-.42-.213-.629l2.153-2.644c.212-.315.08-.655-.24-.707zM6.843 16.529c-.133-.078-.266.052-.213.183l.664 1.728c.054.131.054.262.027.393l-.585 2.252c-.026.157.027.314.133.393l1.674 1.283c.16.105.372.105.505-.026l1.754-1.52c.106-.078.239-.13.345-.156l1.993-.21c.133-.026.186-.21.053-.288l-6.35-4.032zM6.258 22.342a.43.43 0 00-.398-.052l-1.408.68c-.08.026-.133.105-.186.184l-3.003 7.305v.052c.027.026.053.053.107.053l.69-.262h.08c.027.026.053.078.027.105L.014 33.889c-.053.078.054.157.107.078l7.785-7.698a.496.496 0 00.133-.261l.159-1.99a.43.43 0 00-.133-.315l-1.807-1.361z\"\n        fill=\"#8257E6\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Overlay.js",
    "content": "/* @jsx jsx */\nimport { css, jsx } from '@emotion/react';\nimport PropTypes from 'prop-types';\n\nexport default function Overlay({ isMenuOpen, ...rest }) {\n  return (\n    <div\n      css={css`\n        ::after {\n          content: '';\n          position: fixed;\n          width: 100%;\n          height: 100%;\n          left: 0;\n          right: 0;\n          bottom: 0;\n          background-color: rgba(0, 0, 0, 0.8);\n          z-index: 999;\n          display: ${isMenuOpen ? `block` : `none`};\n        }\n      `}\n      aria-label=\"Close menu\"\n      {...rest}\n    />\n  );\n}\n\nOverlay.propTypes = {\n  isMenuOpen: PropTypes.bool,\n};\n\nOverlay.defaultProps = {\n  isMenuOpen: false,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/SEO.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\nimport Helmet from 'react-helmet';\nimport urljoin from 'url-join';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nexport default function SEO({ description, title, slug, image, children }) {\n  const { site } = useStaticQuery(\n    graphql`\n      query {\n        site {\n          siteMetadata {\n            defaultTitle\n            siteTitleShort\n            siteTitle\n            siteImage\n            siteDescription\n            siteLanguage\n            siteUrl\n            siteAuthor\n          }\n        }\n      }\n    `,\n  );\n\n  const {\n    siteTitle,\n    siteTitleShort,\n    siteUrl,\n    defaultTitle,\n    siteImage,\n    siteDescription,\n    siteLanguage,\n    siteAuthor,\n    siteIcon,\n  } = site.siteMetadata;\n\n  const metaTitle = title ? `${title} | ${siteTitle}` : defaultTitle;\n  const metaUrl = urljoin(siteUrl, slug);\n  const metaImage = urljoin(siteUrl, image || siteImage);\n  const metaDescription = description || siteDescription;\n\n  const schemaOrgJSONLD = [\n    {\n      '@context': 'http://schema.org',\n      '@type': 'WebSite',\n      url: metaUrl,\n      name: title,\n      alternateName: siteTitleShort,\n    },\n  ];\n\n  return (\n    <Helmet\n      htmlAttributes={{\n        lang: siteLanguage,\n      }}\n      title={metaTitle}\n    >\n      {siteIcon && <link rel=\"icon\" href={siteIcon} />}\n      <meta name=\"description\" content={metaDescription} />\n      <meta name=\"image\" content={metaImage} />\n\n      <meta httpEquiv=\"x-ua-compatible\" content=\"IE=edge,chrome=1\" />\n      <meta name=\"MobileOptimized\" content=\"320\" />\n      <meta name=\"HandheldFriendly\" content=\"True\" />\n      <meta name=\"google\" content=\"notranslate\" />\n      <meta name=\"referrer\" content=\"no-referrer-when-downgrade\" />\n\n      <meta property=\"og:url\" content={metaUrl} />\n      <meta property=\"og:type\" content=\"website\" />\n      <meta property=\"og:title\" content={metaTitle} />\n      <meta property=\"og:description\" content={metaDescription} />\n      <meta property=\"og:locale\" content={siteLanguage} />\n      <meta property=\"og:site_name\" content={siteTitle} />\n      <meta property=\"og:image\" content={metaImage} />\n      <meta property=\"og:image:secure_url\" content={metaImage} />\n      <meta property=\"og:image:alt\" content=\"Banner\" />\n      <meta property=\"og:image:type\" content=\"image/png\" />\n      <meta property=\"og:image:width\" content=\"1200\" />\n      <meta property=\"og:image:height\" content=\"630\" />\n\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n      <meta name=\"twitter:title\" content={metaTitle} />\n      <meta name=\"twitter:site\" content={siteAuthor} />\n      <meta name=\"twitter:creator\" content={siteAuthor} />\n      <meta name=\"twitter:image\" content={metaImage} />\n      <meta name=\"twitter:image:src\" content={metaImage} />\n      <meta name=\"twitter:image:alt\" content=\"Banner\" />\n      <meta name=\"twitter:image:width\" content=\"1200\" />\n      <meta name=\"twitter:image:height\" content=\"630\" />\n\n      <script type=\"application/ld+json\">\n        {JSON.stringify(schemaOrgJSONLD)}\n      </script>\n      {children}\n    </Helmet>\n  );\n}\n\nSEO.propTypes = {\n  title: PropTypes.string,\n  description: PropTypes.string,\n  slug: PropTypes.string,\n  image: PropTypes.string,\n  children: PropTypes.oneOfType([\n    PropTypes.arrayOf(PropTypes.element),\n    PropTypes.node,\n  ]),\n};\n\nSEO.defaultProps = {\n  title: '',\n  description: '',\n  slug: '',\n  image: '',\n  children: '',\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Sidebar/ExternalLink/index.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FiExternalLink } from 'react-icons/fi';\n\nexport default function ExternalLink({ link, label }) {\n  return (\n    <a href={link} rel=\"noopener noreferrer\">\n      {label}\n      <FiExternalLink\n        style={{ width: '16px', height: '16px', marginLeft: '10px' }}\n      />\n    </a>\n  );\n}\n\nExternalLink.propTypes = {\n  link: PropTypes.string.isRequired,\n  label: PropTypes.string.isRequired,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Sidebar/InternalLink/index.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'gatsby';\n\nexport default function InternalLink({ link, label }) {\n  return (\n    <Link to={link} activeClassName=\"active-link\">\n      {label}\n    </Link>\n  );\n}\n\nInternalLink.propTypes = {\n  link: PropTypes.string.isRequired,\n  label: PropTypes.string.isRequired,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Sidebar/index.js",
    "content": "import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useStaticQuery, graphql, Link } from 'gatsby';\nimport { useSidebar } from '@rocketseat/gatsby-theme-docs-core';\n\nimport {\n  Container,\n  LogoContainer,\n  List,\n  Heading,\n  Item,\n  SubItem,\n} from './styles';\nimport { isExternalUrl } from '../../util/url';\nimport ExternalLink from './ExternalLink';\nimport InternalLink from './InternalLink';\nimport Logo from '../Logo';\n\nfunction ListWithSubItems({ children, text }) {\n  return (\n    <>\n      <Heading>{text}</Heading>\n      <SubItem>{children}</SubItem>\n    </>\n  );\n}\n\nexport default function Sidebar({ isMenuOpen }) {\n  const {\n    site: {\n      siteMetadata: { basePath },\n    },\n  } = useStaticQuery(graphql`\n    {\n      site {\n        siteMetadata {\n          basePath\n        }\n      }\n    }\n  `);\n\n  const data = useSidebar();\n\n  function renderLink(link, label) {\n    return isExternalUrl(link) ? (\n      <ExternalLink link={link} label={label} />\n    ) : (\n      <InternalLink link={link} label={label} />\n    );\n  }\n\n  return (\n    <Container isMenuOpen={isMenuOpen}>\n      <LogoContainer>\n        <Link to={basePath} aria-label=\"Go to home page\">\n          <Logo aria-hidden=\"true\" />\n        </Link>\n      </LogoContainer>\n      <nav>\n        <List>\n          {data.map(({ node: { label, link, items, id } }) => {\n            if (Array.isArray(items)) {\n              const subitems = items.map((item) => (\n                <Item key={item.link}>{renderLink(item.link, item.label)}</Item>\n              ));\n\n              return (\n                <ListWithSubItems key={id} text={label}>\n                  {subitems}\n                </ListWithSubItems>\n              );\n            }\n\n            return <Item key={id}>{renderLink(link, label)}</Item>;\n          })}\n        </List>\n      </nav>\n    </Container>\n  );\n}\n\nListWithSubItems.propTypes = {\n  children: PropTypes.oneOfType([\n    PropTypes.arrayOf(PropTypes.element),\n    PropTypes.node,\n  ]).isRequired,\n  text: PropTypes.string.isRequired,\n};\n\nSidebar.propTypes = {\n  isMenuOpen: PropTypes.bool.isRequired,\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/components/Sidebar/styles.js",
    "content": "import styled from '@emotion/styled';\n\nexport const Container = styled.aside`\n  width: 100%;\n  overflow-y: auto;\n\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  flex-direction: column;\n\n  position: sticky;\n  top: 0;\n  padding-top: 36px;\n  transition: transform 0.5s;\n  height: calc(100vh - 1px);\n\n  nav {\n    width: 100%;\n    padding-top: 24px;\n    align-self: flex-start;\n    flex: 1;\n  }\n\n  @media (max-width: 780px) {\n    max-width: 75%;\n    min-width: auto;\n    z-index: 1001;\n    position: fixed;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    padding-top: 32px;\n    background: ${({ theme }) => theme.colors.background};\n    transform: translate3d(\n      ${({ isMenuOpen }) => (isMenuOpen ? '0' : '-100%')},\n      0,\n      0\n    );\n  }\n`;\n\nexport const LogoContainer = styled.div`\n  width: 100%;\n\n  a {\n    width: 100%;\n    padding-left: 30px;\n\n    display: flex;\n    justify-content: flex-start;\n    align-items: center;\n  }\n`;\n\nexport const List = styled.ul`\n  list-style: none;\n  width: 100%;\n  padding-left: 0;\n\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n  flex-direction: column;\n`;\n\nexport const Heading = styled.li`\n  padding-left: 30px;\n  width: 100%;\n  text-transform: uppercase;\n  font-size: 14px;\n  font-weight: bold;\n  margin-top: 20px;\n  color: ${({ theme }) => theme.colors.title};\n  letter-spacing: 0.142em;\n`;\n\nexport const Item = styled.li`\n  font-size: 15px;\n  width: 100%;\n  transition: all 200ms ease-in-out;\n  padding: 0 20px;\n  cursor: pointer;\n\n  a,\n  span {\n    display: block;\n    font-size: 15px;\n    color: ${({ theme }) => theme.colors.text};\n    background-color: ${({ theme }) => theme.colors.background};\n    padding: 4px 10px;\n    margin: 4px 0;\n    border-radius: 4px;\n    font-weight: normal;\n\n    text-decoration: none;\n    width: 100%;\n    height: 100%;\n\n    display: flex;\n    justify-content: flex-start;\n    align-items: center;\n\n    cursor: pointer;\n    margin: 0 auto;\n\n    transition: all 0.2s ease;\n\n    svg {\n      width: 20px;\n      height: 20px;\n      margin-right: 10px;\n    }\n\n    &:not(.active-link):hover {\n      color: ${({ theme }) => theme.colors.primary};\n    }\n\n    &.active-link {\n      color: ${({ theme }) => theme.colors.primary};\n      background-color: ${({ theme }) => theme.colors.shape};\n    }\n\n    @media (max-width: 780px) {\n      &.active-link {\n        background: ${({ theme }) => theme.colors.shape};\n      }\n    }\n  }\n`;\n\nexport const SubItem = styled(List)`\n  margin: 5px 0 0 0;\n`;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/styles/global.js",
    "content": "import React from 'react';\nimport { useTheme, Global, css } from '@emotion/react';\n\nexport default function GlobalStyle() {\n  const theme = useTheme();\n\n  return (\n    <Global\n      styles={css`\n        *,\n        *::after,\n        *::before {\n          margin: 0;\n          padding: 0;\n          box-sizing: border-box;\n        }\n\n        body {\n          font-size: 16px;\n          font-family: ${theme.fonts.body};\n          background-color: ${theme.colors.background};\n          text-rendering: optimizelegibility;\n          -webkit-font-smoothing: antialiased;\n          overflow-y: scroll;\n        }\n\n        h1 {\n          font-size: 32px;\n          color: ${theme.colors.title};\n          font-weight: bold;\n          margin-bottom: 24px;\n        }\n\n        h2 {\n          font-size: 24px;\n        }\n\n        h3 {\n          font-size: 18px;\n        }\n\n        h4 {\n          font-size: 16px;\n        }\n\n        h2,\n        h3,\n        h4,\n        h5,\n        h6 {\n          color: ${theme.colors.title};\n\n          margin: 24px 0 16px 0;\n          font-weight: bold;\n        }\n\n        p {\n          color: ${theme.colors.text};\n          font-size: 16px;\n          line-height: 28px;\n          margin-bottom: 16px;\n          font-weight: 400;\n        }\n\n        code.inline-code {\n          display: inline-block;\n          vertical-align: middle;\n          line-height: 1;\n          padding: 0.2em;\n          background-color: #44475a;\n          color: rgba(248, 248, 242);\n          font-size: 14px;\n          border-radius: 3px;\n          font-feature-settings: 'clig' 0, 'calt' 0;\n          font-variant: no-common-ligatures no-discretionary-ligatures\n            no-historical-ligatures no-contextual;\n        }\n\n        h1 code.inline-code,\n        h2 code.inline-code {\n          font-size: calc(100% - 5px);\n          padding: 4px;\n        }\n\n        a {\n          color: ${theme.colors.text};\n          font-weight: bold;\n          text-decoration: none;\n\n          &:hover {\n            text-decoration: underline;\n          }\n        }\n\n        blockquote {\n          margin-bottom: 16px;\n          width: 100%;\n\n          p {\n            padding: 1rem;\n            border-radius: 5px;\n            background: ${theme.colors.components.blockquote.background};\n            color: ${theme.colors.components.blockquote.text};\n            margin: 0;\n\n            a {\n              color: ${theme.colors.components.blockquote.text};\n            }\n          }\n        }\n\n        hr {\n          border: 0;\n          height: 0;\n          border-top: 1px solid rgba(0, 0, 0, 0.1);\n          border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n        }\n\n        table {\n          border-collapse: separate;\n          border-spacing: 0 4px;\n          margin-top: -4px;\n          margin-bottom: 16px;\n          width: 100%;\n\n          th,\n          td {\n            margin: 0;\n            color: ${theme.colors.text};\n            background-color: ${theme.colors.shape};\n            border: solid 1px ${theme.colors.shape};\n            border-style: solid none;\n            padding: 12px;\n\n            :first-of-type {\n              border-left-style: solid;\n              border-top-left-radius: 5px;\n              border-bottom-left-radius: 5px;\n            }\n\n            :last-child {\n              border-right-style: solid;\n              border-bottom-right-radius: 5px;\n              border-top-right-radius: 5px;\n            }\n          }\n\n          tr {\n            th {\n              color: ${theme.colors.title};\n              text-align: left;\n              font-weight: bold;\n            }\n          }\n        }\n\n        iframe {\n          margin-bottom: 16px;\n        }\n\n        img {\n          max-width: 100%;\n        }\n\n        ul,\n        ol {\n          color: ${theme.colors.text};\n          padding-left: 15px;\n          margin-bottom: 16px;\n\n          li {\n            line-height: 28px;\n          }\n        }\n\n        li ul,\n        li ol {\n          margin-bottom: 0;\n        }\n\n        .gatsby-highlight {\n          font-family: Hack, SFMono-Regular, Menlo, Monaco, Consolas,\n            'Liberation Mono', 'Courier New', monospace;\n          font-variant: no-common-ligatures no-discretionary-ligatures\n            no-historical-ligatures no-contextual;\n\n          position: relative;\n          z-index: 0;\n          margin: 0 0 16px 0;\n          overflow: auto;\n\n          .token {\n            font-style: normal !important;\n          }\n        }\n\n        pre[class*='language-'] code {\n          font-family: inherit;\n        }\n\n        pre[class*='language-']::before {\n          background: #d9d7e0;\n          border-radius: 0 0 4px 4px;\n          color: #232129;\n          font-size: 12px;\n          font-family: inherit;\n          letter-spacing: 0.075em;\n          line-height: 1;\n          padding: 0.25rem 0.5rem;\n          position: absolute;\n          left: 1rem;\n          text-align: right;\n          text-transform: uppercase;\n          top: 0;\n        }\n\n        pre[class~='language-js']::before,\n        pre[class~='language-javascript']::before {\n          content: 'js';\n          background: #f7df1e;\n        }\n\n        pre[class~='language-jsx']::before {\n          content: 'jsx';\n          background: #61dafb;\n        }\n\n        pre[class~='language-typescript']::before,\n        pre[class~='language-ts']::before {\n          content: 'ts';\n          background: #294e80;\n          color: #fff;\n        }\n\n        pre[class~='language-tsx']::before {\n          content: 'tsx';\n          background: #294e80;\n          color: #fff;\n        }\n\n        pre[class~='language-graphql']::before {\n          content: 'GraphQL';\n          background: #e10098;\n          color: #fff;\n        }\n\n        pre[class~='language-html']::before {\n          content: 'html';\n          background: #005a9c;\n          color: #fff;\n        }\n\n        pre[class~='language-css']::before {\n          content: 'css';\n          background: #ff9800;\n          color: #fff;\n        }\n\n        pre[class~='language-mdx']::before {\n          content: 'mdx';\n          background: #f9ac00;\n          color: #fff;\n        }\n\n        pre[class~='language-shell']::before {\n          content: 'shell';\n        }\n\n        pre[class~='language-sh']::before {\n          content: 'sh';\n        }\n\n        pre[class~='language-bash']::before {\n          content: 'bash';\n        }\n\n        pre[class~='language-yaml']::before,\n        pre[class~='language-yml']::before {\n          content: 'yaml';\n          background: #ffa8df;\n        }\n\n        pre[class~='language-markdown']::before {\n          content: 'md';\n        }\n\n        pre[class~='language-json']::before,\n        pre[class~='language-json5']::before {\n          content: 'json';\n          background: linen;\n        }\n\n        pre[class~='language-diff']::before {\n          content: 'diff';\n          background: #e6ffed;\n        }\n\n        pre[class~='language-text']::before {\n          content: 'text';\n          background: #fff;\n        }\n\n        pre[class~='language-flow']::before {\n          content: 'flow';\n          background: #e8bd36;\n        }\n      `}\n    />\n  );\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/styles/theme.js",
    "content": "export default {\n  colors: {\n    primary: '#8257E6',\n    background: '#FFFFFF',\n    shape: `#F2F2FA`,\n    title: `#3D3D4D`,\n    text: `#6C6C80`,\n    components: {\n      blockquote: {\n        background: `#feebc8`,\n        text: `#2d3748`,\n      },\n    },\n  },\n  fonts: {\n    body: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif`,\n  },\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/text/index.mdx",
    "content": "Welcome, this is the default page of `@rocketseat/gatsby-theme-docs`! To\nchange this page create a file named `index.mdx` inside `src/docs` and place\nthere your text. Next, add the `homePath: 'src/home'` setting in the plugin\noptions. Also, if you need help, feel free to\n[open an issue](https://github.com/jpedroschmitz/rocketdocs/issues) with a\ndescription of the problem you're facing.\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/util/copy-to-clipboard.js",
    "content": "/* eslint-disable */\n\nexport const copyToClipboard = (str) => {\n  const { clipboard } = window.navigator;\n\n  if (!clipboard || typeof clipboard.writeText !== `function`) {\n    const textarea = document.createElement(`textarea`);\n    textarea.value = str;\n    textarea.setAttribute(`readonly`, true);\n    textarea.setAttribute(`contenteditable`, true);\n    textarea.style.position = `absolute`;\n    textarea.style.left = `-9999px`;\n    document.body.appendChild(textarea);\n    textarea.select();\n    const range = document.createRange();\n    const sel = window.getSelection();\n    sel.removeAllRanges();\n    sel.addRange(range);\n    textarea.setSelectionRange(0, textarea.value.length);\n    document.execCommand(`copy`);\n    document.body.removeChild(textarea);\n\n    return Promise.resolve(true);\n  }\n\n  return clipboard.writeText(str);\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/util/slug.js",
    "content": "export default function slugify(string) {\n  return string\n    .toString() // Cast to string\n    .toLowerCase() // Convert the string to lowercase letters\n    .trim() // Remove whitespace from both sides of a string\n    .replace(/\\s/g, '-') // Replace each space with -\n    .replace(\n      /[^\\w\\-\\u00b4\\u00C0-\\u00C3\\u00c7\\u00C9-\\u00CA\\u00CD\\u00D3-\\u00D5\\u00DA\\u00E0-\\u00E3\\u00E7\\u00E9-\\u00EA\\u00ED\\u00F3-\\u00F5\\u00FA]+/g,\n      '',\n    ); // Removes all chars that aren't words, -, ´ or some latin characters (À Á Â Ã Ç É Ê Í Ó Ô Õ Ú à á â ã ç é ê í ó ô õ ú)\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs/src/util/url.js",
    "content": "function isExternalUrl(url) {\n  return /^((https?:)?\\/\\/)/i.test(url);\n}\n\nmodule.exports = { isExternalUrl };\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/.npmignore",
    "content": ".cache/\nnode_modules/\npublic/\n\n.vscode\n.DS_Store\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/CHANGELOG.md",
    "content": "# @rocketseat/gatsby-theme-docs-core\n\n## 4.0.0\n\n### Major Changes\n\n- [#150](https://github.com/jpedroschmitz/rocketdocs/pull/150) [`ed4b5b3`](https://github.com/jpedroschmitz/rocketdocs/commit/ed4b5b31dd60f732abced13d09df97671e9af828) Thanks [@tekmaven](https://github.com/tekmaven)! - Upgrade to Gatsby v5\n\n## 3.2.0\n\n### Minor Changes\n\n- [#146](https://github.com/jpedroschmitz/rocketdocs/pull/146) [`a4903ae`](https://github.com/jpedroschmitz/rocketdocs/commit/a4903ae1f5bb24cdb075b15f374135e7da554511) Thanks [@aaronamm](https://github.com/aaronamm)! - Add `gatsbyRemarkPlugins` option\n\n## 3.1.0\n\n### Minor Changes\n\n- [#124](https://github.com/jpedroschmitz/rocketdocs/pull/124) [`c4f8d21`](https://github.com/jpedroschmitz/rocketdocs/commit/c4f8d213010b61f20183632f9fc407fb659c151d) Thanks [@aaronamm](https://github.com/aaronamm)! - Support additional YAML files\n\n## 3.0.0\n\n### Major Changes\n\n- [#113](https://github.com/jpedroschmitz/rocketdocs/pull/113) [`3c2acfc`](https://github.com/jpedroschmitz/rocketdocs/commit/3c2acfc89f89a9d94643b8fcb4b7694a7c4c1031) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - Add support for Gatsby v4\n\n### Patch Changes\n\n- [#115](https://github.com/jpedroschmitz/rocketdocs/pull/115) [`528373b`](https://github.com/jpedroschmitz/rocketdocs/commit/528373be3002558fbc0e16436f2b937724268a91) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - fix: createPages only for docs content\n  chore: update dev dependencies\n\n## 2.3.2\n\n### Patch Changes\n\n- [#99](https://github.com/jpedroschmitz/rocketdocs/pull/99) [`418e3c7`](https://github.com/jpedroschmitz/rocketdocs/commit/418e3c767f3d84cb7d53c9049873bee625c57071) Thanks [@milgner](https://github.com/milgner)! - fix: allow setting withMdx option to false\n\n## 2.3.1\n\n### Patch Changes\n\n- [#82](https://github.com/jpedroschmitz/rocketdocs/pull/82) [`4a1dd6d`](https://github.com/jpedroschmitz/rocketdocs/commit/4a1dd6d016e4ed973e54df4a8c6a60f6e900ffbb) Thanks [@colmcgiv](https://github.com/colmcgiv)! - repositoryUrl listed as required but build fails when not included\n\n## 2.3.0\n\n### Minor Changes\n\n- [#74](https://github.com/jpedroschmitz/rocketdocs/pull/74) [`22c1ce3`](https://github.com/jpedroschmitz/rocketdocs/commit/22c1ce3124e540d51cac50f21b71e9eaf21524b3) Thanks [@jpedroschmitz](https://github.com/jpedroschmitz)! - **New**\n\n  - feat: add support for Gatsby v3\n  - feat: add repositoryUrl option to theme (#47)\n\n  **Docs**\n\n  - docs: add more examples of theme usage\n  - docs: rename master to main\n\n  **Other**\n\n  - chore(deps): update packages\n  - refactor: change colors for blockquote\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2021 João Pedro\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/README.md",
    "content": "<p align=\"center\">\n  <img src=\"https://rocketseat-cdn.s3-sa-east-1.amazonaws.com/theme-docs.svg\" alt=\"A illustration of file that is the @rocketseat/gatsby-theme-docs logo\" width=\"100\">\n</p>\n\n<h2 align=\"center\">\n  @rocketseat/gatsby-theme-docs-core\n</h2>\n\n<p align=\"center\">\n  Core theme for <a href=\"https://github.com/jpedroschmitz/rocketdocs/tree/main/%40rocketseat/gatsby-theme-docs\">@rocketseat/gatsby-theme-docs</a> with no additional theming or style opinions. Includes all of the data structures you need to get up and build a documentation website.\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/PRs-welcome-%238257E6.svg\" alt=\"PRs welcome!\" />\n\n  <img alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-%238257E6\">\n\n  <a href=\"https://twitter.com/intent/follow?screen_name=jpedroschmitz\">\n    <img src=\"https://img.shields.io/twitter/follow/jpedroschmitz.svg?label=Follow%20@jpedroschmitz\" alt=\"Follow @jpedroschmitz\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#-features\">Features</a> •\n  <a href=\"#%EF%B8%8F-getting-started\">Getting started</a> •\n  <a href=\"#-usage\">Usage</a> •\n  <a href=\"#-contributing\">Contributing</a> •\n  <a href=\"#-license\">License</a>\n</p>\n\n## 🚀 Features\n\n- MDX for docs;\n- Sidebar customization with Yaml;\n\n## ⚡️ Getting started\n\nUsing Yarn:\n\n```sh\nyarn add @rocketseat/gatsby-theme-docs-core\n```\n\nUsing NPM:\n\n```sh\nnpm i @rocketseat/gatsby-theme-docs-core\n```\n\n## 🔥 Usage\n\n### Theme options\n\n| Key           | Default | Required | Description                                                                                                                                                            |\n| ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| basePath      | /       | No       | Root url for all docs                                                                                                                                                  |\n| configPath    | config  | No       | Location of config files                                                                                                                                               |\n| docsPath      | docs    | No       | The site description for SEO and social (FB, Twitter) tags                                                                                                             |\n| githubUrl     | -       | -        | Deprecated in favor of `repositoryUrl`                                                                                                                                 |\n| repositoryUrl | -       | No       | The URL of your repository (supports GitHub, GitLab and Bitbucket). Example: `https://github/jpedroschmitz/rocketdocs`                                                 |\n| 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)                                |\n| 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` |\n| branch        | main    | No       | Default branch of the repository                                                                                                                                       |\n\n> Note: When adding a BitBucket link on the `repositoryUrl` option, don't add the `src/<branch>` to it.\n> Example of correct link: `https://bitbucket.org/jpedroschmitz/rocketdocs`\n\n### Example usage\n\n```js\n// gatsby-config.js\nmodule.exports = {\n  plugins: [\n    {\n      resolve: `@rocketseat/gatsby-theme-docs-core`,\n      options: {\n        basePath: `documentation`,\n        configPath: `config`,\n        docsPath: `docs`,\n        githubUrl: `https://github.com/jpedroschmitz/rocketdocs`,\n        baseDir: `www`,\n      },\n    },\n  ],\n};\n```\n\n### Navigation\n\nThe 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.\n\nHere is an example:\n\n```yml\n# Simple item\n- label: 'Home'\n  link: '/'\n# With list of subitems\n- label: 'With dropdown'\n  items:\n    - label: 'My Example'\n      link: '/my-example'\n```\n\n### `useSidebar`\n\nTo get all the sidebar items, you can use the `useSidebar` hook. Example:\n\n```js\nimport React from 'react';\nimport { useSidebar } from '@rocketseat/gatsby-theme-docs-core';\n\nexport default function Sidebar() {\n  const data = useSidebar();\n\n  console.log(data);\n  /*\n    [\n      {\n        \"node\": {\n          \"label\": \"Home\",\n          \"link\": \"/\",\n          \"items\": null,\n          \"id\": \"a2913be3-af3c-5fc9-967e-a058e86b20a9\"\n        }\n      },\n      {\n        \"node\": {\n          \"label\": \"With dropdown\",\n          \"link\": null,\n          \"items\": [{ \"label\": \"My Example\", \"link\": \"/my-example\" }],\n          \"id\": \"c7d9606c-4bda-5097-a0df-53108e9f4efd\"\n        }\n      }\n    ]\n  */\n}\n```\n\n### Docs Fields\n\nInside your docs folder, you can create MDX files. The filename will be the page path.\n\nAdd a title to the frontmatter of the MDX file and place the content below it. For example:\n\n```mdx\n---\ntitle: 'My Example'\ndescription: 'A simple description for this page'\nimage: 'banner.png'\ndisableTableOfContents: false\n---\n\nYour amazing page\n```\n\nEvery file must have a custom title. Description and image are not required.\n\n### Shadowing\n\nCheck the [Shadowing in Gatsby Themes](https://www.gatsbyjs.com/docs/themes/shadowing/) docs to understand how to customize this theme!\n\nIn 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.\n\n## ✨ Contributing\n\nThanks 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](https://github.com/jpedroschmitz/rocketdocs/blob/main/.github/CONTRIBUTING.md) and our\n[code of conduct](https://github.com/jpedroschmitz/rocketdocs/blob/main/.github/CODE_OF_CONDUCT.md)! All type of contributions are welcome, such as bug fixes, issues or feature requests.\n\n## 📝 License\n\nLicensed under the [MIT License](https://github.com/jpedroschmitz/rocketdocs/blob/main/%40rocketseat/gatsby-theme-docs-core/LICENSE).\n\n---\n\nMade with 💜 by João Pedro\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/gatsby-config.js",
    "content": "const withDefault = require(`./util/with-default`);\nconst path = require(`path`);\nconst gfmPlugin = require(`remark-gfm`);\nconst { rehypeMetaAsAttributes } = require(`./rehype-meta-as-attributes`);\nconst camelCase = require('lodash.camelcase');\n\nconst upperFirst = (text) => text.charAt(0).toUpperCase() + text.slice(1);\n\nmodule.exports = (options) => {\n  const {\n    basePath,\n    configPath,\n    docsPath,\n    yamlFilesPath,\n    withMdx,\n    gatsbyRemarkPlugins,\n  } = withDefault(options);\n\n  return {\n    siteMetadata: {\n      basePath,\n    },\n    plugins: [\n      `gatsby-transformer-sharp`,\n      `gatsby-plugin-sharp`,\n      {\n        resolve: `gatsby-source-filesystem`,\n        options: {\n          name: `docs`,\n          path: docsPath,\n        },\n      },\n      {\n        resolve: `gatsby-source-filesystem`,\n        options: {\n          name: `config`,\n          path: configPath,\n        },\n      },\n      {\n        resolve: `gatsby-source-filesystem`,\n        options: {\n          name: `yamlFiles`,\n          path: yamlFilesPath,\n        },\n      },\n      {\n        resolve: `gatsby-transformer-yaml`,\n        options: {\n          typeName: ({ node, isArray }) => {\n            if (node.sourceInstanceName === `config`) {\n              return `SidebarItems`;\n            }\n\n            // Fallback to the existing algorithm from gatsby-transformer-yaml plugin.\n            // https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-transformer-yaml/src/gatsby-node.js#L22-L28\n            if (node.internal.type !== `File`) {\n              return upperFirst(camelCase(`${node.internal.type} Yaml`));\n            }\n\n            // Parsing algorithm: Array of Objects, where each file represents a collection.\n            if (isArray) {\n              return upperFirst(camelCase(`${node.name} Yaml`));\n            }\n\n            // Parsing algorithm: Single Object, where each subfolder represents a collection; each file represents one \"record\".\n            return upperFirst(camelCase(`${path.basename(node.dir)} Yaml`));\n          },\n        },\n      },\n      withMdx && {\n        resolve: `gatsby-plugin-mdx`,\n        options: {\n          extensions: [`.mdx`, `.md`],\n          mdxOptions: {\n            remarkPlugins: [gfmPlugin],\n            rehypePlugins: [rehypeMetaAsAttributes],\n          },\n          gatsbyRemarkPlugins: [\n            `gatsby-remark-autolink-headers`,\n            `gatsby-remark-embedder`,\n            {\n              resolve: `gatsby-remark-images`,\n              options: {\n                maxWidth: 960,\n                withWebp: true,\n                linkImagesToOriginal: false,\n              },\n            },\n            `gatsby-remark-responsive-iframe`,\n            `gatsby-remark-copy-linked-files`,\n            ...gatsbyRemarkPlugins,\n          ],\n        },\n      },\n    ].filter(Boolean),\n  };\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/gatsby-node.js",
    "content": "const path = require(`path`);\nconst { createFilePath } = require(`gatsby-source-filesystem`);\nconst fs = require(`fs`);\nconst urljoin = require(`url-join`);\nconst { compileMDXWithCustomOptions } = require(`gatsby-plugin-mdx`);\n\nconst { normalizeBasePath, resolveLink } = require(`./util/url`);\nconst withDefault = require(`./util/with-default`);\nconst { remarkHeadingsPlugin } = require(`./remark-headings-plugin`);\n\nfunction generateRepositoryEditLink(themeOptions, relativePath) {\n  const { baseDir, docsPath, repositoryUrl, githubUrl, branch } =\n    withDefault(themeOptions);\n\n  const repoUrl = !repositoryUrl && githubUrl ? githubUrl : repositoryUrl;\n  const pathToFile = path.join(branch, baseDir, docsPath);\n\n  if (repoUrl.includes('github')) {\n    return {\n      editUrl: urljoin(repoUrl, `tree`, pathToFile, relativePath),\n      provider: `GitHub`,\n    };\n  }\n\n  if (repoUrl.includes('gitlab')) {\n    return {\n      editUrl: urljoin(repoUrl, '-', 'blob', pathToFile, relativePath),\n      provider: `GitLab`,\n    };\n  }\n\n  if (repoUrl.includes('bitbucket')) {\n    return {\n      editUrl: urljoin(repoUrl, 'src', pathToFile, relativePath),\n      provider: `BitBucket`,\n    };\n  }\n\n  return {\n    editUrl: null,\n    provider: null,\n  };\n}\n\nexports.createPages = (\n  { graphql, actions: { createPage }, reporter },\n  themeOptions,\n) => {\n  reporter.success(`onCreateDocs`);\n\n  const { basePath, githubUrl, repositoryUrl } = withDefault(themeOptions);\n\n  const docsTemplate = require.resolve(`./src/templates/docs-query.js`);\n  const homeTemplate = require.resolve(`./src/templates/homepage-query.js`);\n\n  return graphql(\n    `\n      {\n        files: allFile(\n          filter: {\n            extension: { in: [\"md\", \"mdx\"] }\n            sourceInstanceName: { eq: \"docs\" }\n          }\n        ) {\n          edges {\n            node {\n              id\n              relativePath\n              childMdx {\n                fields {\n                  slug\n                }\n                internal {\n                  contentFilePath\n                }\n              }\n            }\n          }\n        }\n        sidebar: allSidebarItems {\n          edges {\n            node {\n              label\n              link\n              items {\n                label\n                link\n              }\n              id\n            }\n          }\n        }\n        homepage: allMdx(filter: { fields: { slug: { eq: \"/\" } } }) {\n          nodes {\n            internal {\n              contentFilePath\n            }\n          }\n        }\n      }\n    `,\n  ).then((result) => {\n    if (result.errors) {\n      reporter.panic(\n        `docs: there was an error loading the docs folder!`,\n        result.errors,\n      );\n      return;\n    }\n\n    if (!repositoryUrl && githubUrl) {\n      reporter.warn(\n        `@rocketseat/gatsby-theme-docs: The option \\`githubUrl\\` was deprecated in favor of \\`repositoryUrl\\`. \\nTo remove this warning, replace \\`githubUrl\\` with \\`repositoryUrl\\`.`,\n      );\n    }\n\n    const homepage = result.data.homepage.nodes[0];\n\n    createPage({\n      path: basePath,\n      component: `${homeTemplate}?__contentFilePath=${homepage.internal.contentFilePath}`,\n      context: {},\n    });\n\n    // Generate prev/next items based on sidebar.yml file\n    const sidebar = result.data.sidebar.edges;\n    const listOfItems = [];\n\n    sidebar.forEach(({ node: { label, link, items } }) => {\n      if (Array.isArray(items)) {\n        items.forEach((item) => {\n          listOfItems.push({\n            label: item.label,\n            link: resolveLink(item.link, basePath),\n          });\n        });\n      } else {\n        listOfItems.push({\n          label,\n          link: resolveLink(link, basePath),\n        });\n      }\n    });\n\n    // Generate docs pages\n    const docs = result.data.files.edges;\n    docs.forEach((doc) => {\n      const {\n        childMdx: {\n          fields: { slug },\n          internal: { contentFilePath },\n        },\n        relativePath,\n      } = doc.node;\n\n      // Get the file edit link based on the repository url\n      const repositoryEditUrl = generateRepositoryEditLink(\n        themeOptions,\n        relativePath,\n      );\n\n      const pageLink = slug.slice(0, slug.length - 1);\n      const currentPageIndex = listOfItems.findIndex(\n        (page) => page.link === pageLink,\n      );\n\n      const prev = listOfItems[currentPageIndex - 1];\n      const next = listOfItems[currentPageIndex + 1];\n\n      createPage({\n        path: slug,\n        component: `${docsTemplate}?__contentFilePath=${contentFilePath}`,\n        context: {\n          slug,\n          prev,\n          next,\n          repositoryEditUrl: repositoryEditUrl.editUrl || '',\n          repositoryProvider: repositoryEditUrl.provider || '',\n        },\n      });\n    });\n\n    reporter.success(`docs pages created`);\n  });\n};\n\nexports.createSchemaCustomization = async ({\n  getNode,\n  getNodesByType,\n  pathPrefix,\n  reporter,\n  cache,\n  actions,\n  schema,\n  store,\n}) => {\n  const { createTypes } = actions;\n\n  createTypes(`\n    type MdxFrontmatter {\n      title: String!\n      description: String\n      image: String\n      disableTableOfContents: Boolean\n    }\n  `);\n\n  createTypes(`\n    type SidebarItems implements Node {\n      label: String!\n      link: String\n      items: [SidebarItemsItems]\n    }\n\n    type SidebarItemsItems {\n      label: String\n      link: String\n    }\n  `);\n\n  const headingsResolver = schema.buildObjectType({\n    name: `Mdx`,\n    fields: {\n      headings: {\n        type: `[MdxHeading]`,\n        async resolve(mdxNode) {\n          const fileNode = getNode(mdxNode.parent);\n\n          if (!fileNode) {\n            return null;\n          }\n\n          const result = await compileMDXWithCustomOptions(\n            {\n              source: mdxNode.body,\n              absolutePath: fileNode.absolutePath,\n            },\n            {\n              pluginOptions: {},\n              customOptions: {\n                mdxOptions: {\n                  remarkPlugins: [remarkHeadingsPlugin],\n                },\n              },\n              getNode,\n              getNodesByType,\n              pathPrefix,\n              reporter,\n              cache,\n              store,\n            },\n          );\n\n          if (!result) {\n            return null;\n          }\n\n          return result.metadata.headings;\n        },\n      },\n    },\n  });\n\n  createTypes([\n    `\n      type MdxHeading {\n        value: String\n        depth: Int\n      }\n    `,\n    headingsResolver,\n  ]);\n};\n\nexports.onPreBootstrap = ({ store, reporter }, themeOptions) => {\n  const { configPath, docsPath, yamlFilesPath } = withDefault(themeOptions);\n  const { program } = store.getState();\n\n  const dirs = [\n    path.join(program.directory, configPath),\n    path.join(program.directory, docsPath),\n    path.join(program.directory, yamlFilesPath),\n  ];\n\n  dirs.forEach((dir) => {\n    if (!fs.existsSync(dir)) {\n      reporter.success(`docs: initialized the ${dir} directory`);\n      fs.mkdirSync(dir);\n    }\n  });\n};\n\nexports.onCreateNode = (\n  { node, actions: { createNodeField }, getNode },\n  themeOptions,\n) => {\n  if (node.internal.type !== `Mdx`) {\n    return;\n  }\n\n  const { basePath } = withDefault(themeOptions);\n\n  let value = createFilePath({ node, getNode });\n  if (value === 'index') value = '';\n\n  createNodeField({\n    name: `slug`,\n    node,\n    value: normalizeBasePath(basePath, value),\n  });\n\n  createNodeField({\n    name: `id`,\n    node,\n    value: node.id,\n  });\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/index.js",
    "content": "export { useSidebar } from './src/hooks/useSidebar';\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/package.json",
    "content": "{\n  \"name\": \"@rocketseat/gatsby-theme-docs-core\",\n  \"version\": \"4.0.0\",\n  \"main\": \"index.js\",\n  \"description\": \"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.\",\n  \"author\": \"João Pedro Schmitz <hey@joaopedro.dev> (@jpedroschmitz)\",\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"keywords\": [\n    \"documentation\",\n    \"open source\",\n    \"gatsby\",\n    \"gatsby-plugin\",\n    \"gatsby-theme\",\n    \"react\",\n    \"docs\",\n    \"mdx\"\n  ],\n  \"homepage\": \"https://github.com/jpedroschmitz/rocketdocs/tree/main/@rocketseat/gatsby-theme-docs-core#readme\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jpedroschmitz/rocketdocs.git\",\n    \"directory\": \"@rocketseat/gatsby-theme-docs-core\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/jpedroschmitz/rocketdocs/issues\"\n  },\n  \"dependencies\": {\n    \"@mdx-js/mdx\": \"^1.6.22\",\n    \"gatsby-plugin-mdx\": \"^5.9.0\",\n    \"gatsby-plugin-sharp\": \"^5.9.0\",\n    \"gatsby-remark-autolink-headers\": \"^6.9.0\",\n    \"gatsby-remark-copy-linked-files\": \"^6.9.0\",\n    \"gatsby-remark-embedder\": \"^6.0.1\",\n    \"gatsby-remark-images\": \"^7.9.0\",\n    \"gatsby-remark-responsive-iframe\": \"^6.9.0\",\n    \"gatsby-source-filesystem\": \"^5.9.0\",\n    \"gatsby-transformer-sharp\": \"^5.9.0\",\n    \"gatsby-transformer-yaml\": \"^5.9.0\",\n    \"lodash.camelcase\": \"^4.3.0\",\n    \"mdast-util-to-string\": \"^2\",\n    \"remark-gfm\": \"^1\",\n    \"unist-util-visit\": \"^2\",\n    \"url-join\": \"^4.0.1\"\n  },\n  \"peerDependencies\": {\n    \"@mdx-js/react\": \"^2.3.0\",\n    \"gatsby\": \"^5.0.0\",\n    \"react\": \"^18.0.0\",\n    \"react-dom\": \"^18.0.0\"\n  }\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/rehype-meta-as-attributes.js",
    "content": "const visit = require(`unist-util-visit`);\n\nexports.rehypeMetaAsAttributes = function rehypeMetaAsAttributes() {\n  return (tree) => {\n    // A regex that looks for a simplified attribute name, optionally followed\n    // by a double, single, or unquoted attribute value\n    const re = /\\b([-\\w]+)(?:=(?:\"([^\"]*)\"|'([^']*)'|([^\"'\\s]+)))?/g;\n\n    // …\n    visit(tree, 'element', (node) => {\n      let match;\n\n      if (node.tagName === 'code' && node.data && node.data.meta) {\n        re.lastIndex = 0; // Reset regex.\n\n        // eslint-disable-next-line no-cond-assign\n        while ((match = re.exec(node.data.meta))) {\n          node.properties[match[1]] = match[2] || match[3] || match[4] || '';\n        }\n      }\n    });\n    // …\n  };\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/remark-headings-plugin.js",
    "content": "const visit = require(`unist-util-visit`);\nconst toString = require(`mdast-util-to-string`);\n\nexports.remarkHeadingsPlugin = function remarkHeadingsPlugin() {\n  return async function transformer(tree, file) {\n    const headings = [];\n\n    visit(tree, `heading`, (heading) => {\n      headings.push({\n        value: toString(heading),\n        depth: heading.depth,\n      });\n    });\n\n    const mdxFile = file;\n    if (!mdxFile.data.meta) {\n      mdxFile.data.meta = {};\n    }\n\n    mdxFile.data.meta.headings = headings;\n  };\n};\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/src/components/Docs.js",
    "content": "/* eslint-disable react/prop-types */\nimport React from 'react';\n\nexport default function Docspage({ data }) {\n  return <pre>{JSON.stringify(data, null, 2)}</pre>;\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/src/components/Homepage.js",
    "content": "/* eslint-disable react/prop-types */\nimport React from 'react';\n\nexport default function Homepage({ data }) {\n  return <pre>{JSON.stringify(data, null, 2)}</pre>;\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/src/hooks/useSidebar.js",
    "content": "import { graphql, useStaticQuery } from 'gatsby';\nimport { resolveLink } from '../../util/url';\n\nexport function useSidebar() {\n  const data = useStaticQuery(graphql`\n    {\n      allSidebarItems {\n        edges {\n          node {\n            label\n            link\n            items {\n              label\n              link\n            }\n            id\n          }\n        }\n      }\n      site {\n        siteMetadata {\n          basePath\n        }\n      }\n    }\n  `);\n\n  const { basePath } = data.site.siteMetadata;\n\n  const {\n    allSidebarItems: { edges },\n  } = data;\n\n  if (basePath) {\n    const normalizedSidebar = edges.map(\n      ({ node: { label, link, items, id } }) => {\n        if (Array.isArray(items)) {\n          items = items.map((item) => ({\n            label: item.label,\n            link: resolveLink(item.link, basePath),\n          }));\n        }\n\n        return {\n          node: {\n            id,\n            label,\n            items,\n            link: resolveLink(link, basePath),\n          },\n        };\n      },\n    );\n\n    return normalizedSidebar;\n  }\n\n  return edges;\n}\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/src/templates/docs-query.js",
    "content": "import { graphql } from 'gatsby';\nimport DocsComponent from '../components/Docs';\n\nexport default DocsComponent;\n\nexport const query = graphql`\n  query ($slug: String!) {\n    mdx(fields: { slug: { eq: $slug } }) {\n      id\n      excerpt(pruneLength: 160)\n      fields {\n        slug\n      }\n      frontmatter {\n        title\n        description\n        image\n        disableTableOfContents\n      }\n      headings {\n        depth\n        value\n      }\n    }\n  }\n`;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/src/templates/homepage-query.js",
    "content": "import HomepageComponent from '../components/Homepage';\n\nexport default HomepageComponent;\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/util/url.js",
    "content": "function normalizeBasePath(basePath, link) {\n  return `/${basePath}/${link}`.replace(/\\/\\/+/g, `/`);\n}\n\nfunction isExternalUrl(url) {\n  return /^((https?:)?\\/\\/)/i.test(url);\n}\n\nfunction resolveLink(link, basePath) {\n  return isExternalUrl(link) ? link : normalizeBasePath(basePath, link);\n}\n\nmodule.exports = { resolveLink, normalizeBasePath, isExternalUrl };\n"
  },
  {
    "path": "@rocketseat/gatsby-theme-docs-core/util/with-default.js",
    "content": "module.exports = (themeOptions) => {\n  const basePath = themeOptions.basePath || `/`;\n  const homePath = themeOptions.homePath || ``;\n  const configPath = themeOptions.configPath || `config`;\n  const docsPath = themeOptions.docsPath || `docs`;\n  const yamlFilesPath = themeOptions.yamlFilesPath || `yamlFiles`;\n  const branch = themeOptions.branch || `main`;\n  const baseDir = themeOptions.baseDir || ``;\n  const withMdx =\n    themeOptions.withMdx === undefined ? true : themeOptions.withMdx;\n  const gatsbyRemarkPlugins = themeOptions.gatsbyRemarkPlugins || [];\n\n  const { githubUrl, repositoryUrl = '' } = themeOptions;\n\n  return {\n    basePath,\n    homePath,\n    configPath,\n    docsPath,\n    yamlFilesPath,\n    baseDir,\n    githubUrl,\n    repositoryUrl,\n    withMdx,\n    branch,\n    gatsbyRemarkPlugins,\n  };\n};\n"
  },
  {
    "path": "LICENSE.md",
    "content": "MIT License\n\nCopyright (c) 2021 João Pedro Schmitz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<h1 align=\"center\">\n  <!-- <br> -->\n  <!-- <img src=\"https://storage.googleapis.com/golden-wind/github/gatsby-themes-logo.svg\" alt=\"Rocketseat and Gatsby\" width=\"260\"> -->\n  <!-- <br> -->\n  Rocket Docs\n  <br>\n</h1>\n\n<h4 align=\"center\">Easy to use Gatsby Theme to create documentation websites ⚡️🔥</h4>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/PRs-welcome-%238257E6.svg\" alt=\"PRs welcome!\" />\n\n  <img alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-%238257E6\">\n\n  <a href=\"https://twitter.com/intent/follow?screen_name=jpedroschmitz\">\n    <img src=\"https://img.shields.io/twitter/follow/jpedroschmitz.svg?label=Follow%20@jpedroschmitz\" alt=\"Follow @jpedroschmitz\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#themes\">Themes</a> •\n  <a href=\"#contributing\">Contributing</a> •\n  <a href=\"#need-help\">Need help?</a> •\n  <a href=\"#license\">License</a>\n</p>\n\n## Themes\n\n🚀 [`gatsby-theme-docs-core`](./@rocketseat/gatsby-theme-docs-core): The core theme for docs websites that includes all the data structures you need.\n\n🚀 [`gatsby-theme-docs`](./@rocketseat/gatsby-theme-docs): Out of the box Gatsby Theme for creating documentation websites easily and quickly.\n\n## Contributing\n\nThanks 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](.github/CONTRIBUTING.md) and our\n[code of conduct](.github/CODE_OF_CONDUCT.md)! All type of contributions are welcome, such as bug fixes, issues or feature requests. Also, don't forget to check the roadmap.\n\n## Need help?\n\nIf you need help, feel free to open an issue with a description of the problem\nyou're facing or, if you prefer, you can chat with us on our\n[forum](https://github.com/jpedroschmitz/rocketdocs/discussions).\n\n## Sponsors\n\n<table>\n  <tr>\n    <td>\n      <a aria-label=\"Rocketseat\" href=\"https://rocketseat.com.br?utm_source=rocketdocs&utm_medium=sponsorship&utm_campaign=rocketdocs_sponsorship\">\n        <img alt=\"\" src=\"./.github/rocketseat.svg\">\n      </a>\n    </td>\n  </tr>\n</table>\n\n## Thanks\n\nThe following Open Source projects heavily inspire this project! Thanks, Apollo and LekoArts!\n\n- [LekoArts Gatsby themes](https://github.com/LekoArts/gatsby-themes)\n- [Apollo Gatsby themes](https://github.com/apollographql/gatsby-theme-apollo)\n\n## License\n\nMIT © [João Pedro](https://github.com/jpedroschmitz)\n"
  },
  {
    "path": "examples/gatsby-theme-docs/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Typescript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# dotenv environment variable files\n.env*\n\n# gatsby files\n.cache/\npublic\n\n# Mac files\n.DS_Store\n\n# Yarn\nyarn-error.log\n.pnp/\n.pnp.js\n# Yarn Integrity file\n.yarn-integrity\n"
  },
  {
    "path": "examples/gatsby-theme-docs/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 João Pedro\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "examples/gatsby-theme-docs/README.md",
    "content": "<p align=\"center\">\n  <img src=\"https://rocketseat-cdn.s3-sa-east-1.amazonaws.com/theme-docs.svg\" alt=\"A illustration of file that is the @rocketseat/gatsby-theme-docs logo\" width=\"100\">\n</p>\n\n<h2 align=\"center\">\n  Gatsby Starter: Rocket Docs\n</h2>\n\n<p align=\"center\">\n  Out of the box Gatsby Starter for creating documentation websites easily and quickly. With support for MDX, code highlight, Analytics, SEO and more 🔥 Using the theme: <a href=\"https://github.com/jpedroschmitz/rocketdocs/tree/main/%40rocketseat/gatsby-theme-docs\">@rocketseat/gatsby-theme-docs</a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/PRs-welcome-%238257E6.svg\" alt=\"PRs welcome!\" />\n\n  <img alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-%238257E6\">\n\n  <a href=\"https://twitter.com/intent/follow?screen_name=jpedroschmitz\">\n    <img src=\"https://img.shields.io/twitter/follow/jpedroschmitz.svg?label=Follow%20@jpedroschmitz\" alt=\"Follow @jpedroschmitz\" />\n  </a>\n</p>\n\n## 🚀 Features\n\n- 📝 MDX for docs;\n- 🛣 Yaml-based sidebar navigation;\n- 📱 Responsive and mobile friendly;\n- 🖥 Code highlighting with [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) and [react-live](https://github.com/FormidableLabs/react-live) support;\n- 🥇 SEO (Sitemap, schema.org data, Open Graph and Twitter tags).\n- 📈 Google Analytics support;\n- 📄 Custom docs schema;\n- 🖱 Table of Contents;\n- ⚡️ Offline Support & WebApp Manifest;\n- and much more 🔥\n\n## ⚡️ Getting started\n\n1. Create the website.\n\n   ```sh\n   npx gatsby new rocketdocs https://github.com/jpedroschmitz/gatsby-starter-rocketdocs\n   ```\n\n2. Start developing.\n\n   ```sh\n   cd rocketdocs\n   gatsby develop\n   ```\n\n3. Are you ready for launch?\n\n   Your site is now running at `http://localhost:8000`\n\n## 📄 Docs\n\nLooking for docs? Check our live demo and documentation [website](https://rocketdocs.netlify.app).\n\n---\n\nMade with 💜 by João Pedro\n"
  },
  {
    "path": "examples/gatsby-theme-docs/gatsby-config.js",
    "content": "module.exports = {\n  siteMetadata: {\n    siteTitle: `Rocket Docs`,\n    defaultTitle: `Rocket Docs`,\n    siteTitleShort: `Rocket Docs`,\n    siteDescription: `Out of the box Gatsby Theme for creating documentation websites easily and quickly`,\n    siteUrl: `https://rocketdocs.netlify.app`,\n    siteAuthor: `@jpedroschmitz`,\n    siteImage: `/banner.png`,\n    siteLanguage: `en`,\n    themeColor: `#8257E6`,\n    basePath: `/`,\n  },\n  plugins: [\n    {\n      resolve: `@rocketseat/gatsby-theme-docs`,\n      options: {\n        configPath: `src/config`,\n        docsPath: `src/docs`,\n        homePath: `src/home`,\n        yamlFilesPath: `src/yamlFiles`,\n        repositoryUrl: `https://github.com/jpedroschmitz/rocketdocs`,\n        baseDir: `examples/gatsby-theme-docs`,\n        gatsbyRemarkPlugins: [],\n      },\n    },\n    {\n      resolve: `gatsby-plugin-manifest`,\n      options: {\n        name: `Rocket Docs`,\n        short_name: `Rocket Docs`,\n        start_url: `/`,\n        background_color: `#ffffff`,\n        display: `standalone`,\n        icon: `static/favicon.png`,\n      },\n    },\n    `gatsby-plugin-sitemap`,\n    // {\n    //   resolve: `gatsby-plugin-google-analytics`,\n    //   options: {\n    //     trackingId: `YOUR_ANALYTICS_ID`,\n    //   },\n    // },\n    `gatsby-plugin-remove-trailing-slashes`,\n    {\n      resolve: `gatsby-plugin-canonical-urls`,\n      options: {\n        siteUrl: `https://rocketdocs.netlify.app`,\n      },\n    },\n    `gatsby-plugin-offline`,\n  ],\n};\n"
  },
  {
    "path": "examples/gatsby-theme-docs/package.json",
    "content": "{\n  \"name\": \"gatsby-starter-rocketdocs\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"description\": \"Out of the box Gatsby Starter for creating documentation websites easily and quickly. With support for MDX, code highlight, Analytics, SEO and more\",\n  \"author\": \"João Pedro Schmitz <hey@joaopedro.dev> (@jpedroschmitz)\",\n  \"license\": \"MIT\",\n  \"starter-name\": \"gatsby-starter-rocketdocs\",\n  \"dependencies\": {\n    \"@rocketseat/gatsby-theme-docs\": \"^4.0.1\",\n    \"gatsby\": \"^5.9.0\",\n    \"gatsby-plugin-canonical-urls\": \"^5.9.0\",\n    \"gatsby-plugin-google-analytics\": \"^5.9.0\",\n    \"gatsby-plugin-manifest\": \"^5.9.0\",\n    \"gatsby-plugin-offline\": \"^6.9.0\",\n    \"gatsby-plugin-remove-trailing-slashes\": \"^4.2.0\",\n    \"gatsby-plugin-sitemap\": \"^6.9.0\",\n    \"prop-types\": \"^15.8.1\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {},\n  \"keywords\": [\n    \"gatsby\",\n    \"gatsby-starter\"\n  ],\n  \"scripts\": {\n    \"build\": \"gatsby build\",\n    \"start\": \"gatsby develop\",\n    \"serve\": \"gatsby serve\",\n    \"clean\": \"gatsby clean\"\n  }\n}\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/config/sidebar.yml",
    "content": "# Sidebar navigation\n\n- label: 'Introduction'\n  link: '/'\n- label: 'Getting started'\n  link: '/getting-started'\n- label: Usage\n  items:\n    - label: 'Creating docs'\n      link: '/usage/creating-docs'\n    - label: 'Navigation'\n      link: '/usage/navigation'\n    - label: 'Customizing'\n      link: '/usage/customizing'\n    - label: 'Using YAML files'\n      link: '/usage/using-yaml-files'\n    - label: 'Remark Plugins'\n      link: '/usage/remark-plugins'\n- label: More\n  items:\n    - label: FAQ\n      link: /faq\n    - label: 'Github'\n      link: https://github.com/jpedroschmitz/rocketdocs\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/faq.mdx",
    "content": "---\ntitle: Frequently Asked Questions\ndescription: Frequently asked questions about the theme.\ndisableTableOfContents: true\n---\n\n## Will be included search or dark mode?\n\nThis theme is a great and complete option to build simple documentation websites.\nWe don't plan anymore to include search, dark mode or i18n to the project.\n\nRemember that if necessary, you can change colors and include a default\ndark theme. To do so, check this [doc](/usage/shadowing#changing-theme-colors).\n\n## How can I deploy my website?\n\nTo deploy this project, we recommend you take a look at this extensive documentation\nhosted on [Gatsby website](https://www.gatsbyjs.com/docs/deploying-and-hosting/). It\nincludes deploy tutorials for many services, like [Vercel](https://vercel.com/),\n[Netlify](https://www.netlify.com/), [GitHub Pages](https://pages.github.com/) and others.\n\n## What are good examples of the theme usage?\n\n- [Botmation](https://botmation.dev)\n- [Capmonster.cloud for Python](https://capmonster-python.alperenn.com/)\n- [ESPHome Devices](https://devices.esphome.io/)\n- [Label U](https://opendatalab.github.io/labelU-Kit/)\n- [React Observing](https://react-observing.web.app/)\n- [RudderStack Docs](https://rudderstack.com/docs/)\n- [Unform](https://unform.dev)\n- [Use Pandas](https://www.usepandas.com/)\n- [golangci-lint](https://golangci-lint.run/)\n- [use-cloudinary](https://use-cloudinary.netlify.app/)\n\nps: are you using this project? Submit a PR to add it to the [list](https://github.com/jpedroschmitz/rocketdocs/blob/main/examples/gatsby-theme-docs/src/docs/faq.mdx#what-are-good-examples-of-the-theme-usage).\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/getting-started.mdx",
    "content": "---\ntitle: 'Getting started'\ndescription: Learn how to get started with Rocket Docs.\n---\n\n> Rocket Docs is ready for Gatsby v5. New projects will use the new version!\n\nThe best way to start is by using our starter:\n\n```bash\nnpx gatsby new rocketdocs https://github.com/jpedroschmitz/gatsby-starter-rocketdocs\n```\n\nBut, if you prefer, you can install and configure manually.\n\n#### Using Yarn:\n\n```bash\nyarn add @rocketseat/gatsby-theme-docs\n```\n\n#### Using NPM:\n\n```bash\nnpm i @rocketseat/gatsby-theme-docs\n```\n\n## Theme Options\n\n| Key           | Default | Required | Description                                                                                                                                                            |\n| ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| basePath      | /       | No       | Root url for all docs                                                                                                                                                  |\n| configPath    | config  | No       | Location of config files                                                                                                                                               |\n| docsPath      | docs    | No       | The site description for SEO and social (FB, Twitter) tags                                                                                                             |\n| homePath      | -       | No       | Location of home file                                                                                                                                                  |\n| githubUrl     | -       | -        | Deprecated in favor of `repositoryUrl`                                                                                                                                 |\n| repositoryUrl | -       | No       | The complete URL of your repository (supports GitHub, GitLab and Bitbucket). Example: `https://github/jpedroschmitz/rocketdocs`                                        |\n| baseDir       | -       | No       | If your Gatsby site does not live in the root of your project directory/git repo, pass the subdirectory name here (ex: `docs`)                                         |\n| 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` |\n| branch        | main    | No       | Default branch of the repository                                                                                                                                       |\n\n<br />\n\n> Note: When adding a BitBucket link on the `repositoryUrl` option, don't add the `src/<branch>` to it.\n> Example of correct link: <br /> `https://bitbucket.org/jpedroschmitz/rocketdocs`\n\n## Example usage\n\n```js title=gatsby-config.js\nmodule.exports = {\n  siteMetadata: {\n    siteTitle: `@rocketseat/gatsby-theme-docs`,\n    defaultTitle: `@rocketseat/gatsby-theme-docs`,\n    siteTitleShort: `gatsby-theme-docs`,\n    siteDescription: `Out of the box Gatsby Theme for creating documentation websites easily and quickly`,\n    siteUrl: `https://rocketdocs.netlify.app`,\n    siteAuthor: `@jpedroschmitz`,\n    siteImage: `/banner.png`,\n    siteLanguage: `en`,\n    themeColor: `#8257E6`,\n    basePath: `/`,\n  },\n  plugins: [\n    {\n      resolve: `@rocketseat/gatsby-theme-docs`,\n      options: {\n        basePath: `/`,\n        configPath: `src/config`,\n        docsPath: `src/docs`,\n        homePath: `src/home`,\n        repositoryUrl: `https://github.com/jpedroschmitz/rocketdocs`,\n        baseDir: `examples/gatsby-theme-docs`,\n      },\n    },\n  ],\n};\n```\n\nOnce you have installed the dependencies you will need to create the [navigation](/usage/navigation) and [documentation](/usage/creating-docs) files.\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/usage/creating-docs.mdx",
    "content": "---\ntitle: Creating docs\ndescription: Learn how to create docs using Rocket Docs.\n---\n\nAll MDX files created inside your docs folder will become pages, with the path defined by the filename.\nInside all docs files, you can define the following options:\n\n| Key                    | Required | Description                |\n| ---------------------- | -------- | -------------------------- |\n| title                  | Yes      | No                         |\n| description            | No       | Page description           |\n| image                  | No       | Used for og:image          |\n| disableTableOfContents | No       | Disables Table Of Contents |\n\n## Example\n\n```mdx\n---\ntitle: 'My Example'\ndescription: 'A simple description for this page'\nimage: /banner.jpeg\ndisableTableOfContents: false\n---\n\nWow, this is a nice page\n```\n\n## Embedding files\n\nIn a documentation website, sometimes you will need to embed well known services (like CodeSandbox, Twitter, or others...). If you need to\ndo it, you can simply copy-paste the link (powered by the awesome [gatsby-remark-embeder](https://www.gatsbyjs.com/packages/gatsby-remark-embedder/)).\nMake sure to check the [supported services](https://github.com/MichaelDeBoey/gatsby-remark-embedder#supported-services).\n\nhttps://youtu.be/QfcozcbDhNM\n\n## Code Highlight\n\nWe support many options for code components.\n\n### Title\n\nTo show a title, just add it to your code block. Ex: `title=src/myfile.css`\n\n```css title=src/myfile.css\n.gatsby::before {\n  content: 'niceee...';\n}\n```\n\n### Line numbers\n\nTo add line numbers for that code block, pass an option `lineNumbers=true`.\n\n```js lineNumbers=true\nconst rocket = {\n  launch: () => console.log('Launching...'),\n};\n\nrocket.launch();\n```\n\n### React live\n\nAs mentioned in the introduction, this theme uses `react-live`, so you can\ncreate a playground for live editing React components.\n\nTo use it, just add a `live=true` option to your code block.\n\n```jsx lineNumbers=true title=gatsby-config.js live=true\nfunction MyComponent() {\n  function handleButtonClick() {\n    alert('wowww');\n  }\n\n  return <button onClick={handleButtonClick}>Hey, click me!</button>;\n}\n\nrender(<MyComponent />);\n```\n\n> If you need to add elements to the scope, check this [guide](/usage/shadowing#adding-elements-to-react-live-scope).\n\n### Highlight lines\n\nTo highlight lines, you can pass ranges to a `highlight` option.\nFor example `highlight={1-4,6-7,9}` on the code below would result in:\n\n```jsx highlight={1-4,6-7,9}\nfunction MyComponent() {\n  function handleButtonClick() {\n    alert('wowww');\n  }\n\n  return <button onClick={handleButtonClick}>Hey, click me!</button>;\n}\n\nrender(<MyComponent />);\n```\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/usage/customizing.mdx",
    "content": "---\ntitle: Customizing\ndescription: Rocket Docs allows to customize the look by using Gatsby theme shadowing feature.\n---\n\nTo shadow/override this theme, you will need to place your files into `src/@rocketseat/gatsby-theme-docs` folder.\n\nIf you don't know what shadowing is, or have questions about it, [check this tutorial](https://www.gatsbyjs.com/docs/themes/shadowing/) from the Gatsby documentation.\n\n## Changing the logo\n\nIf you want to change the logo just create the following file:\n\n```js title=src/@rocketseat/gatsby-theme-docs/components/Logo.js\nimport React from 'react';\n\nexport default function Logo(props) {\n  return (\n    <svg width={180} height={34} viewBox=\"0 0 180 34\" fill=\"none\" {...props}>\n      <path\n        d=\"M37.504 9.983c-1.515 0-2.763 1.204-2.763 2.723v11.521h2.763v-11.52h6.589V9.982h-6.589zM60.566 17.079V12.68c0-1.492-1.222-2.723-2.763-2.723h-8.927c-1.515 0-2.764 1.204-2.764 2.723v8.798c0 1.492 1.223 2.723 2.764 2.723h8.927c1.515 0 2.763-1.205 2.763-2.723v-4.4zm-2.763 0v4.399h-8.927V12.68h8.927v4.399zM66.093 9.983c-1.515 0-2.764 1.204-2.764 2.723v8.798c0 1.492 1.223 2.723 2.764 2.723l9.724-.13v-2.593h-9.724v-8.798h9.724v-2.592l-9.724-.131zM91.655 9.983H87.91l-5.474 5.734h-1.089V9.983h-2.763v14.218h2.763v-5.76H82.94l5.686 5.76h3.8l-7.307-7.436 6.536-6.782zM95.77 21.478V18.44l11.692-.13v-5.63c0-1.492-1.223-2.723-2.764-2.723h-8.927c-1.515 0-2.763 1.204-2.763 2.723v8.798c0 1.492 1.222 2.723 2.763 2.723l11.691-.131v-2.592H95.771zm0-8.798h8.928v3.037h-8.927V12.68zM114.396 5.82h-1.063l-1.7 2.069v2.068h-2.099v2.723l2.099-.026v8.824c0 1.493 1.222 2.723 2.763 2.723l4.464-.13v-2.593h-4.464v-8.85l4.862-.079V9.957h-4.862V5.82zM133.819 18.44c0-1.492-1.223-2.723-2.764-2.723h-6.961V12.68h9.725v-2.592l-9.725-.131c-1.514 0-2.763 1.204-2.763 2.723v3.037c0 1.493 1.222 2.723 2.763 2.723h6.961v3.038h-9.724v2.592l9.724.13c1.515 0 2.764-1.204 2.764-2.722V18.44zM148.246 9.983h-8.928c-1.514 0-2.763 1.204-2.763 2.723v8.798c0 1.492 1.222 2.723 2.763 2.723l11.691-.13v-2.593h-11.691v-3.037l11.691-.131v-5.63c0-1.518-1.222-2.723-2.763-2.723zm0 5.734h-8.928V12.68h8.928v3.037zM165.463 9.983l-11.691.13v2.593h11.691v3.037l-11.691.131v5.63c0 1.492 1.222 2.723 2.763 2.723h8.928c1.514 0 2.763-1.204 2.763-2.723v-8.798a2.759 2.759 0 00-2.763-2.723zm0 11.495h-8.928V18.44h8.928v3.038zM175.138 12.628l4.862-.079V9.957h-4.862V5.794h-1.063l-1.7 2.068v2.069h-2.099v2.723l2.099-.026v8.824c0 1.492 1.222 2.723 2.763 2.723l4.463-.131v-2.592h-4.463v-8.824z\"\n        fill=\"#121214\"\n      />\n      <path\n        d=\"M27.434.662l-4.49-.655a.389.389 0 00-.319.079l-1.913 2.46a.593.593 0 00-.106.55c.053.184-.106.341-.292.315l-1.568-.34a.657.657 0 00-.664.235l-6.217 7.855c-.107.157-.32.21-.505.131l-2.365-1.047a.62.62 0 00-.637.052l-1.196.812a.669.669 0 01-.664.052l-.585-.288a.666.666 0 00-.93.42l-.425 1.858c-.106.445.08.89.478 1.126l.904.55 2.896 1.754 1.408.864c.399.236.903.184 1.249-.104l2.364-2.043c.186-.157.479-.21.691-.078l.718.366a.61.61 0 00.717-.104l1.196-1.1a.618.618 0 01.69-.105l1.78.812c.266.13.585.052.771-.183l.824-1.048 6.244-7.881a.636.636 0 00-.372-1.021l-1.382-.314c-.292-.053-.425-.42-.213-.629l2.153-2.644c.212-.315.08-.655-.24-.707zM6.843 16.529c-.133-.078-.266.052-.213.183l.664 1.728c.054.131.054.262.027.393l-.585 2.252c-.026.157.027.314.133.393l1.674 1.283c.16.105.372.105.505-.026l1.754-1.52c.106-.078.239-.13.345-.156l1.993-.21c.133-.026.186-.21.053-.288l-6.35-4.032zM6.258 22.342a.43.43 0 00-.398-.052l-1.408.68c-.08.026-.133.105-.186.184l-3.003 7.305v.052c.027.026.053.053.107.053l.69-.262h.08c.027.026.053.078.027.105L.014 33.889c-.053.078.054.157.107.078l7.785-7.698a.496.496 0 00.133-.261l.159-1.99a.43.43 0 00-.133-.315l-1.807-1.361z\"\n        fill=\"#8257E6\"\n      />\n    </svg>\n  );\n}\n```\n\nIf your logo is a png, you could use it like this:\n\n```js title=src/@rocketseat/gatsby-theme-docs/components/Logo.js\nimport React from 'react';\n\n// Path to the logo file on your project\nimport rocketseatLogo from 'assets/logo.png';\n\nconst Logo = () => (\n  <img src={rocketseatLogo} alt=\"Rocketseat logo\" style={{ width: 180 }} />\n);\n\nexport default Logo;\n```\n\n## Changing the home text\n\nCreate a file at `src/docs/index.mdx` with the text. Next, add the `homePath: 'src/home'` setting in the plugin options. Example:\n\n```mdx title=src/docs/index.mdx\n# Introduction\n\nMy awesome project!\n\nimport Navigation from '@rocketseat/gatsby-theme-docs/src/components/Docs/PostNav';\n\n<Navigation\n  prev={null}\n  next={{\n    label: 'Installation',\n    link: '/installation',\n  }}\n/>\n```\n\n## Changing theme colors\n\nWe use Emotion for theming. To change the theme colors, create a file under `src/@rocketseat/gatsby-theme-docs/styles/theme.js`.\n\nRemember that you need to restart your server to see the update.\n\n```js title=src/@rocketseat/gatsby-theme-docs/styles/theme.js\nexport default {\n  colors: {\n    primary: '#8257E6',\n    background: '#FFFFFF',\n    shape: `#F2F2FA`,\n    title: `#3D3D4D`,\n    text: `#6C6C80`,\n    components: {\n      blockquote: {\n        background: `#332616`,\n        text: `#E1E1E6`,\n      },\n    },\n  },\n};\n```\n\n## Changing the font family\n\nYou can also change the default font family of the theme.\n\nTo do this, create a file under `src/@rocketseat/gatsby-theme-docs/styles/theme.js` (or add to the existing default object if you already started customizing the theme).\n\n```js title=src/@rocketseat/gatsby-theme-docs/styles/theme.js\nexport default {\n  fonts: {\n    fontFace: {\n      family: 'Roboto',\n      file: '/fonts/roboto-regular-webfont',\n    },\n    body: 'Roboto',\n  },\n};\n```\n\nThe `fontFace` property will define the name of the font family for later use, while the `file` property will provide the path and file name of the font files.\n\nFont files should be placed in the [`static`](https://www.gatsbyjs.com/docs/how-to/images-and-media/static-folder/) folder in the root of the project (or a subfolder therein, eg. `fonts`), and their path specified accordingly.\n\n```\n.\n└── static\n    └── fonts\n        ├── roboto-regular-webfont.eot\n        ├── roboto-regular-webfont.svg\n        ├── roboto-regular-webfont.ttf\n        ├── roboto-regular-webfont.woff\n        └── roboto-regular-webfont.woff2\n```\n\n## Adding elements to React Live scope\n\nBy default we add some elements to React Live Scope. If you need to add more, just\nshadow the following file:\n\n```js title=src/@rocketseat/gatsby-theme-docs/components/Code/LiveCodeScope.js\nimport { mdx } from '@mdx-js/react';\nimport { css, jsx } from '@emotion/react';\n\nexport default {\n  css,\n  jsx,\n  mdx,\n};\n```\n\nIf you want to know more about Scope, [check this explanation](https://github.com/FormidableLabs/react-live#how-does-the-scope-work).\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/usage/navigation.mdx",
    "content": "---\ntitle: Navigation\ndescription: How to use the sidebar.yml file from Rocket Docs.\n---\n\nTo add items on the sidebar, it's necessary you create a `sidebar.yml` file under the config folder. Example:\n\n```yaml title=sidebar.yml\n# Just a simple item\n- label: 'Home'\n  link: '/'\n# With a list of items\n- label: 'With subitems'\n  items:\n    - label: 'My Example'\n      link: '/my-example'\n```\n\nIf necessary, you can also add external links:\n\n```yaml\n- label: 'GitHub'\n  link: 'https://github.com/jpedroschmitz'\n```\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/usage/remark-plugins.md",
    "content": "---\ntitle: Remark plugins\ndescription: Learn how to use Remark plugins in Rocket Docs.\n---\n\nTo use a Remark plugin, you need to set the plugin name on this theme's `gatsbyRemarkPlugins` option.\n\n## Example usage\n\nGiven that we want to use [Graphviz](https://graphviz.org/) in our Markdown files, we need to install the Remark plugin and add it on to `gatsbyRemarkPlugins` option on `gatsby.config.js`.\n\n```sh\n# Using Yarn:\nyarn add gatsby-remark-graphviz\n# Using NPM:\nnpm i gatsby-remark-graphviz\n```\n\n```js title=gatsby-config.js\nmodule.exports = {\n  siteMetadata: {\n    // ...\n  },\n  plugins: [\n    {\n      resolve: `@rocketseat/gatsby-theme-docs`,\n      options: {\n        // ...\n        gatsbyRemarkPlugins: [\n          {\n            `gatsby-remark-graphviz`,\n          }\n        ]\n      },\n    }\n  ]\n}\n```\n\n## Using a custom Remark Transformer plugin\n\nIf you use a local plugin, you must point to its location in the project through `require.resolve`.\n\n```js title=gatsby-config.js\nmodule.exports = {\n  siteMetadata: {\n    // ...\n  },\n  plugins: [\n    {\n      resolve: `@rocketseat/gatsby-theme-docs`,\n      options: {\n        // ...\n        gatsbyRemarkPlugins: [\n          {\n            `gatsby-remark-graphviz`,\n            resolve: require.resolve(`./plugins/gatsby-remark-purple-headers`)\n          }\n        ]\n      },\n    }\n  ]\n}\n```\n\nFor more information on how to create a Remark Transformer plugin, please refer to the [Creating a Remark Transformer Plugin](https://www.gatsbyjs.com/tutorial/remark-plugin-tutorial/) document.\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/docs/usage/using-yaml-files.md",
    "content": "---\ntitle: Using YAML files\ndescription: Learn how to YAML files in Rocket Docs.\n---\n\nTo use YAML files, create a new YAML file in a `yamlFiles` folder and it will be exposed as `all{FileName}Yaml` GraphQL node.\n\nTo store YAML in another folder, please change `yamlFilesPath` option of `@rocketseat/gatsby-theme-docs` plugin which is configured in `gatsby.config.js`.\n\n## Example file\n\nIf our project has `letters.yml` or `letters.yaml` under a `yamlFiles` folder which looks like:\n\n```yml\n- character: a\n- character: b\n- character: c\n```\n\nThen the following three nodes would be created:\n\n```json\n[\n  {\n    \"character\": \"a\"\n  },\n  {\n    \"character\": \"b\"\n  },\n  {\n    \"character\": \"c\"\n  }\n]\n```\n\n## Query GraphQL node\n\nWe can query the GraphQL nodes which is created from the YAML file as the following code:\n\n```graphql\n{\n  allLettersYaml {\n    edges {\n      node {\n        character\n      }\n    }\n  }\n}\n```\n\nWhich would return:\n\n```json\n{\n  \"allLettersYaml\": {\n    \"edges\": [\n      {\n        \"node\": {\n          \"character\": \"a\"\n        }\n      },\n      {\n        \"node\": {\n          \"character\": \"b\"\n        }\n      },\n      {\n        \"node\": {\n          \"character\": \"c\"\n        }\n      }\n    ]\n  }\n}\n```\n\nMore information, please refer to [gatsby-transformer-yaml plugin page](https://www.gatsbyjs.com/plugins/gatsby-transformer-yaml/).\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/home/index.mdx",
    "content": "# Introduction\n\nRocket Docs is a complete and awesome Gatsby Theme for documentation websites. We've\ndeveloped it to be easy to use and customize. Forget about other\nthings and focus on what matters: **writing docs.**\n\n## Features\n\n- ⚛️ Ready for Gatsby v5;\n- 📝 MDX for docs;\n- 🛣 Yaml-based sidebar navigation;\n- 📱 Responsive and mobile friendly;\n- 🖥 Code highlighting with [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) and [react-live](https://github.com/FormidableLabs/react-live) support;\n- 🥇 SEO (Sitemap, schema.org data, Open Graph and Twitter tags).\n- 📈 Google Analytics support;\n- 📄 Custom docs schema;\n- 🖱 Table of Contents;\n- ⚡️ Offline Support & WebApp Manifest;\n- and much more 🔥\n\n<br />\n\n[Get started now!](/getting-started)\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/pages/404.js",
    "content": "import React from 'react';\nimport { Link } from 'gatsby';\n\nimport Layout from '@rocketseat/gatsby-theme-docs/src/components/Layout';\nimport Seo from '@rocketseat/gatsby-theme-docs/src/components/SEO';\n\nexport default function NotFound() {\n  return (\n    <Layout title=\"Page not found!\">\n      <Seo title=\"404: Not found\" />\n      <p>You just hit a route that doesn&#39;t exist... the sadness.</p>\n      <p>\n        If you&#39;d like to go back to homepage, <Link to=\"/\">click here</Link>\n        .\n      </p>\n    </Layout>\n  );\n}\n"
  },
  {
    "path": "examples/gatsby-theme-docs/src/yamlFiles/letters.yml",
    "content": "- character: a\n- character: b\n- character: c\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"root\",\n  \"private\": true,\n  \"scripts\": {\n    \"lint\": \"eslint --ignore-path .gitignore \\\"**/*.+(ts|js|tsx|jsx)\\\"\",\n    \"format\": \"prettier --ignore-path .gitignore \\\"**/*.+(ts|js|tsx|jsx)\\\" --write\",\n    \"postinstall\": \"husky install\",\n    \"changeset\": \"changeset\",\n    \"version-packages\": \"changeset version\",\n    \"release\": \"changeset publish\",\n    \"commit\": \"cz\"\n  },\n  \"engines\": {\n    \"node\": \">=14.15.0\"\n  },\n  \"workspaces\": [\n    \"@rocketseat/*\",\n    \"examples/*\"\n  ],\n  \"lint-staged\": {\n    \"**/*.{ts,js,jsx,tsx}\": [\n      \"yarn lint --fix\",\n      \"yarn format\"\n    ],\n    \"*.{md,mdx,json,yaml}\": [\n      \"prettier \\\"**/*.{md,mdx,json,yaml}\\\" --write\"\n    ]\n  },\n  \"config\": {\n    \"commitizen\": {\n      \"path\": \"cz-conventional-changelog\"\n    }\n  },\n  \"devDependencies\": {\n    \"@changesets/changelog-github\": \"^0.4.0\",\n    \"@changesets/cli\": \"^2.14.1\",\n    \"@commitlint/cli\": \"16.3.0\",\n    \"@commitlint/config-conventional\": \"16.2.4\",\n    \"commitizen\": \"4.2.4\",\n    \"cz-conventional-changelog\": \"3.3.0\",\n    \"eslint\": \"8.15.0\",\n    \"eslint-config-airbnb\": \"19.0.4\",\n    \"eslint-config-prettier\": \"8.5.0\",\n    \"eslint-plugin-import\": \"2.26.0\",\n    \"eslint-plugin-jsx-a11y\": \"6.5.1\",\n    \"eslint-plugin-prettier\": \"4.0.0\",\n    \"eslint-plugin-react\": \"7.29.4\",\n    \"eslint-plugin-react-hooks\": \"4.5.0\",\n    \"eslint-utils\": \"^3.0.0\",\n    \"husky\": \"7.0.4\",\n    \"lint-staged\": \"12.4.1\",\n    \"prettier\": \"2.6.2\"\n  }\n}\n"
  }
]