"use client" import * as React from "react" import { useRouter } from "next/navigation" import { BellIcon, LogOutIcon, SettingsIcon, UserIcon, } from "lucide-react" import { logout } from "@/lib/api/session" import { Avatar, AvatarFallback } from "@/components/ui/avatar" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { SidebarTrigger } from "@/components/ui/sidebar" import { GlobalCustomerSearch } from "@/components/hexa/global-customer-search" import { RefreshButton } from "@/components/hexa/refresh-button" import { ThemeToggle } from "@/components/hexa/theme-toggle" import { useClientProfile } from "@/components/hexa/client-profile-context" interface SiteHeaderProps { date: Date | null onDateChange: (date: Date) => void notificationCount?: number onRefresh?: () => void demo?: boolean onNavigate?: (key: string) => void } function SiteHeader({ date, notificationCount = 0, onRefresh, demo = false, onNavigate, }: SiteHeaderProps) { const fullDate = date?.toLocaleDateString("en-LK", { month: "long", day: "numeric", year: "numeric", timeZone: "Asia/Colombo" }) ?? "Today" const compactDate = date?.toLocaleDateString("en-LK", { month: "short", day: "numeric", timeZone: "Asia/Colombo" }) ?? "Today" const router = useRouter() const profile = useClientProfile() async function handleLogout() { if (demo) { router.push("/login") return } await logout() router.replace("/login") } async function navigateToProfile() { if (onNavigate) { onNavigate("settings") return } router.push("/dashboard/settings") } const displayName = demo ? "Demo Gym" : profile.clientName ?? profile.gymName ?? "My Gym" const initials = displayName .split(/\s+/) .filter(Boolean) .slice(0, 2) .map((w) => w[0]?.toUpperCase()) .join("") || "G" return (
{fullDate} {compactDate}
{notificationCount > 0 && ( {notificationCount} )} } /> Notifications New membership payment received 2 minutes ago Staff member added 1 hour ago Gym plan updated Yesterday {initials} } /> {displayName} Profile Settings {demo ? "Exit demo" : "Log out"}
) } export { SiteHeader }