// components/layout/header.tsx "use client"; import Link from "next/link"; import { useMemo } from "react"; import { ChevronRight, LifeBuoy, PanelLeftClose, PanelLeftOpen, Settings, } from "lucide-react"; import { usePathname } from "next/navigation"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import { useSidebarStore } from "@/lib/stores/sidebar-store"; import { UserMenu } from "./user-menu"; export function Header() { const isSidebarCollapsed = useSidebarStore((state) => state.isCollapsed); const toggleSidebar = useSidebarStore((state) => state.toggle); const isAutoCollapsed = useSidebarStore((state) => state.isAutoCollapsed); const pathname = usePathname(); const breadcrumbItems = useMemo(() => { const segments = pathname.split("/").filter(Boolean); // Add Dashboard as first item if not already on dashboard const items: Array<{ label: string; href: string; isLast: boolean }> = []; if (segments.length > 0 && segments[0] !== 'dashboard') { items.push({ label: 'Dashboard', href: '/dashboard', isLast: false, }); } segments.forEach((segment, index) => { const href = `/${segments.slice(0, index + 1).join("/")}`; const label = segment .replace(/-/g, " ") .replace(/\b\w/g, (char) => char.toUpperCase()); items.push({ label: /^\d+$/.test(segment) ? `Invoice ${segment}` : label, href, isLast: index === segments.length - 1, }); }); return items; }, [pathname]); const pageTitle = breadcrumbItems[breadcrumbItems.length - 1]?.label ?? "Overview"; return (
); }