Todos os cases

Case 02 de 05

Design system · Pay4Fun · 3 anos em produção

DS4FUN

O primeiro design system da Pay4Fun. Tokens iguais no Figma e no código, componentes testados e governança automática: a CI barra o desvio e um auditor confere os frames do Figma.

Papel
Lead Design Ops e arquiteto do sistema
Time
5 pessoas: eu, 2 designers e 2 devs front-end
Escopo
Tokens, biblioteca de componentes, governança e handoff
Empresa
Pay4Fun

NotaTelas de produto da Pay4Fun omitidas: as imagens mostram só a documentação do design system. Números agregados do repositório.

Capa do DS4FUN: o painel de variáveis semânticas do Figma, com valores para claro e escuro, ao lado do número −40% de pedidos de esclarecimento técnico no handoff

Resultados

  • −40%de pedidos de esclarecimento técnico no handoff entre design e engenharia
  • 225variáveis CSS geradas dos tokens via Style Dictionary, no padrão DTCG

Demo interativa

Audite um frame contra o design system

Um frame com cinco violações plantadas. Escolha um achado para ver onde ele está, corrija e acompanhe a nota subir.

Frame · Transferir — 360

Design system fictício: grade de 4 px · toque ≥ 44 px · texto ≥ 4,5:1 · cor por token

Nota de conformidade

64/100

100 − 10 × 3 erros − 3 × 2 alertas = 64

Cada erro tira 10 pontos; cada alerta, 3.

Por categoria

  • Cor1 erro
  • Tipografiaok
  • Espaçamento1 alerta
  • Raiook
  • Componentesok
  • Nomenclatura1 alerta
  • Estilosok
  • Contraste WCAG1 erro
  • Heurísticas1 erro

Achados

5 abertos

  1. Erro · CorCor fora do token: #4F6BED solto no fundo do botão.Como corrigir: Usar o token cor.acao.primaria (#2346D9).
  2. Erro · Contraste WCAGTexto de ajuda com contraste de 2,9:1. O mínimo AA é 4,5:1.Como corrigir: Usar cor.texto.secundario (#5B606B), com 6,3:1.
  3. Erro · HeurísticasBotão com 36 px de altura: alvo de toque abaixo de 44 px.Como corrigir: Trocar pela instância Botão/Grande, com 48 px.
  4. Alerta · EspaçamentoDois espaçamentos de 13 px, fora da grade de 4.Como corrigir: 12 px entre campo e ajuda, 16 px antes do botão.
  5. Alerta · NomenclaturaCamada com nome genérico: “Rectangle 12”.Como corrigir: Renomear para Campo/Valor.

Design system fictício. A ferramenta real audita frames do Figma e também avalia o handoff em 5 pilares: estados, regras, escopo, acessibilidade e performance.

O problema

As telas saíam com desvios visuais, e o handoff dependia de longas explicações.

Os devs recriavam telas porque os tokens do Figma e do CSS não batiam. Cada entrega pedia alinhamento manual, e a consistência se perdia a cada sprint.

AntesHandoffexplicado tela a tela
Depois−40%de pedidos de esclarecimento técnico

Decisões

  1. Tokens semânticos nos dois temas

    O dev usa surface.base em vez de neutral/200. No Figma são cerca de 80 variáveis por modo (53 de cor e 27 numéricas), nos temas claro e escuro. Trocar de tema não pede retrabalho.

    Variáveis semânticas no Figma, com valores para os modos claro e escuroAmpliar imagem
  2. As mesmas variáveis no código

    No código, 118 primitivos e 107 semânticos, mais 10 estilos de texto, geram 225 variáveis CSS via Style Dictionary, no padrão DTCG. Tema e audiência são eixos separados.

    Paleta do DS4FUN com escalas de laranja, roxo, neutros e cores semânticasAmpliar imagem
  3. Playground no lugar de PDF

    Em vez de um PDF longo, um playground: tipo, estado e tamanho do botão, com o código gerado ao vivo. O dev testa e copia na hora.

    Playground de botões com controles de tipo, estado e tamanho e o código gerado ao ladoAmpliar imagem
  4. Desvio registrado com motivo

    A CI bloqueia componente sem story e aponta divergência entre Figma e código. Quando o desvio é intencional, ele entra num registro com o motivo: são 16 hoje, a maioria por WCAG ou pelo modo escuro.

  5. Auditor de frames do Figma

    Criei o ds_auditor, em React e TypeScript. Ele lê frames do Figma e dá uma nota de 0 a 100 em 9 categorias, de cor e tipografia a contraste WCAG e alvo de toque de 44 px. Também confere o handoff: estados, regras, escopo, acessibilidade e performance.

  6. Padrões montados, além de componentes

    Documentei padrões montados, como a Data Table com seleção múltipla, ações por linha e paginação. O time monta fluxos reais sem reinventar a composição.

    Padrão Data Table com seleção múltipla, ações por linha e paginaçãoAmpliar imagem

Processo

  1. Atrasos nas sprints

    Mapeei os atrasos das sprints: os devs recriavam telas porque os tokens do Figma e do CSS não batiam.

  2. Tokens iguais nos dois lados

    Uma estrutura de tokens semânticos, igual nos dois lados, cortaria a conversa de handoff.

  3. Ajuste no modo escuro

    No Storybook com os devs, tokens amplos demais geravam dúvida no modo escuro. Criei tokens funcionais explícitos.

  4. Governança automática

    Pipeline com Style Dictionary, CI que barra desvio e o ds_auditor conferindo os frames do Figma.