Glifos geométricos puros com stroke único e consistente. Nenhum detalhe ilustrativo, nenhum preenchimento colorido — só a forma que comunica a função.
Princípio
Todo ícone do sistema nasce de formas geométricas simples e usa um único stroke — --icon-stroke (1.5px) — consistente em todos os glifos da mesma tela. O viewBox é fixado em 0 0 24 24: o tamanho renderizado varia por token (--icon-size-sm/md/lg), nunca pela escala do viewBox. A cor é sempre herdada via currentColor — o ícone não declara cor própria e rimará automaticamente com o contexto onde vive. Fill ilustrativo, gradiente interno e variação de espessura de stroke são recusados; quando o ícone precisa indicar estado ativo (ex.: favorito marcado), usa fill="currentColor" — nunca cor literal. Referências: visual-language.md §4.5 e anti-patterns.md §4.
Três tamanhos
Três tamanhos fixos cobrem todos os contextos de uso: --icon-size-sm (16px) para ícones em linha com texto pequeno, --icon-size-md (24px) para uso geral em UI, e --icon-size-lg (32px) para ícones com papel de destaque ou em blocos isolados. O mesmo glifo, o mesmo viewBox — só o container muda.
Catálogo
Doze glifos funcionais propostos pela iteração Claude Design (.claude/design-system/.claude-design-source/icons.html). Todos renderizados em --icon-size-md (24px), stroke 1.5px, currentColor. Nomes em kebab-case — candidatos a vocabulário canônico, pendentes de formalização em .claude/product-design/icons.md pelo product-designer.
Stroke único — aceito × recusado
O par abaixo usa o mesmo glifo — uma lupa — para mostrar a diferença entre o que o sistema aceita e o que recusa. A distinção não é de complexidade do conceito; é de execução: stroke único e cor herdada versus múltiplas espessuras e fill colorido literal.
Regras de uso
- Stroke único 1.5px em todo ícone. O token
--icon-strokevale para todos os glifos da mesma tela. Nenhum ícone usa espessura diferente de outro na mesma superfície — é a consistência de stroke que faz a grade de ícones ler como sistema, não como coleção. viewBox="0 0 24 24"fixo — sempre. Todos os ícones vivem no mesmo grid 24×24. O tamanho renderizado varia viawidth/height(16, 24 ou 32px), nunca pela escala do viewBox.currentColorno stroke — herança de cor por contexto. O ícone não declara cor própria. Herda do container:--color-ink-primaryem contexto padrão,--color-functional-successem estado de sucesso, e assim por diante. Isso elimina tokens de cor redundantes e garante que ícone e texto do mesmo container sempre rimem.- Zero preenchimento ilustrativo. Exceção: estado ativo com
fill="currentColor". Ícone de estado — coração cheio versus contornado, favorito marcado versus desmarcado — pode usarfill="currentColor"para sinalizar a mudança. O stroke permanece único e o fill é semprecurrentColor, nunca cor literal. Gradiente interno não tem exceção. - Zero gradiente interno. Gradiente em ícone é violação dupla: dispara
anti-patterns.md §4(ícone ilustrativo) eanti-patterns.md §2(gradiente colorido em chrome de UI). O ícone é sinal funcional — gradiente transforma sinal em ornamento. aria-hidden="true"+focusable="false"quando decorativo;role="img"+aria-labelquando carrega significado. Ícone ao lado de label de texto é decorativo: usearia-hidden="true". Ícone sozinho como único indicador de ação ou estado precisa derole="img"+aria-labeldescrevendo o que comunica. Regra simples: se retirar o ícone o usuário perde informação, ele precisa de rótulo.
Anti-padrões referenciados
Anti-padrão com relação direta a decisões de ícone. O arquivo-fonte está em .claude/ui-design/anti-patterns.md. Links permanentes serão atualizados quando a seção de anti-padrões visuais for publicada.
- #4 — Ícones ilustrativos ou multi-stroke complexosUsar ícones com múltiplas espessuras de stroke, preenchimentos coloridos literais, detalhe ilustrativo, sombra interna ou gradiente — em vez de glifos geométricos puros. Quando ícones carregam estilo próprio, brigam com a tipografia por atenção e introduzem ruído visual incompatível com o pareamento sans+serif disciplinado. Solução: stroke único
--icon-stroke(1.5px),fill="none"oufill="currentColor"em estado ativo,currentColorno stroke,viewBox="0 0 24 24"fixo.
Consultar .claude/ui-design/anti-patterns.md na íntegra para demais anti-padrões visuais.