import { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from "react"; import { VOCAB } from "@paperclipai/branding"; // [nexus] 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 = VOCAB.appName; // [nexus] } else { const parts = [...breadcrumbs].reverse().map((b) => b.label); document.title = `${parts.join(" · ")} · ${VOCAB.appName}`; // [nexus] } }, [breadcrumbs]); return ( {children} ); } export function useBreadcrumbs() { const ctx = useContext(BreadcrumbContext); if (!ctx) { throw new Error("useBreadcrumbs must be used within BreadcrumbProvider"); } return ctx; }