Catálogo · fonte da verdade
Componentes e tokens da Plataforma de Gestão Tributária Especial.
Cada peça já vem com seus estados; estado que não está aqui não existe. Os mockups
reusam este catálogo. A paleta é um placeholder profissional (azul + cinza-ardósia);
re-tematizar é trocar os tokens de marca no ds.css.
Fundamentos
Cores (tokens semânticos)
Nada de cor crua na tela: tudo aponta pra um token. Trocar --color-primary re-tematiza o sistema inteiro (o dark sai de graça).
#1351b4#0c326fnavy #071d41blue-50teal #0d9488teal-700teal-50slate-900slate-500slate-200green-600amber-600red-600sky-600Fundamentos
Escalas de cor (primitivas)
As variações completas. O cinza é a escala slate (ardósia, levemente azulada). Os semânticos acima apontam pra elas.
Slate (cinza) · neutro
Blue · primary
Green · success
Amber · warning
Red · danger
Sky · info
Teal · secondary
Tipografia (escala)
Base do body = 16px · Source Sans 3 · pesos 400 regular / 500 medium / 600 semibold / 700 bold. Tudo via tokens --text-*, nada cravado.
Declaração de Regimes Específicos
display ·--text-4xl · 36px · 700 · hero, número grande de KPIDeclaração de Regimes Específicos
h1 ·--text-3xl · 30px · 600 · título de páginaDeclaração de Regimes Específicos
h2 ·--text-2xl · 24px · 600 · seçãoDeclaração de Regimes Específicos
h3 ·--text-xl · 20px · 600Declaração de Regimes Específicos
h4 ·--text-lg · 18px · 600Declaração de Regimes Específicos
h5 ·--text-base · 16px · 600Declaração de Regimes Específicos
h6 ·--text-sm · 14px · 600 · uppercaseCorpo de leitura em 16px. A maioria dos parágrafos e conteúdo textual usa este tamanho.
corpo ·--text-base · 16px · 400UI densa em 14px: menu, botão, campo, célula de tabela. Padrão de apps densos (Linear, GitHub, Stripe).
UI ·--text-sm · 14px · 400/500/600Legenda / caption em 12px: metadados, ajuda de campo, badge, timestamps.
legenda ·--text-xs · 12px · 400/500Fundamentos
Espaçamento e raio
Escala 4 / 8 / 12 / 16 / 24 / 32 / 40 / 48 / 56. Layout usa só estes passos.
Componentes
Botões
Hierarquia: primário → secundário (texto na cor da marca) → terciário (neutro, fundo branco) → ghost. Todos os estados, incluindo foco visível no teclado.
Hierarquia
Tamanhos · pequeno · médio · grande
Estados · normal · hover · foco · ativo · loading · desabilitado
Tracejado (adicionar) e largura total
.btn--dashed para a ação de adicionar em estado vazio. .btn--block deixa qualquer botão em largura total (dispensa CSS local de width:100%).
Tamanhos de controle
Alturas por token: --control-h-sm 32 · --control-h 40 · --control-h-lg 44. Botões têm as 3 alturas (.btn--sm · .btn · .btn--lg). Inputs têm 2 (.input 40 · .input--lg 44); não há input de 32, pequeno demais para digitar. Input e botão da mesma altura alinham lado a lado. Em formulários, use o input de 44 (.input--lg) como padrão; o de 40 só em contextos específicos.
Botões · sm 32 · base 40 · lg 44
Inputs · base 40 · lg 44
Par grande (44): input + botão alinhados
Botões de ícone
Regra do DS: todo botão só‑ícone tem aria-label + tooltip (passe o mouse ou dê foco pelo teclado). Sempre SVG, nunca emoji.
Componentes
Campos (com estados)
Erro com aria-invalid + mensagem ligada por aria-describedby. Placeholder é exemplo, não instrução.
Componentes
Campo somente leitura
Dado confirmado que veio de fora (ex.: base de CNPJ da Receita) e o usuário não edita. Rótulo + valor, sem cara de campo editável. Rótulo 14px, valor 16px. Use .readonly-field com .readonly-field__label e .readonly-field__value.
Componentes
Combo (input com dropdown)
Digite pra filtrar; itens ricos (código + nome + detalhe) com marca de selecionado. Setas ↑↓, Enter e Esc no teclado.
Select custom: o nativo não estiliza as opções. Este abre um dropdown com opções ricas (ícone + nome + detalhe), teclado (↑↓, Enter, Esc, Home/End) e marca de selecionado.
Multiselect: escolha vários, chips removíveis e busca que filtra a lista. Ideal para atribuir codTrib em massa.
Componentes
Seleção
Cada tipo num bloco, com os estados nomeados: padrão, selecionado, foco (teclado), hover e desabilitado. O checkbox tem ainda indeterminado e selecionado‑desabilitado.
Checkbox
Radio
Toggle
Componentes
Cartão selecionável
Opção de escolha rica (radio ou checkbox): número OU ícone à esquerda, título + descrição, selo opcional (ex.: sugestão de IA da Axians) e indicador à direita. Forma listas de enquadramento densas, como o D-1001. Estados: padrão, hover, selecionado, foco (teclado) e desabilitado. O input real vive dentro do <label> (acessível); o estado visual sai de :has(input:checked).
Radio (1 escolha) · com selo de IA
Checkbox (várias) · ícone no lugar do número · desabilitado
Componentes
Status, tags e badges
Status sempre cor + rótulo (nunca só cor). Tags para filtros; badge para contagem.
Componentes
Alertas (callout na página)
Competência aberta
Você pode enviar documentos até 20/09.
Apuração concluída
Nenhuma divergência encontrada nesta competência.
3 documentos sem competência
Classifique-os para entrarem na apuração.
Falha no processamento
Reenvie o arquivo XML da nota 12.347.
Componentes
Statusbar (estado da submissão)
Hero de estado no topo do detalhe de uma submissão (reutilizado no D-1001 e no D-1011): ícone-chip + título + descrição + comentário citado + ações à direita. Variantes info/warning/success/danger.
Componentes
Tabela
Seleção (checkbox), cabeçalho ordenável (na cor da marca), colunas de ícone+texto, avatar+texto e progresso, e ações à direita. Valor com tabular-nums. Rola sozinha em telas estreitas.
| Documento | Responsável | Conformidade | Valor | Situação | Ações | |
|---|---|---|---|---|---|---|
| NF-e 12.345 | ASAna Silva | 92% |
R$ 12.480,00 | Conforme | EditarExcluir | |
| NF-e 12.346 | BCBruno Costa | 68% |
R$ 3.210,55 | Pendente | EditarExcluir | |
| NF-e 12.347 | CDCarla Dias | 40% |
R$ 890,00 | Divergente | EditarExcluir |
Scroll horizontal + ações fixas à direita .table-wrap · .table--stickyactions
Tabela dentro de .table-wrap: em tela menor ela não encolhe nem corta status ou botão; rola na horizontal. Com .table--stickyactions, a coluna de ações fica sempre visível e a célula fixa herda o fundo da linha (zebra, hover e seleção acompanham).
| Código | Conta | Natureza | codTrib | Conta referencial | Situação | Ações |
|---|---|---|---|---|---|---|
| 1.1.01.001 | Seguros · Vida | Credora | 110010101 | 1.01.01 | Sugerida pela IA | |
| 1.1.01.013 | Seguros · Aeronáutico | Credora | 110010102 | 1.01.02 | Sem sugestão |
Componentes
Rodapé de tabela
Contagem à esquerda + paginador à direita, com borda superior. Padrão único .tablefoot para toda listagem paginada; o paginador reusa .pagination/.page-btn (numerado) ou .tpager (compacto).
Componentes
Filtro ativo
Fica logo acima de uma tabela ou lista quando um KPI ou atalho recorta o que está sendo exibido: mostra por que a lista está filtrada e deixa limpar em um clique. Padrão único .filterbar (ícone de funil + rótulo + chip removível) para reutilizar em toda tela que filtra.
Componentes
Accordion
Componentes
Abas
Padrão ARIA APG: tablist / tab / tabpanel, aria-selected, aria-controls e navegação por setas (Home e End inclusos).
Componentes
Modais
Modal centralizado para foco em uma tarefa; confirmação para ações destrutivas.
Larguras: .modal (480) · .modal--md (560) · .modal--lg (720). O card anima na entrada (ds-modal-in); ao encadear dois modais, use .is-leaving no card que sai e o fundo escuro permanece contínuo.
Componentes
Comprovante (recibo)
Comprovante de envio à Receita, reutilizável (D-1001, eventos mensais, "Recibos e envios"). Vive num .modal--md reabrível e evolui no tempo: protocolo (transmitido) → recibo (aceito) → ocorrências (rejeitado). Tom do bloco de estado por variante (info/success/danger), nunca verde no provisório.
Transmitido — em processamento
Protocolo emitido. Ainda não cumpre a obrigação; o recibo sai quando a Receita concluir.
Aceito pela Receita Federal
Comprovante definitivo. A obrigação foi cumprida (prova válida).
Rejeitado pela Receita Federal
Não gerou recibo. Corrija os dados e retransmita (gera nova chave).
Ocorrência (erro impeditivo)
MS1097 · A validade informada se sobrepõe a um período já existente.
Componentes
Padrão de formulário
Seções com título + descrição, grade de campos que se reorganiza sozinha, campo longo ocupa a linha toda, e barra de ações fixa ao pé.
Identificação
Dados básicos do estabelecimento.
Endereço
Usado nas guias e notificações.
Componentes
Wizard (etapas)
- Estabelecimento
- 2Documentos
- 3Revisão
- 4Envio
Componentes
Timeline
Um componente, três níveis de detalhe. Bolinha: cor semântica (success/info/warning/danger) ou --muted. Título + hora na mesma linha (.timeline__head), descrição (.timeline__text/.timeline__desc) e, quando precisar, campos rotulados (.timeline__fields) e ator (.timeline__who). Variante .timeline--muted deixa as bolinhas neutras e leva a linha até o fim do último item.
Simples (título + hora · texto)
Apuração concluída
Hoje, 09:12Sem divergências na competência 08/2026.
42 documentos importados
Ontem, 16:40Lote enviado por Ana Silva.
Competência aberta
05/08, 11:03Prazo de entrega até 20/09.
Só texto (sem status, sem hora ao lado)
Conta criada
Perfil de administrador definido.
Empresas adicionadas
Cinco empresas do grupo vinculadas.
Certificados cadastrados
Detalhado (título + hora, status, campos e ator)
Enviada para revisão
02/09/2026 · 11:15- Status
- Em revisão
- Realizado por
- RARicardo Alves · Elaborador
Processada pela Receita Federal
03/09/2026 · 11:27- Status
- Processado com sucesso
- Realizado por
- Receita Federal · Sistema
- Recibo
- 1001202601000000000000000000001
Componentes
Counters (KPIs) e progresso
Componentes
Estados de tela
Vazio, carregando (skeleton) e feedback (toast). Toda tela cobre estes cenários.
Envie os documentos da competência para começar.
Salvo
Apuração gravada.
Falhou
Verifique a conexão.
O resultado do processamento é anunciado ao leitor de tela sem mover o foco. Sucesso em role="status" (aria-live polite); erro em role="alert" (assertive).
Componentes
Upload (dropzone)
Depois de escolher, o arquivo aparece como .filecard (o par do dropzone): ícone + nome + meta + ações. Serve tanto para o arquivo recém-selecionado quanto para um já importado.
Componentes
Avatar e menu
Sem foto, o avatar mostra iniciais (nunca uma foto genérica). O menu abre no clique.
Componentes
Drawer
Painel lateral para editar ou adicionar sem sair da tela. Comportamento de diálogo vem do ds-dialog.js: o foco entra ao abrir, o Tab dá a volta dentro do painel, o fundo fica inerte (teclado e leitor de tela não alcançam), Esc fecha e o foco volta ao gatilho. Estrutura: .drawer-backdrop > .drawer com .drawer__header · .drawer__body · .drawer__footer. Tamanhos: .drawer--sm 440 · .drawer--md 560 (padrão) · .drawer--lg 760.