Consistência visual e criação de um mini design system para o app

Capítulo 13

Tempo estimado de leitura: 8 minutos

+ Exercício

O que é consistência visual (e por que um mini design system resolve)

Consistência visual é a capacidade do app “parecer e se comportar do mesmo jeito” em todas as telas: mesmas cores para os mesmos significados, mesmos tamanhos de texto para os mesmos níveis de informação, mesmos espaçamentos para relações semelhantes e componentes com aparência/estados previsíveis. Para um time pequeno (ou uma pessoa), o problema não é falta de criatividade: é a multiplicação de pequenas decisões repetidas (um azul ligeiramente diferente aqui, um padding diferente ali) que vira retrabalho e inconsistência.

Um mini design system é um conjunto enxuto de decisões reutilizáveis: tokens (valores base como cores, tipografia e espaçamento), estilos de componentes (botões, campos, cards etc.), regras de uso (quando e como aplicar) e um processo simples de revisão para evitar duplicações. A meta é reduzir variação desnecessária sem criar burocracia.

Princípio prático: decisões viram tokens

Em vez de escolher valores “no olho” em cada tela, você escolhe uma vez e referencia sempre. Isso vale para:

  • Cores (papéis semânticos e variações)
  • Tipografia (estilos nomeados)
  • Espaçamentos (escala curta e consistente)
  • Raios, bordas, sombras (se aplicável)
  • Ícones e ilustrações (estilo e regras de uso)

Tokens: nomear por intenção, não por aparência

Evite nomes como blue500 em tudo. Prefira nomes que expressem o papel: primary, surface, textPrimary, danger. Isso permite trocar a cor real depois sem refatorar telas.

// Exemplo de tokens (estrutura conceitual, não depende de framework)  colors: {    primary: "#2F6BFF",    onPrimary: "#FFFFFF",    surface: "#FFFFFF",    onSurface: "#111827",    muted: "#6B7280",    border: "#E5E7EB",    success: "#16A34A",    warning: "#F59E0B",    danger: "#DC2626"  },  typography: {    title: { size: 20, weight: 700, lineHeight: 28 },    subtitle: { size: 16, weight: 600, lineHeight: 24 },    body: { size: 14, weight: 400, lineHeight: 20 },    caption: { size: 12, weight: 400, lineHeight: 16 }  },  spacing: {    xs: 4, sm: 8, md: 12, lg: 16, xl: 24, xxl: 32  },  radius: {    sm: 8, md: 12, lg: 16  }

Passo a passo: criando um mini design system em 60–90 minutos

Passo 1 — Defina o “escopo mínimo” (para não virar projeto paralelo)

Liste o que você realmente usa no app hoje (ou no MVP):

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

  • 2–3 superfícies (fundo, cards, modais)
  • 1 cor primária + estados (sucesso/alerta/erro)
  • 4 estilos tipográficos nomeados
  • 6–8 valores de espaçamento
  • 5–8 componentes mais frequentes (ex.: botão, campo, card, lista, chip, badge, top bar)

Regra: se algo aparece em 3+ telas, merece token/estilo padronizado.

Passo 2 — Congele uma paleta por papéis (semântica)

Em vez de criar dezenas de tons, defina papéis e variações essenciais:

  • Brand/Primary: cor principal de ação
  • Surface: fundo e cartões
  • Text: texto principal e secundário
  • Border/Divider: separadores
  • Feedback: sucesso, alerta, erro

Crie também uma regra simples de uso: “Primary só para ações principais e elementos interativos; Danger só para ações destrutivas; texto secundário usa muted”.

Passo 3 — Padronize estilos tipográficos por função

Você já tem uma escala tipográfica definida em capítulos anteriores; aqui o foco é transformar em estilos nomeados para uso consistente. Exemplo de mapeamento:

EstiloUsoRegras rápidas
titleTítulo de tela1 por tela; evita quebra em 3+ linhas
subtitleSeções e cardsUsar para agrupar conteúdo
bodyTexto padrãoPara descrições e labels longas
captionAjuda/metadataNão usar para informações críticas

Regra anti-inconsistência: não crie “body2”, “body3” sem um motivo claro. Se surgiu necessidade, revise o sistema (não a tela).

Passo 4 — Crie uma escala de espaçamento curta e obrigatória

Espaçamento é onde nascem muitas variações invisíveis. Defina uma escala (por exemplo, múltiplos de 4 ou 8) e proíba valores fora dela.

  • Use xs/sm/md/lg/xl para margens internas/externas
  • Defina padrões: padding de card, espaçamento entre itens de lista, margem de seção

Exemplo de regras de uso:

  • Padding de card: lg
  • Espaço entre título e conteúdo: sm
  • Espaço entre seções: xl
  • Altura mínima de área clicável: use o componente, não “ajuste no padding”

Passo 5 — Padronize componentes com variantes e estados

Você não precisa documentar todos os componentes do mundo. Comece pelos que mais se repetem e defina:

  • Variantes (ex.: botão primário/segundário/terciário)
  • Tamanhos (ex.: padrão e compacto)
  • Estados (normal, pressionado, desabilitado, loading, foco)
  • Regras de conteúdo (texto, ícone, alinhamento)

Exemplo: especificação enxuta de Botão

