Galeria do design system v0.2 (etapa 0). Dados fictícios. Componentes de referência para a implementação real em Blade (docs/07_DESIGN_SYSTEM.md).

Design system Clínica 360

Direção v0.3 (decisão de Rafael, 01/10/2026): painel no estilo das referências Netflow — shell clara flutuante, cartões brancos sobre cinza muito claro, controles em cápsula, ação preta e acento laranja — e menu lateral expansível azul, claro e escuro. Conteúdo odontológico; nenhuma marca, foto ou texto das referências foi copiado. NexHiro e versões anteriores foram substituídos.

Modo escuro da galeria

Princípios

1. Operação antes de decoração

Densidade confortável, alvos ≥ 40 px (44 px em toque), números tabulares, sem animações que atrasem o trabalho.

2. Estado nunca só por cor

Todo status combina texto e ícone; cor é reforço. Funciona em daltonismo, impressão e alto contraste.

3. Arraste é atalho, não requisito

Toda ação de arraste tem equivalente por botão/formulário e mostra as consequências antes de confirmar.

4. Verdade sobre o que aconteceu

A interface não afirma envio, pagamento ou gravação sem evidência. Simulação é rotulada.

5. Contexto separado

Rótulos “Administrativo” e “Clínico” deixam claro de onde vem a informação. O servidor decide o que é enviado.

6. Marca configurável, significado fixo

A organização muda nome, logo e cor principal; sucesso, atenção, erro e foco não mudam.

Shell e composição do painel

Fundo externo, shell flutuante com borda branca arredondada, barra superior com navegação em cápsula, saudação, faixa de comunicado, cartões de resumo, barra de visualização e quadro por situação. O fundo paisagístico da referência não está disponível como asset licenciado: usamos um degradê céu/gramado provisório (token --backdrop), substituível por --backdrop-image.

Movimento

Durações centralizadas em tokens.css (valores propostos, a validar). Só transform e opacity em animações; nada de bounce, pulsação contínua ou espera artificial. Com “reduzir movimento” (sistema ou Configurações), deslocamentos e escalas somem e as durações vão a ~0.

Tokens de movimento (valores lidos do CSS aplicado)
UsoTokenValor
Reduzir movimento

Cores e contraste

Tokens semânticos (use sempre o token, nunca o hexadecimal). A razão de contraste é calculada nesta página a partir dos valores reais aplicados.

Tipografia

Geist (licença aberta SIL OFL), servida localmente junto com o sistema — sem depender de serviço externo de fontes. Fallback: fonte do sistema (Segoe UI no Windows). Corpo 16 px; mínimo 13 px apenas em rótulos curtos e em negrito.

R$ 2.450,00 — 28 px · indicador
Título de página — 22 px · 600
Título de cartão — 18 px · 600
Corpo de texto e campos de formulário — 16 px · 400
Texto secundário e células de tabela — 14 px
Rótulo de badge — 13 px · 600
Números tabulares: 08:15 · 10:40 · 11:05 · 1.234,50

Espaço, raio e elevação

Espaçamento (base 4 px)
Raios
--r-sm 6
--r-md 10 (controles)
--r-lg 14 (cartões)
--r-xl 20
Elevação
e-1 · cartões
e-2 · listas suspensas
e-3 · drawer/dialog

Ícones

Conjunto próprio de traço 1,8 px em grade 24. Ícone decorativo usa aria-hidden; botão só com ícone exige aria-label.

Botões

Uso: um primário por área. Destrutivo só em confirmação. Use Tab para ver o foco: anel azul de 2 px com separação branca, independente da cor da marca. Estado desabilitado sempre acompanha explicação próxima de por que a ação não está disponível.

Formulários

Com DDD. Não é usado como identidade única.

Regras: rótulo sempre visível (placeholder não substitui rótulo); erro abaixo do campo com ícone, aria-invalid e aria-describedby; ao enviar com erro, resumo no topo com links para cada campo e nada do que foi digitado é apagado. Data e hora usam os seletores nativos do navegador (acessíveis, teclado e celular) — componente próprio só se a validação com a clínica mostrar necessidade.

