import { createReactBlockSpec } from "@blocknote/react"; import { RiFileTextFill } from "react-icons/ri"; import { useRouter } from "next/navigation"; import type { PropSchema } from "@blocknote/core"; type PageReferenceProps = PropSchema & { pageId: { default: string }; title: { default: string }; }; const pageReferenceConfig = { type: "pageReference" as const, propSchema: { pageId: { default: "" }, title: { default: "未命名页面" }, }, content: "none" as const, }; export const pageReferenceBlock = createReactBlockSpec( pageReferenceConfig, () => ({ render: ({ block }) => { const router = useRouter(); const { pageId, title } = block.props; return (
{ if (pageId) { router.push(`/documents/${pageId}`); } }} onKeyDown={(event) => { if ((event.key === "Enter" || event.key === " ") && pageId) { event.preventDefault(); router.push(`/documents/${pageId}`); } }} className="group mt-2 flex items-center gap-3 rounded-[4px] px-4 py-3 text-[#2563eb] hover:bg-[#f5f5f5]" style={{ fontFamily: "Inter, system-ui, sans-serif" }} > {title || "未命名页面"} 点击进入 →
); }, }), ); export const pageReferencePropSchema = pageReferenceConfig.propSchema;