Skip to content

Tokens e temas ​

Os tokens seguem o método do IBM Carbon, em três camadas:

  1. Paleta (--tj-navy-900, --tj-blue-500…): os valores. Nenhum componente usa a paleta direto.
  2. Papéis (--tj-background, --tj-layer-01, --tj-text-primary…): o que cada valor faz. Um tema troca só esta camada.
  3. Tokens de componente (--tj-button-*, --tj-avatar-*): os poucos valores que só um componente usa e que nenhum papel cobre.

Os componentes usam só os papéis e os próprios tokens de componente. Todo valor solto fica na paleta, inclusive os do tema escuro, e um teste reprova cor escrita fora dela.

A marca segue o manual de marca do TJES: azul do logo #1e84ff, rosa #f6adcd e azul institucional #2d66f5, que é o azul de ação. O cabeçalho #0c0a39 e a fonte Roboto vêm do portal tjes.jus.br.

Tema claro e escuro ​

ts
import { getThemePreference, initTheme, setTheme } from '@lab-inovacao-tjes/design-system'

initTheme()          // no main.ts: aplica a escolha guardada ou segue o sistema operacional
setTheme('dark')     // troca e guarda a escolha
setTheme('system')   // apaga a escolha e volta a seguir o sistema
getThemePreference() // 'light', 'dark' ou 'system'

O tema vale para a página inteira (data-theme no <html>) ou só para um trecho, com data-theme="dark" num elemento. Para a pessoa escolher, use o BaseThemeSwitch no menu dela.

  • Sem escolha guardada, a tela segue o sistema operacional, inclusive quando ele troca de claro para escuro com a página aberta. Nada é guardado enquanto a pessoa não escolhe.
  • A escolha fica no localStorage, na chave ds-theme-choice. Se o navegador bloquear o armazenamento, a escolha vale até a página ser fechada.
  • Até a versão 0.8.0, a chave era ds-theme, e o initTheme() guardava nela o tema do sistema já no primeiro acesso, sem a pessoa escolher nada. Agora o initTheme() apaga essa chave sem transformá-la em escolha, e a tela volta a seguir o sistema. Se o app chamava setTheme('light') ou setTheme('dark') na 0.8.0, chame de novo depois de atualizar.
  • Cada troca dispara no document o evento ds-themechange (THEME_CHANGE_EVENT), com o tema aplicado e a escolha em detail.
  • Não há tema próprio de alto contraste. O alto contraste do Windows (forced-colors) troca as cores pelas do sistema operacional em qualquer tema, e os componentes desenham bordas, seleção e foco com as cores do sistema.

Como ler as tabelas ​

Cada token tem uma linha: o valor, quando usar e quando não usar. Quando o valor muda com o tema, a coluna mostra os dois, claro / escuro. Os valores soltos, de onde os papéis tiram as cores, ficam na página Paleta. As tabelas desta página e da Paleta cobrem todos os 271 tokens de tokens.css, e o teste tests/docsTokens.test.ts reprova token sem linha nas duas ou com valor diferente do arquivo.

Contraste ​

O teste tests/contrast.test.ts mede o contraste dos pares de papéis que os componentes usam, nos dois temas: texto sobre cada fundo em que aparece, com 4,5:1 ou mais, e borda de campo, contorno de foco, preenchimento de barra e ícone com 3:1 ou mais. Ficam fora da conta, com o motivo escrito no teste, o texto e o ícone de controle desabilitado, o halo translúcido de foco (que sempre vem com um contorno sólido medido), as divisórias e as formas de situação que sempre vêm com texto.

Fundo e camadas ​

