Design-Token mimarisi¶
Uygulamanın tüm görsel özellikleri Design-Token'lar (CSS
değişkenleri) üzerinden yönetilir. Uygulamayı yeniden renklendirmek
ya da yeni bir tema oluşturmak isteyen tek bir theme-*.css
dosyasını düzenler ve hiçbir bileşene dokunmaz. Bu kural sadece bir
konvansiyon değil, testlerle zorunlu kılınmıştır. Eksiksiz Token
referansı
docs/DESIGN-TOKENS.md
içinde bulunur.
Token katmanları¶
- Tema başına Token'lar —
frontend/src/styles/themes/theme-<id>.cssiçinde tema başına bir kez tanımlanan 44 Token'lık kanonik küme (arka planlar, metin, kenarlıklar, etkileşim, vurgu, durum, alıştırma geri bildirimi, yıldız, grafikler, gölgeler).[data-theme]değiştiğinde hepsi değişir. Her tema tam olarak aynı kümeyi tanımlamalıdır (themes.test.tsile sabitlenmiştir). - Temadan bağımsız Token'lar — yapısı gereği her temada aynı
olan değerler (örn. marka paleti, sözdizimi renkleri, düzen
boşlukları). Bunlar
global.css :rootiçinde yer alır. - Legacy alias'lar —
--surface,--dangergibi kanonik Token'lar üzerinden çözülen eski adlar.
Kurallar (kısaca)¶
- Tüketen bir bildirimde ham renk değişmezi yok (
#hex,rgb(),hsl()). Bir değişmez yalnızca bir--token:tanımının değeri olarak izinlidir. Bileşenlerde ve CSS kurallarında Token'lara başvurursun:color: var(--fg-primary). - Sabit paletli Tailwind utility'leri yok (
bg-blue-500). Token destekli utility'leri (bg-accent→var(--accent)) ya da bir Token üzerinde arbitrary-value kullan. - Renk değerli inline stiller yok.
- Gölgeler, yarıçaplar, boşluklar da Token'dır
(
--shadow-elevated,--radius-md,--space-4).
Bir tema oluşturma veya uyarlama¶
- Mevcut bir
theme-<id>.cssdosyasını şablon olarak kopyala. - 44 kanonik Token'ın tümünü ayarla (eşlik zorunludur).
- WCAG-AA kontrastına dikkat et —
contrast.test.tstüm temaları hesaplamalı olarak denetler. - Temayı kaydet; Ayarlar → Görünüm altındaki seçici onu devralır.
Yeni bir özellik yeni bir renk gerektiriyorsa: bir Token ekle,
değişmez değil. Tema başına değişiyorsa tüm theme-*.css
dosyalarına ekle; her yerde aynıysa global.css :root içine ekle.
Zorlama¶
make test içinde üç guard çalışır
(no-hardcoded-colors.test.ts): .tsx içindeki renk değişmezleri
(yalnızca küçülen bir allowlist üzerinden), tema-dışı CSS'teki renk
değişmezleri ve sabit paletli Tailwind utility'leri (sıfır olmak
zorundadır). Buna ek olarak themes.test.ts (Token eşliği) ve
contrast.test.ts (tüm temalarda AA).
İlgili sayfalar¶
- Tema sistemi — gönderilen temalar + seçici
docs/DESIGN-TOKENS.md— eksiksiz Token listesi