Anlamsal Token’lar

Tailwind v4 paketi, tüm renkler için anlamsal CSS değişkenleri (tasarım token’ları) kullanır. Bu token’lar, bileşen stillerini belirli renk değerlerinden ayırarak temalamayı basit hale getirir. Token adlandırma kuralı, shadcn/ui tarafından kullanılanla aynı modeli takip eder.

Token Sistemi

Tailwind v4 bileşenleri, bg-sky-500 gibi sabit kodlanmış renkler yerine bg-primary, text-foreground ve border-border gibi anlamsal yardımcı programları kullanır. Bunlar, projenizde tanımladığınız CSS değişkenlerine eşlenir.

bg-primary → var(--color-primary)
text-foreground → var(--color-foreground)
border-border → var(--color-border)

Gerekli Token’lar

Bu token’ları CSS’inizde Tailwind v4’ün @theme yönergesini kullanarak tanımlayın:

@theme {
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0.004 285.823);
--color-popover: oklch(1 0 0);
--color-popover-foreground: oklch(0.145 0.004 285.823);
--color-primary: oklch(0.205 0.006 285.885);
--color-primary-foreground: oklch(0.985 0.001 285.823);
--color-muted-foreground: oklch(0.556 0.01 285.823);
--color-accent: oklch(0.96 0.003 285.823);
--color-accent-foreground: oklch(0.205 0.006 285.885);
--color-destructive: oklch(0.577 0.245 27.325);
--color-border: oklch(0.922 0.004 285.823);
--color-input: oklch(0.922 0.004 285.823);
--color-ring: oklch(0.87 0.006 285.823);
}

Token Referansı

TokenKullanım AmacıÖrnek Yardımcı Programlar
--color-backgroundSayfa/uygulama arkaplanıbg-background
--color-foregroundVarsayılan metin rengitext-foreground
--color-popoverAçılır pencere arkaplanıbg-popover
--color-popover-foregroundAçılır pencere metnitext-popover-foreground
--color-primarySeçili gün, onay butonu, aralık uç noktalarıbg-primary, text-primary
--color-primary-foregroundBirincil arkaplanlar üzerindeki metintext-primary-foreground
--color-muted-foregroundSessiz metin (yer tutucular, hafta günleri, gezinme butonları)text-muted-foreground
--color-accentGünler ve butonlar için üzerine gelme arkaplanlarıbg-accent
--color-accent-foregroundVurgu arkaplanları üzerindeki metintext-accent-foreground
--color-destructiveTemizle/tehlike butonu metnitext-destructive
--color-borderGenel kenarlıklar (altbilgi, hazır ayarlar, açılır pencere)border-border
--color-inputGiriş/tetikleyici kenarlığıborder-input
--color-ringOdak halkası rengiring-ring

Token’lar Bileşenlere Nasıl Eşlenir

Token’ların seçici boyunca nasıl uygulandığı aşağıda açıklanmıştır:

Tetikleyici

  • Arkaplan: bg-background
  • Kenarlık: border-input
  • Metin: kök dizindeki text-foregroundden miras alınır
  • Yer tutucu: text-muted-foreground
  • Odak halkası: ring-ring

Açılır Pencere

  • Arkaplan: bg-popover
  • Metin: text-popover-foreground
  • Kenarlık: border-border

Takvim Günleri

  • Varsayılan üzerine gelme: bg-accent / text-accent-foreground
  • Seçili: bg-primary / text-primary-foreground
  • Bugün: text-primary
  • Aralık içinde: bg-primary/10
  • Aralık başlangıcı/bitişi: bg-primary / text-primary-foreground
  • Devre dışı: azaltılmış opaklık ile text-muted-foreground

Altbilgi

  • Kenarlık: border-border
  • İptal butonu: border-input, üzerine gelindiğinde bg-accent
  • Onay butonu: bg-primary / text-primary-foreground
  • Temizle butonu: text-destructive

Token’ları Özelleştirme

Birincil Rengi Değiştirme

Seçiciyi yeniden markalamak için --color-primary ve --color-primary-foreground değerlerini değiştirin:

@theme {
/* Mor birincil */
--color-primary: oklch(0.55 0.25 300);
--color-primary-foreground: oklch(0.98 0.01 300);
}

Sıcak Renk Şeması

@theme {
--color-background: oklch(0.99 0.005 80);
--color-foreground: oklch(0.2 0.02 60);
--color-popover: oklch(0.99 0.005 80);
--color-popover-foreground: oklch(0.2 0.02 60);
--color-primary: oklch(0.6 0.2 40);
--color-primary-foreground: oklch(0.98 0.005 80);
--color-accent: oklch(0.95 0.02 80);
--color-accent-foreground: oklch(0.2 0.02 60);
--color-border: oklch(0.9 0.01 80);
--color-input: oklch(0.9 0.01 80);
--color-ring: oklch(0.85 0.02 80);
}

Koyu Mod Token’ları

Koyu mod için, token’ları bir .dark seçicisi veya @media (prefers-color-scheme: dark) altında geçersiz kılın:

@theme {
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0.004 285.823);
/* ... açık tema değerleri */
}
.dark {
--color-background: oklch(0.145 0.004 285.823);
--color-foreground: oklch(0.985 0.001 285.823);
--color-popover: oklch(0.145 0.004 285.823);
--color-popover-foreground: oklch(0.985 0.001 285.823);
--color-primary: oklch(0.985 0.001 285.823);
--color-primary-foreground: oklch(0.205 0.006 285.885);
--color-muted-foreground: oklch(0.556 0.01 285.823);
--color-accent: oklch(0.269 0.006 285.885);
--color-accent-foreground: oklch(0.985 0.001 285.823);
--color-destructive: oklch(0.577 0.245 27.325);
--color-border: oklch(0.269 0.006 285.885);
--color-input: oklch(0.269 0.006 285.885);
--color-ring: oklch(0.369 0.006 285.885);
}

Daha fazla ayrıntı için Koyu Mod bölümüne bakın.

Mevcut shadcn/ui Projeleri

Projenizde zaten tanımlanmış shadcn/ui token’ları varsa, seçici bunları ekstra bir yapılandırma olmadan otomatik olarak kullanacaktır. Token adları kasıtlı olarak uyumlu olacak şekilde yapılmıştır. Daha fazlası için shadcn Registry bölümüne bakın.