import { z } from 'zod'; export const reminderPreferencesSchema = z.object({ delivery: z.enum(['immediate', 'daily', 'weekly', 'off']).default('immediate'), digestTime: z .string() .regex(/^([01]\d|2[0-3]):[0-5]\d$/, 'Must be HH:MM') .optional(), digestDayOfWeek: z.number().int().min(0).max(6).optional(), timezone: z.string().min(1).max(64).optional(), }); export const updateUserPreferencesSchema = z.object({ locale: z.string().optional(), timezone: z.string().optional(), reminders: reminderPreferencesSchema.optional(), /** * Widget id → visible flag. Persists which dashboard cards the user * wants to see; missing ids fall back to registry defaults. Kept loose * (record-of-bool) so adding a new widget doesn't require a validator * update. */ dashboardWidgets: z.record(z.string(), z.boolean()).optional(), }); export type UpdateUserPreferencesInput = z.infer; export type ReminderPreferences = z.infer;