import { z } from "zod" export const formSchema = z.object({ plan: z .string({ required_error: "Please select a subscription plan", }) .min(1, "Please select a subscription plan") .refine((value) => value === "basic" || value === "pro", { message: "Invalid plan selection. Please choose Basic or Pro", }), billingPeriod: z .string({ required_error: "Please select a billing period", }) .min(1, "Please select a billing period"), addons: z .array(z.string()) .min(1, "Please select at least one add-on") .max(3, "You can select up to 3 add-ons") .refine( (value) => value.every((addon) => addons.some((a) => a.id === addon)), { message: "You selected an invalid add-on", } ), emailNotifications: z.boolean(), }) export type FormState = { values: z.infer errors: null | Partial, string[]>> success: boolean } export const addons = [ { id: "analytics", title: "Analytics", description: "Advanced analytics and reporting", }, { id: "backup", title: "Backup", description: "Automated daily backups", }, { id: "support", title: "Priority Support", description: "24/7 premium customer support", }, ] as const