central do design system
passo a passo

como funciona

O design system fica hospedado em ui.ajudaecom.com.br — uma fonte única. Todos os apps puxam o CSS e o JS de lá. Quando algo muda no servidor, todos os apps mudam juntos, sem precisar mexer em cada um.

  1. Ao criar um app com o Claude, cole o prompt certo (A para criar do zero, B para adaptar um app que já funciona). Depois descreva ou cole o app.
  2. O app gerado já vem com os <link> e <script> apontando para o servidor.
  3. Para mudar o visual de todos os apps de uma vez, edite só os arquivos no servidor (veja "publicar no servidor" abaixo).

ver exemplos ao vivo

Dois exemplos prontos para você ver a identidade funcionando — um app avulso e um painel completo.

os exemplos abrem do servidor — suba DEMO-modelo-painel.html e DEMO-modelo-app.html junto com os outros arquivos.

manutenção

publicar no servidor

Os arquivos do design system ficam em ui.ajudaecom.com.br. Baixe aqui para subir a primeira vez (ou quando o Claude gerar uma versão nova). Depois é só substituir no servidor — os apps puxam a versão nova sozinhos.

suba ajuda-ds.css e ajuda-ds.js na raiz de ui.ajudaecom.com.br. veja o passo a passo e a configuração de cache na seção "publicar e atualizar" mais abaixo.

passo a passo

prompts prontos

Dois prompts pro Claude, conforme o momento. Copie o que se aplica e cole no começo da conversa.

A · criar do zero com o design

Quando for criar uma ferramenta nova já aplicando a identidade desde o início.

Vou criar um app novo usando o design system da Ajuda Ecommerce, hospedado no nosso servidor. NÃO recrie o CSS nem copie estilos para dentro do app — sempre referencie os arquivos do servidor.

TIPO (escolha um e apague os outros):
[ ] FERRAMENTA AVULSA — tela simples: header com a marca + conteúdo, sem menu lateral.
[ ] PÁGINA DO PAINEL — usa a casca .aj-shell com a sidebar; esta ferramenta é um item do menu (marque-a com .is-active). Replique a mesma sidebar do painel.
[ ] O PAINEL EM SI — a estrutura completa do painel (sidebar com categorias + área de conteúdo).

No <head>, nesta ordem:
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Space+Grotesk:wght@400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://ui.ajudaecom.com.br/ajuda-ds.css">

Antes de </body>:
<script src="https://ui.ajudaecom.com.br/ajuda-ds.js"></script>

Construa a interface com as classes aj-* (botoes, formularios, alertas, tabela; painel .aj-shell/.aj-side/.aj-navgroup/.aj-navitem se for painel). Use data-mask nos campos de documento. Regras: verde so para acao/destaque, nunca como texto; azul como base; o // como assinatura; numeros grandes na fonte display; botoes lado a lado em .aj-btn-row. App responsivo, mobile-first. Depois eu descrevo a tela.
B · adaptar um app que já funciona

Quando a solução já está pronta e funcionando, e você só quer vestir ela com o design.

Este app já funciona. Quero que você aplique o design system da Ajuda Ecommerce SÓ na aparência, sem mexer na lógica.

TIPO (escolha um e apague os outros):
[ ] FERRAMENTA AVULSA — tela simples: header com a marca + conteúdo, sem menu lateral.
[ ] PÁGINA DO PAINEL — envolva o conteúdo atual na casca .aj-shell com a sidebar; esta ferramenta vira um item do menu (.is-active). Replique a mesma sidebar do painel.

REGRA PRINCIPAL: não altere nenhum comportamento. Preserve todo o JavaScript, funções, cálculos, validações, IDs, nomes de variáveis e o fluxo que já funcionam. Você só troca o visual.

O que fazer:
1. No <head> adicione (sem remover o que já existe):
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Space+Grotesk:wght@400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://ui.ajudaecom.com.br/ajuda-ds.css">
2. Antes de </body>: <script src="https://ui.ajudaecom.com.br/ajuda-ds.js"></script>
3. Remova o CSS visual antigo que conflita (cores, fontes, espacamentos) e aplique as classes aj-* nos elementos que já existem: botoes viram .aj-btn (a acao principal .aj-btn--primary verde); inputs/selects viram .aj-input/.aj-select dentro de .aj-field com .aj-label; tabelas .aj-table; avisos .aj-alert. Botoes lado a lado em .aj-btn-row. Se for PÁGINA DO PAINEL, envolva tudo na .aj-shell.
4. Se o app já tem header/logo/cabecalho ou rodape/footer proprios, SUBSTITUA pelos nossos: o cabecalho vira .aj-appbar (logo da Ajuda + titulo da ferramenta, reaproveitando o nome que ja existia); o rodape vira .aj-footer (logo + atendimento@ajudaecom.com.br + copyright). Se for PÁGINA DO PAINEL, o cabecalho vira a topbar .aj-topbar com .aj-topbar__brand (logo pequena + nome da ferramenta). Descarte a logo/header/footer antigos do app.
5. Regras de identidade: verde so para acao/destaque, nunca texto; azul como base; numeros grandes na fonte display. App responsivo, mobile-first.