TokenValorQuando usarQuando não usar
--tj-background#f6f7fb / #08071fFundo da página, atrás de cartões e tabelas.Dentro de cartão, tabela ou modal: use --tj-layer-01.
--tj-background-brand#0c0a39Cabeçalho institucional do BaseAppShell e fundo do BaseFooter. É o azul-marinho do portal e não muda no tema escuro.Em botão, faixa de destaque ou fundo de conteúdo.
--tj-background-inverse#0c0a39 / #e7e9f6Superfície invertida: aviso do BaseToast, dica do BaseStatusLight, página atual da paginação.Em área grande de conteúdo; o texto sobre ela é --tj-text-inverse.
--tj-overlayrgba(12, 10, 57, .48) / rgba(0, 0, 0, .6)Véu atrás do modal aberto.Para escurecer imagem ou desativar parte da tela.
--tj-layer-01#ffffff / #1a1948Primeira camada sobre o fundo: cartão, tabela, modal, painel.Como fundo da página, que é --tj-background.
--tj-layer-02#fbfbfe / #211f52Camada dentro da camada 01: cabeçalho de tabela, rodapé de modal, área de envio de arquivo, nota da linha do tempo.Direto sobre --tj-background, onde quase não se distingue.
--tj-layer-hover-01#f6f7fb / #252359Hover de linha, item de menu e botão fantasma sobre a camada 01.Como estado selecionado: use --tj-layer-selected-01.
--tj-layer-accent-01#eef0f6 / #3b3a75Trilho de progresso, selo neutro, fundo do controle segmentado, esqueleto.Como fundo de bloco de texto longo.
--tj-layer-accent-02#e2e5ef / #46458aPressionado sobre --tj-layer-accent-01 e contador dentro do segmentado.Sozinho como fundo de área.
--tj-layer-selected-01#ecf2fd / #25398aLinha, item ou aba selecionados; lado "depois" do BaseDiff.Para chamar atenção sem seleção: use uma cor de situação.
--tj-layer-selected-hover-01#dbe7fb / #2c43a0Hover sobre um item já selecionado.Fora de item selecionado.
--tj-field-01#ffffff / #1f1e4dFundo de campo, seletor, caixa de seleção e opção.Como fundo de cartão, mesmo que o valor seja igual.
--tj-field-disabled#f6f7fb / #1a1948Fundo de campo desabilitado ou somente leitura.Em campo habilitado, nem para "destacar" um campo.

Bordas ​

TokenValorQuando usarQuando não usar
--tj-border-subtle-01#eef0f6 / #2e2d62Divisória entre linhas de tabela e entre seções de um cartão.Para contornar um controle: some na tela.
--tj-border-subtle-02#e2e5ef / #3a3972Borda de cartão, tabela, modal; borda de controle desabilitado.Como borda de campo habilitado: use --tj-border-strong-01.
--tj-border-strong-01#878da8 / #7d80b3Borda de campo, seletor e botão secundário. Passa de 3:1 sobre o fundo, o mínimo para enxergar o controle.Em divisória decorativa: pesa demais.
--tj-border-strong-02#5d6484 / #9a9dc8Campo no hover, borda da caixa de seleção e do rádio, trilho do switch desligado.Em divisória.
--tj-border-interactive#2d66f5 / #5a8cf2Campo em foco, contorno de foco do teclado, item selecionado.Em elemento que não recebe foco nem seleção.
--tj-border-selected-subtle#b9cff7 / #2d4590Contorno leve de item selecionado: lado "depois" do BaseDiff, contador do menu atual.Como único sinal de seleção ou de foco.
TokenValorQuando usarQuando não usar
--tj-text-primary#15173a / #f1f2faTexto principal: títulos, valores, conteúdo de tabela.Sobre fundo de cor ou invertido: use --tj-text-on-color ou --tj-text-inverse.
--tj-text-secondary#363b5c / #cfd2eaRótulo de campo, texto de apoio com peso de leitura.Em título ou valor principal.
--tj-text-helper#5d6484 / #a9adcfAjuda, legenda, placeholder, data e texto discreto.Em texto que a pessoa precisa ler para agir, como um erro.
--tj-text-placeholder#878da8 / #8f93bbSó texto desabilitado (rótulo de opção inativa, etiqueta desabilitada). Fica abaixo de 4,5:1 de propósito.Em texto legível, inclusive placeholder de campo, que usa --tj-text-helper.
--tj-text-on-color#ffffffTexto e ícone sobre botão primário, botão de perigo e fundo de cor cheia.Sobre camada clara ou escura do tema.
--tj-text-inverse#ffffff / #15173aTexto sobre --tj-background-inverse e sobre a etapa concluída do BaseStatusFlow.Sobre o fundo normal da página.
--tj-text-brand#0c0a39 / #f1f2faTexto em azul-marinho: item atual do menu e valores do lado "depois" do BaseDiff.Como cor de link: use --tj-link-primary.
--tj-link-primary#1f52d4 / #8cb1f2Link no texto e botão com cara de link.Em texto que não leva a lugar nenhum.
--tj-link-primary-hover#1a43ab / #b9cff7Link no hover e no pressionado; contador do segmentado selecionado.Como cor de link em repouso.

