implement calendar event display with day indicators and overlay

- Add ExpandedEvent type to shared package for recurring event instances
- Implement EventController and EventService with full CRUD operations
- Server-side recurring event expansion via recurrenceExpander
- Calendar grid shows orange dot indicator for days with events
- Tap on day opens modal overlay with EventCards
- EventCard component with Feather icons (calendar, clock, repeat, edit, trash)
- EventsStore with Zustand for client-side event state management
- Load events for visible grid range including adjacent month days
- Add textPrimary, borderPrimary, eventIndicator to theme
- Update test responses for multiple events on Saturdays
This commit is contained in:
2026-01-04 17:19:58 +01:00
parent e3f7a778c7
commit 1532acab78
12 changed files with 601 additions and 99 deletions

View File

@@ -4,9 +4,10 @@ import {
DAY_TO_GERMAN,
DAY_TO_GERMAN_SHORT,
MONTH_TO_GERMAN,
ExpandedEvent,
} from "@caldav/shared";
import { EventRepository } from "../services/interfaces";
import { expandRecurringEvents, ExpandedEvent } from "./recurrenceExpander";
import { expandRecurringEvents } from "./recurrenceExpander";
// Private formatting helpers

View File

@@ -1,10 +1,5 @@
import { RRule, rrulestr } from "rrule";
import { CalendarEvent } from "@caldav/shared";
export interface ExpandedEvent extends CalendarEvent {
occurrenceStart: Date;
occurrenceEnd: Date;
}
import { CalendarEvent, ExpandedEvent } from "@caldav/shared";
// Convert local time to "fake UTC" for rrule
// rrule interprets all dates as UTC internally, so we need to trick it