NÃO mude textos, rotulos, ordem dos campos nem a logica. Se algo for ambiguo, pergunte antes de mexer. Vou colar o codigo do app a seguir.
referencia

documentacao completa

Abaixo, tudo que o sistema oferece: logo, cores, tipografia, componentes, pattern e diretrizes. Use como consulta ao construir.

logo

a marca

A logo é o wordmark oficial — nunca redigite "ajuda//ecommerce" como texto. Use o arquivo SVG. Duas versões conforme o fundo.

ajuda ecommerce — versão padrão // padrão · fundo claro
ajuda ecommerce — versão branca // branca · fundo escuro
pattern

textura //

O // do logo vira textura de fundo, em grade escalonada. Quatro combinações de cor para diferentes contextos. Use com moderação — em faixas, capas e áreas de respiro, nunca atrás de texto corrido.

// lime · barras azuis
// branco · barras azuis
// azul · barras verdes
// branco · barras verdes
template

capa de seção

Modelo para slides, capas e heros de página: fundo azul, título display em branco, apoio em verde. Pattern opcional em baixa opacidade ao fundo.

Performance

Texto de apoio em verde, sempre curto e direto, reforçando a ideia central da seção.

cores

paleta

Três cores-âncora extraídas do logo, com escalas derivadas para estados, fundos e texto.

lime
#A0E800
blue
#004070
white
#F8F8F8
ink
#0E1B26
gray-500
#6B7B87
gray-100
#E6EBEF
success
#2E9E5B
danger
#D64545
tipografia

escala

PX Grotesk é a fonte da marca; sem licença, cai para Space Mono (mono) e Space Grotesk (corpo/display). Cada nível tem tamanho, peso, entrelinha, tracking e uso definidos. Use a classe correspondente.

nívelamostratam / pesoentrelinha / trackinguso
.aj-display Performance 3.5rem / 700 1.1 / -.02em capas, heros, números de destaque
.aj-h1 Título de página 2.5rem / 700 1.1 / -.02em título principal da tela
.aj-h2 Título de seção 1.75rem / 700 1.3 / -.02em seções dentro da página
.aj-h3 Subtítulo 1.25rem / 600 1.3 / 0 cards, blocos, agrupamentos
.aj-body Texto de corpo padrão. 1rem / 400 1.6 / 0 parágrafos e leitura corrida
.aj-small Texto auxiliar menor. .875rem / 400 1.6 / 0 legendas, apoio, metadados
.aj-label-txt // rótulo .75rem / 700 1.6 / .12em eyebrows, rótulos, tags mono
componentes

botões

A cor principal é o verde (primary) — use-o sempre. As outras variantes existem só quando há hierarquia real (uma ação principal e outra alternativa). Evite dois botões cheios competindo na mesma tela.

hierarquia — do mais forte ao mais discreto

Para duas ações verdes lado a lado (ex.: downloads): primary + primary-soft.

azul (secondary) — use só em contexto institucional

propriedademédio (.aj-btn--md)grande (.aj-btn--lg)
padding14px 28px18px 38px
font-size.875rem1rem
font-weight700700
line-height11
letter-spacing.01em.01em
gap (ícone↔texto)10px10px
border-radius4px4px
famíliamonomono

outros elementos

novo em análise arquivado

card padrão

Topo verde como assinatura, base azul para texto. Reuse em listas, dashboards e métricas.

ícones

ícones nos botões

Decisão de UX: o ícone do botão deve descrever a ação — não ser enfeite. Se o botão baixa algo, ícone de download; se copia, ícone de cópia; se salva, ícone de disquete. Isso acelera o reconhecimento e reduz o esforço de leitura. O ícone vem antes do texto.

exemplos certos

O ícone reforça a ação que o texto já diz. Os dois juntos comunicam mais rápido.

