import { useCallback, useEffect, useState } from "react"; import { Link, useNavigate, useParams } from "react-router-dom"; import { ApiError } from "../api/client"; import { videoTemplatesApi } from "../api/endpoints"; import type { TemplateGeneration } from "../api/types"; import { ConfirmButton, errorMessage, Loading, PageHeader, StatusPill } from "../components/ui"; import { usePoll } from "../hooks/usePoll"; type Template = { id: number; name: string; theme: Record & { colors?: Record }; preview_colors?: Record; content_codes?: string[] | null; }; type Versions = { current_version_id: number | null; versions: { id: number; label: string | null; created_at: string }[] }; /** One custom template: name, colors, logo, versions, regenerate. */ export default function VideoTemplateEditor() { const { id: raw = "" } = useParams(); const id = Number(raw); const navigate = useNavigate(); const [tpl, setTpl] = useState