Interativos e mobiliário
Uma demo de canvas ao vivo e o contrato por trás dela, e então os componentes quietos que emolduram cada nota — os que você vem olhando desde a primeira página.
§3.1DemoMount — ao vivo
A divisão de trabalho é a de sempre no pacote: a marcação de montagem (palco, slot de controles, slot de legenda) vem no pacote; o módulo da demo e seu carregador pertencem ao site. Este site guarda o carregador em src/lib/demo-loader.ts e chama mountAllDemos() uma vez no layout; a chamada roda em toda página, mas o chunk de um módulo de demo só é baixado numa página que carrega uma montagem [data-demo].
Uma demo que recebe entrada de ponteiro no canvas passa interactive — o palco então reivindica os gestos de toque e mostra uma mira. Esta é passiva (só renderiza), então deixa a flag de fora e um deslizar sobre o canvas ainda rola a página. Ela desenha a interferência de ondas de duas fontes com o token de tinta da própria página, então acompanha o tema:
Duas fontes pontuais emitem ondas circulares; onde crista encontra crista a tinta se acumula, onde crista encontra vale o papel aparece. Alterne o tema — a demo se re-entinta a partir dos tokens vivos.
O contrato do módulo é um único export default, mount(ctx), devolvendo uma função de limpeza; o carregador resolve ids de módulo como waves/interference do jeito que o site preferir (import.meta.glob aqui).
§3.2Mobiliário de página
Os componentes restantes emolduram a nota em vez de preenchê-la:
Heroabre uma nota: kicker, título display, um lide que passa pelo pipeline de Markdown inteiro, uma linha de meta e umtocLabelopcional que acrescenta à barra lateral uma linha de "introdução" sem número. Otitledo frontmatter continua sendo o canônico curto para o<title>e os cartões; o do hero pode ser longo.PartHeroabre um capítulo de um hub — a cabeça desta própria página. Seu kicker nunca é digitado: a rota entrega o rótulo "Parte III · …" do capítulo viaprops.partLabel.Partdivide uma nota longa de página única em partes; o preset de numeração o transforma nas linhas de grupo "PARTE II · Fundamentos" da barra lateral. A vitrine completa é cortada assim.HubCarde.hub-gridsão os cartões de abertura de um hub;.pathé sua caixa de caminho de leitura — ambos em a visão geral desta galeria.LocalTocrenderiza uma lista de salto na própria página; aceita os dois formatos de ToC que os dois presets de numeração produzem e se esconde abaixo de um mínimo configurável. Logo abaixo, ao vivo, sobre o ToC deste capítulo.SidebarMemorymantém uma barra lateral rolante onde o leitor a deixou, através das trocas de página, e centraliza o item atual ([aria-current="page"]por padrão) sempre que ele ficaria fora de vista. Coloque-o dentro da caixa de rolagem da barra lateral, depois da marcação de navegação; ele roda antes da primeira pintura, então a barra nunca pisca no topo. A barra lateral desta demo o carrega.LineageSvgemoldura um SVG desenhado à mão (uma linhagem de métodos, uma árvore de taxonomia) como cartão — um logo abaixo.PageFooteré a letra miúda ao pé da nota — a linha sob cada nota daqui.- As peças de navegação vivem em o capítulo wiki; o lado Markdown da galeria é a vitrine completa.
§3.3LocalToc e LineageSvg, ao vivo
LocalToc alimentado com o ToC de build desta própria página — os mesmos dados que a barra lateral consome, entregues à nota como props.toc:
E LineageSvg ao redor de um diagrama autoral, entintado inteiramente em tokens semânticos para assentar nos dois temas:
§3.4Mobiliário sem componente
Algumas peças são classes simples no base.css, para sites que as renderizam no próprio layout ou as escrevem como HTML na prosa:
| Classe | O que é |
|---|---|
.page-head + .kicker, .page-desc, .page-date | uma cabeça de página guiada pelo frontmatter (kicker, h1, descrição, data), renderizada por um layout no lugar de um <Hero> |
.banner, .banner-fallback | um aviso de uma linha sob a cabeça; a variante fallback é a discreta |
.page-foot | um rodapé de letra miúda em duas colunas (slot esquerdo, slot direito) |
.speak | a glosa em linguagem simples sob um título de mergulho fundo; seu rótulo é --speak-label |
.path + .title, .route, .arrow | uma caixa de caminho de leitura num hub |
.ref-tag | uma pequena tag monoespaçada numa lista de referências (um veículo, um ano) |
.tag, .tag.teal / .mustard / .violet | os selos dos cartões de artigo, usáveis em qualquer lugar |
.measured + .measured-head, .measured-body, .measured-pane (.doc), .measured-tag | o cartão de comparação documentado-versus-medido: uma barra de título verde-azulada sólida sobre dois painéis, o painel .doc levando a afirmação e o outro a medição — uma silhueta distinta de qualquer callout |
.paper .idea-label | o pequeno rótulo de ideia central, em caixa alta, dentro do corpo de um PaperCard, por exemplo <span class="idea-label">Ideia central</span> |