Ícones e interação ​

TokenValorQuando usarQuando não usar
--tj-icon-primary#15173a / #f1f2faÍcone que carrega sentido sozinho, como o "x" de remover ao passar o mouse.Em ícone decorativo ao lado de texto: use --tj-icon-secondary.
--tj-icon-secondary#878da8 / #8d91b8Ícone de apoio ao lado de um texto que diz o mesmo; texto e ícone de controle desabilitado. Fica abaixo de 4,5:1 de propósito.Em ícone que é a única informação, ou em texto.
--tj-icon-interactive#2d66f5 / #8cb1f2Ícone azul de destaque: o do aviso de informação, o do item atual do menu, o da área de envio e o do estado vazio.Em ícone de apoio ao lado de texto: use --tj-icon-secondary.
--tj-interactive#2d66f5Fundo do botão primário, caixa e rádio marcados, switch ligado, barra da aba selecionada.Como cor de texto: use --tj-link-primary.
--tj-interactive-hover#1f52d4Os mesmos controles no hover.Em repouso.
--tj-interactive-active#1a43abOs mesmos controles pressionados.Em repouso ou no hover.
--tj-focusrgba(45, 102, 244, .28) / rgba(140, 177, 242, .45)Cor do halo translúcido de foco, dentro de --tj-ring.Sozinho como sinal de foco: fica abaixo de 3:1. O contorno sólido é --tj-border-interactive.
--tj-brand-accent-blue#1e84ffAzul do logo do TJES, para marca e ilustração.Em texto, link ou botão.
--tj-brand-accent-pink#f6adcdRosa da marca: marcador de prazo do BaseExecutionBar.Como cor de situação: rosa não quer dizer erro nem aviso.

Cabeçalho institucional ​

TokenValorQuando usarQuando não usar
--tj-text-on-brand#ffffffTexto, links e contorno de foco sobre o cabeçalho e o rodapé institucionais.Fora do cabeçalho e do rodapé.
--tj-text-on-brand-secondary#b8bfe0Segunda linha do cabeçalho (a secretaria), ícones das ferramentas e endereço do rodapé.Fora do cabeçalho e do rodapé.
--tj-text-on-brand-placeholder#8e93c4Placeholder da busca no cabeçalho.Em texto que a pessoa precisa ler.
--tj-layer-on-brandrgba(255, 255, 255, .08)Hover dos botões e fundo da busca no cabeçalho.Fora do cabeçalho: é branco translúcido.
--tj-border-on-brandrgba(255, 255, 255, .12) / rgba(255, 255, 255, .18)Divisórias do cabeçalho e do rodapé, botão pressionado no cabeçalho e o brilho de cima do botão primário.Como borda de controle.

Situação ​

Cada tom tem cinco papéis: a forma cheia, o texto, o fundo claro, a borda e o texto forte. Nos selos e avisos, use o texto e o fundo do mesmo tom juntos.

TokenValorQuando usarQuando não usar
--tj-support-success#22a06bForma cheia de sucesso que sempre vem com um texto que diz o mesmo: a luz do BaseStatusLight e a borda da nota do BaseTimeline.Em texto ou ícone que precisa ser lido: use --tj-support-success-text.
--tj-support-success-text#16794a / #6fdba6Texto, ícone e borda de sucesso, como o texto do selo e do aviso.Como fundo de área grande.
--tj-support-success-subtle#e6f4ec / #12382aFundo de sucesso sob --tj-support-success-text ou -strong: selo, aviso, círculo do ícone.Com texto de outra cor que não a do tom.
--tj-support-success-border#a9dcc0 / #1f5c43Borda do BaseAlertBanner de sucesso.Como única marca do tom: é clara demais.
--tj-support-success-strong#0f5434 / #a7ecc8Texto do BaseAlertBanner de sucesso, sobre -subtle.Fora do fundo -subtle do mesmo tom.
--tj-support-warning#e8a317Forma cheia de aviso que sempre vem com um texto que diz o mesmo: a luz do BaseStatusLight, a faixa do BaseKpiCard, a barra do BaseDiff e a borda da nota do BaseTimeline.Em texto ou ícone que precisa ser lido: use --tj-support-warning-text.
--tj-support-warning-text#9a5800 / #f5c56bTexto, ícone e borda de aviso, como o texto do selo e do aviso.Como fundo de área grande.
--tj-support-warning-subtle#fdf0d9 / #3a2a0cFundo de aviso sob --tj-support-warning-text ou -strong: selo, aviso, círculo do ícone.Com texto de outra cor que não a do tom.
--tj-support-warning-border#f2cf8f / #6a4c14Borda do BaseAlertBanner de aviso.Como única marca do tom: é clara demais.
--tj-support-warning-strong#6b3d00 / #f9dca3Texto do BaseAlertBanner de aviso, sobre -subtle.Fora do fundo -subtle do mesmo tom.
--tj-support-error#e5484dForma cheia de erro que sempre vem com um texto que diz o mesmo: a luz do BaseStatusLight, a faixa do BaseKpiCard e a borda da nota do BaseTimeline.Em texto ou ícone que precisa ser lido: use --tj-support-error-text.
--tj-support-error-text#bf2e29 / #ff9a95Texto, ícone e borda de erro, como o texto do selo e do aviso.Como fundo de área grande.
--tj-support-error-subtle#fdebea / #431a1dFundo de erro sob --tj-support-error-text ou -strong: selo, aviso, círculo do ícone.Com texto de outra cor que não a do tom.
--tj-support-error-border#f5b9b6 / #74302fBorda do BaseAlertBanner de erro.Como única marca do tom: é clara demais.
--tj-support-error-strong#8c1f1c / #ffc6c2Texto do BaseAlertBanner de erro, sobre -subtle.Fora do fundo -subtle do mesmo tom.
--tj-support-info#2d66f5Forma cheia de informação que sempre vem com um texto que diz o mesmo: a borda da nota do BaseTimeline.Em texto ou ícone que precisa ser lido: use --tj-support-info-text.
--tj-support-info-text#1f52d4 / #8cb1f2Texto, ícone e borda de informação, como o texto do selo e do aviso.Como fundo de área grande.
--tj-support-info-subtle#ecf2fd / #1a2a5cFundo de informação sob --tj-support-info-text ou -strong: selo, aviso, círculo do ícone.Com texto de outra cor que não a do tom.
--tj-support-info-border#b9cff7 / #2d4590Borda do BaseAlertBanner de informação.Como única marca do tom: é clara demais.
--tj-support-info-strong#173a8a / #b9cff7Texto do BaseAlertBanner de informação, sobre -subtle.Fora do fundo -subtle do mesmo tom.
--tj-support-attention#e8590cLaranja para "atenção" quando aviso e erro já estão em uso na tela. Nenhum componente usa hoje.No lugar de --tj-support-warning.
--tj-support-success-on-inverse#5fd49b / #0f5434Sucesso sobre --tj-background-inverse, como um ícone de sucesso num aviso escuro. Nenhum componente usa hoje.Sobre o fundo normal da página.

Sombra e foco ​