quando NÃO usar ícone

  • × Não force um ícone quando a ação não tem um símbolo óbvio (ex.: "ver detalhes", "continuar"). Texto sozinho é melhor que ícone confuso.
  • × Nunca use ícone decorativo que não tem relação com a ação. Ícone é função, não enfeite.
  • × Não misture: ou todos os botões de um grupo têm ícone, ou nenhum.

ícones disponíveis (outline)

Estilo linha fina. Use dentro do botão como <svg viewBox="0 0 24 24">…</svg> antes do texto. O CSS já cuida do tamanho e alinhamento.

download
copy
save
add
edit
delete
send
check
back
search
filter
external
settings
biblioteca

componentes

Conjunto pronto para montar telas inteiras em HTML/CSS puro. Cada componente já vem com estados (foco por teclado, ativo, erro, desabilitado) e acessibilidade. Use as classes aj-*.

formulário · select, textarea, validação

digite só números — a máscara formata sozinha
aceita cpf; use data-mask="cpfcnpj" para alternar automático

seleção · checkbox, radio, switch

navegação · tabs e navbar

Conteúdo da visão geral. Clique nas abas acima — elas trocam de verdade.

feedback · alertas

Sincronizando
Importando pedidos do Mercado Livre.
NF-e emitida
Documento autorizado pela SEFAZ.
Estoque baixo
3 produtos abaixo do mínimo.
Falha no envio
Não foi possível gerar a etiqueta.

dados · tabela e avatar

clienteplanostatus
LCLittle Closet
Suporte mensalativo
QPQuatro Patas
Migraçãoem análise

estado · progress, spinner, skeleton, tooltip

ICMS STSubstituição Tributária aplicável

sobreposição · modal

Confirmar emissão
Emitir NF-e para o pedido #4821? Esta ação não pode ser desfeita.
espaçamento

escala com propósito

Tudo é múltiplo de 4px. Cada token tem um uso recomendado — seguir isso é o que faz telas diferentes respirarem igual. Na dúvida, use o token mais próximo, nunca um valor solto.

--aj-2 · 8pxentre itens muito ligados (ícone + texto, label + campo)
--aj-3 · 12pxentre campos de um formulário; padding interno pequeno
--aj-4 · 16pxpadding padrão de cards e caixas; gap entre botões
--aj-5 · 24pxpadding generoso; separação entre blocos relacionados
--aj-7 · 48pxrespiro entre seções dentro de uma página
--aj-8 · 64pxseparação entre grandes blocos / topo de seção

Regra prática: quanto mais relacionados dois elementos, menor o espaço entre eles. Espaço comunica agrupamento.

anatomia

telas montadas

As peças combinadas em padrões reais. Copie estes arranjos em vez de inventar — é o que mantém os apps parecidos.

card de métrica

faturamento do mês R$ 48.320 ▲ 12% vs. mês anterior

Rótulo mono pequeno em cima, número grande em destaque, variação em verde. Topo verde de assinatura.

formulário (label acima, ação principal embaixo)

Label sempre acima do campo. Campos separados por --aj-3. Uma ação principal (verde), à direita.

listagem

LC Little Closet
suporte mensal · ativo
ativo
QP Quatro Patas
migração · em análise
em análise

Avatar + info à esquerda, status à direita. Linhas separadas por borda sutil, não por espaço grande.

tom de voz

como escrevemos

A escrita é parte da identidade. Direto, claro, em minúsculas nos botões. Sem firula, sem "termos de robô". O texto deve dizer o que acontece.

botões — diga a ação, não "ok"

façaevitepor quê
emitir nf-econfirmaro botão deve dizer o que vai acontecer
salvar clienteokverbo + objeto remove a dúvida
cancelarnão, voltar atráscurto e previsível

erros — diga o que houve e como resolver

façaevitepor quê
CNPJ inválido. Confira os 14 dígitos.Erro 422o usuário não sabe o que é 422
Não foi possível emitir. Tente de novo em instantes.Falha inesperada no sistemadiga o próximo passo, não só o problema

estado vazio — convide à ação

Nenhum cliente ainda

Cadastre o primeiro para começar a acompanhar.

Tela vazia não é erro — é oportunidade. Explique e ofereça a ação principal.

princípios de escrita

  • // Botões e rótulos em minúsculas; títulos podem ter inicial maiúscula.
  • // Fale com o usuário (você), não sobre ele.
  • // Evite jargão técnico onde o usuário não precisa dele.
  • // Curto vence longo. Corte palavras que não mudam o sentido.
painel

layout de sistema

Para reunir várias ferramentas num só lugar, o sistema tem um layout de painel: menu lateral com categorias recolhíveis (Financeiro, Logística…) e área de conteúdo. No mobile, o menu vira gaveta. Cada ferramenta é uma página que usa essa mesma casca — o menu é idêntico em todas.

