Desain · Pasal DSN-11
Mode gelap turun dari token, bukan diputuskan ulang di tiap komponen
--surface #ffffff #0a0a0a --surface-muted #f5f5f5 #171717 --line #ebebeb #262626 --ink #171717 #f5f5f5 --ink-muted #6b6b6b #a3a3a3 Nilai untuk mode gelap tinggal di satu lapis token yang mendefinisikan ulang variabel yang sama. Komponen tidak memutuskan warna gelapnya sendiri.
Kenapa: sampai 1 September 2026 lapis itu tidak ada sama sekali.
darkMode: 'class' aktif dan ProjectsLayout punya pengalih tema yang lengkap,
tapi tak ada satu pun blok .dark yang mendefinisikan ulang token — sehingga
bg-surface tetap putih di mode gelap, dan tiap komponen terpaksa memutuskan
warna gelapnya sendiri. Hasilnya 335 utility dark: ditambah 112 selektor
.dark: keputusan yang tidak bersumber dari mana-mana. Mengubah satu nuansa
gelap berarti menyunting 447 tempat tanpa cara tahu semuanya sudah tersentuh.
Cara menerapkan: lapis html.dark kini ada di global.css. Nilainya
diturunkan dari pemakaian nyata, bukan dikarang — neutral-800 sudah jadi
garis di 70 tempat, neutral-400 jadi tinta redup di 17 tempat — supaya menarik
call site lama ke token tidak mengubah rupa. Komponen baru cukup memakai
bg-surface, text-ink, border-hairline, dan tidak menulis dark: apa pun.
Utang saat ini: 436. Ini pasal dengan utang terbesar di repo. Ambangnya menahan angka itu agar berhenti tumbuh; penurunannya dikerjakan per sub-app.