TokenValorQuando usarQuando não usar
--tj-shadow-rgb12, 10, 57 / 0, 0, 0Canais da cor da sombra, para rgba(var(--tj-shadow-rgb), …) num estilo de componente. No tema claro a sombra puxa para o azul-marinho; no escuro, é preta.Como cor de texto, fundo ou borda.
--tj-shadow-10 1px 2px rgba(12, 10, 57, .06), 0 1px 1px rgba(12, 10, 57, .03) / 0 1px 2px rgba(0, 0, 0, .06), 0 1px 1px rgba(0, 0, 0, .03)Elevação baixa: cartão de indicador, tabela, seção de formulário.Em elemento que abre por cima da tela.
--tj-shadow-20 2px 4px rgba(12, 10, 57, .05), 0 8px 20px -4px rgba(12, 10, 57, .12) / 0 2px 4px rgba(0, 0, 0, .05), 0 8px 20px -4px rgba(0, 0, 0, .12)Elevação média: lista do combobox, menu, dica.Em cartão parado na página.
--tj-shadow-30 4px 8px rgba(12, 10, 57, .06), 0 24px 56px -12px rgba(12, 10, 57, .28) / 0 4px 8px rgba(0, 0, 0, .06), 0 24px 56px -12px rgba(0, 0, 0, .28)Elevação alta: modal e aviso flutuante.Em elemento que faz parte do fluxo da página.
--tj-ring0 0 0 3px rgba(45, 102, 244, .28) / 0 0 0 3px rgba(140, 177, 242, .45)Halo de foco de campos e botões, por fora do contorno sólido.Sozinho como foco: fica abaixo de 3:1.
--tj-ring-danger0 0 0 3px rgba(191, 46, 41, .22)Halo de foco de campo com erro e do botão de perigo.Em campo sem erro.

Tipografia ​

TokenValorQuando usarQuando não usar
--tj-font-sans"Roboto", system-ui, -apple-system, "Segoe UI", sans-serifToda a interface. É a Roboto, a do portal, servida pelo pacote.Em número que precisa alinhar em coluna: use font-variant-numeric: tabular-nums, não a fonte mono.
--tj-font-mono"Roboto Mono", ui-monospace, "SFMono-Regular", Menlo, monospaceCódigo e identificadores lidos caractere por caractere, como a coluna de código da tabela.Em texto corrido ou em valor em dinheiro.
--tj-text-xs12pxTamanho de legenda, contador, selo pequeno. Sempre com --tj-leading-xs.Em texto que a pessoa lê por muito tempo.
--tj-leading-xs16pxAltura de linha do --tj-text-xs.Com outro tamanho de letra.
--tj-text-sm13pxTamanho de rótulo de campo, selo, texto secundário. Sempre com --tj-leading-sm.Com outra altura de linha.
--tj-leading-sm18pxAltura de linha do --tj-text-sm.Com outro tamanho de letra.
--tj-text-md14pxTamanho de texto do corpo, o padrão de campos e botões. Sempre com --tj-leading-md.Com outra altura de linha.
--tj-leading-md20pxAltura de linha do --tj-text-md.Com outro tamanho de letra.
--tj-text-lg16pxTamanho de campo e botão grandes, título de seção pequena. Sempre com --tj-leading-lg.Com outra altura de linha.
--tj-leading-lg24pxAltura de linha do --tj-text-lg.Com outro tamanho de letra.
--tj-text-xl20pxTamanho de título de modal e de grupo. Sempre com --tj-leading-xl.Com outra altura de linha.
--tj-leading-xl28pxAltura de linha do --tj-text-xl.Com outro tamanho de letra.
--tj-text-2xl24pxTamanho de título de seção (.tj-h2) e número do BaseKpiCard em tela estreita. Sempre com --tj-leading-2xl.Com outra altura de linha.
--tj-leading-2xl32pxAltura de linha do --tj-text-2xl.Com outro tamanho de letra.
--tj-text-3xl30pxTamanho de título de página (.tj-h1). Sempre com --tj-leading-3xl.Com outra altura de linha.
--tj-leading-3xl38pxAltura de linha do --tj-text-3xl.Com outro tamanho de letra.
--tj-text-4xl40pxTamanho de texto de destaque (.tj-display). Sempre com --tj-leading-4xl.Com outra altura de linha.
--tj-leading-4xl48pxAltura de linha do --tj-text-4xl.Com outro tamanho de letra.
--tj-weight-regular400Texto do corpo e valores.Em título.
--tj-weight-medium500Rótulo de campo, item de menu, cabeçalho de tabela.Em parágrafo inteiro.
--tj-weight-semibold600Títulos, botão, item selecionado.Em texto longo.
--tj-weight-bold700Número de destaque e total.Em título comum: use semibold.

