byescaleiraDocumentação

Fundamentos

Tokens: os valores

Todos os valores da identidade visual, para aplicar em qualquer plataforma. Na web, use as variáveis de web/tokens.css em vez de copiar os números. Nas outras plataformas, crie os recursos nativos (cores com variante clara e escura, estilos de texto, espaços) com estes nomes e estes valores, nada além.

#Cor

Cada cor tem o valor do tema claro e do escuro. O escuro é o mesmo sistema invertido: paper e ink trocam de lugar e os sinais clareiam.

TokenClaroEscuroUso
paper#ffffff (255, 255, 255)#000000 (0, 0, 0)Fundo da página, da janela e da tela. Branco puro no claro, preto puro no escuro: nunca creme, cinza ou um preto "quase".
surface#ffffff (255, 255, 255)#000000 (0, 0, 0)Fundo de painéis, campos e popovers. Igual a paper: superfícies se separam por fio, não por tom.
sunken#f4f4f4 (244, 244, 244)#141414 (20, 20, 20)Hover, pressionado e aviso neutro. Nunca em bloco grande.
ink#000000 (0, 0, 0)#ffffff (255, 255, 255)Texto principal e toda interação: botão principal, seleção, filtro ativo, aba ativa, foco. 21:1 sobre paper.
ink-muted#5c5c5c (92, 92, 92)#a3a3a3 (163, 163, 163)Texto secundário: metadados, legendas, rótulos. 6,7:1 no claro, 8,3:1 no escuro.
ink-faint#737373 (115, 115, 115)#8a8a8a (138, 138, 138)Placeholder, contagem, item vazio. Só texto curto e não essencial. 4,7:1 no claro, 6,1:1 no escuro.
rule#e8e8e8 (232, 232, 232)#262626 (38, 38, 38)Fio de 1px entre linhas, painéis e seções. É a forma principal de separar áreas.
rule-strong#cccccc (204, 204, 204)#404040 (64, 64, 64)Borda de controle em repouso (botão secundário, busca, segmented). No hover, a borda vira ink.
warn#9e5700 (158, 87, 0)#f0b450 (240, 180, 80)Âmbar: dúvida e atenção ("leia antes de confirmar", dado incompleto). Texto sobre paper ou warn-wash. 5,5:1 no claro, 9,7:1 no escuro.
warn-wash#fff5e6 (255, 245, 230)#2a1f0d (42, 31, 13)Fundo de aviso de atenção, sempre com texto em warn.
danger#b3261e (179, 38, 30)#ff7a6b (255, 122, 107)Vermelho: erro, cancelado, ação destrutiva. Texto sobre paper ou danger-wash. 6,5:1 no claro, 8,3:1 no escuro.
danger-wash#fdeceb (253, 236, 235)#2c1210 (44, 18, 16)Fundo de aviso de erro, sempre com texto em danger.
ok#0b7a3f (11, 122, 63)#4fbf7f (79, 191, 127)Verde: feito, salvo, já existe. Texto sobre paper ou ok-wash. 5,4:1 no claro, 9,1:1 no escuro.
ok-wash#e9f6ee (233, 246, 238)#0d2318 (13, 35, 24)Fundo de aviso de sucesso, sempre com texto em ok.
accent#000000 (0, 0, 0)#ffffff (255, 255, 255)= ink. Papel de destaque. Aponta para ink: interação é tinta, nunca uma cor de marca.
accent-wash#f4f4f4 (244, 244, 244)#141414 (20, 20, 20)= sunken. Fundo suave de destaque.
on-accent#ffffff (255, 255, 255)#000000 (0, 0, 0)= paper. Texto e ícone sobre ink cheio.
focus#000000 (0, 0, 0)#ffffff (255, 255, 255)= ink. Anel de foco: 2px sólido, afastado 2px, em todo elemento focável.

#Contraste (WCAG)

ink sobre paper é 21:1 nos dois temas. O build falha se algum texto ficar abaixo de 4,5:1.

ParClaroEscuro
ink-muted sobre paper6,7:18,3:1
ink-faint sobre paper4,7:16,1:1
warn sobre paper5,5:111,3:1
danger sobre paper6,5:18,2:1
ok sobre paper5,4:19,1:1

#Alto contraste

Alto contraste do sistema (prefers-contrast: more, "Aumentar contraste" da Apple, texto em alto contraste do Android, temas de contraste do Windows). Os cinzas de texto e os fios viram ink; o resto não muda. Na web, prefers-contrast: more ou data-contrast="more" na raiz.

TokenVira
ink-mutedink
ink-faintink
ruleink
rule-strongink

#Datas especiais

Datas especiais. A cor da data informa a data: um fio de 3px no topo da página e um ponto de 8px com o nome da data na barra do topo. Nada mais muda: o fundo continua paper, a interação continua ink, o símbolo e o destaque não mudam. A data some sozinha quando o período acaba. Fuso: America/Sao_Paulo. Na web, data-season="<id>" na raiz define --season. As regras estão em datas.md.

