feat(11-04): add reminderLeadMinutes to CreateEventPayload + CalendarOccurrence

- CalendarOccurrence: required reminderLeadMinutes: number | null (atomic mirror of expand.ts, Plan 11-03)
- CreateEventPayload: optional reminderLeadMinutes?: number | null with absent/null/0/positive contract (D-08)
- Update CalendarOccurrence fixtures in EventForm.test.tsx + EventDetailPopover.test.tsx to include the new required field (reminderLeadMinutes: null)
- pwa tsc --noEmit exits 0
This commit is contained in:
Lucas Berger
2026-06-13 22:33:06 -04:00
parent ca76b6118e
commit 2c30afe8ff
3 changed files with 22 additions and 0 deletions
+16
View File
@@ -131,6 +131,14 @@ export interface CalendarOccurrence {
* stay in sync with the server type (Pitfall 4 — atomic mirror, Plan 06-05).
*/
hasRrule: boolean;
/**
* Per-event reminder lead in minutes. NULL = no reminder. 0 = same-day all-day
* (fire 9 AM on event date). Positive integer = N minutes before event start.
* D-06: NULL and 0 are semantically distinct.
* Mirrors CalendarOccurrence.reminderLeadMinutes in apps/api/src/broker/expand.ts
* (atomic mirror, Plan 11-03).
*/
reminderLeadMinutes: number | null;
}
export interface OccurrencesResponse {
@@ -194,6 +202,14 @@ export interface CreateEventPayload {
recurrenceCount?: number;
location?: string;
description?: string;
/**
* Per-event reminder lead in minutes.
* absent/undefined = no-change (edit omits field so server preserves existing VALARM, D-08)
* null = explicit "None" (clear any VALARM)
* 0 = same-day all-day (fire 9 AM on event date, D-05)
* positive integer = N minutes before event start
*/
reminderLeadMinutes?: number | null;
calendarUrl?: string; // omit to use the member's default writable calendar (D-01)
}