"use client"; import { Loader2, Plus } from "lucide-react"; import { useState } from "react"; import { toast } from "sonner"; import { createCatalogPage } from "@/actions/catalog"; import { createBcPage } from "@/actions/catalog-bc"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { useServerAction } from "@/hooks/use-server-action"; import { CATALOG_LAYOUTS } from "@/lib/catalog-layouts"; interface CatalogActionsProps { catalogType?: "normal" | "bc"; } export function CatalogActions({ catalogType = "normal", }: CatalogActionsProps) { const { run, isPending } = useServerAction(); const [open, setOpen] = useState(false); const [caption, setCaption] = useState(""); const [parentId, setParentId] = useState("-1"); const [pageLayout, setPageLayout] = useState("default_3x3"); const isBc = catalogType === "bc"; function handleCreate() { if (!caption.trim()) { toast.error("Caption is required"); return; } const input = { caption: caption.trim(), parentId: parseInt(parentId, 10), pageLayout, }; const fn = isBc ? () => createBcPage(input) : () => createCatalogPage(input); run(fn, { successMessage: `Catalog page "${caption.trim()}" created.`, onSuccess: (data) => { setOpen(false); setCaption(""); setParentId("-1"); if (data.id) { window.location.href = isBc ? `/admin/catalog/builder-club/${data.id}` : `/admin/catalog/${data.id}`; } }, }); } return ( {isBc ? "Create Builder Club Page" : "Create Catalog Page"}
setCaption(e.target.value)} placeholder="Page name" />
setParentId(e.target.value)} />
); }