'use client' import React, { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Label } from "@/components/ui/label"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Loader2, Save, Info } from "lucide-react"; import { useRouter } from "next/navigation"; import ToolTip from "@/components/ToolTip"; interface SaveLayoutModalProps { isOpen: boolean; onClose: () => void; onSave: (layoutName: string, description: string, template_info_id: string) => Promise; isSaving: boolean; template_info_id: string; } export const SaveLayoutModal: React.FC = ({ isOpen, onClose, onSave, isSaving, template_info_id, }) => { const [layoutName, setLayoutName] = useState(""); const [description, setDescription] = useState(""); const handleSave = async () => { if (!layoutName.trim()) { return; // Don't save if name is empty } await onSave(layoutName.trim(), description.trim(), template_info_id); }; const handleClose = () => { if (!isSaving) { setLayoutName(""); setDescription(""); onClose(); } }; return ( Save Template Give your template a clear name and an optional description to find it later.
setLayoutName(e.target.value)} placeholder="e.g., Modern Tech Pitch" disabled={isSaving} className="w-full" aria-required />