'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)} />
) }