feat(agenda): Epic 1 - Calendar views with FullCalendar

- E1.S1: FullCalendar setup with React wrapper
- E1.S2: Day view (timeGridDay) with hourly slots
- E1.S3: Week view (timeGridWeek) with 7-day grid
- E1.S4: Workweek view (timeGridWorkWeek, Mon-Fri)

Features:
- View switcher toolbar (Dag/Week/Werkweek)
- Date navigation (prev/next/today)
- Dutch localization (nl)
- Business hours highlighting (08:00-18:00)
- Color-coded appointments by type
- Drag-and-drop rescheduling support
- Server actions for encounter CRUD

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
colinislit
2025-12-02 17:13:17 +01:00
parent 43c7cb898b
commit e661c97491
10 changed files with 878 additions and 27 deletions

68
pnpm-lock.yaml generated
View File

@@ -11,6 +11,21 @@ importers:
'@deepgram/sdk':
specifier: ^4.11.2
version: 4.11.2
'@fullcalendar/core':
specifier: ^6.1.19
version: 6.1.19
'@fullcalendar/daygrid':
specifier: ^6.1.19
version: 6.1.19(@fullcalendar/core@6.1.19)
'@fullcalendar/interaction':
specifier: ^6.1.19
version: 6.1.19(@fullcalendar/core@6.1.19)
'@fullcalendar/react':
specifier: ^6.1.19
version: 6.1.19(@fullcalendar/core@6.1.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@fullcalendar/timegrid':
specifier: ^6.1.19
version: 6.1.19(@fullcalendar/core@6.1.19)
'@hookform/resolvers':
specifier: ^5.2.2
version: 5.2.2(react-hook-form@7.66.1(react@18.3.1))
@@ -372,6 +387,31 @@ packages:
'@floating-ui/utils@0.2.10':
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
'@fullcalendar/core@6.1.19':
resolution: {integrity: sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==}
'@fullcalendar/daygrid@6.1.19':
resolution: {integrity: sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==}
peerDependencies:
'@fullcalendar/core': ~6.1.19
'@fullcalendar/interaction@6.1.19':
resolution: {integrity: sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==}
peerDependencies:
'@fullcalendar/core': ~6.1.19
'@fullcalendar/react@6.1.19':
resolution: {integrity: sha512-FP78vnyylaL/btZeHig8LQgfHgfwxLaIG6sKbNkzkPkKEACv11UyyBoTSkaavPsHtXvAkcTED1l7TOunAyPEnA==}
peerDependencies:
'@fullcalendar/core': ~6.1.19
react: ^16.7.0 || ^17 || ^18 || ^19
react-dom: ^16.7.0 || ^17 || ^18 || ^19
'@fullcalendar/timegrid@6.1.19':
resolution: {integrity: sha512-OuzpUueyO9wB5OZ8rs7TWIoqvu4v3yEqdDxZ2VcsMldCpYJRiOe7yHWKr4ap5Tb0fs7Rjbserc/b6Nt7ol6BRg==}
peerDependencies:
'@fullcalendar/core': ~6.1.19
'@hookform/resolvers@5.2.2':
resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==}
peerDependencies:
@@ -2955,6 +2995,9 @@ packages:
potpack@1.0.2:
resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==}
preact@10.12.1:
resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==}
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -3877,6 +3920,29 @@ snapshots:
'@floating-ui/utils@0.2.10': {}
'@fullcalendar/core@6.1.19':
dependencies:
preact: 10.12.1
'@fullcalendar/daygrid@6.1.19(@fullcalendar/core@6.1.19)':
dependencies:
'@fullcalendar/core': 6.1.19
'@fullcalendar/interaction@6.1.19(@fullcalendar/core@6.1.19)':
dependencies:
'@fullcalendar/core': 6.1.19
'@fullcalendar/react@6.1.19(@fullcalendar/core@6.1.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@fullcalendar/core': 6.1.19
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@fullcalendar/timegrid@6.1.19(@fullcalendar/core@6.1.19)':
dependencies:
'@fullcalendar/core': 6.1.19
'@fullcalendar/daygrid': 6.1.19(@fullcalendar/core@6.1.19)
'@hookform/resolvers@5.2.2(react-hook-form@7.66.1(react@18.3.1))':
dependencies:
'@standard-schema/utils': 0.3.0
@@ -6861,6 +6927,8 @@ snapshots:
potpack@1.0.2: {}
preact@10.12.1: {}
prelude-ls@1.2.1: {}
promise-worker-transferable@1.0.4: