"use client"; import { createCommissionCustomCard } from "@/actions/commissions/customCards/newCard"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import type { CommissionExtra, CommissionOption } from "@/generated/prisma/client"; import { commissionCustomCardSchema, type CommissionCustomCardValues, } from "@/schemas/commissionCustomCard"; import { zodResolver } from "@hookform/resolvers/zod"; import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { CommissionExtraField } from "../types/form/CommissionExtraField"; import { CommissionOptionField } from "../types/form/CommissionOptionField"; import { CustomCardImagePicker } from "./CustomCardImagePicker"; import type { CommissionCustomCardImageItem } from "@/actions/commissions/customCards/images"; type Props = { options: CommissionOption[]; extras: CommissionExtra[]; images: CommissionCustomCardImageItem[]; }; export default function NewCustomCardForm({ options, extras, images }: Props) { const router = useRouter(); const form = useForm({ resolver: zodResolver(commissionCustomCardSchema), defaultValues: { name: "", description: "", isVisible: true, isSpecialOffer: false, referenceImageUrl: null, options: [], extras: [], }, }); async function onSubmit(values: CommissionCustomCardValues) { try { const created = await createCommissionCustomCard(values); console.log("Commission custom card created:", created); toast("Custom commission card created."); router.push("/commissions/custom-cards"); } catch (err) { console.error(err); toast("Failed to create custom commission card."); } } return (
( Name The name of the custom commission card. )} /> ( Description Optional description. )} /> (
Visible on app Controls whether the card is shown.
)} /> (
Special offer Adds a special offer badge on the app.
)} /> } />
); }