ItemDecisão
Variantesprimary, secondary, ghost, danger
Tamanhosmd (padrão), sm (listas/áreas densas)
PaddingHorizontal lg, vertical md
Raiomd
ÍconeOpcional à esquerda; tamanho consistente; gap sm
LoadingSubstitui ícone por spinner; mantém largura

Regra anti-duplicação: se alguém precisar de “um botão quase igual”, a pergunta é: isso é uma nova variante oficial ou um uso incorreto do botão existente?

Passo 6 — Defina estilo de ícones e ilustrações (para não misturar linguagens)

Mesmo com bons componentes, misturar ícones/ilustrações de estilos diferentes quebra a unidade visual. Defina um “contrato”:

  • Ícones: preenchido ou contorno (escolha 1), espessura consistente, cantos coerentes, tamanho padrão (ex.: 20/24), alinhamento vertical com texto.
  • Cores: ícone segue onSurface por padrão; usa primary apenas para ação/ênfase.
  • Ilustrações: se usar, defina paleta limitada, nível de detalhe e quando aparecem (ex.: apenas estados vazios e onboarding).

Regra prática: não misture ícones “outline” com “filled” na mesma barra de navegação ou lista de ações.

Documentação mínima: uma página que evita 80% do caos

Você não precisa de um portal complexo. Uma única página (documento ou arquivo no repositório) já resolve, desde que seja fácil de achar e atualizar. Estrutura sugerida:

1) Paleta

  • Tokens de cor (nome + valor)
  • Regras de uso (o que é permitido/proibido)
  • Exemplos: “links usam primary”, “erro usa danger + texto explicativo”

2) Escala tipográfica

  • Estilos nomeados (title, subtitle, body, caption)
  • Onde usar cada um
  • Regras: evitar criar novos estilos sem revisão

3) Escala de espaçamento

  • Lista de tokens (xsxxl)
  • Padrões recomendados (card, lista, seção)
  • Regra: não usar valores fora da escala

4) Componentes padrão e estados

  • Para cada componente: variantes, tamanhos, estados e exemplos de uso
  • Links/âncoras para arquivos de design ou snippets de código (se existirem)

5) Regras rápidas (checklist)

  • Não inventar nova cor fora dos tokens
  • Não inventar novo tamanho de fonte fora dos estilos
  • Não usar espaçamento “quebrado” (ex.: 10, 14) fora da escala
  • Se um componente não atende, propor variante oficial

Processo leve de revisão: como evitar componentes duplicados e inconsistências

O objetivo é detectar divergências cedo, antes de virar “cada tela com seu kit”. Um processo simples:

1) Regra do “antes de criar, procure”

Antes de criar um componente novo, faça uma busca rápida (no design e no código) por:

  • Nome do componente (ex.: “Card”, “ListItem”, “Button”)
  • Função (ex.: “linha de configuração”, “item de lista com ícone”)

Se já existe algo parecido, adapte por variante/props em vez de duplicar.

2) Revisão semanal de consistência (15–30 min)

Separe um momento fixo (ou a cada sprint) para revisar:

  • Novas telas: estão usando tokens e componentes padrão?
  • Novos componentes: são realmente necessários?
  • Variações surgidas: viraram variantes oficiais ou são exceções?

Saída da revisão: uma lista curta de ações, por exemplo “unificar dois cards”, “criar variante compacta do ListItem”, “remover cor fora da paleta”.

3) Critérios objetivos para aceitar uma nova variante

Use critérios simples para não virar debate infinito:

  • Repetição: aparece em 3+ lugares ou está previsto que aparecerá?
  • Diferença funcional: muda comportamento/estado, não só estética?
  • Compatibilidade: não quebra padrões de espaçamento/tipografia?

4) “Mapa de componentes” para detectar duplicatas

Mantenha uma tabela curta na documentação com os componentes existentes e suas variantes. Isso ajuda a perceber quando alguém está prestes a criar “Button2”.

ComponenteVariantesOnde usarObservações
Buttonprimary, secondary, ghost, dangerAçõesLoading mantém largura
TextFielddefault, withIconFormuláriosErro abaixo do campo
Carddefault, clickableListas, detalhesPadding padrão = lg

Dica de implementação para devs: centralize tokens e evite “números mágicos”

Mesmo sem framework específico, a ideia é a mesma: tokens em um único lugar e uso por referência. Exemplos de práticas:

  • Arquivo único de tokens (ex.: tokens.json ou theme.ts)
  • Componentes recebem variantes por parâmetro (ex.: variant="primary")
  • Evitar #2F6BFF e 16 espalhados no código; usar colors.primary e spacing.lg
// Exemplo conceitual de uso (pseudo-código) Button({ variant: "primary", size: "md" })  Text({ style: "subtitle" })  Container({ padding: spacing.lg, background: colors.surface })

Agora responda o exercício sobre o conteúdo:

Qual prática ajuda a manter consistência visual ao longo das telas de um app ao criar um mini design system?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Um mini design system reduz variação desnecessária ao transformar decisões em tokens e estilos reutilizáveis, usados por referência. Isso evita retrabalho e inconsistências causadas por pequenas escolhas repetidas em cada tela.

Próximo capitúlo

Fluxo de trabalho UI/UX: do protótipo à implementação no código

Arrow Right Icon
Capa do Ebook gratuito Design de Interfaces para Apps: UI/UX essencial para desenvolvedores iniciantes
87%

Design de Interfaces para Apps: UI/UX essencial para desenvolvedores iniciantes

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.