import { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from "react"; export interface Breadcrumb { label: string; href?: string; } interface BreadcrumbContextValue { breadcrumbs: Breadcrumb[]; setBreadcrumbs: (crumbs: Breadcrumb[]) => void; } const BreadcrumbContext = createContext(null); export function BreadcrumbProvider({ children }: { children: ReactNode }) { const [breadcrumbs, setBreadcrumbsState] = useState([]); const setBreadcrumbs = useCallback((crumbs: Breadcrumb[]) => { setBreadcrumbsState(crumbs); }, []); useEffect(() => { if (breadcrumbs.length === 0) { document.title = "Paperclip"; } else { const parts = [...breadcrumbs].reverse().map((b) => b.label); document.title = `${parts.join(" · ")} · Paperclip`; } }, [breadcrumbs]); return ( {children} ); } export function useBreadcrumbs() { const ctx = useContext(BreadcrumbContext); if (!ctx) { throw new Error("useBreadcrumbs must be used within BreadcrumbProvider"); } return ctx; }