"use client"; import { useForm } from "react-hook-form"; import { createPoll, updatePoll } from "@/actions/polls"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { DateTimePicker } from "@/components/ui/date-time-picker"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import { useServerAction } from "@/hooks/use-server-action"; import type { CreatePollInput } from "@/lib/validators/poll"; interface PollFormProps { defaultValues?: Partial & { id?: number }; } export function PollForm({ defaultValues }: PollFormProps) { const { run, isPending } = useServerAction(); const isEditing = !!defaultValues?.id; const form = useForm({ defaultValues: { title: "", description: "", status: "draft", showResults: 1, multipleChoice: 0, ...defaultValues, }, }); // biome-ignore lint/suspicious/noExplicitAny: explicitly chosen here, see surrounding code function onSubmit(data: any) { if (isEditing) { run(() => updatePoll({ id: defaultValues!.id, ...data }), { successMessage: "Poll updated!", }); } else { run(() => createPoll(data), { successMessage: "Poll created!", onSuccess: (result) => { const data = result.data as Record | undefined; if (data?.id) { window.location.href = `/admin/polls/${data.id}`; } }, }); } } return (
{isEditing ? "Edit Poll" : "Poll Details"}
{form.formState.errors.title && (

{form.formState.errors.title.message}

)}