direito

Repositório direito
git clone git://git.sivaldodavi.com/direito.git
Log | Files | Refs

commit 839690762cd2bb4a091853a0d976bf342f7f0ec6
parent 1ce1a16430093234f7acf271a3c144e6ffff6083
Author: Sivaldo <gxixtx@xsxixvxaxlxdxoxdxaxvxix.xcxoxm>
Date:   Sat, 19 Sep 2026 19:26:58 -0300

chore: adicionar manual de frontmatter

Diffstat:
Astatic/manual-frontmatter.md | 284+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 284 insertions(+), 0 deletions(-)

diff --git a/static/manual-frontmatter.md b/static/manual-frontmatter.md @@ -0,0 +1,284 @@ +# Manual de Front Matter — Disciplinas e Assuntos + +Este manual documenta todos os campos de front matter (YAML) reconhecidos pelos +templates `single.html`, `disc-extras.html` e `baseof.html`, cobrindo tanto +páginas de **disciplina** (`_index.md` dentro de `content/txts/<disciplina>/`) +quanto páginas de **assunto** (arquivos `.md` individuais dentro de uma +disciplina). + +--- + +## 1. Estrutura de pastas esperada + +``` +content/ +└── txts/ + └── direito-constitucional/ ← disciplina (_index.md) + ├── _index.md + ├── principios-fundamentais.md ← assunto + ├── controle-de-constitucionalidade.md + └── ... +``` + +- A **disciplina** é a seção (`Section = "txts"`), identificada pelo `_index.md`. +- O **assunto** é uma página regular dentro dela. +- O slug da disciplina (`$discSlug`) é inferido automaticamente pelo Hugo a + partir do caminho da URL — não é um campo do front matter. + +--- + +## 2. Campos comuns (disciplina E assunto) + +Estes campos são lidos pelo partial `disc-extras.html`, que é compartilhado +entre os dois tipos de página. Funcionam exatamente da mesma forma nos dois +contextos. + +### `guide` (string, markdown) + +Texto do guia de estudo. Renderizado com `markdownify` dentro de um `<details>` +colapsável rotulado **"guia de estudo"**. + +```yaml +guide: | + ## Como estudar este conteúdo + 1. Leia o texto completo antes dos exercícios. + 2. Preste atenção nas notas de rodapé. + 3. Faça o quiz ao final. +``` + +- Aceita qualquer sintaxe Markdown (listas, negrito, links, etc). +- Se omitido, o colapsável de guia simplesmente não aparece. + +### `files` (lista de objetos) + +Materiais em formato de texto/link. Aparecem sob o rótulo **"textos"** dentro +do colapsável "materiais", com ícone ↗. + +```yaml +files: + - name: "Resumo em PDF" + url: "https://exemplo.com/resumo.pdf" + - name: "Artigo de referência" + url: "https://exemplo.com/artigo" +``` + +- Cada item **exige** `name` e `url`. +- Abre em nova aba (`target="_blank"`). + +### `videos` (lista de objetos) + +Mesma estrutura de `files`, exibidos sob o rótulo **"vídeos"**, ícone ▶. + +```yaml +videos: + - name: "Aula sobre o tema" + url: "https://youtube.com/watch?v=xxxx" +``` + +### `audios` (lista de objetos) + +Mesma estrutura de `files`, exibidos sob o rótulo **"áudios"**, ícone ♪. + +```yaml +audios: + - name: "Podcast explicativo" + url: "https://youtube.com/watch?v=yyyy" +``` + +### Comportamento do bloco "materiais" + +- O colapsável "materiais" **só aparece** se `files`, `videos` ou `audios` + tiver pelo menos um item. +- O contador no cabeçalho (`N itens`) soma os três juntos. +- A ordem de exibição é sempre: textos → vídeos → áudios. + +### Regra geral de visibilidade + +O bloco de colapsáveis inteiro (`disc-extras-wrap`) só é renderizado se +**pelo menos um** destes campos estiver presente: `guide`, `files`, `videos` +ou `audios`. Se nenhum existir, nada é exibido — sem erro, sem espaço vazio. + +--- + +## 3. Campos exclusivos de página de **assunto** + +Estes campos só são lidos por `single.html`, ou seja, só fazem sentido em +páginas de assunto individuais (não no `_index.md` da disciplina, a menos +que o template de listagem da seção também os leia explicitamente). + +### `title` (string, obrigatório) + +Título do assunto. Usado em: +- `<h1 class="text-title">` +- `<title>` da aba do navegador (`{{ .Title }} · {{ .Site.Title }}`) +- Breadcrumb final (`<span class="breadcrumb">`) + +```yaml +title: "Princípios Fundamentais" +``` + +### `references` (lista de strings) + +Referências bibliográficas do assunto. Cada item vira um `<p>` dentro do +bloco **"referências"**, exibido ao final da página. + +```yaml +references: + - "MENDES, Gilmar. Curso de Direito Constitucional. 2023." + - "BARROSO, Luís Roberto. O Direito Constitucional e a Efetividade..." +``` + +- Só aparece se o campo existir e não estiver vazio. +- Não aceita objetos — apenas strings simples. + +### Quiz inline (automático — não é campo de front matter) + +Se existir uma página em `content/quizzes/<disciplina>/<mesmo-slug>.md` +que **não** tenha `simulado: true` nem `"simulado"` no nome do arquivo, o +assunto automaticamente ganha uma seção de exercícios inline +("exercícios deste assunto"), com quiz interativo carregado via JavaScript. + +Não é necessário declarar nada no front matter do assunto para isso +funcionar — a ligação é feita pelo casamento de nomes de arquivo +(`File.BaseFileName`) entre `txts/<disciplina>/<slug>.md` e +`quizzes/<disciplina>/<slug>.md`. + +Campo relevante **no quiz**, não no assunto: + +```yaml +# dentro do arquivo de quiz correspondente +simulado: false # false ou omitido = elegível a aparecer inline + # true = tratado como simulado, não aparece inline +``` + +--- + +## 4. Campos exclusivos de página de **disciplina** (`_index.md`) + +Não há campos exclusivos de disciplina identificados nos templates +analisados — `_index.md` usa os mesmos `guide` / `files` / `videos` / +`audios` da seção 2. O `title` da disciplina também é obrigatório e é o que +aparece: + +- No breadcrumb de todos os assuntos filhos (`{{ .Title }}` do + `range $.Site.Sections`). +- No link de "voltar" para a disciplina a partir de qualquer assunto. + +```yaml +title: "Direito Constitucional" +``` + +> ⚠️ **Atenção:** o campo `references` é lido apenas em `single.html`. +> Se o `_index.md` da disciplina usa um template de listagem diferente +> (`list.html` ou similar) que não chama esse trecho, `references` não +> terá efeito ali. Da mesma forma, o partial `disc-extras.html` só é +> aplicado ao `_index.md` se o template de listagem da seção também o +> chamar explicitamente — o comportamento não é automático fora de +> `single.html`. + +--- + +## 5. Exemplo completo — disciplina + +`content/txts/direito-constitucional/_index.md` + +```yaml +--- +title: "Direito Constitucional" + +guide: | + ## Como estudar Direito Constitucional + 1. Comece pela teoria da constituição. + 2. Depois avance para direitos fundamentais. + 3. Organização do poder por último. + +files: + - name: "Ementa da disciplina" + url: "https://exemplo.com/ementa.pdf" + - name: "Bibliografia completa" + url: "https://exemplo.com/bibliografia" + +videos: + - name: "Aula introdutória" + url: "https://youtube.com/watch?v=xxxx" + +audios: + - name: "Podcast sobre a matéria" + url: "https://youtube.com/watch?v=yyyy" +--- +``` + +## 6. Exemplo completo — assunto + +`content/txts/direito-constitucional/principios-fundamentais.md` + +```yaml +--- +title: "Princípios Fundamentais" + +guide: | + ## Como estudar este assunto + 1. Leia o texto completo antes dos exercícios. + 2. Preste atenção nas notas de rodapé. + 3. Faça o quiz ao final. + +files: + - name: "Resumo em PDF" + url: "https://exemplo.com/resumo.pdf" + +videos: + - name: "Aula sobre o tema" + url: "https://youtube.com/watch?v=xxxx" + +audios: + - name: "Podcast explicativo" + url: "https://youtube.com/watch?v=yyyy" + +references: + - "MENDES, Gilmar. Curso de Direito Constitucional. 2023." + - "BARROSO, Luís Roberto. O Direito Constitucional e a Efetividade..." +--- + +Conteúdo do assunto em Markdown... +``` + +## 7. Exemplo mínimo (sem extras) + +Válido tanto para disciplina quanto para assunto — nenhum colapsável +aparece, apenas título e conteúdo: + +```yaml +--- +title: "Controle de Constitucionalidade" +--- + +Conteúdo do assunto... +``` + +--- + +## 8. Tabela de referência rápida + +| Campo | Tipo | Onde funciona | Obrigatório | Efeito visual | +|--------------|-------------------|------------------------|-------------|------------------------------------------| +| `title` | string | disciplina e assunto | Sim | `<h1>`, título da aba, breadcrumb | +| `guide` | string (markdown) | disciplina e assunto | Não | Colapsável "guia de estudo" | +| `files` | lista `{name,url}`| disciplina e assunto | Não | Seção "textos" em "materiais" | +| `videos` | lista `{name,url}`| disciplina e assunto | Não | Seção "vídeos" em "materiais" | +| `audios` | lista `{name,url}`| disciplina e assunto | Não | Seção "áudios" em "materiais" | +| `references` | lista de strings | apenas assunto | Não | Bloco "referências" ao final | +| `simulado` | boolean | apenas no quiz vinculado | Não | Controla se o quiz aparece inline | + +--- + +## 9. Erros comuns a evitar + +- **Esquecer `name` ou `url` em `files`/`videos`/`audios`** → o link é + renderizado quebrado ou vazio, sem erro visível no build. +- **Usar `references` no `_index.md` da disciplina** esperando que apareça + — só funciona em páginas processadas por `single.html`. +- **Nomear o arquivo de quiz de forma diferente do assunto** → o quiz + inline não é encontrado, pois o casamento é feito por + `File.BaseFileName` idêntico entre `txts` e `quizzes`. +- **Marcar `simulado: true` sem querer** → o quiz deixa de aparecer + embutido na página do assunto e só fica acessível no "modo completo".