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.