Skip to content

[Design] Dark-mode token contrast pass — packages/ui/src/v2/styles/theme.css #164

Description

@alltomatos

Parent

Épico: revisão visual dark-mode / Apple-like do OpenCode Desktop (issues subsequentes desta leva dependem desta).

What to build

packages/ui/src/v2/styles/theme.css define os tokens --v2-* para light/dark via [data-color-scheme="light"] / [data-color-scheme="dark"]. Vários valores dark atuais ficam abaixo do contraste aceitável contra --v2-background-bg-base (--v2-grey-1100) / --v2-background-bg-deep (--v2-grey-1200):

  • --v2-text-text-faint: var(--v2-grey-600) e --v2-text-text-muted: var(--v2-grey-500) no bloco [data-color-scheme="dark"] (linhas ~398-399) — medir contraste real contra --v2-grey-1100/--v2-grey-1200 e subir o degrau de cinza até bater 4.5:1 (texto de corpo) / 3:1 (texto grande, ícones).
  • --v2-border-border-muted: var(--v2-alpha-light-8) e --v2-border-border-base: var(--v2-alpha-light-10) (linhas ~413-414) — alpha muito baixo sobre fundo escuro, torna divisores quase invisíveis. Subir para um alpha que garanta 3:1 mínimo.
  • --v2-overlay-simple-overlay-hover: var(--v2-alpha-light-6) / -pressed: var(--v2-alpha-light-10) (linhas ~419-420) — feedback de hover/pressed pouco perceptível no tema escuro.

Ajustar apenas os valores dentro do bloco [data-color-scheme="dark"]; não alterar a estrutura dos tokens nem criar tokens novos fora do sistema --v2-* existente. O bloco :root (light, linhas 14-145) e [data-color-scheme="light"] não devem ser tocados a menos que a mesma medição de contraste aponte um problema real neles também.

Esta issue é pré-requisito para as issues de página desta leva: elas vão validar visualmente cada tela usando os tokens já corrigidos aqui.

Acceptance criteria

  • Todos os pares texto/fundo usados via --v2-text-text-base, -muted, -faint sobre --v2-background-bg-base/-deep/-layer-01..04 no tema dark atingem WCAG AA (4.5:1 texto normal, 3:1 texto grande ≥18px/14px bold)
  • --v2-border-border-muted e --v2-border-border-base no tema dark são visivelmente distinguíveis do fundo (≥3:1) sem virar um contorno pesado
  • --v2-overlay-simple-overlay-hover/-pressed no tema dark produzem feedback de hover/pressed claramente perceptível
  • Nenhuma mudança nos valores do tema light nem na estrutura/nome dos tokens
  • Nenhuma mudança de comportamento — apenas valores de cor/alpha

Blocked by

(nenhuma)

Verification

  • Screenshot antes/depois do app em [data-color-scheme="dark"] mostrando texto muted/faint, bordas e hover states em pelo menos 3 telas diferentes (ex: Settings > Geral, MCP dialog, Session composer)
  • Conferir contraste com uma ferramenta (ex: WebAIM contrast checker) para os pares alterados, colar os valores calculados no PR

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    accessibilityBarrier affecting people with disabilitiesready-for-agentScoped and ready for an agent to pick upui-uxUI/UX polish and consistency work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions