"use client" import { memo, useCallback, useRef } from "react" import { useQueryState } from "nuqs" import Image from "next/image" import { Share2 } from "lucide-react" import { MemoryGraph } from "./memory-graph" import { useProject } from "@/stores" import { useGraphHighlights } from "@/stores/highlights" import { Button } from "@ui/components/button" import { cn } from "@lib/utils" import { dmSansClassName } from "@/lib/fonts" import { ShareModal } from "./share-modal" import { shareParam } from "@/lib/search-params" export const GraphLayoutView = memo(function GraphLayoutView({ onOpenDocument, }: { onOpenDocument?: (documentId: string) => void }) { const { effectiveContainerTags } = useProject() const { documentIds: allHighlightDocumentIds } = useGraphHighlights() const [isShareModalOpen, setIsShareModalOpen] = useQueryState( "share", shareParam, ) const canvasRef = useRef(null) const handleShare = useCallback(() => { setIsShareModalOpen(true) }, [setIsShareModalOpen]) const handleCloseShareModal = useCallback(() => { setIsShareModalOpen(false) }, [setIsShareModalOpen]) return (
{/* Full-width graph */}
{/* Share graph button - top left */}
{/* Share modal */}
) }) GraphLayoutView.displayName = "GraphLayoutView"