Hero

Um hero é a primeira coisa numa página inicial de marketing ou de documentação. Desenha uma <section> com um <h1> lá dentro — por isso é o título da página, não um cartaz decorativo que por acaso é grande.

Hero básico

Sites estáticos, sem a framework

Escreve funções que devolvem HTML. Fica com um site completo.

hero({
  level: 2,
  title: 'Sites estáticos, sem a framework',
  description: 'Escreve funções que devolvem HTML. Fica com um site completo.',
},
  button({ size: 'lg' }, 'Começar'),
  button({ size: 'lg', variant: 'outline', color: 'neutral' }, 'Ler a documentação'),
)

Com antetítulo

Uma linha curta por cima do título — uma versão, uma categoria, um anúncio.

sitelo 2.7

Agora com biblioteca de componentes

Setenta componentes, nenhum runtime, um script opcional.

hero({
  level: 2,
  eyebrow: 'sitelo 2.7',
  title: 'Agora com biblioteca de componentes',
  description: 'Setenta componentes, nenhum runtime, um script opcional.',
},
  button({ size: 'lg', href: '/pt/ui' }, 'Percorrer os componentes'),
)

Alinhado à esquerda

Código aberto

Construído às claras

Licença MIT, e pequeno o suficiente para se ler numa tarde.

hero({
  level: 2,
  align: 'start',
  eyebrow: 'Código aberto',
  title: 'Construído às claras',
  description: 'Licença MIT, e pequeno o suficiente para se ler numa tarde.',
},
  button({ href: 'https://github.com/paul-browne/sitelo' }, 'Ver no GitHub'),
)

Com média

Passar media muda para duas colunas assim que houver espaço, e volta a empilhar numa só em ecrãs estreitos. Combina naturalmente com mockup().

Vê a coisa a andar

Quando chega ao navegador, cada página já é HTML estático.

example.com
Olá mundo

Renderizado na construção.

hero({
  level: 2,
  align: 'start',
  title: 'Vê a coisa a andar',
  description: 'Quando chega ao navegador, cada página já é HTML estático.',
  media: mockup({ variant: 'browser', url: 'example.com' },
    div({ style: 'padding: 1.5rem; background: var(--su-surface-2)' },
      text({ variant: 'h5', as: 'div' }, 'Olá mundo'),
      text({ variant: 'small', tone: 'muted' }, 'Renderizado na construção.'),
    ),
  ),
},
  button('Começar'),
)

Dentro de um contentor

Um hero não tem limite de largura próprio — mete-o num container() para ficar alinhado com tudo o resto da página.

Contido

O contentor define a largura; o hero define o ritmo.

container({ size: 'md', style: 'background: var(--su-surface-2); border-radius: 0.6rem' },
  hero({
    level: 2,
    title: 'Contido',
    description: 'O contentor define a largura; o hero define o ritmo.',
  }),
)

Nível de título

O título é por predefinição o <h1> da página, o que está certo numa página de entrada. Um hero a meio de uma página não é o título da página, por isso baixa-o com level — todas as demonstrações desta página o fazem, já que a página tem um h1 seu.

Só um título

Cada parte é opcional, e nada vazio é desenhado.

Documentação

hero({ level: 2, title: 'Documentação' })

Props

PropTipoPredefiniçãoDescrição
eyebrowChild—Linha pequena em maiúsculas por cima do título.
titleChild—Desenhado como o h1 da página.
descriptionChild—A frase por baixo.
mediaChild—Ao lado do texto num ecrã largo, por cima num estreito.
align'center' | 'start''center'Alinhamento do texto quando não há média.
levelnumber1Nível de título. Baixa-o para um hero a meio de uma página.
asstring'section'Elemento a renderizar.

Os filhos passam a ser a fila de ações sob a descrição.