@k2b/ui 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/browser/content/Calendar.js +12 -5
  2. package/dist/browser/content/Calendar.js.map +1 -1
  3. package/dist/browser/content/MarkdownView.js +8 -1
  4. package/dist/browser/content/MarkdownView.js.map +1 -1
  5. package/dist/browser/content/PdfPreview.js +170 -72
  6. package/dist/browser/content/PdfPreview.js.map +1 -1
  7. package/dist/browser/feedback/dialog-core.js +2 -1
  8. package/dist/browser/feedback/dialog-core.js.map +1 -1
  9. package/dist/browser/feedback/prompts.js +20 -6
  10. package/dist/browser/feedback/prompts.js.map +1 -1
  11. package/dist/browser/feedback/toast.js +4 -2
  12. package/dist/browser/feedback/toast.js.map +1 -1
  13. package/dist/browser/intl/messages.js +48 -2
  14. package/dist/browser/intl/messages.js.map +1 -1
  15. package/dist/browser/layout/Navigation.js +8 -5
  16. package/dist/browser/layout/Navigation.js.map +1 -1
  17. package/dist/browser/layout/SettingsModal.js +32 -10
  18. package/dist/browser/layout/SettingsModal.js.map +1 -1
  19. package/dist/browser/layout/navigation-model.js +1 -0
  20. package/dist/browser/layout/navigation-model.js.map +1 -1
  21. package/dist/ssr/content/Calendar.js +13 -6
  22. package/dist/ssr/content/Calendar.js.map +1 -1
  23. package/dist/ssr/content/MarkdownView.js +8 -1
  24. package/dist/ssr/content/MarkdownView.js.map +1 -1
  25. package/dist/ssr/content/PdfPreview.js +79 -22
  26. package/dist/ssr/content/PdfPreview.js.map +1 -1
  27. package/dist/ssr/feedback/dialog-core.js +2 -1
  28. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  29. package/dist/ssr/feedback/prompts.js +19 -5
  30. package/dist/ssr/feedback/prompts.js.map +1 -1
  31. package/dist/ssr/feedback/toast.js +4 -2
  32. package/dist/ssr/feedback/toast.js.map +1 -1
  33. package/dist/ssr/intl/messages.js +48 -2
  34. package/dist/ssr/intl/messages.js.map +1 -1
  35. package/dist/ssr/layout/Navigation.js +8 -5
  36. package/dist/ssr/layout/Navigation.js.map +1 -1
  37. package/dist/ssr/layout/SettingsModal.js +30 -5
  38. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  39. package/dist/ssr/layout/navigation-model.js +1 -0
  40. package/dist/ssr/layout/navigation-model.js.map +1 -1
  41. package/dist/styles.css +1 -1
  42. package/dist/tabler-icons-15sezdfp.woff2 +0 -0
  43. package/dist/tabler.css +2 -2
  44. package/dist/types/content/PdfPreview.d.ts +8 -0
  45. package/dist/types/intl/messages.d.ts +23 -0
  46. package/dist/types/layout/navigation-model.d.ts +5 -0
  47. package/package.json +7 -6
  48. package/dist/tabler-icons-q30jt7jk.woff2 +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/Calendar.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { dates as calendar, type DateContext } from \"@k2b/stdlib\";\nimport type { JSX, ParentProps } from \"solid-js\";\nimport { createMemo, createSignal, For, mergeProps, onCleanup, onMount, Show } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport SegmentedControl from \"../actions/SegmentedControl\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { layoutCalendarIntervals } from \"./calendar-event-layout\";\nimport { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from \"./calendar-pointer\";\n\nexport type CalendarView = \"day\" | \"week\" | \"month\" | \"year\" | \"mobile-month\";\n\nexport type CalendarEventColor = \"blue\" | \"emerald\" | \"amber\" | \"red\" | \"violet\" | \"cyan\" | \"zinc\";\n\nexport type CalendarEvent = {\n id: string;\n title: string;\n start: Date | string;\n end?: Date | string;\n allDay?: boolean;\n color?: CalendarEventColor;\n colorHex?: string;\n href?: string;\n dataSpaceItemId?: string;\n meta?: string;\n description?: string;\n display?: \"event\" | \"background\";\n location?: string;\n calendarName?: string;\n attendees?: CalendarAttendee[];\n resources?: CalendarResource[];\n recurrence?: CalendarRecurrence;\n};\n\nexport type CalendarAttendee = {\n name: string;\n status?: \"accepted\" | \"declined\" | \"tentative\" | \"needs-action\";\n};\n\nexport type CalendarResource = {\n name: string;\n kind?: \"room\" | \"equipment\" | \"link\" | \"other\";\n};\n\nexport type CalendarRecurrence = {\n rrule: string;\n exdate?: Array<Date | string>;\n recurrenceId?: Date | string;\n};\n\nexport type CalendarLabels = Partial<{\n today: string;\n day: string;\n week: string;\n month: string;\n year: string;\n allDay: string;\n noEvents: string;\n previous: string;\n next: string;\n}>;\n\nexport type CalendarEventRenderContext = {\n compact: boolean;\n fill: boolean;\n start: Date;\n end: Date;\n allDay: boolean;\n durationHours: number;\n timeLabel: string;\n};\n\nexport type CalendarProps = {\n date: Date | string;\n events: CalendarEvent[];\n view?: CalendarView;\n views?: CalendarView[];\n labels?: CalendarLabels;\n /** stdlib date context used for timezone-aware rendering and calendar math. */\n dateConfig?: DateContext;\n /** Convenience override for dateConfig.timeZone. */\n timeZone?: string;\n firstDayOfWeek?: 0 | 1;\n withWeekNumbers?: boolean;\n startHour?: number;\n endHour?: number;\n visibleStartHour?: number;\n visibleEndHour?: number;\n allDayMaxHeightRem?: number;\n hideAllDay?: boolean;\n selectedDate?: Date | string;\n selectedEventId?: string;\n dayBadges?: Record<string, CalendarDayBadge>;\n getViewHref?: (view: CalendarView) => string;\n getDateHref?: (date: Date, view: CalendarView) => string;\n getEventHref?: (event: CalendarEvent) => string | undefined;\n renderEvent?: (event: CalendarEvent, context: CalendarEventRenderContext) => JSX.Element;\n /** Progressively enhance canonical calendar links after the app has loaded their target state. */\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n /** Progressively enhance canonical links without a document view transition. */\n onNavigateHref?: (href: string) => void;\n /** Optionally preload the target behind a canonical calendar link. */\n onPrefetch?: (href: string) => void;\n navigationPending?: boolean;\n onViewChange?: (view: CalendarView) => void;\n onDateChange?: (date: Date, view: CalendarView) => void;\n /** One activation contract for pointer and keyboard input. */\n onEventActivate?: (event: CalendarEvent) => void;\n /** Pointer gesture used for activation. Keyboard activation is always immediate. */\n eventActivation?: \"single\" | \"double\";\n onEventDrop?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onEventResize?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onSlotActivate?: (slot: CalendarEventTimeChange) => void;\n /** Pointer gesture used for empty slots. Keyboard activation is always immediate. */\n slotActivation?: \"single\" | \"double\";\n toolbarActions?: JSX.Element;\n toolbarContent?: JSX.Element;\n class?: string;\n};\n\nexport type CalendarEventTimeChange = {\n start: Date;\n end: Date;\n allDay?: boolean;\n};\n\nexport type CalendarDayBadge = {\n icon?: string;\n label: string;\n};\n\ntype NormalizedEvent = CalendarEvent & {\n startDate: Date;\n endDate: Date;\n dayKey: string;\n sourceStartDate: Date;\n sourceEndDate: Date;\n};\n\ntype CalendarPreview = CalendarEventTimeChange & {\n id: string;\n title?: string;\n};\n\ntype TimedEventLayout = {\n event: NormalizedEvent;\n lane: number;\n lanes: number;\n groupId: number;\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\ntype TimedOverflowLayout = {\n groupId: number;\n hiddenEvents: NormalizedEvent[];\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\nconst ownerDateConfig = (owner: CalendarProps): DateContext => ({\n ...owner.dateConfig,\n timeZone: owner.timeZone ?? owner.dateConfig?.timeZone,\n firstDayOfWeek: owner.firstDayOfWeek ?? owner.dateConfig?.firstDayOfWeek ?? owner.dateConfig?.weekStartsOn ?? 1,\n});\n\nconst dateOnlyPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nconst parseDate = (value: Date | string, context?: DateContext): Date => {\n if (value instanceof Date) return new Date(value);\n if (dateOnlyPattern.test(value)) return calendar.parseCalendarDate(value, context);\n const normalized = value.includes(\"T\") ? value : value.replace(\" \", \"T\");\n const parsed = new Date(normalized);\n if (!Number.isNaN(parsed.getTime())) return parsed;\n const [year, month = \"1\", day = \"1\"] = value.split(\"-\");\n return new Date(Number(year), Number(month) - 1, Number(day), 12);\n};\n\nconst validDate = (value: Date): boolean => !Number.isNaN(value.getTime());\n\nconst weekNumber = (date: Date): number => {\n const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const day = target.getUTCDay() || 7;\n target.setUTCDate(target.getUTCDate() + 4 - day);\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n};\nconst zonedWeekNumber = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return weekNumber(date);\n const [year = \"1970\", month = \"1\", day = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return weekNumber(new Date(Date.UTC(Number(year), Number(month) - 1, Number(day))));\n};\n\nconst formatTime = (date: Date, context?: DateContext): string => calendar.formatTime(date, context);\nconst formatDay = (date: Date, context?: DateContext): string =>\n date.toLocaleDateString(context?.locale ?? \"en\", { weekday: \"short\", day: \"numeric\", timeZone: context?.timeZone });\nconst formatMonth = (date: Date, context?: DateContext): string => calendar.formatMonthYear(date, context);\nconst zonedYearMonth = (date: Date, context?: DateContext): { year: number; month: number } => {\n const [year = \"1970\", month = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return { year: Number(year), month: Number(month) - 1 };\n};\nconst zonedMonthDate = (year: number, month: number, context?: DateContext): Date => {\n const value = `${year}-${String(month + 1).padStart(2, \"0\")}-01T12:00`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\n\nconst startOfDay = (date: Date, context?: DateContext): Date => calendar.startOfDay(date, context);\nconst endOfDay = (date: Date, context?: DateContext): Date => calendar.endOfDay(date, context);\nconst isStartOfDay = (date: Date, context?: DateContext): boolean => date.getTime() === startOfDay(date, context).getTime();\nconst addMinutes = (date: Date, minutes: number): Date => new Date(date.getTime() + minutes * 60 * 1000);\nconst zonedHour = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return date.getHours() + date.getMinutes() / 60;\n const value = calendar.instantToZonedInput(date, context.timeZone);\n return Number(value.slice(11, 13)) + Number(value.slice(14, 16)) / 60;\n};\nconst zonedSlot = (day: Date, hour: number, context?: DateContext): Date => {\n return zonedMinuteSlot(day, hour * 60, context);\n};\nconst zonedMinuteSlot = (day: Date, minuteOfDay: number, context?: DateContext): Date => {\n const bounded = Math.max(0, Math.min(23 * 60 + 59, minuteOfDay));\n const hour = Math.floor(bounded / 60);\n const minute = bounded % 60;\n const value = `${calendar.formatDateKey(day, context)}T${String(hour).padStart(2, \"0\")}:${String(minute).padStart(2, \"0\")}`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\nconst normalizeEvents = (events: CalendarEvent[], context?: DateContext): NormalizedEvent[] =>\n events.flatMap((event) => {\n const startDate = parseDate(event.start, context);\n if (!validDate(startDate)) return [];\n const parsedEnd = event.end ? parseDate(event.end, context) : null;\n const endDate = parsedEnd && validDate(parsedEnd) ? parsedEnd : new Date(startDate.getTime() + 60 * 60 * 1000);\n const duration = Math.max(60 * 60 * 1000, endDate.getTime() - startDate.getTime());\n const rangeEnd = endDate > startDate ? endDate : new Date(startDate.getTime() + duration);\n const startKey = calendar.formatDateKey(startDate, context);\n const endKey = calendar.formatDateKey(rangeEnd, context);\n if (!event.allDay && startKey === endKey) {\n return [\n {\n ...event,\n startDate,\n endDate: rangeEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: startKey,\n },\n ];\n }\n const lastDay =\n event.allDay && isStartOfDay(rangeEnd, context)\n ? calendar.addDays(startOfDay(rangeEnd, context), -1, context)\n : startOfDay(rangeEnd, context);\n const days: NormalizedEvent[] = [];\n for (let day = startOfDay(startDate, context); day <= lastDay; day = calendar.addDays(day, 1, context)) {\n const segmentStart = day.getTime() === startOfDay(startDate, context).getTime() ? startDate : startOfDay(day, context);\n const segmentEnd = day.getTime() === startOfDay(rangeEnd, context).getTime() ? rangeEnd : endOfDay(day, context);\n days.push({\n ...event,\n startDate: segmentStart,\n endDate: segmentEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: calendar.formatDateKey(day, context),\n allDay: event.allDay,\n });\n }\n return days;\n });\n\nconst eventHref = (props: CalendarProps, event: CalendarEvent): string | undefined => props.getEventHref?.(event) ?? event.href;\n\nconst moveEventTo = (event: NormalizedEvent, target: Date, allDay = false, context?: DateContext): CalendarEventTimeChange => {\n const duration = Math.max(30 * 60 * 1000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const start = allDay ? startOfDay(target, context) : new Date(target);\n start.setSeconds(0, 0);\n return { start, end: new Date(start.getTime() + duration), allDay };\n};\n\nconst moveEventToDay = (event: NormalizedEvent, day: Date, context?: DateContext): CalendarEventTimeChange => {\n if (event.allDay) return moveEventTo(event, startOfDay(day, context), true, context);\n const localStart = context?.timeZone ? calendar.instantToZonedInput(event.sourceStartDate, context.timeZone) : null;\n const hour = localStart ? Number(localStart.slice(11, 13)) : event.sourceStartDate.getHours();\n const minute = localStart ? Number(localStart.slice(14, 16)) : event.sourceStartDate.getMinutes();\n return moveEventTo(event, zonedMinuteSlot(day, hour * 60 + minute, context), false, context);\n};\n\nconst eventTimeChanged = (event: NormalizedEvent, next: CalendarEventTimeChange): boolean =>\n event.sourceStartDate.getTime() !== next.start.getTime() ||\n event.sourceEndDate.getTime() !== next.end.getTime() ||\n Boolean(event.allDay) !== Boolean(next.allDay);\n\nconst previewSegments = (preview: CalendarPreview | null, days: Date[], context?: DateContext): NormalizedEvent[] =>\n preview\n ? normalizeEvents(\n [\n {\n id: `preview-${preview.id}`,\n title: preview.title ?? \"\",\n start: preview.start,\n end: preview.end,\n allDay: preview.allDay,\n color: \"blue\",\n },\n ],\n context,\n ).filter((event) => days.some((day) => event.dayKey === calendar.formatDateKey(day, context)))\n : [];\n\nconst timedEventLayouts = (events: NormalizedEvent[]): TimedEventLayout[] => {\n return layoutCalendarIntervals(events, (event) => ({\n start: event.startDate.getTime(),\n end: event.endDate.getTime(),\n })).map(({ item: event, lane, lanes, groupId, groupStart, groupEnd }) => ({\n event,\n lane,\n lanes,\n groupId,\n groupStartDate: new Date(groupStart),\n groupEndDate: new Date(groupEnd),\n }));\n};\n\nconst EventChip = (props: {\n event: NormalizedEvent;\n owner: CalendarProps;\n href?: string;\n compact?: boolean;\n fill?: boolean;\n moving?: boolean;\n onMovePointerDown?: (event: PointerEvent, onActivate: () => void) => void;\n}): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const color = () => props.event.color ?? \"blue\";\n const selected = () => Boolean(props.owner.selectedEventId) && props.owner.selectedEventId === props.event.id;\n const style = () => (props.event.colorHex ? { \"--k2b-calendar-accent\": props.event.colorHex } : undefined);\n const isInteractive = () => Boolean(props.owner.onEventActivate);\n const durationHours = () => (props.event.endDate.getTime() - props.event.startDate.getTime()) / 3_600_000;\n const short = () => Boolean(props.fill && !props.event.allDay && durationHours() < 0.75);\n const showTime = () => !props.event.allDay && !props.compact && durationHours() >= 0.75;\n const showLocation = () => Boolean(props.event.location && !props.compact && durationHours() >= 1.25);\n const showDescription = () =>\n Boolean(props.event.description?.trim() && props.fill && !props.event.allDay && !props.compact && durationHours() >= 1.5);\n const timeLabel = () => `${formatTime(props.event.startDate, dateConfig())} - ${formatTime(props.event.endDate, dateConfig())}`;\n const renderedEvent = () =>\n props.owner.renderEvent?.(props.event, {\n compact: props.compact ?? false,\n fill: props.fill ?? false,\n start: props.event.startDate,\n end: props.event.endDate,\n allDay: props.event.allDay ?? false,\n durationHours: durationHours(),\n timeLabel: timeLabel(),\n });\n const defaultContent = (\n <>\n <span class=\"k2b-calendar-event__title\">{props.event.title}</span>\n <Show when={showTime()}>\n <span class=\"k2b-calendar-event__meta\">{timeLabel()}</span>\n </Show>\n <Show when={showLocation()}>\n <span class=\"k2b-calendar-event__meta\">{props.event.location}</span>\n </Show>\n <Show when={showDescription()}>\n <span class=\"k2b-calendar-event__description\">{props.event.description}</span>\n </Show>\n </>\n );\n const content = () => renderedEvent() ?? defaultContent;\n const isActionable = () => isInteractive() || Boolean(props.onMovePointerDown);\n let suppressClickUntil = 0;\n const onClick = (event: MouseEvent) => {\n if (performance.now() < suppressClickUntil) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (!props.owner.onEventActivate || props.owner.eventActivation === \"double\") return;\n event.preventDefault();\n event.stopPropagation();\n props.owner.onEventActivate(props.event);\n };\n const onDoubleClick = (event: MouseEvent) => {\n if (!props.owner.onEventActivate || props.owner.eventActivation !== \"double\") return;\n event.preventDefault();\n event.stopPropagation();\n props.owner.onEventActivate(props.event);\n };\n const onButtonKeyDown = (event: KeyboardEvent) => {\n if (!isInteractive() || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n props.owner.onEventActivate?.(props.event);\n };\n const onPointerDown = (event: PointerEvent) => {\n if (event.pointerType === \"touch\") return;\n if (props.onMovePointerDown) event.stopPropagation();\n props.onMovePointerDown?.(event, () => {\n suppressClickUntil = performance.now() + 400;\n });\n };\n\n return props.href ? (\n <a\n href={props.href}\n class=\"k2b-calendar-event\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-interactive={isInteractive() ? \"true\" : undefined}\n data-display={props.event.display}\n data-space-item-id={props.event.dataSpaceItemId}\n style={style()}\n draggable={props.onMovePointerDown ? false : undefined}\n onClick={onClick}\n onDblClick={onDoubleClick}\n onDragStart={props.onMovePointerDown ? (event) => event.preventDefault() : undefined}\n onPointerDown={onPointerDown}\n aria-label={`${props.event.title}${props.event.allDay ? \"\" : `, ${formatTime(props.event.startDate, dateConfig())} to ${formatTime(props.event.endDate, dateConfig())}`}`}\n >\n {content()}\n </a>\n ) : isActionable() ? (\n <button\n type=\"button\"\n class=\"k2b-calendar-event\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-interactive=\"true\"\n data-display={props.event.display}\n style={style()}\n onClick={onClick}\n onDblClick={onDoubleClick}\n onPointerDown={onPointerDown}\n onKeyDown={onButtonKeyDown}\n aria-label={`${props.event.title}${props.event.allDay ? \"\" : `, ${formatTime(props.event.startDate, dateConfig())} to ${formatTime(props.event.endDate, dateConfig())}`}`}\n >\n {content()}\n </button>\n ) : (\n <div\n class=\"k2b-calendar-event\"\n role=\"group\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-interactive={undefined}\n data-display={props.event.display}\n style={style()}\n aria-label={`${props.event.title}${props.event.allDay ? \"\" : `, ${formatTime(props.event.startDate, dateConfig())} to ${formatTime(props.event.endDate, dateConfig())}`}`}\n >\n {content()}\n </div>\n );\n};\n\nconst slotInteractionProps = (\n owner: CalendarProps,\n slot: () => CalendarEventTimeChange,\n suppressed?: () => boolean,\n nativeControl = false,\n) => {\n const isSlotChild = (event: Event) => {\n if (!(event.target instanceof Element)) return false;\n const control = event.target.closest(\"a,button,[data-calendar-event]\");\n return Boolean(control && control !== event.currentTarget);\n };\n const interactive = Boolean(owner.onSlotActivate);\n const activate = (event: Event) => {\n if (!owner.onSlotActivate || isSlotChild(event) || suppressed?.()) return;\n event.preventDefault();\n owner.onSlotActivate(slot());\n };\n return {\n role: interactive && !nativeControl ? (\"button\" as const) : undefined,\n tabIndex: interactive && !nativeControl ? 0 : undefined,\n onClick: (event: MouseEvent) => {\n if (owner.slotActivation === \"double\") return;\n activate(event);\n },\n onDblClick: (event: MouseEvent) => {\n if (owner.slotActivation !== \"double\") return;\n activate(event);\n },\n onKeyDown: nativeControl\n ? undefined\n : (event: KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") activate(event);\n },\n };\n};\n\ntype CalendarNavigationLinkProps = ParentProps<{\n owner: CalendarProps;\n href: string;\n anchorProps?: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"children\" | \"href\" | \"onClick\"> & {\n \"data-divider\"?: string;\n \"data-outside\"?: string;\n \"data-size\"?: string;\n \"data-today\"?: string;\n \"data-variant\"?: string;\n };\n}>;\n\n/** A real anchor is the baseline; the optional handler only enhances it after hydration. */\nconst CalendarNavigationLink = (props: CalendarNavigationLinkProps): JSX.Element => {\n const preload = () => props.owner.onPrefetch?.(props.href);\n const navigateHref: JSX.EventHandler<HTMLAnchorElement, MouseEvent> = (event) => {\n const anchor = event.currentTarget;\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey ||\n (anchor.target && anchor.target !== \"_self\") ||\n anchor.hasAttribute(\"download\") ||\n new URL(anchor.href).origin !== window.location.origin\n ) {\n return;\n }\n event.preventDefault();\n props.owner.onNavigateHref?.(props.href);\n };\n return props.owner.onNavigateHref ? (\n <a {...props.anchorProps} href={props.href} onClick={navigateHref} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n ) : props.owner.onNavigate ? (\n <Link\n {...props.anchorProps}\n href={props.href}\n scroll=\"preserve\"\n onNavigate={props.owner.onNavigate}\n onPointerEnter={preload}\n onFocus={preload}\n >\n {props.children}\n </Link>\n ) : (\n <a {...props.anchorProps} href={props.href} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n );\n};\n\nconst CalendarViewLinks = (props: {\n owner: CalendarProps;\n view: CalendarView;\n options: Array<{ value: CalendarView; label: string }>;\n}): JSX.Element => {\n const messages = useUiMessages();\n const refs: HTMLAnchorElement[] = [];\n const selectRelative = (currentIndex: number, direction: -1 | 1) => {\n if (props.options.length === 0) return;\n refs[(currentIndex + direction + props.options.length) % props.options.length]?.click();\n };\n const onKeyDown = (event: KeyboardEvent, index: number) => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n selectRelative(index, 1);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n selectRelative(index, -1);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n refs[event.key === \"Home\" ? 0 : props.options.length - 1]?.click();\n }\n };\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={messages().calendarView}\n aria-orientation=\"horizontal\"\n class=\"k2b-segmented-control k2b-calendar-view-switcher\"\n >\n <For each={props.options}>\n {(option, index) => {\n const active = () => (props.view === \"mobile-month\" ? \"month\" : props.view) === option.value;\n const href = () => props.owner.getViewHref?.(option.value) ?? \"#\";\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={href()}\n anchorProps={{\n ref: (element) => {\n refs[index()] = element;\n },\n role: \"radio\",\n \"aria-checked\": active(),\n tabIndex: active() ? 0 : -1,\n class: \"k2b-segmented-control__option\",\n \"data-divider\":\n index() < props.options.length - 1 &&\n !active() &&\n (props.view === \"mobile-month\" ? \"month\" : props.view) !== props.options[index() + 1]?.value\n ? \"true\"\n : undefined,\n onKeyDown: (event) => onKeyDown(event, index()),\n }}\n >\n {option.label}\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n );\n};\n\nconst adjacentCalendarDate = (date: Date, view: CalendarView, direction: -1 | 1, dateConfig: DateContext) => {\n if (view === \"year\") return calendar.addMonths(date, direction * 12, dateConfig);\n if (view === \"month\" || view === \"mobile-month\") return calendar.addMonths(date, direction, dateConfig);\n return calendar.addDays(date, direction * (view === \"day\" ? 1 : 7), dateConfig);\n};\n\nconst CalendarHeader = (props: { date: Date; view: CalendarView; labels: Required<CalendarLabels>; owner: CalendarProps }): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = () => ownerDateConfig(props.owner);\n const previous = () => adjacentCalendarDate(props.date, props.view, -1, dateConfig());\n const next = () => adjacentCalendarDate(props.date, props.view, 1, dateConfig());\n const title = () => {\n if (props.view === \"year\")\n return new Intl.DateTimeFormat(dateConfig().locale ?? \"en\", { year: \"numeric\", timeZone: dateConfig().timeZone }).format(props.date);\n if (props.view === \"day\")\n return props.date.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n if (props.view === \"week\")\n return `${formatDay(calendar.startOfWeek(props.date, dateConfig()), dateConfig())} - ${formatDay(calendar.addDays(calendar.startOfWeek(props.date, dateConfig()), 6, dateConfig()), dateConfig())}`;\n return formatMonth(props.date, dateConfig());\n };\n const goDate = (date: Date) => props.owner.onDateChange?.(date, props.view);\n const goView = (view: CalendarView) => {\n if (props.owner.onViewChange) {\n props.owner.onViewChange(view);\n return;\n }\n const href = props.owner.getViewHref?.(view);\n if (href) window.location.href = href;\n };\n const navButton = (date: Date, icon: string, label: string) => {\n const href = props.owner.getDateHref?.(date, props.view);\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n anchorProps={{ \"aria-label\": label, title: label, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <button type=\"button\" aria-label={label} class=\"k2b-calendar-header__nav-button\" onClick={() => goDate(date)}>\n <i class={`ti ${icon}`} />\n </button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n anchorProps={{ \"aria-label\": label, title: label, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n );\n };\n const todayButton = () => {\n const today = calendar.today(dateConfig());\n const href = props.owner.getDateHref?.(today, props.view);\n const label = <span class=\"k2b-button__label\">{props.labels.today}</span>;\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n anchorProps={{ class: \"k2b-button k2b-calendar-header__today\", \"data-size\": \"sm\", \"data-variant\": \"input\" }}\n >\n {label}\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <Button type=\"button\" variant=\"input\" size=\"sm\" class=\"k2b-calendar-header__today\" onClick={() => goDate(today)}>\n {props.labels.today}\n </Button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n anchorProps={{ class: \"k2b-button k2b-calendar-header__today\", \"data-size\": \"sm\", \"data-variant\": \"input\" }}\n >\n {label}\n </CalendarNavigationLink>\n );\n };\n const viewOptions = createMemo(() =>\n (\n [\n { value: \"day\", label: props.labels.day },\n { value: \"week\", label: props.labels.week },\n { value: \"month\", label: props.labels.month },\n { value: \"year\", label: props.labels.year },\n ] satisfies Array<{ value: CalendarView; label: string }>\n ).filter((option) => !props.owner.views || props.owner.views.includes(option.value)),\n );\n\n return (\n <header class=\"k2b-calendar-header\">\n <div class=\"k2b-calendar-header__navigation\">\n {navButton(previous(), \"ti-chevron-left\", props.labels.previous)}\n {navButton(next(), \"ti-chevron-right\", props.labels.next)}\n <div class=\"k2b-calendar-header__title\">{title()}</div>\n </div>\n <div class=\"k2b-calendar-header__actions\">\n {todayButton()}\n <Show\n when={!props.owner.onViewChange && props.owner.getViewHref}\n fallback={\n <SegmentedControl\n value={() => (props.view === \"mobile-month\" ? \"month\" : props.view)}\n onValueChange={goView}\n ariaLabel={messages().calendarView}\n options={viewOptions()}\n />\n }\n >\n <CalendarViewLinks owner={props.owner} view={props.view} options={viewOptions()} />\n </Show>\n {props.owner.toolbarActions}\n </div>\n <Show when={props.owner.navigationPending}>\n <span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\" />\n </Show>\n </header>\n );\n};\n\nconst MonthView = (props: {\n owner: CalendarProps;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const [movePreview, setMovePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const month = createMemo(() => zonedYearMonth(props.date, dateConfig()));\n const weeks = createMemo(() => calendar.getMonthGrid(month().year, month().month, dateConfig()));\n const weekdays = createMemo(() => calendar.weekdays(dateConfig()));\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const clearMove = () => {\n setMovePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const startMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, ...moveEventToDay(event, day, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setMovePreview,\n onCommit: (next) => {\n clearMove();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearMove,\n });\n };\n onCleanup(() => cancelInteraction?.());\n return (\n <div class=\"k2b-calendar-month\" style={{ \"grid-template-rows\": `auto repeat(${weeks().length}, minmax(5rem, 1fr))` }}>\n <div class=\"k2b-calendar-month__weekdays\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__weekday\">{messages().weekShort}</div>\n </Show>\n <For each={weekdays()}>{(day) => <div class=\"k2b-calendar-month__weekday\">{day}</div>}</For>\n </div>\n <For each={weeks()}>\n {(week) => (\n <div class=\"k2b-calendar-month__week\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__week-number\">{zonedWeekNumber(week[0]!, dateConfig())}</div>\n </Show>\n <For each={week}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const events = eventsByDay().get(dayKey) ?? [];\n const href = props.owner.getDateHref?.(day, \"day\");\n const dayBadge = props.owner.dayBadges?.[dayKey];\n const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());\n const isToday = dayKey === todayKey();\n const dayLabel = day.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const eventStack = createMemo(() => {\n const preview = movePreview();\n const previewForDay = preview && calendar.formatDateKey(preview.start, dateConfig()) === dayKey ? preview : null;\n const candidates = previewForDay ? events.filter((event) => event.id !== previewForDay.id) : events;\n const visibleLimit = previewForDay ? 2 : 3;\n return {\n preview: previewForDay,\n visibleEvents: candidates.slice(0, visibleLimit),\n hiddenCount: Math.max(0, candidates.length - visibleLimit),\n };\n });\n return (\n <div\n class=\"k2b-calendar-month__day\"\n data-calendar-day-key={dayKey}\n data-outside={!sameMonth ? \"true\" : undefined}\n data-drop-preview={\n movePreview()?.start && calendar.formatDateKey(movePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n >\n <Show\n when={props.owner.onSlotActivate}\n fallback={\n <Show when={href}>\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-target\",\n \"aria-label\": messages().openDate({ label: dayLabel }),\n }}\n />\n )}\n </Show>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-calendar-month__day-target\"\n data-interactive=\"true\"\n aria-label={messages().createEventOn({ label: dayLabel })}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n true,\n )}\n />\n </Show>\n <div class=\"k2b-calendar-month__day-header\">\n <Show\n when={props.owner.onSlotActivate && href}\n fallback={\n <span\n class=\"k2b-calendar-month__day-number\"\n data-today={isToday ? \"true\" : undefined}\n data-outside={!sameMonth ? \"true\" : undefined}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </span>\n }\n >\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-number\",\n \"data-today\": isToday ? \"true\" : undefined,\n \"data-outside\": !sameMonth ? \"true\" : undefined,\n \"aria-label\": messages().openDate({ label: dayLabel }),\n }}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </CalendarNavigationLink>\n )}\n </Show>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-month__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-month__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </div>\n <div class=\"k2b-calendar-month__events\">\n <Show when={eventStack().preview}>\n <div class=\"k2b-calendar-preview\">\n {props.events.find((event) => event.id === eventStack().preview!.id)?.title ?? messages().moveEvent}\n </div>\n </Show>\n <For each={eventStack().visibleEvents}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n <Show when={eventStack().hiddenCount > 0}>\n <CalendarNavigationLink owner={props.owner} href={href ?? \"#\"} anchorProps={{ class: \"k2b-calendar-month__more\" }}>\n +{eventStack().hiddenCount} more\n </CalendarNavigationLink>\n </Show>\n </div>\n <div class=\"k2b-calendar-month__dots\">\n <For each={events.slice(0, 4)}>\n {(event) => (\n <span\n class=\"k2b-calendar-dot\"\n data-color={event.colorHex ? undefined : (event.color ?? \"blue\")}\n style={event.colorHex ? { \"background-color\": event.colorHex } : undefined}\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n );\n};\n\nconst TimeGridView = (props: {\n owner: CalendarProps;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n days: Date[];\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const gridStartHour = () => props.owner.visibleStartHour ?? 0;\n const gridEndHour = () => props.owner.visibleEndHour ?? 23;\n const businessStartHour = () => props.owner.startHour ?? 8;\n const businessEndHour = () => props.owner.endHour ?? 18;\n const hours = createMemo(() => Array.from({ length: gridEndHour() - gridStartHour() + 1 }, (_, index) => gridStartHour() + index));\n const [timePreview, setTimePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n const [expandedOverflow, setExpandedOverflow] = createSignal(\"\");\n let scrollContainer: HTMLDivElement | undefined;\n let timeGrid: HTMLDivElement | undefined;\n let timeGutter: HTMLDivElement | undefined;\n let defaultHourMarker: HTMLDivElement | undefined;\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const slotEnd = (start: Date) => addMinutes(start, 60);\n const previewEvents = createMemo(() => previewSegments(timePreview(), props.days, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, { allDay: NormalizedEvent[]; timed: NormalizedEvent[] }>();\n for (const event of props.events) {\n const bucket = grouped.get(event.dayKey) ?? { allDay: [], timed: [] };\n (event.allDay ? bucket.allDay : bucket.timed).push(event);\n grouped.set(event.dayKey, bucket);\n }\n return grouped;\n });\n const clearInteraction = () => {\n setTimePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const timeAtPoint = (clientX: number, clientY: number): Date | null => {\n if (!timeGrid || !timeGutter) return null;\n const gridRect = timeGrid.getBoundingClientRect();\n const gutterRect = timeGutter.getBoundingClientRect();\n const dayIndex = calendarDayIndexAtPoint(clientX, gutterRect.right, gridRect.right - gutterRect.right, props.days.length);\n if (dayIndex === null) return null;\n const minute = Math.min(\n gridEndHour() * 60 + 45,\n calendarMinuteAtPoint(clientY, gridRect.top, gridRect.height, gridStartHour(), gridEndHour()),\n );\n return zonedMinuteSlot(props.days[dayIndex]!, minute, dateConfig());\n };\n const beginInteraction = (options: Parameters<typeof startCalendarPointerSession<CalendarPreview>>[0]) => {\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession(options);\n };\n const startTimedMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n const pointerStart = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? event.sourceStartDate;\n const duration = Math.max(15 * 60_000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const offsetMinutes = Math.max(\n 0,\n Math.min(duration / 60_000, Math.round((pointerStart.getTime() - event.sourceStartDate.getTime()) / 900_000) * 15),\n );\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const start = new Date(pointer.getTime() - offsetMinutes * 60_000);\n return { id: event.id, title: event.title, start, end: new Date(start.getTime() + duration), allDay: false };\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startAllDayMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n beginInteraction({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, title: event.title, ...moveEventTo(event, startOfDay(day, dateConfig()), true, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startRange = (pointerEvent: PointerEvent) => {\n if (!props.owner.onSlotActivate || pointerEvent.pointerType === \"touch\") return;\n const anchor = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY);\n if (!anchor) return;\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const current = timeAtPoint(clientX, clientY);\n if (!current) return null;\n const start = current < anchor ? current : anchor;\n const endBase = current < anchor ? anchor : current;\n return { id: \"calendar-create-preview\", start, end: addMinutes(endBase, 15), allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n props.owner.onSlotActivate?.(next);\n },\n onCancel: clearInteraction,\n });\n };\n const timeRangeLayout = (startDate: Date, endDate: Date) => {\n const start = zonedHour(startDate, dateConfig());\n const end = zonedHour(endDate, dateConfig());\n const visibleStart = Math.max(gridStartHour(), start);\n const visibleEnd = Math.min(gridEndHour() + 1, end);\n const total = Math.max(1, gridEndHour() - gridStartHour() + 1);\n return {\n top: Math.max(0, ((visibleStart - gridStartHour()) / total) * 100),\n height: Math.max(1.25, ((visibleEnd - visibleStart) / total) * 100),\n };\n };\n const eventLayout = (event: NormalizedEvent) => timeRangeLayout(event.startDate, event.endDate);\n const isDayView = () => props.days.length === 1;\n const visibleLaneCount = (lanes: number) => (isDayView() ? lanes : Math.min(lanes, 3));\n const overflowLayouts = (layouts: TimedEventLayout[]): TimedOverflowLayout[] => {\n if (isDayView()) return [];\n const groups = new Map<number, TimedOverflowLayout>();\n for (const layout of layouts) {\n if (layout.lane < visibleLaneCount(layout.lanes)) continue;\n const existing = groups.get(layout.groupId);\n if (existing) existing.hiddenEvents.push(layout.event);\n else\n groups.set(layout.groupId, {\n groupId: layout.groupId,\n hiddenEvents: [layout.event],\n groupStartDate: layout.groupStartDate,\n groupEndDate: layout.groupEndDate,\n });\n }\n return [...groups.values()];\n };\n const dayColumnMinWidth = (layouts: TimedEventLayout[]) => {\n if (!isDayView()) return undefined;\n const lanes = Math.max(1, ...layouts.map((layout) => layout.lanes));\n return `${Math.max(32, lanes * 12)}rem`;\n };\n const laneStyle = (layoutItem: TimedEventLayout) => {\n if (isDayView()) {\n const laneWidth = 100 / layoutItem.lanes;\n return {\n left: `calc(${layoutItem.lane * laneWidth}% + 0.25rem)`,\n width: `calc(${laneWidth}% - 0.5rem)`,\n };\n }\n const visibleLanes = visibleLaneCount(layoutItem.lanes);\n return {\n left: `${layoutItem.lanes <= 1 ? 0 : (28 / Math.max(1, visibleLanes - 1)) * layoutItem.lane}%`,\n width: `${layoutItem.lanes <= 1 ? 100 : layoutItem.lanes > visibleLanes ? 68 : 72}%`,\n };\n };\n const currentTimeLine = (day: Date) => {\n const now = props.now;\n if (calendar.formatDateKey(day, dateConfig()) !== calendar.formatDateKey(now, dateConfig())) return null;\n const hour = zonedHour(now, dateConfig());\n if (hour < gridStartHour() || hour > gridEndHour() + 1) return null;\n return ((hour - gridStartHour()) / Math.max(1, gridEndHour() - gridStartHour() + 1)) * 100;\n };\n onCleanup(() => cancelInteraction?.());\n onMount(() => {\n requestAnimationFrame(() => {\n if (!scrollContainer || !defaultHourMarker) return;\n const targetTop = defaultHourMarker.getBoundingClientRect().top - scrollContainer.getBoundingClientRect().top;\n scrollContainer.scrollTo({ top: Math.max(0, scrollContainer.scrollTop + targetTop), behavior: \"smooth\" });\n });\n });\n return (\n <div class=\"k2b-calendar-time-grid\">\n <div class=\"k2b-calendar-time-grid__days\" style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}>\n <div />\n <For each={props.days}>\n {(day) => {\n const dayBadge = props.owner.dayBadges?.[calendar.formatDateKey(day, dateConfig())];\n const today = () => calendar.isToday(day, dateConfig());\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day, \"day\") ?? \"#\"}\n anchorProps={{ class: \"k2b-calendar-time-grid__day\" }}\n >\n <span class=\"k2b-calendar-time-grid__day-label\" data-today={today() ? \"true\" : undefined}>\n {formatDay(day, dateConfig())}\n </span>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-time-grid__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-time-grid__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n <Show when={!props.owner.hideAllDay}>\n <div\n class=\"k2b-calendar-time-grid__all-day\"\n style={{\n \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))`,\n \"max-height\": `${props.owner.allDayMaxHeightRem ?? 7}rem`,\n }}\n >\n <div class=\"k2b-calendar-time-grid__all-day-label\">{props.labels.allDay}</div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const allDay = () => eventsByDay().get(dayKey)?.allDay ?? [];\n const previewAllDay = previewEvents().filter((event) => event.dayKey === dayKey && event.allDay);\n return (\n <div\n class=\"k2b-calendar-time-grid__all-day-cell\"\n data-calendar-day-key={dayKey}\n data-drop-preview={\n timePreview()?.allDay && calendar.formatDateKey(timePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n >\n <div class=\"k2b-calendar-time-grid__all-day-events\">\n <For each={previewAllDay}>{(event) => <div class=\"k2b-calendar-preview\">{event.title}</div>}</For>\n <For each={allDay()}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startAllDayMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n </Show>\n <div ref={scrollContainer} class=\"k2b-calendar-time-grid__scroll\">\n <div\n ref={timeGrid}\n class=\"k2b-calendar-time-grid__grid\"\n style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}\n >\n <div\n ref={timeGutter}\n class=\"k2b-calendar-time-grid__gutter\"\n style={{ \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))` }}\n >\n <For each={hours()}>\n {(hour) => (\n <div\n ref={(element) => {\n if (hour === businessStartHour()) defaultHourMarker = element;\n }}\n class=\"k2b-calendar-time-grid__hour\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n >\n {`${hour}`.padStart(2, \"0\")}:00\n </div>\n )}\n </For>\n </div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));\n return (\n <div\n class=\"k2b-calendar-time-grid__column\"\n style={{\n \"min-width\": dayColumnMinWidth(layouts()),\n \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))`,\n }}\n >\n <Show when={currentTimeLine(day) !== null}>\n <div class=\"k2b-calendar-time-grid__now\" style={{ top: `${currentTimeLine(day) ?? 0}%` }} />\n </Show>\n <For each={hours()}>\n {(hour) => (\n <div\n class=\"k2b-calendar-time-grid__slot\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = zonedSlot(day, hour, dateConfig());\n return { start, end: slotEnd(start), allDay: false };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n onPointerDown={startRange}\n />\n )}\n </For>\n <For each={previewEvents().filter((event) => event.dayKey === dayKey && !event.allDay)}>\n {(event) => {\n const layout = eventLayout(event);\n const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;\n return (\n <div\n class=\"k2b-calendar-preview k2b-calendar-preview--timed\"\n data-short={short ? \"true\" : undefined}\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n >\n <div class=\"k2b-calendar-preview__content\">\n <Show when={event.title}>\n <div class=\"k2b-calendar-preview__title\">{event.title}</div>\n </Show>\n <div class=\"k2b-calendar-preview__label\">\n {formatTime(event.startDate, dateConfig())} - {formatTime(event.endDate, dateConfig())}\n </div>\n </div>\n </div>\n );\n }}\n </For>\n <For each={layouts()}>\n {(layoutItem) => {\n if (!isDayView() && layoutItem.lane >= visibleLaneCount(layoutItem.lanes)) return null;\n const event = layoutItem.event;\n const layout = eventLayout(event);\n const position = laneStyle(layoutItem);\n const resizeStart = (pointerEvent: PointerEvent) => {\n if (!props.owner.onEventResize) return;\n pointerEvent.preventDefault();\n pointerEvent.stopPropagation();\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n threshold: 1,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const minimumEnd = addMinutes(event.sourceStartDate, 15);\n const end = pointer > minimumEnd ? pointer : minimumEnd;\n return { id: event.id, title: event.title, start: event.sourceStartDate, end, allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventResize?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n return (\n <div\n class=\"k2b-calendar-time-grid__event-position\"\n style={{\n top: `${layout.top}%`,\n height: `${layout.height}%`,\n left: position.left,\n width: position.width,\n \"z-index\": String(20 + layoutItem.lane),\n }}\n >\n <div class=\"k2b-calendar-time-grid__event-frame\">\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n fill\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startTimedMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n <Show when={props.owner.onEventResize}>\n <button\n type=\"button\"\n aria-label={messages().resizeEvent}\n draggable={false}\n class=\"k2b-calendar-time-grid__resize\"\n onPointerDown={resizeStart}\n onDragStart={(event) => event.preventDefault()}\n >\n <span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </div>\n );\n }}\n </For>\n <For each={overflowLayouts(layouts())}>\n {(overflow) => {\n const layout = timeRangeLayout(overflow.groupStartDate, overflow.groupEndDate);\n const key = `${dayKey}-${overflow.groupId}`;\n const hiddenTitle = () =>\n overflow.hiddenEvents.map((event) => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join(\"\\n\");\n return (\n <>\n <button\n type=\"button\"\n class=\"k2b-calendar-time-grid__overflow\"\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n title={hiddenTitle()}\n aria-label={messages().hiddenOverlappingEvents({ count: overflow.hiddenEvents.length })}\n onClick={(event) => {\n event.stopPropagation();\n setExpandedOverflow(expandedOverflow() === key ? \"\" : key);\n }}\n >\n <span class=\"k2b-calendar-time-grid__overflow-count\">+{overflow.hiddenEvents.length}</span>\n </button>\n <Show when={expandedOverflow() === key}>\n <div class=\"k2b-calendar-time-grid__overflow-menu\" style={{ top: `${layout.top}%` }}>\n <div class=\"k2b-calendar-time-grid__overflow-title\">\n {formatTime(overflow.groupStartDate, dateConfig())} - {formatTime(overflow.groupEndDate, dateConfig())}\n </div>\n <For each={overflow.hiddenEvents}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} compact />}\n </For>\n </div>\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n }}\n </For>\n </div>\n </div>\n </div>\n );\n};\n\nconst YearView = (props: { owner: CalendarProps; date: Date; now: Date; events: NormalizedEvent[] }): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const year = createMemo(() => zonedYearMonth(props.date, dateConfig()).year);\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const months = createMemo(() => {\n const context = dateConfig();\n return Array.from({ length: 12 }, (_, month) => {\n const date = zonedMonthDate(year(), month, context);\n return {\n date,\n label: date.toLocaleDateString(context.locale ?? \"en\", { month: \"long\", timeZone: context.timeZone }),\n days: calendar\n .getMonthGrid(year(), month, context)\n .flat()\n .map((day) => {\n const key = calendar.formatDateKey(day, context);\n return {\n date: day,\n events: eventsByDay().get(key) ?? [],\n isToday: key === todayKey(),\n outside: !calendar.isSameMonth(day, date, context),\n number: calendar.formatDayNumber(day, context),\n };\n }),\n };\n });\n });\n\n return (\n <div class=\"k2b-calendar-year\">\n <For each={months()}>\n {(month) => (\n <div class=\"k2b-calendar-year__month\">\n <div class=\"k2b-calendar-year__title\">{month.label}</div>\n <div class=\"k2b-calendar-year__grid\">\n <For each={month.days}>\n {(day) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day.date, \"day\") ?? \"#\"}\n anchorProps={{\n class: \"k2b-calendar-year__day\",\n \"data-today\": day.isToday ? \"true\" : undefined,\n \"data-outside\": day.outside ? \"true\" : undefined,\n }}\n >\n {day.number}\n <Show when={day.events[0]}>\n {(event) => (\n <span\n class=\"k2b-calendar-year__indicator\"\n data-color={event().colorHex ? undefined : (event().color ?? \"blue\")}\n data-today={day.isToday ? \"true\" : undefined}\n style={event().colorHex ? { \"background-color\": day.isToday ? \"white\" : event().colorHex } : undefined}\n />\n )}\n </Show>\n </CalendarNavigationLink>\n )}\n </For>\n </div>\n </div>\n )}\n </For>\n </div>\n );\n};\n\nconst MobileMonthView = (props: {\n owner: CalendarProps;\n date: Date;\n now: Date;\n selectedDate: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n}): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));\n const selectedEvents = createMemo(() => props.events.filter((event) => event.dayKey === selectedDateKey()));\n return (\n <div class=\"k2b-calendar-mobile-month\">\n <MonthView\n owner={{ ...props.owner, withWeekNumbers: false }}\n date={props.date}\n now={props.now}\n events={props.events}\n labels={props.labels}\n />\n <div class=\"k2b-calendar-mobile-month__agenda\">\n <div class=\"k2b-calendar-mobile-month__title\">\n {props.selectedDate.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n })}\n </div>\n <Show when={selectedEvents().length > 0} fallback={<div class=\"k2b-calendar-mobile-month__empty\">{props.labels.noEvents}</div>}>\n <div class=\"k2b-calendar-mobile-month__events\">\n <For each={selectedEvents()}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} />}\n </For>\n </div>\n </Show>\n </div>\n </div>\n );\n};\n\nconst CalendarBody = (props: { children: JSX.Element }): JSX.Element => <div class=\"k2b-calendar-body\">{props.children}</div>;\n\nconst Calendar = (props: CalendarProps): JSX.Element => {\n const messages = useUiMessages();\n // Subviews derive their date config from the owner props, so the inherited\n // render locale is merged here once; an explicit dateConfig.locale wins.\n const localizedConfig = useDateConfigLocale(() => props.dateConfig);\n const owner = mergeProps(props, {\n get dateConfig(): DateContext {\n return localizedConfig();\n },\n });\n const view = () => props.view ?? \"month\";\n const dateConfig = createMemo(() => ownerDateConfig(owner));\n const safeDate = (value: Date | string) => {\n const parsed = parseDate(value, dateConfig());\n return validDate(parsed) ? parsed : calendar.today(dateConfig());\n };\n const date = createMemo(() => safeDate(props.date));\n const selectedDate = createMemo(() => safeDate(props.selectedDate ?? props.date));\n const [now, setNow] = createSignal(new Date());\n const normalizedEvents = createMemo(() => normalizeEvents(props.events, dateConfig()));\n const mergedLabels = createMemo<Required<CalendarLabels>>(() => ({\n today: messages().today,\n day: messages().day,\n week: messages().week,\n month: messages().month,\n year: messages().year,\n allDay: messages().allDay,\n noEvents: messages().noEvents,\n previous: messages().previous,\n next: messages().next,\n ...props.labels,\n }));\n const days = createMemo(() => {\n if (view() === \"day\") return [date()];\n return calendar.getWeekDays(date(), dateConfig());\n });\n onMount(() => {\n const updateNow = () => setNow(new Date());\n const interval = window.setInterval(updateNow, 60_000);\n document.addEventListener(\"visibilitychange\", updateNow);\n onCleanup(() => {\n window.clearInterval(interval);\n document.removeEventListener(\"visibilitychange\", updateNow);\n });\n });\n\n return (\n <section class={`k2b-content-calendar ${props.class ?? \"\"}`} aria-busy={props.navigationPending ? \"true\" : undefined}>\n <CalendarHeader date={date()} view={view()} labels={mergedLabels()} owner={owner} />\n {props.toolbarContent}\n <Show\n when={view() !== \"month\"}\n fallback={\n <CalendarBody>\n <MonthView owner={owner} date={date()} now={now()} events={normalizedEvents()} labels={mergedLabels()} />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"year\"}\n fallback={\n <CalendarBody>\n <YearView owner={owner} date={date()} now={now()} events={normalizedEvents()} />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"mobile-month\"}\n fallback={\n <CalendarBody>\n <MobileMonthView\n owner={owner}\n date={date()}\n now={now()}\n selectedDate={selectedDate()}\n events={normalizedEvents()}\n labels={mergedLabels()}\n />\n </CalendarBody>\n }\n >\n <TimeGridView owner={owner} date={date()} now={now()} events={normalizedEvents()} labels={mergedLabels()} days={days()} />\n </Show>\n </Show>\n </Show>\n </section>\n );\n};\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/Calendar.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { dates as calendar, type DateContext } from \"@k2b/stdlib\";\nimport type { JSX, ParentProps } from \"solid-js\";\nimport { createMemo, createSignal, For, mergeProps, onCleanup, onMount, Show } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport SegmentedControl from \"../actions/SegmentedControl\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { layoutCalendarIntervals } from \"./calendar-event-layout\";\nimport { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from \"./calendar-pointer\";\n\nexport type CalendarView = \"day\" | \"week\" | \"month\" | \"year\" | \"mobile-month\";\n\nexport type CalendarEventColor = \"blue\" | \"emerald\" | \"amber\" | \"red\" | \"violet\" | \"cyan\" | \"zinc\";\n\nexport type CalendarEvent = {\n id: string;\n title: string;\n start: Date | string;\n end?: Date | string;\n allDay?: boolean;\n color?: CalendarEventColor;\n colorHex?: string;\n href?: string;\n dataSpaceItemId?: string;\n meta?: string;\n description?: string;\n display?: \"event\" | \"background\";\n location?: string;\n calendarName?: string;\n attendees?: CalendarAttendee[];\n resources?: CalendarResource[];\n recurrence?: CalendarRecurrence;\n};\n\nexport type CalendarAttendee = {\n name: string;\n status?: \"accepted\" | \"declined\" | \"tentative\" | \"needs-action\";\n};\n\nexport type CalendarResource = {\n name: string;\n kind?: \"room\" | \"equipment\" | \"link\" | \"other\";\n};\n\nexport type CalendarRecurrence = {\n rrule: string;\n exdate?: Array<Date | string>;\n recurrenceId?: Date | string;\n};\n\nexport type CalendarLabels = Partial<{\n today: string;\n day: string;\n week: string;\n month: string;\n year: string;\n allDay: string;\n noEvents: string;\n previous: string;\n next: string;\n}>;\n\nexport type CalendarEventRenderContext = {\n compact: boolean;\n fill: boolean;\n start: Date;\n end: Date;\n allDay: boolean;\n durationHours: number;\n timeLabel: string;\n};\n\nexport type CalendarProps = {\n date: Date | string;\n events: CalendarEvent[];\n view?: CalendarView;\n views?: CalendarView[];\n labels?: CalendarLabels;\n /** stdlib date context used for timezone-aware rendering and calendar math. */\n dateConfig?: DateContext;\n /** Convenience override for dateConfig.timeZone. */\n timeZone?: string;\n firstDayOfWeek?: 0 | 1;\n withWeekNumbers?: boolean;\n startHour?: number;\n endHour?: number;\n visibleStartHour?: number;\n visibleEndHour?: number;\n allDayMaxHeightRem?: number;\n hideAllDay?: boolean;\n selectedDate?: Date | string;\n selectedEventId?: string;\n dayBadges?: Record<string, CalendarDayBadge>;\n getViewHref?: (view: CalendarView) => string;\n getDateHref?: (date: Date, view: CalendarView) => string;\n getEventHref?: (event: CalendarEvent) => string | undefined;\n renderEvent?: (event: CalendarEvent, context: CalendarEventRenderContext) => JSX.Element;\n /** Progressively enhance canonical calendar links after the app has loaded their target state. */\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n /** Progressively enhance canonical links without a document view transition. */\n onNavigateHref?: (href: string) => void;\n /** Optionally preload the target behind a canonical calendar link. */\n onPrefetch?: (href: string) => void;\n navigationPending?: boolean;\n onViewChange?: (view: CalendarView) => void;\n onDateChange?: (date: Date, view: CalendarView) => void;\n /** One activation contract for pointer and keyboard input. */\n onEventActivate?: (event: CalendarEvent) => void;\n /** Pointer gesture used for activation. Keyboard activation is always immediate. */\n eventActivation?: \"single\" | \"double\";\n onEventDrop?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onEventResize?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onSlotActivate?: (slot: CalendarEventTimeChange) => void;\n /** Pointer gesture used for empty slots. Keyboard activation is always immediate. */\n slotActivation?: \"single\" | \"double\";\n toolbarActions?: JSX.Element;\n toolbarContent?: JSX.Element;\n class?: string;\n};\n\nexport type CalendarEventTimeChange = {\n start: Date;\n end: Date;\n allDay?: boolean;\n};\n\nexport type CalendarDayBadge = {\n icon?: string;\n label: string;\n};\n\ntype NormalizedEvent = CalendarEvent & {\n startDate: Date;\n endDate: Date;\n dayKey: string;\n sourceStartDate: Date;\n sourceEndDate: Date;\n};\n\ntype CalendarPreview = CalendarEventTimeChange & {\n id: string;\n title?: string;\n};\n\ntype TimedEventLayout = {\n event: NormalizedEvent;\n lane: number;\n lanes: number;\n groupId: number;\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\ntype TimedOverflowLayout = {\n groupId: number;\n hiddenEvents: NormalizedEvent[];\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\nconst ownerDateConfig = (owner: CalendarProps): DateContext => ({\n ...owner.dateConfig,\n timeZone: owner.timeZone ?? owner.dateConfig?.timeZone,\n firstDayOfWeek: owner.firstDayOfWeek ?? owner.dateConfig?.firstDayOfWeek ?? owner.dateConfig?.weekStartsOn ?? 1,\n});\n\nconst dateOnlyPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nconst parseDate = (value: Date | string, context?: DateContext): Date => {\n if (value instanceof Date) return new Date(value);\n if (dateOnlyPattern.test(value)) return calendar.parseCalendarDate(value, context);\n const normalized = value.includes(\"T\") ? value : value.replace(\" \", \"T\");\n const parsed = new Date(normalized);\n if (!Number.isNaN(parsed.getTime())) return parsed;\n const [year, month = \"1\", day = \"1\"] = value.split(\"-\");\n return new Date(Number(year), Number(month) - 1, Number(day), 12);\n};\n\nconst validDate = (value: Date): boolean => !Number.isNaN(value.getTime());\n\nconst weekNumber = (date: Date): number => {\n const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const day = target.getUTCDay() || 7;\n target.setUTCDate(target.getUTCDate() + 4 - day);\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n};\nconst zonedWeekNumber = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return weekNumber(date);\n const [year = \"1970\", month = \"1\", day = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return weekNumber(new Date(Date.UTC(Number(year), Number(month) - 1, Number(day))));\n};\n\nconst formatTime = (date: Date, context?: DateContext): string => calendar.formatTime(date, context);\nconst formatDay = (date: Date, context?: DateContext): string =>\n date.toLocaleDateString(context?.locale ?? \"en\", { weekday: \"short\", day: \"numeric\", timeZone: context?.timeZone });\nconst formatMonth = (date: Date, context?: DateContext): string => calendar.formatMonthYear(date, context);\nconst zonedYearMonth = (date: Date, context?: DateContext): { year: number; month: number } => {\n const [year = \"1970\", month = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return { year: Number(year), month: Number(month) - 1 };\n};\nconst zonedMonthDate = (year: number, month: number, context?: DateContext): Date => {\n const value = `${year}-${String(month + 1).padStart(2, \"0\")}-01T12:00`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\n\nconst startOfDay = (date: Date, context?: DateContext): Date => calendar.startOfDay(date, context);\nconst endOfDay = (date: Date, context?: DateContext): Date => calendar.endOfDay(date, context);\nconst isStartOfDay = (date: Date, context?: DateContext): boolean => date.getTime() === startOfDay(date, context).getTime();\nconst addMinutes = (date: Date, minutes: number): Date => new Date(date.getTime() + minutes * 60 * 1000);\nconst zonedHour = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return date.getHours() + date.getMinutes() / 60;\n const value = calendar.instantToZonedInput(date, context.timeZone);\n return Number(value.slice(11, 13)) + Number(value.slice(14, 16)) / 60;\n};\nconst zonedSlot = (day: Date, hour: number, context?: DateContext): Date => {\n return zonedMinuteSlot(day, hour * 60, context);\n};\nconst zonedMinuteSlot = (day: Date, minuteOfDay: number, context?: DateContext): Date => {\n const bounded = Math.max(0, Math.min(23 * 60 + 59, minuteOfDay));\n const hour = Math.floor(bounded / 60);\n const minute = bounded % 60;\n const value = `${calendar.formatDateKey(day, context)}T${String(hour).padStart(2, \"0\")}:${String(minute).padStart(2, \"0\")}`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\nconst normalizeEvents = (events: CalendarEvent[], context?: DateContext): NormalizedEvent[] =>\n events.flatMap((event) => {\n const startDate = parseDate(event.start, context);\n if (!validDate(startDate)) return [];\n const parsedEnd = event.end ? parseDate(event.end, context) : null;\n const endDate = parsedEnd && validDate(parsedEnd) ? parsedEnd : new Date(startDate.getTime() + 60 * 60 * 1000);\n const duration = Math.max(60 * 60 * 1000, endDate.getTime() - startDate.getTime());\n const rangeEnd = endDate > startDate ? endDate : new Date(startDate.getTime() + duration);\n const startKey = calendar.formatDateKey(startDate, context);\n const endKey = calendar.formatDateKey(rangeEnd, context);\n if (!event.allDay && startKey === endKey) {\n return [\n {\n ...event,\n startDate,\n endDate: rangeEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: startKey,\n },\n ];\n }\n const lastDay =\n event.allDay && isStartOfDay(rangeEnd, context)\n ? calendar.addDays(startOfDay(rangeEnd, context), -1, context)\n : startOfDay(rangeEnd, context);\n const days: NormalizedEvent[] = [];\n for (let day = startOfDay(startDate, context); day <= lastDay; day = calendar.addDays(day, 1, context)) {\n const segmentStart = day.getTime() === startOfDay(startDate, context).getTime() ? startDate : startOfDay(day, context);\n const segmentEnd = day.getTime() === startOfDay(rangeEnd, context).getTime() ? rangeEnd : endOfDay(day, context);\n days.push({\n ...event,\n startDate: segmentStart,\n endDate: segmentEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: calendar.formatDateKey(day, context),\n allDay: event.allDay,\n });\n }\n return days;\n });\n\nconst eventHref = (props: CalendarProps, event: CalendarEvent): string | undefined => props.getEventHref?.(event) ?? event.href;\n\nconst moveEventTo = (event: NormalizedEvent, target: Date, allDay = false, context?: DateContext): CalendarEventTimeChange => {\n const duration = Math.max(30 * 60 * 1000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const start = allDay ? startOfDay(target, context) : new Date(target);\n start.setSeconds(0, 0);\n return { start, end: new Date(start.getTime() + duration), allDay };\n};\n\nconst moveEventToDay = (event: NormalizedEvent, day: Date, context?: DateContext): CalendarEventTimeChange => {\n if (event.allDay) return moveEventTo(event, startOfDay(day, context), true, context);\n const localStart = context?.timeZone ? calendar.instantToZonedInput(event.sourceStartDate, context.timeZone) : null;\n const hour = localStart ? Number(localStart.slice(11, 13)) : event.sourceStartDate.getHours();\n const minute = localStart ? Number(localStart.slice(14, 16)) : event.sourceStartDate.getMinutes();\n return moveEventTo(event, zonedMinuteSlot(day, hour * 60 + minute, context), false, context);\n};\n\nconst eventTimeChanged = (event: NormalizedEvent, next: CalendarEventTimeChange): boolean =>\n event.sourceStartDate.getTime() !== next.start.getTime() ||\n event.sourceEndDate.getTime() !== next.end.getTime() ||\n Boolean(event.allDay) !== Boolean(next.allDay);\n\nconst previewSegments = (preview: CalendarPreview | null, days: Date[], context?: DateContext): NormalizedEvent[] =>\n preview\n ? normalizeEvents(\n [\n {\n id: `preview-${preview.id}`,\n title: preview.title ?? \"\",\n start: preview.start,\n end: preview.end,\n allDay: preview.allDay,\n color: \"blue\",\n },\n ],\n context,\n ).filter((event) => days.some((day) => event.dayKey === calendar.formatDateKey(day, context)))\n : [];\n\nconst timedEventLayouts = (events: NormalizedEvent[]): TimedEventLayout[] => {\n return layoutCalendarIntervals(events, (event) => ({\n start: event.startDate.getTime(),\n end: event.endDate.getTime(),\n })).map(({ item: event, lane, lanes, groupId, groupStart, groupEnd }) => ({\n event,\n lane,\n lanes,\n groupId,\n groupStartDate: new Date(groupStart),\n groupEndDate: new Date(groupEnd),\n }));\n};\n\nconst EventChip = (props: {\n event: NormalizedEvent;\n owner: CalendarProps;\n href?: string;\n compact?: boolean;\n fill?: boolean;\n moving?: boolean;\n onMovePointerDown?: (event: PointerEvent, onActivate: () => void) => void;\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const color = () => props.event.color ?? \"blue\";\n const selected = () => Boolean(props.owner.selectedEventId) && props.owner.selectedEventId === props.event.id;\n const style = () => (props.event.colorHex ? { \"--k2b-calendar-accent\": props.event.colorHex } : undefined);\n const isInteractive = () => Boolean(props.owner.onEventActivate);\n const durationHours = () => (props.event.endDate.getTime() - props.event.startDate.getTime()) / 3_600_000;\n const short = () => Boolean(props.fill && !props.event.allDay && durationHours() < 0.75);\n const showTime = () => !props.event.allDay && !props.compact && durationHours() >= 0.75;\n const showLocation = () => Boolean(props.event.location && !props.compact && durationHours() >= 1.25);\n const showDescription = () =>\n Boolean(props.event.description?.trim() && props.fill && !props.event.allDay && !props.compact && durationHours() >= 1.5);\n const timeLabel = () => `${formatTime(props.event.startDate, dateConfig())} - ${formatTime(props.event.endDate, dateConfig())}`;\n const ariaLabel = () =>\n props.event.allDay\n ? props.event.title\n : messages().calendarEventTime({\n title: props.event.title,\n start: formatTime(props.event.startDate, dateConfig()),\n end: formatTime(props.event.endDate, dateConfig()),\n });\n const renderedEvent = () =>\n props.owner.renderEvent?.(props.event, {\n compact: props.compact ?? false,\n fill: props.fill ?? false,\n start: props.event.startDate,\n end: props.event.endDate,\n allDay: props.event.allDay ?? false,\n durationHours: durationHours(),\n timeLabel: timeLabel(),\n });\n const defaultContent = (\n <>\n <span class=\"k2b-calendar-event__title\">{props.event.title}</span>\n <Show when={showTime()}>\n <span class=\"k2b-calendar-event__meta\">{timeLabel()}</span>\n </Show>\n <Show when={showLocation()}>\n <span class=\"k2b-calendar-event__meta\">{props.event.location}</span>\n </Show>\n <Show when={showDescription()}>\n <span class=\"k2b-calendar-event__description\">{props.event.description}</span>\n </Show>\n </>\n );\n const content = () => renderedEvent() ?? defaultContent;\n const isActionable = () => isInteractive() || Boolean(props.onMovePointerDown);\n let suppressClickUntil = 0;\n const onClick = (event: MouseEvent) => {\n if (performance.now() < suppressClickUntil) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (!props.owner.onEventActivate || props.owner.eventActivation === \"double\") return;\n event.preventDefault();\n event.stopPropagation();\n props.owner.onEventActivate(props.event);\n };\n const onDoubleClick = (event: MouseEvent) => {\n if (!props.owner.onEventActivate || props.owner.eventActivation !== \"double\") return;\n event.preventDefault();\n event.stopPropagation();\n props.owner.onEventActivate(props.event);\n };\n const onButtonKeyDown = (event: KeyboardEvent) => {\n if (!isInteractive() || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n props.owner.onEventActivate?.(props.event);\n };\n const onPointerDown = (event: PointerEvent) => {\n if (event.pointerType === \"touch\") return;\n if (props.onMovePointerDown) event.stopPropagation();\n props.onMovePointerDown?.(event, () => {\n suppressClickUntil = performance.now() + 400;\n });\n };\n\n return props.href ? (\n <a\n href={props.href}\n class=\"k2b-calendar-event\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-interactive={isInteractive() ? \"true\" : undefined}\n data-display={props.event.display}\n data-space-item-id={props.event.dataSpaceItemId}\n style={style()}\n draggable={props.onMovePointerDown ? false : undefined}\n onClick={onClick}\n onDblClick={onDoubleClick}\n onDragStart={props.onMovePointerDown ? (event) => event.preventDefault() : undefined}\n onPointerDown={onPointerDown}\n aria-label={ariaLabel()}\n >\n {content()}\n </a>\n ) : isActionable() ? (\n <button\n type=\"button\"\n class=\"k2b-calendar-event\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-interactive=\"true\"\n data-display={props.event.display}\n style={style()}\n onClick={onClick}\n onDblClick={onDoubleClick}\n onPointerDown={onPointerDown}\n onKeyDown={onButtonKeyDown}\n aria-label={ariaLabel()}\n >\n {content()}\n </button>\n ) : (\n <div\n class=\"k2b-calendar-event\"\n role=\"group\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-interactive={undefined}\n data-display={props.event.display}\n style={style()}\n aria-label={ariaLabel()}\n >\n {content()}\n </div>\n );\n};\n\nconst slotInteractionProps = (\n owner: CalendarProps,\n slot: () => CalendarEventTimeChange,\n suppressed?: () => boolean,\n nativeControl = false,\n) => {\n const isSlotChild = (event: Event) => {\n if (!(event.target instanceof Element)) return false;\n const control = event.target.closest(\"a,button,[data-calendar-event]\");\n return Boolean(control && control !== event.currentTarget);\n };\n const interactive = Boolean(owner.onSlotActivate);\n const activate = (event: Event) => {\n if (!owner.onSlotActivate || isSlotChild(event) || suppressed?.()) return;\n event.preventDefault();\n owner.onSlotActivate(slot());\n };\n return {\n role: interactive && !nativeControl ? (\"button\" as const) : undefined,\n tabIndex: interactive && !nativeControl ? 0 : undefined,\n onClick: (event: MouseEvent) => {\n if (owner.slotActivation === \"double\") return;\n activate(event);\n },\n onDblClick: (event: MouseEvent) => {\n if (owner.slotActivation !== \"double\") return;\n activate(event);\n },\n onKeyDown: nativeControl\n ? undefined\n : (event: KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") activate(event);\n },\n };\n};\n\ntype CalendarNavigationLinkProps = ParentProps<{\n owner: CalendarProps;\n href: string;\n anchorProps?: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"children\" | \"href\" | \"onClick\"> & {\n \"data-divider\"?: string;\n \"data-outside\"?: string;\n \"data-size\"?: string;\n \"data-today\"?: string;\n \"data-variant\"?: string;\n };\n}>;\n\n/** A real anchor is the baseline; the optional handler only enhances it after hydration. */\nconst CalendarNavigationLink = (props: CalendarNavigationLinkProps): JSX.Element => {\n const preload = () => props.owner.onPrefetch?.(props.href);\n const navigateHref: JSX.EventHandler<HTMLAnchorElement, MouseEvent> = (event) => {\n const anchor = event.currentTarget;\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey ||\n (anchor.target && anchor.target !== \"_self\") ||\n anchor.hasAttribute(\"download\") ||\n new URL(anchor.href).origin !== window.location.origin\n ) {\n return;\n }\n event.preventDefault();\n props.owner.onNavigateHref?.(props.href);\n };\n return props.owner.onNavigateHref ? (\n <a {...props.anchorProps} href={props.href} onClick={navigateHref} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n ) : props.owner.onNavigate ? (\n <Link\n {...props.anchorProps}\n href={props.href}\n scroll=\"preserve\"\n onNavigate={props.owner.onNavigate}\n onPointerEnter={preload}\n onFocus={preload}\n >\n {props.children}\n </Link>\n ) : (\n <a {...props.anchorProps} href={props.href} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n );\n};\n\nconst CalendarViewLinks = (props: {\n owner: CalendarProps;\n view: CalendarView;\n options: Array<{ value: CalendarView; label: string }>;\n}): JSX.Element => {\n const messages = useUiMessages();\n const refs: HTMLAnchorElement[] = [];\n const selectRelative = (currentIndex: number, direction: -1 | 1) => {\n if (props.options.length === 0) return;\n refs[(currentIndex + direction + props.options.length) % props.options.length]?.click();\n };\n const onKeyDown = (event: KeyboardEvent, index: number) => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n selectRelative(index, 1);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n selectRelative(index, -1);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n refs[event.key === \"Home\" ? 0 : props.options.length - 1]?.click();\n }\n };\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={messages().calendarView}\n aria-orientation=\"horizontal\"\n class=\"k2b-segmented-control k2b-calendar-view-switcher\"\n >\n <For each={props.options}>\n {(option, index) => {\n const active = () => (props.view === \"mobile-month\" ? \"month\" : props.view) === option.value;\n const href = () => props.owner.getViewHref?.(option.value) ?? \"#\";\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={href()}\n anchorProps={{\n ref: (element) => {\n refs[index()] = element;\n },\n role: \"radio\",\n \"aria-checked\": active(),\n tabIndex: active() ? 0 : -1,\n class: \"k2b-segmented-control__option\",\n \"data-divider\":\n index() < props.options.length - 1 &&\n !active() &&\n (props.view === \"mobile-month\" ? \"month\" : props.view) !== props.options[index() + 1]?.value\n ? \"true\"\n : undefined,\n onKeyDown: (event) => onKeyDown(event, index()),\n }}\n >\n {option.label}\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n );\n};\n\nconst adjacentCalendarDate = (date: Date, view: CalendarView, direction: -1 | 1, dateConfig: DateContext) => {\n if (view === \"year\") return calendar.addMonths(date, direction * 12, dateConfig);\n if (view === \"month\" || view === \"mobile-month\") return calendar.addMonths(date, direction, dateConfig);\n return calendar.addDays(date, direction * (view === \"day\" ? 1 : 7), dateConfig);\n};\n\nconst CalendarHeader = (props: { date: Date; view: CalendarView; labels: Required<CalendarLabels>; owner: CalendarProps }): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = () => ownerDateConfig(props.owner);\n const previous = () => adjacentCalendarDate(props.date, props.view, -1, dateConfig());\n const next = () => adjacentCalendarDate(props.date, props.view, 1, dateConfig());\n const title = () => {\n if (props.view === \"year\")\n return new Intl.DateTimeFormat(dateConfig().locale ?? \"en\", { year: \"numeric\", timeZone: dateConfig().timeZone }).format(props.date);\n if (props.view === \"day\")\n return props.date.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n if (props.view === \"week\")\n return `${formatDay(calendar.startOfWeek(props.date, dateConfig()), dateConfig())} - ${formatDay(calendar.addDays(calendar.startOfWeek(props.date, dateConfig()), 6, dateConfig()), dateConfig())}`;\n return formatMonth(props.date, dateConfig());\n };\n const goDate = (date: Date) => props.owner.onDateChange?.(date, props.view);\n const goView = (view: CalendarView) => {\n if (props.owner.onViewChange) {\n props.owner.onViewChange(view);\n return;\n }\n const href = props.owner.getViewHref?.(view);\n if (href) window.location.href = href;\n };\n const navButton = (date: Date, icon: string, label: string) => {\n const href = props.owner.getDateHref?.(date, props.view);\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n anchorProps={{ \"aria-label\": label, title: label, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <button type=\"button\" aria-label={label} class=\"k2b-calendar-header__nav-button\" onClick={() => goDate(date)}>\n <i class={`ti ${icon}`} />\n </button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n anchorProps={{ \"aria-label\": label, title: label, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n );\n };\n const todayButton = () => {\n const today = calendar.today(dateConfig());\n const href = props.owner.getDateHref?.(today, props.view);\n const label = <span class=\"k2b-button__label\">{props.labels.today}</span>;\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n anchorProps={{ class: \"k2b-button k2b-calendar-header__today\", \"data-size\": \"sm\", \"data-variant\": \"input\" }}\n >\n {label}\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <Button type=\"button\" variant=\"input\" size=\"sm\" class=\"k2b-calendar-header__today\" onClick={() => goDate(today)}>\n {props.labels.today}\n </Button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n anchorProps={{ class: \"k2b-button k2b-calendar-header__today\", \"data-size\": \"sm\", \"data-variant\": \"input\" }}\n >\n {label}\n </CalendarNavigationLink>\n );\n };\n const viewOptions = createMemo(() =>\n (\n [\n { value: \"day\", label: props.labels.day },\n { value: \"week\", label: props.labels.week },\n { value: \"month\", label: props.labels.month },\n { value: \"year\", label: props.labels.year },\n ] satisfies Array<{ value: CalendarView; label: string }>\n ).filter((option) => !props.owner.views || props.owner.views.includes(option.value)),\n );\n\n return (\n <header class=\"k2b-calendar-header\">\n <div class=\"k2b-calendar-header__navigation\">\n {navButton(previous(), \"ti-chevron-left\", props.labels.previous)}\n {navButton(next(), \"ti-chevron-right\", props.labels.next)}\n <div class=\"k2b-calendar-header__title\">{title()}</div>\n </div>\n <div class=\"k2b-calendar-header__actions\">\n {todayButton()}\n <Show\n when={!props.owner.onViewChange && props.owner.getViewHref}\n fallback={\n <SegmentedControl\n value={() => (props.view === \"mobile-month\" ? \"month\" : props.view)}\n onValueChange={goView}\n ariaLabel={messages().calendarView}\n options={viewOptions()}\n />\n }\n >\n <CalendarViewLinks owner={props.owner} view={props.view} options={viewOptions()} />\n </Show>\n {props.owner.toolbarActions}\n </div>\n <Show when={props.owner.navigationPending}>\n <span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\" />\n </Show>\n </header>\n );\n};\n\nconst MonthView = (props: {\n owner: CalendarProps;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n compact?: boolean;\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const [movePreview, setMovePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const month = createMemo(() => zonedYearMonth(props.date, dateConfig()));\n const weeks = createMemo(() => calendar.getMonthGrid(month().year, month().month, dateConfig()));\n const weekdays = createMemo(() => calendar.weekdays(dateConfig()));\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const clearMove = () => {\n setMovePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const startMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, ...moveEventToDay(event, day, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setMovePreview,\n onCommit: (next) => {\n clearMove();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearMove,\n });\n };\n onCleanup(() => cancelInteraction?.());\n return (\n <div\n class=\"k2b-calendar-month\"\n // The mobile month is a bounded picker: finger-sized weeks that keep the selected day's agenda close below.\n style={{ \"grid-template-rows\": `auto repeat(${weeks().length}, ${props.compact ? \"minmax(2.75rem, auto)\" : \"minmax(5rem, 1fr)\"})` }}\n >\n <div class=\"k2b-calendar-month__weekdays\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__weekday\">{messages().weekShort}</div>\n </Show>\n <For each={weekdays()}>{(day) => <div class=\"k2b-calendar-month__weekday\">{day}</div>}</For>\n </div>\n <For each={weeks()}>\n {(week) => (\n <div class=\"k2b-calendar-month__week\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__week-number\">{zonedWeekNumber(week[0]!, dateConfig())}</div>\n </Show>\n <For each={week}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const events = eventsByDay().get(dayKey) ?? [];\n const href = props.owner.getDateHref?.(day, \"day\");\n const dayBadge = props.owner.dayBadges?.[dayKey];\n const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());\n const isToday = dayKey === todayKey();\n const dayLabel = day.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const eventStack = createMemo(() => {\n const preview = movePreview();\n const previewForDay = preview && calendar.formatDateKey(preview.start, dateConfig()) === dayKey ? preview : null;\n const candidates = previewForDay ? events.filter((event) => event.id !== previewForDay.id) : events;\n const visibleLimit = previewForDay ? 2 : 3;\n return {\n preview: previewForDay,\n visibleEvents: candidates.slice(0, visibleLimit),\n hiddenCount: Math.max(0, candidates.length - visibleLimit),\n };\n });\n return (\n <div\n class=\"k2b-calendar-month__day\"\n data-calendar-day-key={dayKey}\n data-outside={!sameMonth ? \"true\" : undefined}\n data-drop-preview={\n movePreview()?.start && calendar.formatDateKey(movePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n >\n <Show\n when={props.owner.onSlotActivate}\n fallback={\n <Show when={href}>\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-target\",\n \"aria-label\": messages().openDate({ label: dayLabel }),\n }}\n />\n )}\n </Show>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-calendar-month__day-target\"\n data-interactive=\"true\"\n aria-label={messages().createEventOn({ label: dayLabel })}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n true,\n )}\n />\n </Show>\n <div class=\"k2b-calendar-month__day-header\">\n <Show\n when={props.owner.onSlotActivate && href}\n fallback={\n <span\n class=\"k2b-calendar-month__day-number\"\n data-today={isToday ? \"true\" : undefined}\n data-outside={!sameMonth ? \"true\" : undefined}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </span>\n }\n >\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-number\",\n \"data-today\": isToday ? \"true\" : undefined,\n \"data-outside\": !sameMonth ? \"true\" : undefined,\n \"aria-label\": messages().openDate({ label: dayLabel }),\n }}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </CalendarNavigationLink>\n )}\n </Show>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-month__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-month__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </div>\n <div class=\"k2b-calendar-month__events\">\n <Show when={eventStack().preview}>\n <div class=\"k2b-calendar-preview\">\n {props.events.find((event) => event.id === eventStack().preview!.id)?.title ?? messages().moveEvent}\n </div>\n </Show>\n <For each={eventStack().visibleEvents}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n <Show when={eventStack().hiddenCount > 0}>\n <CalendarNavigationLink owner={props.owner} href={href ?? \"#\"} anchorProps={{ class: \"k2b-calendar-month__more\" }}>\n +{eventStack().hiddenCount} more\n </CalendarNavigationLink>\n </Show>\n </div>\n <div class=\"k2b-calendar-month__dots\">\n <For each={events.slice(0, 4)}>\n {(event) => (\n <span\n class=\"k2b-calendar-dot\"\n data-color={event.colorHex ? undefined : (event.color ?? \"blue\")}\n style={event.colorHex ? { \"background-color\": event.colorHex } : undefined}\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n );\n};\n\nconst TimeGridView = (props: {\n owner: CalendarProps;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n days: Date[];\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const gridStartHour = () => props.owner.visibleStartHour ?? 0;\n const gridEndHour = () => props.owner.visibleEndHour ?? 23;\n const businessStartHour = () => props.owner.startHour ?? 8;\n const businessEndHour = () => props.owner.endHour ?? 18;\n const hours = createMemo(() => Array.from({ length: gridEndHour() - gridStartHour() + 1 }, (_, index) => gridStartHour() + index));\n const [timePreview, setTimePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n const [expandedOverflow, setExpandedOverflow] = createSignal(\"\");\n let scrollContainer: HTMLDivElement | undefined;\n let timeGrid: HTMLDivElement | undefined;\n let timeGutter: HTMLDivElement | undefined;\n let defaultHourMarker: HTMLDivElement | undefined;\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const slotEnd = (start: Date) => addMinutes(start, 60);\n const previewEvents = createMemo(() => previewSegments(timePreview(), props.days, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, { allDay: NormalizedEvent[]; timed: NormalizedEvent[] }>();\n for (const event of props.events) {\n const bucket = grouped.get(event.dayKey) ?? { allDay: [], timed: [] };\n (event.allDay ? bucket.allDay : bucket.timed).push(event);\n grouped.set(event.dayKey, bucket);\n }\n return grouped;\n });\n const clearInteraction = () => {\n setTimePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const timeAtPoint = (clientX: number, clientY: number): Date | null => {\n if (!timeGrid || !timeGutter) return null;\n const gridRect = timeGrid.getBoundingClientRect();\n const gutterRect = timeGutter.getBoundingClientRect();\n const dayIndex = calendarDayIndexAtPoint(clientX, gutterRect.right, gridRect.right - gutterRect.right, props.days.length);\n if (dayIndex === null) return null;\n const minute = Math.min(\n gridEndHour() * 60 + 45,\n calendarMinuteAtPoint(clientY, gridRect.top, gridRect.height, gridStartHour(), gridEndHour()),\n );\n return zonedMinuteSlot(props.days[dayIndex]!, minute, dateConfig());\n };\n const beginInteraction = (options: Parameters<typeof startCalendarPointerSession<CalendarPreview>>[0]) => {\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession(options);\n };\n const startTimedMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n const pointerStart = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? event.sourceStartDate;\n const duration = Math.max(15 * 60_000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const offsetMinutes = Math.max(\n 0,\n Math.min(duration / 60_000, Math.round((pointerStart.getTime() - event.sourceStartDate.getTime()) / 900_000) * 15),\n );\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const start = new Date(pointer.getTime() - offsetMinutes * 60_000);\n return { id: event.id, title: event.title, start, end: new Date(start.getTime() + duration), allDay: false };\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startAllDayMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n beginInteraction({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, title: event.title, ...moveEventTo(event, startOfDay(day, dateConfig()), true, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startRange = (pointerEvent: PointerEvent) => {\n if (!props.owner.onSlotActivate || pointerEvent.pointerType === \"touch\") return;\n const anchor = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY);\n if (!anchor) return;\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const current = timeAtPoint(clientX, clientY);\n if (!current) return null;\n const start = current < anchor ? current : anchor;\n const endBase = current < anchor ? anchor : current;\n return { id: \"calendar-create-preview\", start, end: addMinutes(endBase, 15), allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n props.owner.onSlotActivate?.(next);\n },\n onCancel: clearInteraction,\n });\n };\n const timeRangeLayout = (startDate: Date, endDate: Date) => {\n const start = zonedHour(startDate, dateConfig());\n const end = zonedHour(endDate, dateConfig());\n const visibleStart = Math.max(gridStartHour(), start);\n const visibleEnd = Math.min(gridEndHour() + 1, end);\n const total = Math.max(1, gridEndHour() - gridStartHour() + 1);\n return {\n top: Math.max(0, ((visibleStart - gridStartHour()) / total) * 100),\n height: Math.max(1.25, ((visibleEnd - visibleStart) / total) * 100),\n };\n };\n const eventLayout = (event: NormalizedEvent) => timeRangeLayout(event.startDate, event.endDate);\n const isDayView = () => props.days.length === 1;\n const visibleLaneCount = (lanes: number) => (isDayView() ? lanes : Math.min(lanes, 3));\n const overflowLayouts = (layouts: TimedEventLayout[]): TimedOverflowLayout[] => {\n if (isDayView()) return [];\n const groups = new Map<number, TimedOverflowLayout>();\n for (const layout of layouts) {\n if (layout.lane < visibleLaneCount(layout.lanes)) continue;\n const existing = groups.get(layout.groupId);\n if (existing) existing.hiddenEvents.push(layout.event);\n else\n groups.set(layout.groupId, {\n groupId: layout.groupId,\n hiddenEvents: [layout.event],\n groupStartDate: layout.groupStartDate,\n groupEndDate: layout.groupEndDate,\n });\n }\n return [...groups.values()];\n };\n const dayColumnMinWidth = (layouts: TimedEventLayout[]) => {\n if (!isDayView()) return undefined;\n const lanes = Math.max(1, ...layouts.map((layout) => layout.lanes));\n return `${Math.max(32, lanes * 12)}rem`;\n };\n const laneStyle = (layoutItem: TimedEventLayout) => {\n if (isDayView()) {\n const laneWidth = 100 / layoutItem.lanes;\n return {\n left: `calc(${layoutItem.lane * laneWidth}% + 0.25rem)`,\n width: `calc(${laneWidth}% - 0.5rem)`,\n };\n }\n const visibleLanes = visibleLaneCount(layoutItem.lanes);\n return {\n left: `${layoutItem.lanes <= 1 ? 0 : (28 / Math.max(1, visibleLanes - 1)) * layoutItem.lane}%`,\n width: `${layoutItem.lanes <= 1 ? 100 : layoutItem.lanes > visibleLanes ? 68 : 72}%`,\n };\n };\n const currentTimeLine = (day: Date) => {\n const now = props.now;\n if (calendar.formatDateKey(day, dateConfig()) !== calendar.formatDateKey(now, dateConfig())) return null;\n const hour = zonedHour(now, dateConfig());\n if (hour < gridStartHour() || hour > gridEndHour() + 1) return null;\n return ((hour - gridStartHour()) / Math.max(1, gridEndHour() - gridStartHour() + 1)) * 100;\n };\n onCleanup(() => cancelInteraction?.());\n onMount(() => {\n requestAnimationFrame(() => {\n if (!scrollContainer || !defaultHourMarker) return;\n const targetTop = defaultHourMarker.getBoundingClientRect().top - scrollContainer.getBoundingClientRect().top;\n scrollContainer.scrollTo({ top: Math.max(0, scrollContainer.scrollTop + targetTop), behavior: \"smooth\" });\n });\n });\n return (\n <div class=\"k2b-calendar-time-grid\">\n <div class=\"k2b-calendar-time-grid__days\" style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}>\n <div />\n <For each={props.days}>\n {(day) => {\n const dayBadge = props.owner.dayBadges?.[calendar.formatDateKey(day, dateConfig())];\n const today = () => calendar.isToday(day, dateConfig());\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day, \"day\") ?? \"#\"}\n anchorProps={{ class: \"k2b-calendar-time-grid__day\" }}\n >\n <span class=\"k2b-calendar-time-grid__day-label\" data-today={today() ? \"true\" : undefined}>\n {formatDay(day, dateConfig())}\n </span>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-time-grid__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-time-grid__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n <Show when={!props.owner.hideAllDay}>\n <div\n class=\"k2b-calendar-time-grid__all-day\"\n style={{\n \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))`,\n \"max-height\": `${props.owner.allDayMaxHeightRem ?? 7}rem`,\n }}\n >\n <div class=\"k2b-calendar-time-grid__all-day-label\">{props.labels.allDay}</div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const allDay = () => eventsByDay().get(dayKey)?.allDay ?? [];\n const previewAllDay = previewEvents().filter((event) => event.dayKey === dayKey && event.allDay);\n return (\n <div\n class=\"k2b-calendar-time-grid__all-day-cell\"\n data-calendar-day-key={dayKey}\n data-drop-preview={\n timePreview()?.allDay && calendar.formatDateKey(timePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n >\n <div class=\"k2b-calendar-time-grid__all-day-events\">\n <For each={previewAllDay}>{(event) => <div class=\"k2b-calendar-preview\">{event.title}</div>}</For>\n <For each={allDay()}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startAllDayMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n </Show>\n <div ref={scrollContainer} class=\"k2b-calendar-time-grid__scroll\">\n <div\n ref={timeGrid}\n class=\"k2b-calendar-time-grid__grid\"\n style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}\n >\n <div\n ref={timeGutter}\n class=\"k2b-calendar-time-grid__gutter\"\n style={{ \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))` }}\n >\n <For each={hours()}>\n {(hour) => (\n <div\n ref={(element) => {\n if (hour === businessStartHour()) defaultHourMarker = element;\n }}\n class=\"k2b-calendar-time-grid__hour\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n >\n {`${hour}`.padStart(2, \"0\")}:00\n </div>\n )}\n </For>\n </div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));\n return (\n <div\n class=\"k2b-calendar-time-grid__column\"\n style={{\n \"min-width\": dayColumnMinWidth(layouts()),\n \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))`,\n }}\n >\n <Show when={currentTimeLine(day) !== null}>\n <div class=\"k2b-calendar-time-grid__now\" style={{ top: `${currentTimeLine(day) ?? 0}%` }} />\n </Show>\n <For each={hours()}>\n {(hour) => (\n <div\n class=\"k2b-calendar-time-grid__slot\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = zonedSlot(day, hour, dateConfig());\n return { start, end: slotEnd(start), allDay: false };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n onPointerDown={startRange}\n />\n )}\n </For>\n <For each={previewEvents().filter((event) => event.dayKey === dayKey && !event.allDay)}>\n {(event) => {\n const layout = eventLayout(event);\n const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;\n return (\n <div\n class=\"k2b-calendar-preview k2b-calendar-preview--timed\"\n data-short={short ? \"true\" : undefined}\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n >\n <div class=\"k2b-calendar-preview__content\">\n <Show when={event.title}>\n <div class=\"k2b-calendar-preview__title\">{event.title}</div>\n </Show>\n <div class=\"k2b-calendar-preview__label\">\n {formatTime(event.startDate, dateConfig())} - {formatTime(event.endDate, dateConfig())}\n </div>\n </div>\n </div>\n );\n }}\n </For>\n <For each={layouts()}>\n {(layoutItem) => {\n if (!isDayView() && layoutItem.lane >= visibleLaneCount(layoutItem.lanes)) return null;\n const event = layoutItem.event;\n const layout = eventLayout(event);\n const position = laneStyle(layoutItem);\n const resizeStart = (pointerEvent: PointerEvent) => {\n if (!props.owner.onEventResize) return;\n pointerEvent.preventDefault();\n pointerEvent.stopPropagation();\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n threshold: 1,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const minimumEnd = addMinutes(event.sourceStartDate, 15);\n const end = pointer > minimumEnd ? pointer : minimumEnd;\n return { id: event.id, title: event.title, start: event.sourceStartDate, end, allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventResize?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n return (\n <div\n class=\"k2b-calendar-time-grid__event-position\"\n style={{\n top: `${layout.top}%`,\n height: `${layout.height}%`,\n left: position.left,\n width: position.width,\n \"z-index\": String(20 + layoutItem.lane),\n }}\n >\n <div class=\"k2b-calendar-time-grid__event-frame\">\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n fill\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startTimedMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n <Show when={props.owner.onEventResize}>\n <button\n type=\"button\"\n aria-label={messages().resizeEvent}\n draggable={false}\n class=\"k2b-calendar-time-grid__resize\"\n onPointerDown={resizeStart}\n onDragStart={(event) => event.preventDefault()}\n >\n <span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </div>\n );\n }}\n </For>\n <For each={overflowLayouts(layouts())}>\n {(overflow) => {\n const layout = timeRangeLayout(overflow.groupStartDate, overflow.groupEndDate);\n const key = `${dayKey}-${overflow.groupId}`;\n const hiddenTitle = () =>\n overflow.hiddenEvents.map((event) => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join(\"\\n\");\n return (\n <>\n <button\n type=\"button\"\n class=\"k2b-calendar-time-grid__overflow\"\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n title={hiddenTitle()}\n aria-label={messages().hiddenOverlappingEvents({ count: overflow.hiddenEvents.length })}\n onClick={(event) => {\n event.stopPropagation();\n setExpandedOverflow(expandedOverflow() === key ? \"\" : key);\n }}\n >\n <span class=\"k2b-calendar-time-grid__overflow-count\">+{overflow.hiddenEvents.length}</span>\n </button>\n <Show when={expandedOverflow() === key}>\n <div class=\"k2b-calendar-time-grid__overflow-menu\" style={{ top: `${layout.top}%` }}>\n <div class=\"k2b-calendar-time-grid__overflow-title\">\n {formatTime(overflow.groupStartDate, dateConfig())} - {formatTime(overflow.groupEndDate, dateConfig())}\n </div>\n <For each={overflow.hiddenEvents}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} compact />}\n </For>\n </div>\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n }}\n </For>\n </div>\n </div>\n </div>\n );\n};\n\nconst YearView = (props: { owner: CalendarProps; date: Date; now: Date; events: NormalizedEvent[] }): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const year = createMemo(() => zonedYearMonth(props.date, dateConfig()).year);\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const months = createMemo(() => {\n const context = dateConfig();\n return Array.from({ length: 12 }, (_, month) => {\n const date = zonedMonthDate(year(), month, context);\n return {\n date,\n label: date.toLocaleDateString(context.locale ?? \"en\", { month: \"long\", timeZone: context.timeZone }),\n days: calendar\n .getMonthGrid(year(), month, context)\n .flat()\n .map((day) => {\n const key = calendar.formatDateKey(day, context);\n return {\n date: day,\n events: eventsByDay().get(key) ?? [],\n isToday: key === todayKey(),\n outside: !calendar.isSameMonth(day, date, context),\n number: calendar.formatDayNumber(day, context),\n };\n }),\n };\n });\n });\n\n return (\n <div class=\"k2b-calendar-year\">\n <For each={months()}>\n {(month) => (\n <div class=\"k2b-calendar-year__month\">\n <div class=\"k2b-calendar-year__title\">{month.label}</div>\n <div class=\"k2b-calendar-year__grid\">\n <For each={month.days}>\n {(day) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day.date, \"day\") ?? \"#\"}\n anchorProps={{\n class: \"k2b-calendar-year__day\",\n \"data-today\": day.isToday ? \"true\" : undefined,\n \"data-outside\": day.outside ? \"true\" : undefined,\n }}\n >\n {day.number}\n <Show when={day.events[0]}>\n {(event) => (\n <span\n class=\"k2b-calendar-year__indicator\"\n data-color={event().colorHex ? undefined : (event().color ?? \"blue\")}\n data-today={day.isToday ? \"true\" : undefined}\n style={event().colorHex ? { \"background-color\": day.isToday ? \"white\" : event().colorHex } : undefined}\n />\n )}\n </Show>\n </CalendarNavigationLink>\n )}\n </For>\n </div>\n </div>\n )}\n </For>\n </div>\n );\n};\n\nconst MobileMonthView = (props: {\n owner: CalendarProps;\n date: Date;\n now: Date;\n selectedDate: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n}): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));\n const selectedEvents = createMemo(() => props.events.filter((event) => event.dayKey === selectedDateKey()));\n return (\n <div class=\"k2b-calendar-mobile-month\">\n <MonthView\n owner={{ ...props.owner, withWeekNumbers: false }}\n date={props.date}\n now={props.now}\n events={props.events}\n labels={props.labels}\n compact\n />\n <div class=\"k2b-calendar-mobile-month__agenda\">\n <div class=\"k2b-calendar-mobile-month__title\">\n {props.selectedDate.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n })}\n </div>\n <Show when={selectedEvents().length > 0} fallback={<div class=\"k2b-calendar-mobile-month__empty\">{props.labels.noEvents}</div>}>\n <div class=\"k2b-calendar-mobile-month__events\">\n <For each={selectedEvents()}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} />}\n </For>\n </div>\n </Show>\n </div>\n </div>\n );\n};\n\nconst CalendarBody = (props: { children: JSX.Element }): JSX.Element => <div class=\"k2b-calendar-body\">{props.children}</div>;\n\nconst Calendar = (props: CalendarProps): JSX.Element => {\n const messages = useUiMessages();\n // Subviews derive their date config from the owner props, so the inherited\n // render locale is merged here once; an explicit dateConfig.locale wins.\n const localizedConfig = useDateConfigLocale(() => props.dateConfig);\n const owner = mergeProps(props, {\n get dateConfig(): DateContext {\n return localizedConfig();\n },\n });\n const view = () => props.view ?? \"month\";\n const dateConfig = createMemo(() => ownerDateConfig(owner));\n const safeDate = (value: Date | string) => {\n const parsed = parseDate(value, dateConfig());\n return validDate(parsed) ? parsed : calendar.today(dateConfig());\n };\n const date = createMemo(() => safeDate(props.date));\n const selectedDate = createMemo(() => safeDate(props.selectedDate ?? props.date));\n const [now, setNow] = createSignal(new Date());\n const normalizedEvents = createMemo(() => normalizeEvents(props.events, dateConfig()));\n const mergedLabels = createMemo<Required<CalendarLabels>>(() => ({\n today: messages().today,\n day: messages().day,\n week: messages().week,\n month: messages().month,\n year: messages().year,\n allDay: messages().allDay,\n noEvents: messages().noEvents,\n previous: messages().previous,\n next: messages().next,\n ...props.labels,\n }));\n const days = createMemo(() => {\n if (view() === \"day\") return [date()];\n return calendar.getWeekDays(date(), dateConfig());\n });\n onMount(() => {\n const updateNow = () => setNow(new Date());\n const interval = window.setInterval(updateNow, 60_000);\n document.addEventListener(\"visibilitychange\", updateNow);\n onCleanup(() => {\n window.clearInterval(interval);\n document.removeEventListener(\"visibilitychange\", updateNow);\n });\n });\n\n return (\n <section class={`k2b-content-calendar ${props.class ?? \"\"}`} aria-busy={props.navigationPending ? \"true\" : undefined}>\n <CalendarHeader date={date()} view={view()} labels={mergedLabels()} owner={owner} />\n {props.toolbarContent}\n <Show\n when={view() !== \"month\"}\n fallback={\n <CalendarBody>\n <MonthView owner={owner} date={date()} now={now()} events={normalizedEvents()} labels={mergedLabels()} />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"year\"}\n fallback={\n <CalendarBody>\n <YearView owner={owner} date={date()} now={now()} events={normalizedEvents()} />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"mobile-month\"}\n fallback={\n <CalendarBody>\n <MobileMonthView\n owner={owner}\n date={date()}\n now={now()}\n selectedDate={selectedDate()}\n events={normalizedEvents()}\n labels={mergedLabels()}\n />\n </CalendarBody>\n }\n >\n <TimeGridView owner={owner} date={date()} now={now()} events={normalizedEvents()} labels={mergedLabels()} days={days()} />\n </Show>\n </Show>\n </Show>\n </section>\n );\n};\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}