Skip to content

feat(design): design system, protótipo e tokens da PRO4TECH aplicados ao front (PRE-05) - #18

Open
Garakis wants to merge 7 commits into
mainfrom
design/sistema-e-prototipo
Open

Garakis wants to merge 7 commits into
mainfrom
design/sistema-e-prototipo

Conversation

@Garakis

@Garakis Garakis commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Entrega o habilitador PRE-05: design system, protótipo navegável e os tokens aplicados às telas que já estão na main.

O problema

O repositório tinha três paletas concorrentes, e nenhuma era a do cliente:

Onde O que dizia Realidade
frontend/src/index.css índigo #6366f1 + ciano, efeito de vidro nunca foi a marca
frontend/src/styles/tokens.css comentado como "PRO4TECH palette" ciano #0aa7c8 sobre fundo claro
docs/DESIGN_SYSTEM.md laranja #F97316 é o orange-500 do Tailwind

Os três foram extraídos de captura de tela. O DESIGN_SYSTEM.md diz isso de forma explícita: "extraído utilizando a URL da landing page do cliente, e algumas capturas de tela". Quem olha print e encaixa no valor mais próximo que conhece acaba no Tailwind.

Os valores deste PR vieram do assets/css/main.css do site da PRO4TECH:

Token Deste PR No DESIGN_SYSTEM.md
Acento #ED6A32 #F97316
Fundo #0B0D10 #0A0D14
Texto secundário #6B7280 #9CA3AF
Raio 10px — a marca tem um só 8px

As quatro cores de estado são a única exceção: a PRO4TECH não publica cores semânticas. Foram derivadas do laranja em oklch, mantendo luminosidade (0.676) e croma (0.176) e variando só o matiz, para conviverem com o acento sem competir.

Dois bugs encontrados no caminho

styles/tokens.css e styles/components.css eram arquivos mortos. Ninguém os importava. As classes ds-* de components/ui/index.tsx renderizavam sem estilo nenhum. Agora tokens.css é a fonte única e é de fato importado; quatro tokens que o components.css referenciava não existiam e foram corrigidos.

Branco sobre o laranja da marca reprova na WCAG AA.3,13:1, abaixo do mínimo de 4,5:1 para texto normal. O rótulo do botão principal passou a ser #16181D, que dá 5,67:1 sobre o mesmo laranja — a cor da marca fica intacta, em vez de ser escurecida até passar.

Contraste conferido par a par:

texto sobre fundo           15,72    texto-fraco sobre cartão    7,48
erro sobre cartão            5,51    sucesso sobre seu fundo     4,90
atenção sobre seu fundo      4,65    info sobre seu fundo        4,62
branco sobre laranja         3,13  ->  #16181D sobre laranja     5,67

O que entra

Design system — três pranchas: fundamentos, componentes com estados, e os padrões próprios do produto (hierarquia, cenário DADO/QUANDO/ENTÃO, completude, sugestão da IA).

Protótipo navegável — o fluxo da Sprint 1 com controles que funcionam. Abre na Conversa, não no formulário: se a entrada primordial de dados é por IA — reunião, transcrição, documento — o cadastro manual deixa de ser o caminho principal e o backlog vira o lugar de revisar o que entrou. Toda proposta da IA cita a origem e espera Aceitar ou Dispensar; pergunta fora do acervo é recusada em vez de respondida.

Telas existentesAuth.tsx e Projects.tsx continuam iguais em layout. Os nomes de variável antigos viraram alias, então nada quebrou. A etiqueta com o nome do produto usava badge-info, azul de informação; virou badge-brand.

PDF do backlog na v1.1 — o que estava no repositório era a v1.0, sem a FT-01.6 nem os quatro PBIs da revisão do cliente. O gerador entra versionado desta vez: ficou fora na primeira geração, se perdeu, e precisou ser reescrito do zero.

Verificação

Build passa, os 44 testes passam, e abri a tela de login no navegador para conferir — incluindo o estado de erro. As 576 cláusulas DADO/QUANDO/ENTÃO do backlog foram conferidas uma a uma na saída do PDF.

Precisa de decisão

  1. Este PR substitui o docs/DESIGN_SYSTEM.md? Manter os dois é garantir que alguém use o laranja errado. Sugiro apontá-lo para docs/design/, mas não apaguei nada de ninguém.
  2. O PRE-05 está atribuído ao Giovanni no PLANEJAMENTO_SCRUM.md. Este PR entrega a tarefa inteira. Alinhem antes de mergear.
  3. As telas da S1-02 e S1-04 são dele e já estavam mergeadas — vale uma conferida visual de quem as construiu.

Garakis and others added 7 commits September 16, 2026 15:16
Aplica os tokens da marca ao frontend e publica o design system e o
protótipo navegável da Sprint 1. Corresponde ao habilitador PRE-05.

Cor, tipografia, raio e sombra saíram da folha de estilo do site da
PRO4TECH, não de aproximação visual. As quatro cores semânticas são a
exceção — a marca não publica cores de estado, então foram derivadas do
laranja em oklch, mantendo luminosidade e croma e variando só o matiz,
para conviverem com o acento sem competir com ele.

O index.css anterior usava índigo e ciano com efeito de vidro, que não é
a identidade do cliente. Os nomes de variável antigos foram mantidos como
alias para o App.tsx continuar funcionando; novo código usa os tokens em
português. O carregamento das fontes voltou para o index.html, onde já
havia preconnect, e a JetBrains Mono foi preservada: a marca não opina
sobre monoespaçada.

