import { z } from "zod";
const MAX_OPTIONS = 50;
const text = z.string().max(2000);
const options = z.array(z.union([z.string().max(200), z.object({ label: z.string().max(200) })])).max(MAX_OPTIONS);
const fieldSchema = z.discriminatedUnion("type", [
z.object({ type: z.literal("markdown"), attributes: z.object({ value: z.string().max(10000) }) }),
z.object({
type: z.enum(["input", "textarea"]),
id: z.string().max(100).optional(),
attributes: z.object({
label: text,
description: text.optional(),
placeholder: text.optional(),
value: z.string().max(10000).optional(),
render: z.string().max(50).optional(),
}),
validations: z.object({ required: z.boolean().optional() }).optional(),
}),
z.object({
type: z.literal("dropdown"),
id: z.string().max(100).optional(),
attributes: z.object({
label: text,
description: text.optional(),
multiple: z.boolean().optional(),
options,
}),
validations: z.object({ required: z.boolean().optional() }).optional(),
}),
z.object({
type: z.literal("checkboxes"),
id: z.string().max(100).optional(),
attributes: z.object({ label: text, description: text.optional(), options }),
}),
]);
const labels = z