Ícones

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.

search
arrow-right
check
calendar
alert
plus
close
chevron-down
edit
trash
user
bell

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.

Stroke único 1.5px (--icon-stroke), fill="none", stroke="currentColor", viewBox="0 0 24 24". Um traço, uma direção, sem detalhe.

Três violações simultâneas: fill colorido literal (#FF6B35) fora da escala funcional; três espessuras de stroke (2px, 0.5px, 2.5px) quebrando a consistência da grade; detalhe interno que briga com a tipografia por atenção. Violação de anti-patterns.md §4.

Regras de uso

  • Stroke único 1.5px em todo ícone. O token --icon-stroke vale 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 via width / height (16, 24 ou 32px), nunca pela escala do viewBox.
  • currentColor no stroke — herança de cor por contexto. O ícone não declara cor própria. Herda do container: --color-ink-primary em contexto padrão, --color-functional-success em 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 usar fill="currentColor" para sinalizar a mudança. O stroke permanece único e o fill é sempre currentColor, 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) e anti-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-label quando carrega significado. Ícone ao lado de label de texto é decorativo: use aria-hidden="true". Ícone sozinho como único indicador de ação ou estado precisa de role="img" + aria-label descrevendo 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" ou fill="currentColor" em estado ativo, currentColor no stroke, viewBox="0 0 24 24" fixo.

Consultar .claude/ui-design/anti-patterns.md na íntegra para demais anti-padrões visuais.