Espaço ​

Base de 4 px. O número do token é o múltiplo de 4: --tj-space-2 = 8 px, --tj-space-4 = 16 px, --tj-space-6 = 24 px.

TokenValorQuando usarQuando não usar
--tj-space-00Zerar um espaço herdado.Para esconder algo.
--tj-space-half2pxAjuste ótico de 2 px, como entre um contador e a borda.Como espaço entre elementos.
--tj-space-14pxEntre ícone e texto.Entre componentes.
--tj-space-28pxDentro de um controle e entre itens de uma lista curta.Como padding de cartão.
--tj-space-312pxPadding de controle e espaço entre botões.Entre seções.
--tj-space-416pxEntre componentes irmãos, como dois campos.Entre ícone e texto.
--tj-space-520pxEntre blocos de um cartão de indicador e passos de linha do tempo.No lugar de --tj-space-4 ou --tj-space-6 só para "caber".
--tj-space-624pxPadding de cartão e espaço entre blocos.Dentro de um controle.
--tj-space-832pxMargem da página e espaço entre seções.Entre campos do mesmo formulário.
--tj-space-1040pxRecuo do campo com afixo no fim e espaço de estado de página.Como espaço comum entre componentes.
--tj-space-1248pxComeço de seção nova e estados vazios.Dentro de cartão.
--tj-space-1664pxMedidas grandes da moldura: respiro no fim da área de conteúdo e coluna de ações da tabela.Como espaço entre componentes.
--tj-space-2080pxRespiro no fim da área de conteúdo no celular e largura mínima do painel da pessoa.Como espaço entre componentes.

O padding dos controles (campos, seletores e botões) tem tokens próprios, porque sai da altura do controle e não da escala: (altura − 2 px de borda − 20 px de linha) / 2.

TokenValorQuando usarQuando não usar
--tj-control-padding-y-sm5pxPadding vertical do controle de 32 px.Fora de controle com linha de 20 px e borda de 1 px.
--tj-control-padding-y-md9pxPadding vertical do controle de 40 px.Fora de controle com linha de 20 px e borda de 1 px.
--tj-control-padding-y-lg13pxPadding vertical do botão de 48 px e do seletor grande da paginação.No campo e no seletor grandes, que têm linha de 24 px.
--tj-control-padding-x-sm10pxPadding horizontal do controle de 32 px.Em controle médio ou grande: use --tj-space-3 ou --tj-space-4.

O campo e o seletor grandes não usam --tj-control-padding-y-lg: o texto deles tem 24 px de linha (--tj-leading-lg), então o padding vertical é calculado no próprio estilo, (--tj-control-lg − 2 px − --tj-leading-lg) / 2, e dá 11 px. O teste tests/controlHeights.test.ts soma padding, linha e borda de cada controle e reprova o que não tiver exatamente a altura do token.

O teste tests/spacing.test.ts reprova gap, margin, padding e font-size escritos em pixels (a partir de 3 px) fora de tokens.css. As poucas medidas que são o tamanho de uma forma, e não um passo da escala, ficam numa lista no próprio teste, cada uma com o motivo.

Raio e medidas ​

