22 lines
758 B
TypeScript
22 lines
758 B
TypeScript
|
|
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({
|
||
|
|
darkMode: z.boolean().optional(),
|
||
|
|
locale: z.string().optional(),
|
||
|
|
timezone: z.string().optional(),
|
||
|
|
reminders: reminderPreferencesSchema.optional(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export type UpdateUserPreferencesInput = z.infer<typeof updateUserPreferencesSchema>;
|
||
|
|
export type ReminderPreferences = z.infer<typeof reminderPreferencesSchema>;
|