Rodapé

Um rodapé é uma grelha de colunas que se ajusta sozinha, mais uma linha final opcional que ocupa sempre toda a largura, sejam quantas forem as colunas.

É exportado como footer e como siteFooter, porque footer é também o elemento <footer> do javascript-to-html e importar ambos com um só nome é um erro de sintaxe.

Rodapé básico

footer(
  footerColumn({ title: 'Documentação' },
    '<a href="/pt/docs">Primeiros passos</a>',
    '<a href="/pt/docs/routing">Rotas</a>',
    '<a href="/pt/docs/data">Carregamento de dados</a>',
  ),
  footerColumn({ title: 'Componentes' },
    '<a href="/pt/ui">Visão geral</a>',
    '<a href="/pt/ui/button">Botão</a>',
    '<a href="/pt/ui/card">Cartão</a>',
  ),
  footerColumn({ title: 'Projeto' },
    '<a href="https://github.com/paul-browne/sitelo">GitHub</a>',
    '<a href="https://www.npmjs.com/package/sitelo">npm</a>',
  ),
)

Com linha final

footerBottom() atravessa todas as colunas, por isso continua a ser uma linha de largura total faça o que fizer a grelha por cima.

footer(
  footerColumn({ title: 'Documentação' }, '<a href="/pt/docs">Guia</a>', '<a href="/pt/ui">Componentes</a>'),
  footerColumn({ title: 'Exemplos' }, '<a href="/pt/examples">Todos os exemplos</a>'),
  footerBottom(
    text({ variant: 'caption' }, '© 2026 Paul Browne · MIT'),
    stack({ direction: 'row', gap: 'sm' },
      chip({ size: 'sm', color: 'neutral' }, 'v2.7'),
      chip({ size: 'sm', color: 'success', dot: true }, 'Construção a passar'),
    ),
  ),
)

Uma coluna de marca

Uma coluna não tem de ser ligações. Tudo o que passes como filho do footer() em vez de uma coluna ocupa a sua própria célula na grelha.

sitelo

Geração de sites estáticos sem configuração, com o Vite por baixo.

footer(
  div(
    stack({ gap: 'sm' },
      text({ variant: 'h5', as: 'div' }, 'sitelo'),
      text({ variant: 'small', tone: 'muted' }, 'Geração de sites estáticos sem configuração, com o Vite por baixo.'),
    ),
  ),
  footerColumn({ title: 'Documentação' }, '<a href="/pt/docs">Guia</a>', '<a href="/pt/ui">Componentes</a>'),
  footerColumn({ title: 'Projeto' }, '<a href="#">GitHub</a>', '<a href="#">npm</a>'),
)

Colunas fixas

Por predefinição as colunas ajustam-se sozinhas. columns aceita qualquer valor de grid-template-columns quando queres uma forma específica — uma coluna de marca larga e duas colunas estreitas de ligações, por exemplo.

Uma primeira coluna mais larga para a marca e uma frase sobre ela.

footer({ columns: '2fr 1fr 1fr' },
  div(text({ variant: 'small', tone: 'muted' }, 'Uma primeira coluna mais larga para a marca e uma frase sobre ela.')),
  footerColumn({ title: 'Documentação' }, '<a href="/pt/docs">Guia</a>'),
  footerColumn({ title: 'Mais' }, '<a href="/pt/examples">Exemplos</a>'),
)

Só a linha final

footer(
  footerBottom(text({ variant: 'caption' }, '© 2026 · Feito com sitelo')),
)

Props

footer():

PropTipoPredefiniçãoDescrição
columnsstring—Um valor de grid-template-columns. Ajusta-se sozinho quando omitido.
asstring'footer'Elemento a renderizar.
PartePropsPredefiniçãoDescrição
footerColumntitle—Uma coluna com título; os filhos passam a uma lista de ligações.
footerBottom—Linha de largura total sob as colunas.