1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import { z } from "zod";
export const CalendarConfig = z.object({
mode: z.enum(["local", "ics"]).default("local"),
calendars: z.array(z.string()).default([]), // local Calendar.app names to include
urls: z.array(z.string().url()).default([]), // ICS URLs (ics mode)
daysAhead: z.number().int().min(1).max(60).default(7),
});
export type CalendarConfig = z.infer<typeof CalendarConfig>;
export const CalendarPayload = z.object({
events: z.array(
z.object({
summary: z.string(),
start: z.string(),
end: z.string().nullable(),
location: z.string().nullable(),
calendar: z.string().nullable(),
allDay: z.boolean(),
}),
),
});
export type CalendarPayload = z.infer<typeof CalendarPayload>;
|