TokenValorQuando usarQuando não usar
--tj-radius-sm4pxCaixa de seleção, etiqueta, foco de link.Em cartão.
--tj-radius-md8pxBotão, campo, item de menu.Em modal e cartão grande.
--tj-radius-lg12pxCartão, tabela, modal, aviso.Em controle.
--tj-radius-pill999pxSelo, contador, trilho de progresso, switch.Em botão ou campo.
--tj-control-sm32pxAltura do controle pequeno (32 px): tabelas densas, filtros.Em tela de toque.
--tj-control-md40pxAltura padrão de botão, campo e seletor (40 px).Misturada com outra altura na mesma linha.
--tj-control-lg48pxAltura do controle grande (48 px): toque e telas de entrada.Em tabela.
--tj-row-compact40pxAltura da linha da tabela compacta.Fora de tabela.
--tj-row-default52pxAltura da linha padrão da tabela.Fora de tabela.
--tj-icon-sm16pxÍcone de 16 px dentro de controle e ao lado de texto.Em ícone sozinho de estado vazio.
--tj-icon-md20pxÍcone de 20 px de aviso e o padrão do BaseIcon.Dentro de botão pequeno.
--tj-icon-lg24pxÍcone de 24 px de arquivo, aviso flutuante e destaque.Ao lado de texto do corpo.
--tj-sidebar272pxLargura do menu lateral aberto.Para coluna de conteúdo: o BasePageAside tem largura própria.
--tj-header64pxAltura do cabeçalho institucional.Para outras faixas.
--tj-content-max1280pxLargura máxima da área de conteúdo.Em tabela larga, que rola dentro do componente.
--tj-page-gap24pxO espaço vertical entre os blocos de uma tela: corpo do BasePage, BasePageState, painel de BaseTabs e BaseCardGrid.Dentro de um cartão ou de um controle; e não some com margem própria em cima dele.

Movimento ​

TokenValorQuando usarQuando não usar
--tj-duration-fast-0170msTroca de cor de ícone.Em algo que entra ou sai da tela.
--tj-duration-fast-02110msHover e foco.Em abertura de modal.
--tj-duration-moderate-01150msAbrir menu, mostrar ajuda.Em hover.
--tj-duration-moderate-02240msAbrir modal, aviso, progresso.Em hover.
--tj-duration-slow-01400msTrocar de conteúdo dentro da tela, barra indeterminada.Em resposta a clique, que parece lenta.
--tj-easing-standardcubic-bezier(.2, 0, .38, .9)Movimento dentro da tela.Em algo que entra: use --tj-easing-entrance.
--tj-easing-entrancecubic-bezier(0, 0, .38, .9)Algo que entra: lista, aviso, dica.Em algo que sai.
--tj-easing-exitcubic-bezier(.2, 0, 1, .9)Algo que sai da tela.Em algo que entra.
--tj-easecubic-bezier(.2, 0, .38, .9)Nome curto do protótipo para --tj-easing-standard, usado por botões e campos.Em estilo novo: prefira --tj-easing-standard.
--tj-fast110msNome curto do protótipo para --tj-duration-fast-02.Em estilo novo: prefira --tj-duration-fast-02.
--tj-base240msNome curto do protótipo para --tj-duration-moderate-02. Nenhum componente usa hoje.Em estilo novo: prefira --tj-duration-moderate-02.

Tokens de componente ​

São valores que só um componente usa. Ficam num bloco próprio de tokens.css, depois dos papéis, e também mudam com o tema.

TokenValorQuando usarQuando não usar
--tj-button-danger#bf2e29Fundo do BaseButton kind="danger". Igual nos dois temas, com texto branco a 5,77:1.Em outro componente: use --tj-support-error-*.
--tj-button-danger-hover#a52622O mesmo botão no hover.Fora do botão de perigo.
--tj-button-danger-active#8c1f1cO mesmo botão pressionado.Fora do botão de perigo.
--tj-button-warning-border#e2b46a / #8a6420Borda do botão de aviso com contorno (.btn-warning-outline).Como borda de campo com aviso: use --tj-support-warning-text.
--tj-button-warning-hover-text#7d4700 / #f9dca3Texto do botão de aviso no hover e pressionado.Fora do botão de aviso.
--tj-button-warning-active#fae5bf / #4a3510Fundo do botão de aviso pressionado.Fora do botão de aviso.
--tj-avatar-bg#dbe7fb / #26376fFundo do BaseAvatar azul.Fora do avatar.
--tj-avatar-text#0c0a39 / #dbe7fbIniciais do BaseAvatar azul.Fora do avatar.
--tj-avatar-alt-bg#fbd9e8 / #4c2340Fundo do BaseAvatar rosa.Fora do avatar.
--tj-avatar-alt-text#6e1f47 / #fbd9e8Iniciais do BaseAvatar rosa.Fora do avatar.
--tj-logo-pink#f6adcdRosa do símbolo do BaseLogo, igual nos dois temas.Fora do logo: use --tj-brand-accent-pink.
--tj-logo-blue#1e84ffAzul do símbolo do BaseLogo, igual nos dois temas.Fora do logo: use --tj-brand-accent-blue.
--tj-logo-endorsement#100b20Endosso do BaseLogo em fundo claro.Em texto de tela: use --tj-text-primary.
--tj-logo-endorsement-on-dark#fef8fbEndosso do BaseLogo em fundo escuro, como o cabeçalho.Em texto de tela: use --tj-text-on-brand.

Ponte com o Bootstrap ​

As variáveis --bs-* ligam o Bootstrap aos papéis, para que as classes dele (.btn, .form-control, .text-primary) já saiam com as cores e medidas do TJES. Não use estas variáveis nos estilos dos componentes: use o papel.

TokenValorQuando usarQuando não usar
--bs-body-font-family"Roboto", system-ui, -apple-system, "Segoe UI", sans-serifLiga a fonte do Bootstrap a --tj-font-sans.Para trocar a fonte de um trecho: use a do sistema.
--bs-body-font-size14pxLiga o tamanho do corpo a --tj-text-md.Em estilo de componente: use --tj-text-md.
--bs-body-line-height1.4286Altura de linha do corpo (20 px sobre 14 px).Em estilo de componente: use --tj-leading-md.
--bs-body-color#15173a / #f1f2faCor do texto do Bootstrap, ligada a --tj-text-primary.Em estilo de componente: use o papel.
--bs-body-bg#f6f7fb / #08071fFundo do Bootstrap, ligado a --tj-background.Em estilo de componente: use o papel.
--bs-secondary-color#5d6484 / #a9adcfTexto secundário do Bootstrap, ligado a --tj-text-helper.Em estilo de componente: use o papel.
--bs-border-color#e2e5ef / #3a3972Borda padrão do Bootstrap, ligada a --tj-border-subtle-02.Como borda de campo, que usa --tj-border-strong-01.
--bs-border-radius8pxRaio padrão do Bootstrap, ligado a --tj-radius-md.Em estilo de componente: use o token de raio.
--bs-border-radius-sm4pxRaio pequeno do Bootstrap, ligado a --tj-radius-sm.Em estilo de componente: use o token de raio.
--bs-border-radius-lg12pxRaio grande do Bootstrap, ligado a --tj-radius-lg.Em estilo de componente: use o token de raio.
--bs-primary#2d66f5Cor primária do Bootstrap, ligada a --tj-interactive (o azul de ação, não o azul-marinho).Em estilo de componente: use o papel.
--bs-primary-rgb45, 102, 244Canais da cor primária, para as classes do Bootstrap com transparência.Em estilo de componente.
--bs-link-color#1f52d4 / #8cb1f2Cor de link do Bootstrap, ligada a --tj-link-primary.Em estilo de componente: use o papel.
--bs-link-color-rgb31, 82, 212 / 140, 177, 242Canais da cor de link, que o Bootstrap usa nos links.Em estilo de componente.
--bs-link-hover-color-rgb26, 67, 171 / 185, 207, 247Canais da cor de link no hover.Em estilo de componente.
--bs-focus-ring-colorrgba(45, 102, 244, .28) / rgba(140, 177, 242, .45)Cor do anel de foco do Bootstrap, ligada a --tj-focus.Sozinha como foco.
--bs-emphasis-color#15173a / #f1f2faTexto de ênfase do Bootstrap, ligado a --tj-text-primary.Em estilo de componente: use o papel.
--bs-heading-color#15173a / #f1f2faCor dos títulos do Bootstrap, ligada a --tj-text-primary.Em estilo de componente: use o papel.
--bs-code-color#15173a / #f1f2faCor do <code>: a do texto, em vez do rosa do Bootstrap, que fica abaixo de 4,5:1.Para destacar código com cor.