Status e badges

Situação do atendimento e confirmação do agendamento são dimensões separadas e aparecem lado a lado.

Situação do atendimento
Confirmação
Semânticos
Sucesso Atenção Erro Informação NeutroMarca
InformaçãoNenhuma mensagem será enviada automaticamente.
SucessoHorário disponível.
AtençãoPendência financeira — sinalização administrativa, sem bloqueio clínico.
ErroProfissional já tem atendimento das 10:00 às 10:45.

Cartões e indicadores

Indicador sempre informa período, regime (caixa, competência, produção) e cobertura da amostra. Cada número deve abrir os registros de origem (etapa 8).

Recebido (setembro)R$ 48.320,00Regime de caixa · registros manuais
Espera mediana9 minAmostra 212 de 240 (88%) com chegada e início
Faltas6,2%15 de 242 agendamentos · setembro

Tabela

Contas a receber (fictício) — clique no cabeçalho para ordenar
ParcelaSituação
Bruno Albuquerque2/620/09/2026R$ 350,00Vencida
Camila Castro1/305/10/2026R$ 1.200,00A vencer
Diego Fontes4/412/10/2026R$ 180,50Parcial
Uso: valores à direita com números tabulares; cabeçalho fixo na rolagem; em telas estreitas a tabela rola dentro do contêiner (sem rolar a página inteira). Para listas operacionais no celular, preferir lista de cartões.

Abas

Painel Resumo. Use as setas ← → para trocar de aba.

Drawer, dialog e toast

Regras: drawer para ação curta sem sair do contexto (detalhes, novo agendamento); página para fluxo extenso (ficha, orçamento); dialog para confirmação sensível ou erro bloqueante. Nunca dois drawers; no máximo um dialog sobre um drawer. Esc fecha, o foco fica preso dentro e volta ao elemento de origem. Toast informa resultado e some sozinho; erro também fica no contexto (não só no toast). “Desfazer” apenas onde reverter é seguro.

Estados de tela

Componentes da agenda

Cartão compacto: horário, paciente, procedimento, cadeira/profissional, situação (barra + ícone + texto acessível) e confirmação. Tempo de espera aparece após a chegada. Valores financeiros e alertas clínicos nunca aparecem no cartão.

Arraste: só para “Agendado” e “Chegou”; encaixe de 15 em 15 min; a sombra fica vermelha quando indisponível; ao soltar, dialog com de/para, motivo e efeito na comunicação. Iniciado/encerrado tem cadeado e só aceita correção com permissão e motivo. No celular não há arraste — lista cronológica e formulário.

White label

A organização define nome, logo, cor de destaque (laranja da referência) e cor do menu (azul). O sistema mantém o tom vivo em elementos gráficos e gera variações com contraste mínimo de 4,5:1 para texto; avisa quando ajusta. A ação principal (preto) e as cores de estado não mudam. Teste com o exemplo amarelo.

SelecionadoLink de texto
Faixa com gradiente da marcaTexto com cor de contraste calculada

Acessibilidade — critérios adotados

  • Meta: WCAG 2.2 nível AA (a verificar com auditoria manual e leitor de tela antes do piloto).
  • Contraste ≥ 4,5:1 para texto e ≥ 3:1 para bordas de foco e componentes; validação automática da cor da marca.
  • Tudo operável por teclado: Tab/Shift+Tab, Enter/Espaço, Esc fecha sobreposições, setas nas abas e no autocomplete.
  • Foco visível em todos os elementos; link “Pular para o conteúdo”; foco movido para o título ao trocar de tela.
  • Alternativa ao arraste em toda interação (agenda, upload, quadro comercial futuro).
  • Rótulos, descrições de erro e regiões vivas (aria-live) para resultados assíncronos.
  • prefers-reduced-motion remove animações; modo de alto contraste do Windows suportado no foco.
  • Alvos de toque de 44 px em dispositivos de toque; zoom de 200% sem perda de conteúdo.