Guia de Componentes

Componentes Globais

Propósito: Menu de navegação principal
Localização: src/_includes/nav.html
Uso: Incluído automaticamente em default.html

sidebar.html

Propósito: Barra lateral com navegação contextual
Funcionalidades: Busca, lista de páginas, links de repositórios

topbar.html

Propósito: Barra superior com controles
Funcionalidades: Toggle tema, controle fonte, breadcrumb

Componentes Default

default/head-default.html

Conteúdo:

default/header-default.html

Conteúdo: Cabeçalho da página

default/footer-default.html

Conteúdo: Rodapé com copyright

default/scripts-default.html

Conteúdo: Scripts JavaScript antes de </body>

Scripts/Features

scripts/theme-switcher.html

Funcionalidade: Toggle entre tema claro/escuro
Persistência: localStorage
Uso:

1
2
3
4
<!--

<script type="module" src="/site-attempt/assets/js/theme-manager.js"></script>
-->

scripts/font-size-control.html

Funcionalidade: Botões +/- para ajustar fonte
Persistência: localStorage

scripts/breadcrumb.html

Funcionalidade: Gera breadcrumbs dinâmicos
Configuração: src/_data/breadcrumb_config.yml

scripts/sidebar/search.html

Funcionalidade: Busca client-side
Dados: src/assets/json/search-index.json

scripts/sidebar/pasta-listing.html

Funcionalidade: Lista páginas de uma seção

Usar Componente

1
2
3
4
5
6
7
8
9
10
<!-- Sintaxe básica -->
{% include nav.html %}

<!-- Com parâmetros -->
{% include componente.html title="Título" %}

<!-- Acessar parâmetro dentro do include -->
<h1>{{ include.title }}</h1>

A navegação da sidebar é gerada automaticamente a partir de src/_data/navigation.yml.

Adicionar Nova Seção

Edite src/_data/navigation.yml:

1
2
3
4
5
sections:
  - name: "Nome da Seção"
    path: "pasta-dentro-de-content"
    max_depth: 2
    sort_by: "title"  # ou "date" ou "name"

Comportamento

Processamento

O plugin src/_plugins/navigation_generator.rb processa a árvore no build e salva em site.data.navigation_tree. A renderização usa src/_includes/scripts/sidebar/navigation-tree.html (recursivo).

Criar Novo Componente

  1. Criar src/_includes/novo-componente.html
  2. Adicionar estilos em src/_sass/components/_novo.scss
  3. Importar em src/_sass/_components.scss:
    1
    
    @import 'components/novo';
    
  4. Usar com {% include novo-componente.html %}