diff --git a/apps/client/src/pages/page/page.tsx b/apps/client/src/pages/page/page.tsx
index b4e3baa8..424f16c7 100644
--- a/apps/client/src/pages/page/page.tsx
+++ b/apps/client/src/pages/page/page.tsx
@@ -7,12 +7,15 @@ import PageHeader from "@/features/page/components/header/page-header.tsx";
import { extractPageSlugId } from "@/lib";
import { useGetSpaceBySlugQuery } from "@/features/space/queries/space-query.ts";
import { useTranslation } from "react-i18next";
-import React from "react";
+import React, { useEffect } from "react";
import { EmptyState } from "@/components/ui/empty-state.tsx";
import { IconAlertTriangle, IconFileOff } from "@tabler/icons-react";
import { Button } from "@mantine/core";
import { Link } from "react-router-dom";
import { ErrorBoundary } from "react-error-boundary";
+import { useDisclosure } from "@mantine/hooks";
+// Acadenice R4.8 — /template slash command wires to TemplatePickerModal via DOM event
+import TemplatePickerModal from "@/features/acadenice/templates/components/template-picker-modal";
const MemoizedFullEditor = React.memo(FullEditor);
const MemoizedPageHeader = React.memo(PageHeader);
const MemoizedHistoryModal = React.memo(HistoryModal);
@@ -43,6 +46,17 @@ export default function Page() {
function PageContent({ pageSlug }: { pageSlug: string | undefined }) {
const { t } = useTranslation();
+ // Acadenice R4.8 — /template slash command opens TemplatePickerModal via DOM event.
+ // The slash command in menu-items.ts dispatches 'acadenice:open-template-picker'.
+ // We listen here (page level) so the modal has access to the current page/space context.
+ const [templatePickerOpened, { open: openTemplatePicker, close: closeTemplatePicker }] =
+ useDisclosure(false);
+
+ useEffect(() => {
+ const handler = () => openTemplatePicker();
+ document.addEventListener("acadenice:open-template-picker", handler);
+ return () => document.removeEventListener("acadenice:open-template-picker", handler);
+ }, [openTemplatePicker]);
const {
data: page,
@@ -112,6 +126,16 @@ function PageContent({ pageSlug }: { pageSlug: string | undefined }) {
canComment={canComment}
/>
+
+ {/* Acadenice R4.8 — template picker opened via /template slash command */}
+ {page.space?.id && (
+
+ )}
)
);