Proje: Okul B2B App · Hub: Okul B2B App — Conventions
AppHeader Detayları
components/ui/AppHeader.tsx — Tüm ekranlarda (tab bar hariç) gösterilen global header.
Gradient
const HEADER_GRADIENTS = {
light: ['#C2C2C2', '#005779', '#C2C2C2'], // Gri → Marka mavisi → Gri
dark: ['#1e1e2a', '#182540', '#1e1e2a'], // Koyu tonlar
};İçerik Yapısı
- Sol: Kullanıcı adı + rol (AuthService’ten)
- Orta: Seçili okul adı (tıklanabilir → SchoolSelectionModal)
- Sağ: Bildirim zili (kırmızı badge = okunmamış sayı)
Sayfa-Specific Davranış
const isHomePage = pathname === '/(tabs)' || pathname === '/(tabs)/index';
const isProfilePage = pathname === '/(tabs)/profile';Bu değerlere göre bazı elementler gizlenebilir.
Okul Seçici
Okul adına tıklanınca SchoolSelectionModal açılır. Seçilen okul SchoolContext.setSelectedSchoolId(id) ile set edilir. Header anında güncellenir.
Bildirim Badge
useNotifications().unreadCount > 0 → kırmızı badge. NotificationModal açılır.
onHeightChange Prop
Header height değiştiğinde callback tetiklenir. Ekran içerikleri header altına margin vermek için kullanır.
Logo Tıklama
Logo → router.push('/(tabs)') → Ana sayfaya gider.
Related
- ortak-bilesenler — header component context
- okul-secim-modal — okul seçim modal
- bildirim-modal-akisi — bildirim modal