Pular para o conteúdo

Tema light & dark

Mecanismo

Light/dark switch via attribute data-theme no <html>:

<html data-brand="singularidade" data-theme="light">
<html data-brand="singularidade" data-theme="dark">

Cada CSS file (singularidade.light.css, singularidade.dark.css) declara as variáveis sob seletor combinado:

[data-brand='singularidade'][data-theme='light'] {
--color-surface-base: #fdfafc;
--color-text-primary: #261a21;
...
}

Importar ambos os CSS no app — o seletor garante que só o ativo aplica.

Hybrid color recap

A camada semantic preserva --color-brand-primary magenta puro em ambos os modos (não muda entre light/dark — é a marca). O que muda é --color-interactive-primary:

Modeinteractive.primaryReasoning
Lightcoral.600 #BE3550Sóbrio em CTA repetido
Darkcoral.400 #FB7185Brilhante pra atingir AA contrast

Veja ADR-004 pra rationale.

Detecção automática

const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
document.documentElement.dataset.theme = prefersDark ? 'dark' : 'light';

Toggle persistente pode salvar em localStorage e sincronizar com prefers-color-scheme.