Ir para o conteúdo principal
Version: 2.0.0-beta.3

Configuração do tema

Esta configuração se aplica a todos os temas principais.

Comum#

Modo de cor - modo escuro#

O tema clássico fornece, por padrão, suporte ao modo claro e escuro, com um botão de navegação para o usuário.

É possível personalizar o suporte ao modo de cores com a seguinte configuração:

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    // ...    colorMode: {      // "light" | "dark"      defaultMode: 'light',
      // Hides the switch in the navbar      // Useful if you want to support a single color mode      disableSwitch: false,
      // Should we use the prefers-color-scheme media-query,      // using user system preferences, instead of the hardcoded defaultMode      respectPrefersColorScheme: false,
      // Dark/light switch icon options      switchConfig: {        // Icon for the switch while in dark mode        darkIcon: '🌙',
        // CSS to apply to dark icon,        // React inline style object        // see https://reactjs.org/docs/dom-elements.html#style        darkIconStyle: {          marginLeft: '2px',        },
        // Unicode icons such as '\u2600' will work        // Unicode with 5 chars require brackets: '\u{1F602}'        lightIcon: '\u{1F602}',
        lightIconStyle: {          marginLeft: '1px',        },      },    },    // ...  },  // ...};
caution

Com respectPrefersColorScheme: true, o defaultMode é substituído pelas preferências do sistema do usuário.

Se você deseja oferecer suporte a apenas um modo de cor, provavelmente deseja ignorar as preferências do sistema do usuário.

Meta imagem#

Você pode configurar uma imagem padrão que será usada para sua meta tag, em particular og:image e twitter:image.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    // Relative to your site's "static" directory.    // Não pode ser SVGs. Também podem ser URLs externos.    image: 'img/docusaurus.png',    // ...  },};

Metadados#

Você pode configurar metadados html adicionais (e substituir os existentes).

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    metadados: [{name: 'twitter:card', content: 'summary'}],    // ...  },};

Barra de Anúncios#

Às vezes, você deseja anunciar algo em seu site. Apenas para esse caso, você pode adicionar uma barra de anúncios. Este é um painel não fixo e opcionalmente descartável acima da barra de navegação.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    announcementBar: {      id: 'support_us', // Qualquer valor que irá identificar esta mensagem.      content:        'Estamos procurando renovar nossos documentos, por favor, preencha <a target="_blank" rel="noopener noreferrer" href="#">esta pesquisa</a>',      backgroundColor: '#fafbfc', // Defaults to `#fff`.      textColor: '#091E42', // Padrão é `#000`.      isCloseable: false, // Padrão é 'true'.    },    // ...  },};

i18n#

Leia a introdução i18n primeiro.

Localização dos arquivos de tradução#

  • Caminho base: website/i18n/<locale>/docusaurus-theme-<themeName>
  • Caminho de multi-instância: N/A
  • Arquivos JSON: extraídos com docusaurus escreveu-traduções
  • Arquivos Markdown: `N/A

Exemplo de estrutura de sistema de arquivos#

website/i18n/<locale>/docusaurus-theme-classic# traduções para o tema── navbar.json── footer.json

Ganchos#

useThemeContext#

React hook para acessar o contexto do tema. Este contexto contém funções para definir o modo claro e escuro e expõe a variável booleana, indicando qual modo está em uso no momento.

Exemplo de uso:

import React from 'react';import useThemeContext from '@theme/hooks/useThemeContext';
const Example = () => {  const {isDarkTheme, setLightTheme, setDarkTheme} = useThemeContext();
  retornar <h1>Modo escuro agora é {isDarkTheme ? 'on' : 'off'}</h1>;};
note

O componente que chama useThemeContext deve ser filho do componente Layout.

function ExamplePage() {  return (    <Layout>      <Example />    </Layout>  );}

Barra de navegação#

Título da barra de navegação & logotipo#

Você pode adicionar o logotipo e título à barra de navegação através do themeConfig.navbar. O logotipo pode ser colocado na pasta estática. O URL do logotipo é definido como base para o URL do seu site por padrão. Embora você possa especificar sua própria URL para o logotipo, se for um link externo, ele será aberto em uma nova guia. Além disso, você pode substituir um valor para o atributo alvo do link do logotipo, ele pode ser útil se você estiver hospedando documentos em um subdiretório do seu site principal, e nesse caso você provavelmente não precisa de um link no logotipo para o site principal será aberto em uma nova guia.

Para melhorar o suporte ao modo escuro, você também pode definir um logotipo diferente para este modo.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    navbar: {      title: 'Site Title',      logo: {        alt: 'Site Logo',        src: 'img/logo.svg',        srcDark: 'img/logo_dark.svg', // Por padrão, `logo.src`.        href: 'https://docusaurus.io/', // Pro padrão, `siteConfig.baseUrl`.        target: '_self', // Por padrão, este valor é calculado com base no atributo `href` (o link externo será aberto em uma nova aba, todos os outros na atual).      },    },    // ...  },};

Itens da barra de navegação#

Você pode adicionar itens à barra de navegação por meio de themeConfig.navbar.items.

Por padrão, os itens da barra de navegação são links regulares (interno ou externo).

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    navbar: {      items: [        {          // Client-side routing, used for navigating within the website.          // The baseUrl will be automatically prepended to this value.          to: 'docs/introduction',          // A full-page navigation, used for navigating outside of the website.          // You should only use either `to` or `href`.          href: 'https://www.facebook.com',          // Prepends the baseUrl to href values.          prependBaseUrlToHref: true,          // The string to be shown.          label: 'Introduction',          // Left or right side of the navbar.          position: 'left', // or 'right'          // To apply the active class styling on all          // routes starting with this path.          // This usually isn't necessary          activeBasePath: 'docs',          // Alternative to activeBasePath if required.          activeBaseRegex: 'docs/(next|v8)',          // Custom CSS class (for styling any item).          className: '',        },        // ... other items      ],    },    // ...  },};

O React Router deve aplicar automaticamente o estilo do link ativo aos links, mas você pode usar activeBasePath em casos extremos. Para casos em que um link deve estar ativo em vários caminhos diferentes (como quando você tem várias pastas de documentos na mesma barra lateral), você pode usar activeBaseRegex. activeBaseRegex é uma alternativa mais flexível para activeBasePath e tem precedência sobre ele -- o Docusaurus analisa em uma expressão regular que é testada contra a URL atual.

Os links externos (externos) obtêm atributos target="_blank" rel="noopener noreferrer" automaticamente.

Lista suspensa da barra de navegação#

Itens de barra de navegação também podem ser suspensos especificando os items, uma matriz interna de itens da barra de navegação.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    navbar: {      items: [        {          label: 'Community',          position: 'left', // or 'right'          items: [            {              label: 'Facebook',              href: '...',            },            {              label: 'GitHub',              href: '...',            },            // ... more items          ],        },      ],    },    // ...  },};

Link de doc na barra de navegação#

Se você deseja vincular a uma documentação específica, esse tipo especial de item da barra de navegação irá renderizar o link para o documento do docId fornecido. Ele obterá a classe navbar__link--active contanto que você navegue em um documento da mesma barra lateral.

docusaurus.config.js
module.exports = {  themeConfig: {    navbar: {      items: [        {          type: 'doc',          docId: 'introduction',
          //// Optional          position: 'left',          label: 'Docs',          activeSidebarClassName: 'navbar__link--active',          docsPluginId: 'default',        },      ],    },  },};

Lista suspensa de versões de documentos da Navbar#

Se você usa documentos com versões, este tipo de item especial da barra de navegação que irá exibir todas as versões disponíveis do seu site.

O usuário poderá mudar de uma versão para outra enquanto ficar no mesmo documento (desde que o id do documento seja constante entre versões).

docusaurus.config.js
module.exports = {  themeConfig: {    navbar: {      items: [        {          type: 'docsVersionDropdown',
          //// Optional          position: 'left',          // Add additional dropdown items at the beginning/end of the dropdown.          dropdownItemsBefore: [],          dropdownItemsAfter: [{to: '/versions', label: 'All versions'}],          // Do not add the link active class when browsing docs.          dropdownActiveClassDisabled: true,          docsPluginId: 'default',        },      ],    },  },};

Versão dos docs da Navbar#

Se você usar documentos com controle de versão, este tipo de item especial da barra de navegação será vinculado à versão active/browsed de seu documento (depende do url atual) e retrocederá para a versão mais recente.

docusaurus.config.js
module.exports = {  themeConfig: {    navbar: {      items: [        {          type: 'docsVersion',
          //// Optional          position: 'left',          to: '/path', // by default, link to active/latest version          label: 'label', // by default, show active/latest version label          docsPluginId: 'default',        },      ],    },  },};

Menu suspenso de localidade da Navbar#

Se você usar o i18n feature, este tipo de item especial da barra de navegação irá renderizar um menu suspenso com todas as localidades disponíveis do seu site.

O usuário poderá mudar de uma localidade para outra, enquanto permanece na mesma página.

docusaurus.config.js
module.exports = {  themeConfig: {    navbar: {      items: [        {          type: 'localeDropdown',
          //// Optional          position: 'left',          // Add additional dropdown items at the beginning/end of the dropdown.          dropdownItemsBefore: [],          dropdownItemsAfter: [            {              to: 'https://my-site.com/help-us-translate',              label: 'Help us translate',            },          ],        },      ],    },  },};

Pesquisa na Navbar#

Se você usar a pesquisa, a barra de pesquisa será o elemento mais à direita na barra de navegação.

No entanto, com este tipo de item especial da barra de navegação, você pode mudar o local padrão.

docusaurus.config.js
module.exports = {  themeConfig: {    navbar: {      items: [        {          type: 'search',          position: 'right',        },      ],    },  },};

Auto-ocultar a barra de navegação#

Você pode ativar esta interface de usuário legal que automaticamente oculta a barra de navegação quando um usuário começa a rolar para baixo a página, e mostrar novamente quando o usuário rola para cima.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    navbar: {      hideOnScroll: true,    },    // ...  },};

Estilo barra de navegação#

Você pode definir o estilo estático da barra de navegação sem desativar a habilidade de mudar de tema. O estilo selecionado sempre será aplicado, não importa qual usuário de tema tenha selecionado.

Atualmente, existem duas possíveis opções de estilo: dark e primary (baseado na cor --ifm-color-primary). Você pode ver a pré-visualização de estilos na documentação da Infima.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    navbar: {      style: 'primary',    },    // ...  },};

CodeBlock#

O Docusaurus usa Prism React Renderer para destacar blocos de código.

Tema#

Por padrão, usamos Palenight como tema de destaque de sintaxe. É possível especificar um tema personalizado da lista de temas disponíveis. Se você quiser usar um tema de destaque de sintaxe diferente quando o site estiver no modo escuro, você também pode fazer isso.

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    prism: {      theme: require('prism-react-renderer/themes/github'),      darkTheme: require('prism-react-renderer/themes/dracula'),    },    // ...  },};
note

Se você usar a linha que destaca a sintaxe Markdown, talvez seja necessário especificar uma cor de destaque diferente para o tema de destaque do modo escuro. Consulte a documentação para obter orientação.

Idioma padrão#

Você pode definir uma linguagem padrão para blocos de código se nenhuma língua for adicionada após a tripla quantidade de backticks de abertura (ou seja, ```). Observe que um nome de idioma válido deve ser passado, por exemplo.:

