Proje: OkulUp · Hub: OkulUp — Domain

Dark Mode Sistemi

Temel Yaklaşım

Hardcoded renk yasak. Tüm renkler useTheme() hook’undan colors objesi üzerinden.

useTheme() Hook’u

const { isDark, colors, brand } = useTheme();

colorsThemeColors interface — light veya dark tema renkleri

Renk Token’ları

TokenLightDarkKullanım
backgroundFFFFFF0F172ASayfa arka planı
backgroundAltF9FAFB#111827Section arka planı
backgroundElevatedFFFFFF1E293BModal, bottom sheet
cardFFFFFF1E293BKart arka planı
cardHoverF9FAFB#334155Hover state
textPrimary#111827F1F5F9Ana metin
textSecondary6B728094A3B8İkincil metin
textMuted9CA3AF64748BPlaceholder, zaman
textInverseFFFFFF0F172APrimary buton içi
borderE5E7EB#374151Kalın border
borderLightF3F4F61F2937İnce border
activeBackgroundFFF0E63D2517Aktif item arka planı
activeTextFF5F1FFF7A45Aktif item metin
primaryFF5F1FFF5F1FMarka rengi (sabit)
primaryLightFFF1EB3D2517Primary light
success10B98134D399Başarı
errorEF4444F87171Hata
warningF59E0BFBBF24Uyarı
info3B82F660A5FABilgi

Tema Modu

3 seçenek: 'light' | 'dark' | 'system' Default: 'system' (iOS/Android system theme takip eder) Persist: AsyncStorage (theme-storage)

Sabit Kalabilen Renkler

  • #FF5F1F — primary brand (her iki temada aynı)
  • $white — primary buton içindeki beyaz metin
  • Icon arka plan renkleri (özel tasarım)

Özel Dark Mode Durumu

const specialBg = isDark ? '#3D2517' : '#fff7ed';

Bu pattern sadece colors objesinde karşılığı olmayan özel durumlarda.

Nerede Switch Yapılıyor?

ThemeToggle bileşeni — Drawer’ın alt kısmında toggleTheme() → light/dark toggle