Joice Molinari · Estudo de caso
Estudo de caso · Design System · Produto próprio

Um arquivo, doze telas

O Capta é um SaaS de captação e gestão de leads que eu projetei e construí. Quando o produto passou de cinco para vinte telas, a cor e o espaçamento começaram a divergir de uma para outra. Extraí o que se repetia num único arquivo-base e transformei decisões soltas em regras com nome, para que a vigésima tela nascesse igual à primeira.

Papel: do token ao componente · decisão, documentação e implementação Produto: Capta (produto próprio, em operação com cliente) Escopo: 1 arquivo-base · 12 telas · 157 linhas de CSS Stack: HTML/CSS/JS · sem framework de UI

01

O problema: cada tela virou um dialeto

As primeiras telas do Capta nasceram uma de cada vez, resolvendo um problema por vez: funil, leads, agenda, inbox. Cada uma trouxe o próprio azul, a própria altura de botão, o próprio cinza de borda. Nenhuma delas estava errada sozinha. Juntas, pareciam quatro produtos.

O custo apareceu na manutenção. Trocar o azul da marca virava uma caçada em vários arquivos. Uma tabela nova saía diferente da antiga. E o pior: um ajuste de legibilidade feito numa tela não chegava às outras, então o mesmo erro era corrigido três vezes.

Sistema não é sobre beleza. É sobre uma decisão valer para todas as telas, inclusive para a que ainda não existe.

02

A base: tokens com significado

Extraí as decisões de cor, raio e sombra para variáveis no topo de um arquivo único, que toda tela carrega antes do que é dela. Além das cores de marca e de superfície, o Capta tem um grupo que não é decorativo: a temperatura do lead.

Marca--brand · #2E5BFF
Marca, pressionada--brand-deep
Fundo--bg · #F4F6FB
Texto--ink · #141A2E
Texto secundário--muted
Lead quente--quente
Lead morno--morno
Lead frio--frio
Confirmado--verde

Cada cor de temperatura vem com o próprio fundo translúcido, para servir de etiqueta sem virar mancha.

A regra que ficou: vermelho, âmbar e azul não são estilo, são estado. Quente quer dizer que a pessoa pediu aula experimental; frio quer dizer que ela só estava pesquisando. Quem abre qualquer tela do produto lê a mesma cor com o mesmo significado, e a equipe passou a falar por cor no dia a dia.

Tipografia e medida

22 / 800Número em destaque
19 / 800Título da tela
16 / 700Título de janela
13,5 / 800Título de bloco
14 / 400Texto padrão da interface
12,5 / 600Apoio e rótulos
11 / 700Cabeçalho de tabela

Inter, sete tamanhos, nada entre eles. Raio de 16px nos cartões, 9 a 10px nos controles, 99px nas etiquetas. Uma sombra só, usada em tudo que flutua.


03

Os componentes que se repetem

O arquivo-base cobre o que aparece em praticamente toda tela: botões, cartões, contadores, tabelas, etiquetas, campos, chips, estados vazios e avisos. Abaixo estão os componentes reais, com o mesmo código que roda no produto.

Botões e etiquetas
Quente Morno Frio Sem classificação Este mês Semana Hoje
Contador, cartão e tabela
128leads no período 34aguardando resposta 9sem retorno há 48h 12matrículas

Origem

De onde vieram os leads deste período
CanalLeadsConversão
Formulário do site640,8%
WhatsApp412,4%
Evento23—
Campo, estado vazio e aviso
Borda visível, texto escuro, foco azul
Borda clara demais: o campo sumia no fundo
Nenhum lead aguardando resposta agora.
Quando chegar um novo, ele aparece aqui.
Lead movido para Aula agendada
Não consegui salvar

Componentes renderizados com o CSS do produto, não com imagens.


04

As decisões que valem mais que as cores

Um sistema se prova nos casos difíceis. Estes são os que me fizeram voltar ao arquivo-base e mudar a regra para todo mundo.

O campo que sumia

O cinza de divisória funcionava entre linhas de tabela, mas como borda de campo desaparecia: input branco sobre fundo claro. Criei um grupo próprio de tokens para formulário, com borda mais escura, estado de foco com anel azul e estado desabilitado. Uma correção, doze telas.

O checkbox esticado

A regra que fazia todo campo ocupar a largura inteira também esticava caixas de seleção e empurrava o rótulo para longe. A exceção virou regra escrita, em vez de gambiarra em cada tela.

Número que não dança

Colunas numéricas usam alinhamento à direita e fonte tabular. Sem isso, a coluna de valores tremia a cada atualização de dados e ficava difícil comparar linhas.

Foco visível

Todo elemento interativo tem contorno de foco com dois pixels e afastamento. É o que permite operar o painel inteiro pelo teclado, que é como quem atende rápido de fato trabalha.

A mesma tela, dentro e fora

Cada tela funciona sozinha e embutida no painel. Um modo específico esconde a barra e o botão de voltar quando ela está dentro, sem duplicar arquivo nem criar uma segunda versão para manter.

Imprimir também é interface

Ao imprimir, somem barras e botões, as sombras saem e os cartões não quebram no meio. O relatório mensal sai do próprio painel, sem exportar para outro lugar.


05

Celular em um arquivo à parte

Quem usa o Capta no celular é a recepção, no meio do atendimento, com uma família na frente. Em vez de espalhar consultas de mídia por doze arquivos, criei um segundo arquivo carregado por último, que ajusta todas as telas de uma vez.

Grades viram uma coluna

Todo conjunto de cartões, campos e indicadores passa a uma coluna, e nada empurra a largura da tela.

Tabelas rolam sozinhas

Em vez de espremer colunas até ficarem ilegíveis, a tabela ganha rolagem horizontal e mantém cada linha inteira.

Alvos de toque maiores

Botões e chips passam a ter altura mínima de 38 pixels, e as ações principais da recepção ficam ainda maiores.

Janelas em tela cheia

Diálogos ocupam a largura toda, com cantos mais suaves e menos respiro lateral, como o usuário espera no celular.


06

Como ele se mantém vivo

O arquivo é curto de propósito: cabe numa leitura. Os nomes são em português e descrevem a função, não a aparência: janela, campo, bloco, aviso, vazio. Assim, quem chega no produto entende sem tradução.

Cada decisão difícil está comentada no próprio arquivo, com o motivo e o sintoma que a gerou. A documentação mora junto do código, porque documento separado envelhece no dia em que alguém tem pressa. E a regra de convivência é uma só: se a mesma solução aparecer em duas telas, ela sobe para a base.

Escrever o porquê ao lado da regra é o que evita que a próxima pessoa, inclusive eu daqui a três meses, "conserte" o que já estava certo.

07

O que isso é, e o que não é

É um sistema pequeno, de um produto, mantido por uma pessoa. Cobre as doze telas do painel; as telas públicas, como o site, o login e o monitor de parede, ainda têm regras próprias e são o próximo alvo. Não tem biblioteca de componentes em Figma nem versionamento por pacote, porque nesta escala isso custaria mais do que resolve.

O que ele prova é o raciocínio: identificar o que se repete, dar nome, decidir uma vez, documentar o motivo e deixar o sistema absorver a próxima tela. É o mesmo trabalho que um design system de time grande exige, na escala em que ele precisava existir.