estrutura

A casca é a classe .aj-shell com sidebar (.aj-side) + área principal (.aj-main). As categorias usam .aj-navgroup (accordion) e cada ferramenta é um .aj-navitem. O JS cuida de abrir/fechar e da gaveta mobile sozinho.

regras

  • // Agrupe as ferramentas por categoria macro (Financeiro, Logística, Marketing…). Use ícone que descreva cada uma.
  • // A ferramenta aberta fica marcada com .is-active — a categoria dela abre sozinha.
  • // O título da ferramenta atual aparece na topbar. No mobile, o hambúrguer abre o menu.
responsivo

mobile por padrão

Todo app nasce mobile-first. O ajuda-ds.css já traz as regras abaixo prontas — você só precisa seguir a estrutura. Há também um arquivo modelo-app.html para baixar e usar como ponto de partida.

regras que o css já aplica sozinho (≤640px)

  • // Botões e campos ocupam largura total e ganham altura mínima de 48px.
  • // Toda área tocável tem ≥44px (botões, abas, checkboxes, links).
  • // Navbar quebra em linhas; tabelas largas rolam na horizontal.
  • // Cards e modais ocupam a largura disponível.

o que você deve fazer ao montar a tela

  • // Sempre incluir <meta name="viewport" content="width=device-width, initial-scale=1">.
  • // Conteúdo dentro de um container com max-width e padding lateral.
  • // Botões lado a lado SEMPRE dentro de .aj-btn-row (ou .aj-modal__foot no modal). Nunca use um <div> com flex solto — eles não empilham e vazam da tela no mobile.
  • // Nunca dar width fixo em px num container que precisa caber no celular — use max-width + largura fluida.
  • // Grids: use grid-template-columns:repeat(auto-fit,minmax(...)) em vez de colunas fixas.
  • // Imagens com max-width:100%.
  • // Testar em 360px de largura antes de publicar.

breakpoint

Um só, simples: 640px. Acima, layout de desktop; abaixo, tudo empilha. Não invente vários breakpoints — um ponto de quebra cobre quase tudo e mantém a manutenção fácil.

diretrizes

faça / não faça

faça

  • Verde só para ação e destaque (CTAs, foco, status positivo)
  • Azul como base institucional (headers, texto, fundos sólidos)
  • Use o // como separador, bullet e elemento gráfico
  • Títulos e marca sempre em mono, lowercase
  • Fundo claro #F8F8F8, superfícies em branco puro

não faça

  • Verde como fundo de áreas grandes (cansa, perde impacto)
  • Misturar outras cores fora da paleta
  • Gradientes roxos ou genéricos de "app de IA"
  • Texto em caixa alta nos títulos da marca
  • Fontes genéricas (Arial, Inter, Roboto)
publicar e atualizar

o servidor único

Toda a mágica está aqui: os arquivos moram em ui.ajudaecom.com.br e os apps puxam de lá. Muda no servidor, muda em todos.

1. subir os arquivos (primeira vez)

  • // Na Hostinger, aponte o subdomínio ui.ajudaecom.com.br para uma pasta (ex.: public_html/ui).
  • // Suba na raiz dessa pasta: ajuda-ds.css, ajuda-ds.js e a central como index.html.
  • // Confirme abrindo https://ui.ajudaecom.com.br/ajuda-ds.css no navegador — tem que aparecer o código.

2. configurar o cache (importante!)

Sem isso, o navegador guarda a versão antiga e a atualização demora a aparecer. Crie um arquivo .htaccess na mesma pasta com cache curto e revalidação:

<FilesMatch "\.(css|js)$">
  Header set Cache-Control "public, max-age=300, must-revalidate"
</FilesMatch>

max-age=300 = o navegador revalida a cada 5 minutos. Para mudança imediata em todos, veja o passo 3.

3. atualizar o design (depois)

  • // Peça a mudança ao Claude (ex.: "deixe o botão primário mais arredondado"). Ele te devolve o ajuda-ds.css novo.
  • // Substitua o arquivo no servidor (mesmo nome, mesma pasta). Só isso.
  • // Todos os apps que puxam de ui.ajudaecom.com.br mostram a mudança — sem tocar em nenhum app.
  • // Se usar Cloudflare no domínio, dê um "Purge Cache" após subir, e a mudança é instantânea.
a regra de ouro
Nunca copie o CSS/JS para dentro de um app. Sempre o <link> e o <script> apontando para o servidor. É isso que mantém tudo sincronizado.