IdNomePeríodoClaroEscuroContraste (claro, escuro)Nota
ano-novoAno-novo26/12 a 06/01#8a6700#e8c2525,2:1, 12,3:1Dourado, da virada do ano.
carnavalCarnavalPáscoa -50 a -46 dias#b0127a#ff6ec76,5:1, 8,3:1Do sábado à Quarta-feira de Cinzas.
pascoaPáscoaPáscoa -2 a 0 dias#6a3fb5#b79cff7,0:1, 9,2:1Da Sexta-feira Santa ao domingo de Páscoa.
festa-juninaFesta junina01/06 a 30/06#c0470c#ff9a5c5,1:1, 10,0:1O mês de junho.
dia-da-advocaciaDia da Advocacia11/08#8c1d40#ff8fb08,9:1, 9,8:111 de agosto, data dos cursos jurídicos no Brasil.
independenciaIndependência07/09#00843d#3ddc844,8:1, 11,8:17 de setembro.
dia-das-criancasDia das Crianças12/10#00838f#4dd0e14,5:1, 11,4:112 de outubro.
natalNatal01/12 a 25/12#c41e3a#ff6b7f5,8:1, 7,7:1De 1º a 25 de dezembro.

#Tipografia

  • Schibsted Grotesk (sans): Toda a interface: títulos, navegação, botões, números. SIL Open Font License 1.1; Google Fonts Schibsted Grotesk, npm @fontsource-variable/schibsted-grotesk.
  • Source Serif 4 (serif): Só leitura longa: textos de várias linhas, documentos, citações. SIL Open Font License 1.1; Google Fonts Source Serif 4, npm @fontsource-variable/source-serif-4.

Tamanhos em px (web, Android em sp, Windows em epx) e em pt (Apple: 1pt = 1px de layout; a coluna pt é para slides e documentos impressos, 1px = 0,75pt). Onde há dois valores, o tamanho é fluido entre o mínimo e o máximo conforme a largura.

EstiloFamíliapxpt (slides)PesoEntrelinhaEspaçamentoUso
heroSchibsted Grotesk56–10442–787000.8-0.05emA peça grande da tela, uma só: a data, o número, a palavra que resume a tela.
displaySchibsted Grotesk52–13639–1026500.92-0.05emTítulo de página avulsa e de capa de slide. No máximo 12ch.
headlineSchibsted Grotesk32–5624–426001.05-0.035emTítulo de seção de landing e de slide. No máximo 18ch.
text-xlSchibsted Grotesk28216001.20Título de tela.
text-lgSchibsted Grotesk22.416.86001.25-0.02emTítulo de seção.
text-mdSchibsted Grotesk1813.56501.25-0.01emTítulo de grupo e lead.
text-baseSchibsted Grotesk1511.34001.50Corpo da interface.
titleSchibsted Grotesk1511.36001.35-0.005emTítulo de linha de lista e de cartão de evento.
text-smSchibsted Grotesk139.84001.450Metadados, botões, filtros, avisos.
text-xsSchibsted Grotesk1296501.60Etiquetas, contagens, horários.
brandSchibsted Grotesk16.812.67001-0.03emO nome do produto, em tinta. A marca é só o nome.
readingSource Serif 41813.54001.70Leitura longa, na medida de 68ch.
excerptSource Serif 4139.84001.450Trecho de texto longo numa lista, cortado em 2 linhas.

#Espaço

TokenValorUso
space-14Ajuste fino: entre título e contagem.
space-28Entre controles de uma barra; entre ícone e texto.
space-312Padding vertical de linhas e avisos.
space-416Padding horizontal de avisos; margem lateral mínima no celular.
space-524Entre colunas de uma linha; entre abas.
space-632Margem lateral das barras e entre seções.
space-748Respiro de página e de estado vazio.

#Raio

TokenValorUso
radius-controlcápsula (metade da altura)Todo controle: botão, busca, filtro, segmented. Sempre pílula.
radius-pillcápsula (metade da altura)Etiquetas e contagens.
radius-row10Linha selecionada e avisos.
radius-block14Popovers, menus e folhas.
radius-inner8Opções dentro de um popover.

#Fio e marcas de dado

TokenValorUso
rule-width1Todo fio e toda borda. Não existe borda grossa; a única exceção é o fio de cor de dado (3px).
data-rule-width3O fio de cor de dado, ao lado do item que ele marca.
data-dot8O ponto de cor de dado, ao lado do nome que ele marca.

#Sombra

  • shadow-pop: deslocamento 24 para baixo, desfoque 48, preto a 12%. Só em popover, a única superfície que flutua (na web e no Windows). Nas plataformas Apple, quem flutua é o vidro do sistema.

#Movimento

TokenDuraçãoCurvaUso
motion-fast120mseaseFundo, borda e cor de controles e linhas.
motion-pop140msease-outPopover entrando (4px para baixo e opacidade).
motion-progress1300mslinearBarra de carregamento.
motion-spin900mslinearSpinner.

#Layout

TokenValorUso
measure68chLargura máxima de texto de leitura.
index-widthclamp(340px, 26vw, 540px)Coluna de lista ao lado da leitura: cresce com a janela.
topbar-height52pxAltura mínima da barra do topo na web.
gutter-mobile16pxMargem lateral no celular.
doc-nav-width264pxDocumentação em livro: a coluna do menu de páginas, à esquerda.
doc-toc-width232pxDocumentação em livro: a coluna "Nesta página", à direita. Some abaixo de 1180px.
doc-max-width1480pxDocumentação em livro: a largura máxima das três colunas juntas.