"use client"; import Link from "next/link"; import { useParams, useSelectedLayoutSegments } from "next/navigation"; import { ChevronRight, MoreHorizontal, Sparkles, Star } from "lucide-react"; import { useConvexAuth, useMutation, useQuery } from "convex/react"; import type { DocumentRecord } from "@/lib/documents"; import { findBreadcrumb } from "@/lib/documents"; import { useBackendHealth } from "@/hooks/use-backend-health"; import { cn } from "@/lib/utils"; import { usePageLayoutStore } from "@/store/page-layout"; import { useAiAgentUiStore } from "@/store/ai-agent-ui"; import { api } from "@/lib/convex/api"; interface BreadcrumbProps { documents: DocumentRecord[]; } export function Breadcrumb({ documents }: BreadcrumbProps) { const { isAuthenticated } = useConvexAuth(); const segments = useSelectedLayoutSegments(); const params = useParams<{ id?: string }>(); const paramId = typeof params?.id === "string" ? params.id : ""; const activeId = paramId || segments?.[1] || ""; const path = findBreadcrumb(documents, activeId); const showInspector = usePageLayoutStore((state) => state.showInspector); const toggleInspector = usePageLayoutStore((state) => state.toggleInspector); const backendStatus = useBackendHealth(); const documentAgentAvailable = useAiAgentUiStore((s) => s.documentAgentAvailable); const toggleDocumentAgentOpen = useAiAgentUiStore((s) => s.toggleDocumentAgentOpen); const isStarred = useQuery( api.documentStars.isStarred, activeId && isAuthenticated ? { documentId: activeId } : "skip", ); const toggleStar = useMutation(api.documentStars.toggle); // 新建页面后,侧边栏数据可能还没同步到 layout(SSR)注入的 documents,导致 findBreadcrumb 暂时为空。 // 这里用 activeId 兜底,避免右上角“收藏/更多”按钮消失。 if (!activeId) { return
请选择一个页面
; } const displayPath: Array> = path.length ? path : [{ id: activeId, title: "无标题" }]; return (
); }