import type { ReactNode } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import { ChevronRight, ClipboardList } from "lucide-react"; import { cn } from "../../lib/utils"; interface HeaderProps { title: string; sub?: string; backTo?: string; // مسیر بازگشتِ جایگزین (وقتی سابقه‌ای در برنامه نیست) backLabel?: string; actions?: ReactNode; // دکمه‌های سمت چپ brand?: boolean; // نمایش آیکون دفتر کنار عنوان icon?: ReactNode; // آیکون سفارشی جعبه‌ی کنار منو (پیش‌فرض: ClipboardList) menu?: ReactNode; // منوی همبرگری بالای راست (ناوبری بین پنل‌ها) } // نوار بالای هر صفحه: منو (همبرگری) + جعبه‌ی آیکون + عنوان + اکشن‌ها export function Header({ title, sub, backTo, backLabel = "بازگشت", actions, brand, icon, menu }: HeaderProps) { const navigate = useNavigate(); const location = useLocation(); // اگر کاربر از داخل برنامه به این صفحه آمده، یک قدم برمی‌گردیم؛ // اگر مستقیم باز شده (بدون سابقه‌ی داخلی)، به backTo می‌رویم. const goBack = () => { if (location.key !== "default") navigate(-1); else if (backTo) navigate(backTo); }; return (
{menu &&
{menu}
} {(icon || brand) && ( {icon || } )} {backTo && ( )}

{title}

{sub &&
{sub}
}
{actions}
); } // بدنه‌ی صفحه با عرض محدود و چینش مرکزی export function PageLayout({ children, className, }: { children: ReactNode; className?: string; }) { return (
{children}
); }