docusaurus.config.js
module.exports = {  // ...  themeConfig: {    prism: {      defaultLanguage: 'javascript',    },    // ...  },};

Rodapé#

Pode adicionar o logotipo e um direito autoral ao rodapé através do themeConfig.footer. O logotipo pode ser colocado na pasta estática. A URL do logotipo funciona da mesma maneira do logotipo da barra de navegação.

docusaurus.config.js
  // ...  footer: {    logo: {      alt: 'Facebook Open Source Logo',      src: 'img/oss_logo.png',      href: 'https://opensource.facebook.com',    },    copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,  }

Links do rodapé#

Você pode adicionar links ao rodapé através do themeConfig.footer.links:

docusaurus.config.js
module.exports = {  // ...  footer: {    links: [      {        // Label of the section of these links        title: 'Docs',        items: [          {            // Label of the link            label: 'Style Guide',            // Client-side routing, used for navigating within the website.            // The baseUrl will be automatically prepended to this value.            to: 'docs/',          },          {            label: 'Second Doc',            to: 'docs/doc2/',          },        ],      },      {        title: 'Community',        items: [          {            label: 'Stack Overflow',            // A full-page navigation, used for navigating outside of the website.            href: 'https://stackoverflow.com/questions/tagged/docusaurus',          },          {            label: 'Discord',            href: 'https://discordapp.com/invite/docusaurus',          },          {            label: 'Twitter',            href: 'https://twitter.com/docusaurus',          },          {            //Renders the html pass-through instead of a simple link            html: `                <a href="https://www.netlify.com" target="_blank" rel="noreferrer noopener" aria-label="Deploys by Netlify">                  <img src="https://www.netlify.com/img/global/badges/netlify-color-accent.svg" alt="Deploys by Netlify" />                </a>              `,          },        ],      },    ],  },};