O protótipo abre na Conversa, não no formulário. Se a entrada primordial
de dados é por IA — reunião, transcrição, documento — o cadastro manual
deixa de ser o caminho principal e o backlog vira o lugar de revisar o
que entrou. Toda proposta da IA cita a origem e espera Aceitar ou
Dispensar, e perguntas fora do acervo são recusadas em vez de
respondidas: é a regra inegociável do PRD e o PBI-03.2.4 virando tela.

Os canvases gerados têm ~2,4 MB cada e são regeneráveis a partir dos
.dc.html, então ficam fora do versionamento.
O editor agora muda conforme o nível selecionado na árvore. Épico e
feature abrem a lista de critérios de aceitação, com adicionar, remover e
reordenar (PBI-01.2.1 e PBI-01.2.2); PBI mantém história e cenários.

Cenários deixaram de ser um só: viraram lista com reordenação e remoção
(PBI-01.2.4), e o checklist passou a cobrar DADO, QUANDO e ENTÃO em todos
eles, não apenas no primeiro.

Anexo de protótipo entrou com a verificação que o guia exige (PBI-02.1.3,
cenário 2): imagem não registra regra de negócio, exceção nem estado de
erro, então havendo anexo sem cenário o item é reprovado e o alerta
aparece junto do anexo.

Isso torna o conjunto de verificações variável, que é justamente o que a
fórmula do PBI-01.3.6 pede — a completude passou a ser sobre as
aplicáveis, não sobre um total fixo, e o rótulo do painel diz isso.
O PDF que estava no repositório é a v1.0, anterior ao parecer da
PRO4TECH: não tem a feature FT-01.6 nem os quatro PBIs que a revisão
acrescentou, e a divisão por sprint está desatualizada.

O gerador entra versionado desta vez. Ele ficou fora do repositório na
primeira geração e se perdeu, o que obrigou a reescrevê-lo do zero agora.

Converte o Markdown direto para HTML e imprime com o Chrome headless, sem
depender de pandoc nem weasyprint. O bloco de cenário é o ponto sensível e
está tratado explicitamente: DADO, QUANDO e ENTÃO saem uma cláusula por
linha, com a palavra-chave em coluna própria e sem quebra. Num parágrafo
corrido o padrão do cliente deixaria de ser legível — e seria um mau sinal
mandar o documento assim para quem escreveu o guia.

Cláusula, item de lista e história podem quebrar em duas linhas no
Markdown; o conversor junta a continuação antes de emitir o HTML. Sem
isso o texto excedente escapava da caixa do cenário.

Duas saídas: a completa com os cenários, em 65 páginas, e a resumida só
com as histórias, em 21, que é o formato que o cliente já recebeu. As 576
cláusulas do Markdown foram conferidas uma a uma na saída.
As telas da S1-02 e S1-04 já estavam mergeadas usando o índigo antigo.
Este commit troca a paleta por baixo delas, sem mexer em layout.

O repositório tinha três paletas concorrentes e nenhuma era a do
cliente: o index.css seguia índigo com efeito de vidro, o
styles/tokens.css dizia "PRO4TECH palette" mas era ciano sobre fundo
claro, e o docs/DESIGN_SYSTEM.md trazia laranja #F97316 — que é o
orange-500 do Tailwind, não a cor da marca. Os três saíram de captura de
tela; os valores aqui saíram da folha de estilo do site da PRO4TECH.

styles/tokens.css passa a ser a fonte única e agora é de fato importado.
Ele e o styles/components.css eram arquivos órfãos: ninguém os importava,
então as classes ds-* de components/ui/index.tsx renderizavam sem estilo
nenhum. Quatro tokens que a folha de componentes referenciava não
existiam; foram corrigidos.

O index.css deixa de declarar cor e fica só com reset, base e
componentes. Os nomes antigos continuam como alias, porque Auth.tsx,
Projects.tsx e App.tsx os consomem.

Contraste conferido par a par. Branco sobre o laranja da marca dá 3,13:1
e reprova na WCAG AA para texto normal; o rótulo do botão principal
passou a ser #16181D, que dá 5,67:1 sobre o mesmo laranja. Assim a cor da
marca fica intacta em vez de ser escurecida até passar. As pranchas do
design system foram corrigidas junto, senão a referência contradiria o
código.

A etiqueta com o nome do produto usava badge-info, azul de informação.
Virou badge-brand.

Verificado com o build, os 44 testes e a tela de login aberta no
navegador, incluindo o estado de erro.
…nter no protótipo

Corrige o breadcrumb fixo de hierarquia no editor do PBI para refletir os pais reais do item selecionado na árvore. Adiciona manipuladores de tecla Enter nas entradas de texto do Chat e na tela de Login para tornar a navegação fluida e totalmente funcional.
…las do app

Substitui a altura fixa do container interno por 100% no fluxo de renderização condicional do x-dc, garantindo que o formulário de login ocupe todo a tela isoladamente sem exibir a barra e a tela de Projetos vazadas ao fundo.
…ição na tela inicial

O atributo hint-placeholder-val=true fazia o renderizador de preview exibir estaticamente os blocos do Login e do App simultaneamente. Removido do container principal do App para que apenas a tela de Login seja renderizada inicialmente até a autenticação.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants