feat: add calendar widget components

Add date picker and event calendar components inspired by shadcn/radix
Calendar and org-mode-agenda-cli.

Components:
- ui.calendar: Month grid date picker with navigation, today/selected
  highlighting, outside-month dimming. Pure date math utilities
  (days-in-month, day-of-week, calendar-days, etc.)
- ui.calendar-events: Event-aware grid with colored pills, horizontal
  day ticker strip with dot indicators, and agenda list view with
  grouped events by day

CSS: Token-based styling with dark mode support for event color
variants (accent/danger/success/warning). Responsive breakpoints.

All three targets supported (squint/cljs/clj). Dev pages show calendar
on its own page with interactive demos (date selection, month nav,
event grid, ticker, agenda list).

Tests: 27 new assertions covering date math, class generation,
component structure, event filtering/sorting.
This commit is contained in:
Florian Schroedl
2026-03-29 09:42:29 +02:00
parent d4f21f80a5
commit 25f868fb69
10 changed files with 1990 additions and 6 deletions

4
bb.edn
View File

@@ -48,6 +48,8 @@
[ui.sidebar-test]
[ui.chip-test]
[ui.separator-test]
[ui.calendar-test]
[ui.calendar-events-test]
[ui.theme-test])
:task (let [{:keys [fail error]} (t/run-tests
'ui.button-test
@@ -69,6 +71,8 @@
'ui.sidebar-test
'ui.chip-test
'ui.separator-test
'ui.calendar-test
'ui.calendar-events-test
'ui.theme-test)]
(when (pos? (+ fail error))
(System/exit 1)))}