Terminal

O terminal é uma consola de sistema: um só tipo de letra monoespaçado sobre um fundo preto, painéis de linha fina com o cabeçalho separado por um traço, e cada etiqueta — um botão, a etiqueta de um campo, um separador, o cabeçalho de uma coluna — em maiúsculas, quase sempre a negrito. O ciano é o acento: os títulos grandes, os títulos de painel, o botão sólido e o foco. Uma seleção — uma linha de tabela sob o ponteiro, um segmento premido, um separador em pílula escolhido, o número da página atual, o item de menu sob o ponteiro — é impressa em vídeo inverso, escuro sobre ciano, como um terminal destaca uma linha. As paletas de sucesso, aviso e perigo são as suas cores de estado, verde, amarelo e vermelho, e um botão de contorno ou uma tag é desenhado na sua cor, linha e texto por igual. Nada é arredondado além de um botão de opção, e nada projeta sombra. O modo escuro é o aspeto original; o modo claro mantém cada linha, cada maiúscula e cada canto reto e imprime-os a preto sobre quase branco.

Um cartão

A mesma marcação, com outro estilo graças a uma só folha.

  1. Conta

  2. Perfil

  3. Confirmar

Progresso50%
50
Guardado
As suas alterações já estão publicadas.
Copiado para a área de transferência
O que é um preset?
Uma segunda folha que muda o estilo de todos os componentes de uma vez.
Segue o modo escuro?
Sim — experimenta o interruptor no topo da página.
Ainda posso usar o theme()?
Sim, e ele prevalece sobre o preset.
  1. Hoje

    Preset publicado

    O aspeto todo, numa chamada.

  2. Ontem

    Documentação escrita

  3. Segunda-feira

    Primeiro esboço

O aspeto todo, numa chamada.
Liga-o depois da folha principal.
Uma opção: preset.
RascunhoPublicadoArquivado
AL312GH

Como usar

import { iconSet, styles } from 'sitelo/ui'

iconSet('square')

head(
  title('O meu site'),
  styles({ preset: 'terminal' }),
)
// <link rel="stylesheet" href="/su/ui-c9428b65.css">
// <link rel="stylesheet" href="/su/terminal-06767808.css">

iconSet('square') desenha os ícones a condizer — linhas finas e retas, de pontas quadradas e cantos vivos, como na pré-visualização acima —, incluindo os que os componentes desenham por si. Chama-o uma vez, a partir de um módulo que as tuas páginas importem.

Compõe também a página com ele — o fundo, a cor do texto e o tipo de letra — e os componentes assentam nela como acima. O preset usa a JetBrains Mono, a IBM Plex Mono ou a Source Code Pro quando a página carrega uma delas e, caso contrário, o tipo de letra monoespaçado do sistema; não descarrega nada.

body {
  background: var(--su-bg);
  color: var(--su-text);
  font-family: var(--su-font-mono);
}

As tuas próprias cores

theme() continua a funcionar por cima, por isso um preset é um ponto de partida e não um fork — aqui o acento passa a um âmbar de fósforo, também nas linhas com que é desenhado. Três tokens são do próprio preset: --su-tm-tracking, o espaçamento entre as maiúsculas de uma etiqueta; --su-tm-track, a calha por onde corre uma barra de progresso ou um cursor; e --su-tm-field, a linha à volta de um campo, que no modo escuro é o mesmo cinzento ténue dos painéis — sobe-a se quiseres margens de campo mais marcadas.

head(
  styles({ preset: 'terminal' }),
  theme(
    {
      primary: {
        base: '#8a5200', hover: '#734400', active: '#5c3600',
        soft: '#f6e6cc', softHover: '#efd9b3', softFg: '#4d2e00',
        border: '#c9a066', ring: 'rgba(138, 82, 0, 0.3)',
      },
    },
    {
      dark: {
        primary: {
          base: '#ffb000', hover: '#ffd480', active: '#e69e00',
          soft: '#33260d', softHover: '#45330f', softFg: '#ffd480',
          border: '#d99600', ring: 'rgba(255, 176, 0, 0.4)',
        },
      },
    },
  ),
)