"use client" import type React from "react" import { useEffect, useState } from "react" import Link from "next/link" import { X } from "lucide-react" import { PcTemplateModal } from "@/components/ChatInputBox/PcTemplateModal" import { useTemplateStoryServiceHook } from "@/app/service/Interaction/templateStoryService" /** * A compact template showcase with a header and link to all templates. * Shows first 12 templates, in 3 columns, each with thumbnail, name and brief. * @returns {JSX.Element} - FamousTemplate component */ const FamousTemplate: React.FC = () => { const { templateStoryList, getTemplateStoryList, isLoading } = useTemplateStoryServiceHook() const [isModalOpen, setIsModalOpen] = useState(false) const [initialTemplateId, setInitialTemplateId] = useState(undefined) const [isTemplateCreating, setIsTemplateCreating] = useState(false) const [isRoleGenerating, setIsRoleGenerating] = useState<{ [key: string]: boolean }>({}) const [isItemGenerating, setIsItemGenerating] = useState<{ [key: string]: boolean }>({}) const [activeTemplateId, setActiveTemplateId] = useState(null) const [isPreviewReady, setIsPreviewReady] = useState(false) useEffect(() => { void getTemplateStoryList() }, [getTemplateStoryList]) const topTemplates = templateStoryList.slice(0, 10) return (

Make Movie

{isLoading ? (
Loading...
) : (
{topTemplates.map((t) => { return (
{t.name}
{t.name}
{ const id = t.id || t.template_id if (t.show_url) { if (activeTemplateId === id) { setActiveTemplateId(null) } else { setIsPreviewReady(false) setActiveTemplateId(id) } } else { setInitialTemplateId(id) setIsModalOpen(true) } }} />
) })}
)} {/* Centered modal for active template preview */} {activeTemplateId && (() => { const active = topTemplates.find((x) => (x.id || x.template_id) === activeTemplateId) if (!active || !active.show_url) return null return (
setActiveTemplateId(null)} >
e.stopPropagation()} > <>
) })()} setIsModalOpen(false)} initialTemplateId={initialTemplateId} configOptions={{ mode: "auto", resolution: "720p", language: "english", videoDuration: "auto" }} />
) } export default FamousTemplate