"use client"; import { use, useEffect, useState } from "react"; import { TemplateReviewCard } from "../../../components/cards/TemplateReviewCard"; import { useTranslation } from "../../../contexts/MessagesContext"; import { fetchTemplateBySlug, type RuleTemplateDto, } from "../../../../lib/create/fetchTemplates"; import messages from "../../../../messages/en/index"; import Alert from "../../../components/modals/Alert"; import { CREATE_FLOW_REVIEW_RULE_CARD_LAYOUT_CLASS, CreateFlowLockupCardStepShell, } from "../../components/CreateFlowLockupCardStepShell"; import { CreateFlowStepShell } from "../../components/CreateFlowStepShell"; import { useCreateFlowMdUp } from "../../hooks/useCreateFlowMdUp"; interface PageProps { params: Promise<{ slug: string }>; } /** * Template review: same responsive grid and RuleCard chrome as final-review; * copy from Figma 22142-898702 (intro + dynamic card from API). */ export default function ReviewTemplatePage({ params }: PageProps) { const { slug: rawSlug } = use(params); const slug = decodeURIComponent(rawSlug); const mdUp = useCreateFlowMdUp(); const t = useTranslation("create.templateReview"); const [template, setTemplate] = useState(null); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { let cancelled = false; void (async () => { if (!cancelled) { setLoading(true); setError(null); } const result = await fetchTemplateBySlug(slug); if (cancelled) return; if (result === null) { setError(messages.create.templateReview.errors.notFound); setTemplate(null); } else if ("error" in result) { setError(result.error); setTemplate(null); } else { setTemplate(result); setError(null); } setLoading(false); })(); return () => { cancelled = true; }; }, [slug]); if (loading) { return (

{t("loading")}

); } if (error || !template) { return (
); } return ( ); }