import { z } from "zod/v4"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "~/components/custom_ui/form"; import { useZodForm } from "~/lib/zodForm"; import Input from "~/components/custom_ui/input"; import { Button } from "~/components/ui/button"; import type { Banners, BannersIdbanner } from "~/schemas/public/Banners"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "~/components/ui/select"; import { IconMatrixTooltip } from "~/components/IconComponents"; import { Switch } from "~/components/ui/switch"; type FormProps = { initialValues: Banners | null; submitMutation: (values: Banners) => void; del?: (idbanner: BannersIdbanner) => void; }; export const FormBanners = ({ initialValues, submitMutation, del, }: FormProps) => { const Schema = z.object({ idbanner: z.custom(), titolo: z.string().nullable(), testo: z.string().nullable(), is_unskippable: z.boolean(), has_cta: z.boolean(), cta_href: z.string().nullable(), cta_icon: z.string().nullable(), cta_text: z.string().nullable(), color: z.string().nullable(), is_active: z.boolean(), show_public: z.boolean(), show_private: z.boolean(), hide_duration: z.number().nullable(), }); type FormValues = z.infer; let defaultValues: FormValues; if (!initialValues) { defaultValues = { idbanner: "" as BannersIdbanner, titolo: "", testo: "", is_unskippable: false, has_cta: false, cta_href: "", cta_icon: "arrowR", cta_text: "", color: "", is_active: false, show_public: true, show_private: false, hide_duration: 1, }; } else { defaultValues = { ...initialValues, }; } z.config(z.locales.it()); const form = useZodForm(Schema, { defaultValues: defaultValues, }); function onSubmit(fields: FormValues) { const values = { ...fields, }; submitMutation(values); } const COLORI_OPTIONS = ["blu", "rosso", "verde", "indaco"]; return ( <>
(
Codice
)} /> (
Titolo
)} /> (
Testo
)} /> (
Non Saltabile
)} /> (
Ha Link
)} /> (
Per quanto il banner stà nascosto
{ field.onChange(Number.parseInt(e.target.value)); }} />
)} /> (
Indirizzo Link
)} /> (
Icona Link -
)} /> (
Testo Link
)} /> (
Colore
)} /> (
Attivo
)} /> (
Mostra nel pubblico
)} /> (
Mostra in area riservata
)} />
{initialValues?.idbanner && del && ( )}
); };