@k2b/ui 0.44.0 → 0.45.0

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 (123) hide show
  1. package/dist/browser/actions/Tabs.js +3 -4
  2. package/dist/browser/actions/Tabs.js.map +1 -1
  3. package/dist/browser/actions/menu-sheet.js +2 -3
  4. package/dist/browser/actions/menu-sheet.js.map +1 -1
  5. package/dist/browser/actions/phone-sheet.js +4 -0
  6. package/dist/browser/actions/phone-sheet.js.map +1 -0
  7. package/dist/browser/content/DataTable.js +47 -51
  8. package/dist/browser/content/DataTable.js.map +1 -1
  9. package/dist/browser/feedback/dialog-core.js +5 -1
  10. package/dist/browser/feedback/dialog-core.js.map +1 -1
  11. package/dist/browser/feedback/dialog-tone.js +26 -0
  12. package/dist/browser/feedback/dialog-tone.js.map +1 -0
  13. package/dist/browser/feedback/index.js.map +1 -1
  14. package/dist/browser/feedback/prompt-confirm.js +223 -0
  15. package/dist/browser/feedback/prompt-confirm.js.map +1 -0
  16. package/dist/browser/feedback/prompts.js +195 -343
  17. package/dist/browser/feedback/prompts.js.map +1 -1
  18. package/dist/browser/inputs/ChoiceList.js +45 -17
  19. package/dist/browser/inputs/ChoiceList.js.map +1 -1
  20. package/dist/browser/inputs/DatePicker.js +1647 -334
  21. package/dist/browser/inputs/DatePicker.js.map +1 -1
  22. package/dist/browser/inputs/TextInput.js +5 -4
  23. package/dist/browser/inputs/TextInput.js.map +1 -1
  24. package/dist/browser/inputs/date-input-messages.js +128 -0
  25. package/dist/browser/inputs/date-input-messages.js.map +1 -0
  26. package/dist/browser/inputs/date-input-status.js +132 -0
  27. package/dist/browser/inputs/date-input-status.js.map +1 -0
  28. package/dist/browser/inputs/date-input.js +334 -0
  29. package/dist/browser/inputs/date-input.js.map +1 -0
  30. package/dist/browser/inputs/date-sheet.js +49 -0
  31. package/dist/browser/inputs/date-sheet.js.map +1 -0
  32. package/dist/browser/internal/reveal-in-scroller.js +28 -0
  33. package/dist/browser/internal/reveal-in-scroller.js.map +1 -0
  34. package/dist/browser/intl/messages.js +6 -0
  35. package/dist/browser/intl/messages.js.map +1 -1
  36. package/dist/browser/layout/AppWorkspace.js +536 -512
  37. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  38. package/dist/browser/layout/BottomSheet.js +3 -0
  39. package/dist/browser/layout/BottomSheet.js.map +1 -1
  40. package/dist/browser/layout/PanelDialog.js +167 -132
  41. package/dist/browser/layout/PanelDialog.js.map +1 -1
  42. package/dist/browser/layout/Settings.js +175 -139
  43. package/dist/browser/layout/Settings.js.map +1 -1
  44. package/dist/browser/layout/SettingsModal.js +2 -4
  45. package/dist/browser/layout/SettingsModal.js.map +1 -1
  46. package/dist/browser/layout/index.js.map +1 -1
  47. package/dist/browser/surfaces/StatusBadge.js +47 -14
  48. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  49. package/dist/browser/text-editor/TextEditor.js +7 -0
  50. package/dist/browser/text-editor/TextEditor.js.map +1 -1
  51. package/dist/ssr/actions/Tabs.js +3 -4
  52. package/dist/ssr/actions/Tabs.js.map +1 -1
  53. package/dist/ssr/actions/menu-sheet.js +2 -3
  54. package/dist/ssr/actions/menu-sheet.js.map +1 -1
  55. package/dist/ssr/actions/phone-sheet.js +4 -0
  56. package/dist/ssr/actions/phone-sheet.js.map +1 -0
  57. package/dist/ssr/content/DataTable.js +1 -2
  58. package/dist/ssr/content/DataTable.js.map +1 -1
  59. package/dist/ssr/feedback/dialog-core.js +5 -1
  60. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  61. package/dist/ssr/feedback/dialog-tone.js +26 -0
  62. package/dist/ssr/feedback/dialog-tone.js.map +1 -0
  63. package/dist/ssr/feedback/index.js.map +1 -1
  64. package/dist/ssr/feedback/prompt-confirm.js +123 -0
  65. package/dist/ssr/feedback/prompt-confirm.js.map +1 -0
  66. package/dist/ssr/feedback/prompts.js +60 -132
  67. package/dist/ssr/feedback/prompts.js.map +1 -1
  68. package/dist/ssr/inputs/ChoiceList.js +29 -9
  69. package/dist/ssr/inputs/ChoiceList.js.map +1 -1
  70. package/dist/ssr/inputs/DatePicker.js +1183 -166
  71. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  72. package/dist/ssr/inputs/TextInput.js +5 -4
  73. package/dist/ssr/inputs/TextInput.js.map +1 -1
  74. package/dist/ssr/inputs/date-input-messages.js +128 -0
  75. package/dist/ssr/inputs/date-input-messages.js.map +1 -0
  76. package/dist/ssr/inputs/date-input-status.js +132 -0
  77. package/dist/ssr/inputs/date-input-status.js.map +1 -0
  78. package/dist/ssr/inputs/date-input.js +334 -0
  79. package/dist/ssr/inputs/date-input.js.map +1 -0
  80. package/dist/ssr/inputs/date-sheet.js +44 -0
  81. package/dist/ssr/inputs/date-sheet.js.map +1 -0
  82. package/dist/ssr/internal/reveal-in-scroller.js +28 -0
  83. package/dist/ssr/internal/reveal-in-scroller.js.map +1 -0
  84. package/dist/ssr/intl/messages.js +6 -0
  85. package/dist/ssr/intl/messages.js.map +1 -1
  86. package/dist/ssr/layout/AppWorkspace.js +44 -23
  87. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  88. package/dist/ssr/layout/BottomSheet.js +3 -0
  89. package/dist/ssr/layout/BottomSheet.js.map +1 -1
  90. package/dist/ssr/layout/PanelDialog.js +48 -30
  91. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  92. package/dist/ssr/layout/Settings.js +34 -18
  93. package/dist/ssr/layout/Settings.js.map +1 -1
  94. package/dist/ssr/layout/SettingsModal.js +2 -4
  95. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  96. package/dist/ssr/layout/index.js.map +1 -1
  97. package/dist/ssr/surfaces/StatusBadge.js +26 -8
  98. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  99. package/dist/ssr/text-editor/TextEditor.js +7 -0
  100. package/dist/ssr/text-editor/TextEditor.js.map +1 -1
  101. package/dist/styles.css +1 -1
  102. package/dist/types/actions/menu-sheet.d.ts +1 -3
  103. package/dist/types/actions/phone-sheet.d.ts +3 -0
  104. package/dist/types/feedback/dialog-tone.d.ts +10 -0
  105. package/dist/types/feedback/index.d.ts +1 -0
  106. package/dist/types/feedback/prompt-confirm.d.ts +19 -0
  107. package/dist/types/feedback/prompts.d.ts +4 -8
  108. package/dist/types/inputs/ChoiceList.d.ts +7 -3
  109. package/dist/types/inputs/DatePicker.d.ts +13 -3
  110. package/dist/types/inputs/TextInput.d.ts +1 -1
  111. package/dist/types/inputs/date-input-messages.d.ts +64 -0
  112. package/dist/types/inputs/date-input-status.d.ts +35 -0
  113. package/dist/types/inputs/date-input.d.ts +90 -0
  114. package/dist/types/inputs/date-sheet.d.ts +14 -0
  115. package/dist/types/internal/reveal-in-scroller.d.ts +6 -0
  116. package/dist/types/intl/messages.d.ts +3 -0
  117. package/dist/types/layout/AppWorkspace.d.ts +14 -0
  118. package/dist/types/layout/BottomSheet.d.ts +3 -0
  119. package/dist/types/layout/PanelDialog.d.ts +3 -0
  120. package/dist/types/layout/Settings.d.ts +17 -1
  121. package/dist/types/layout/index.d.ts +1 -1
  122. package/dist/types/surfaces/StatusBadge.d.ts +5 -0
  123. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["inputs/DatePicker.tsx"],"sourcesContent":["import { type DateContext, dates } from \"@k2b/stdlib\";\nimport { createEffect, createMemo, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria, fieldDescribedBy } from \"../internal/field\";\nimport { returnFocus, ringOnReturn } from \"../internal/focus-return\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { resolveUiMessages, useUiMessages } from \"../intl/messages\";\nimport { isWeekendKey } from \"../intl/weekend\";\nimport {\n type DateRangeValue,\n dateKey,\n displayDate,\n filterTimeInput,\n formatDateOnlyRangeDuration,\n formatDateTimeValue,\n inRange,\n isCompleteTime,\n isDateKey,\n isRangeEdge,\n monthDate,\n monthNames,\n msUntilNextDay,\n normalizeTimeInput,\n parseDateValue,\n pickerContext,\n pickRangeDay,\n previewRange,\n rangeAnchor,\n resolveFocusDay,\n splitDateTime,\n toDateTimeValue,\n weekendBands,\n yearMonth,\n} from \"./date-picker\";\nimport type { MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport type { ChoiceAppearance } from \"./Select\";\n\nexport type { DateRangeValue } from \"./date-picker\";\n\nexport type DatePreset<T> = {\n label: string;\n value: T;\n};\n\nexport type DurationPreset = {\n label: string;\n minutes: number;\n};\n\nexport type DatePickerBaseProps<T> = Omit<ValueFieldProps<T>, \"value\"> & {\n placeholder?: string;\n value: MaybeAccessor<T>;\n presets?: readonly DatePreset<T>[];\n dateConfig?: DateContext;\n clearable?: boolean;\n /** `plain` shows the value as text for property rows; a clearable picker offers clearing in its panel. */\n appearance?: ChoiceAppearance;\n};\n\nexport type DatePickerProps = DatePickerBaseProps<string | null> & {\n /** Trigger content for a set value, for example the date with a relative hint. */\n renderValue?: (value: string) => JSX.Element;\n};\nexport type DateTimePickerProps = DatePickerBaseProps<string | null> & {\n /** Trigger content for a set value, for example the date and time with a relative hint. */\n renderValue?: (value: string) => JSX.Element;\n /**\n * The time is optional: the value is a date key such as `2026-10-24` until **Add time** adds one, then a date-time\n * like without this option. Removing the time returns to the date key.\n */\n optionalTime?: boolean;\n /** The time a new value starts with, `09:00` by default. */\n defaultTime?: string;\n};\nexport type DateRangePickerProps = DatePickerBaseProps<DateRangeValue> & {\n withTime?: boolean;\n datePresets?: readonly DatePreset<string | null>[];\n durationPresets?: readonly DurationPreset[];\n};\n\ntype PanelView = \"days\" | \"months\";\n\nconst popoverIsOpen = (popover: HTMLElement | undefined): boolean => {\n if (!popover) return false;\n try {\n return popover.matches(\":popover-open\");\n } catch {\n return false;\n }\n};\n\nexport const placeDatePopover = (trigger: HTMLElement, popover: HTMLElement, wide: boolean): void => {\n const margin = 8;\n const gap = 4;\n const rect = trigger.getBoundingClientRect();\n // Keep the panel at its designed width instead of stretching to a full-width\n // trigger; it only ever shrinks to fit a narrow viewport.\n const preferredWidth = wide ? 440 : 336;\n const width = Math.min(preferredWidth, window.innerWidth - margin * 2);\n popover.style.width = `${width}px`;\n\n const popoverRect = popover.getBoundingClientRect();\n const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));\n const roomBelow = window.innerHeight - rect.bottom - gap - margin;\n const roomAbove = rect.top - gap - margin;\n const opensAbove = popoverRect.height > roomBelow && roomAbove > roomBelow;\n const top = opensAbove\n ? Math.max(margin, rect.top - popoverRect.height - gap)\n : Math.min(rect.bottom + gap, window.innerHeight - popoverRect.height - margin);\n\n popover.style.left = `${left}px`;\n popover.style.top = `${Math.max(margin, top)}px`;\n};\n\nfunction PickerShell<T>(props: {\n owner: DatePickerBaseProps<T>;\n icon: string;\n valueLabel: () => string;\n valueContent?: () => JSX.Element;\n children: (close: () => void) => JSX.Element;\n clearValue: T;\n onOpen?: () => void;\n footerMeta?: () => JSX.Element;\n wide?: boolean;\n timezone?: string;\n}): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.owner.id);\n const [open, setOpen] = createSignal(false);\n const error = () => resolveMaybeAccessor(props.owner.error);\n let trigger: HTMLButtonElement | undefined;\n let popover: HTMLDivElement | undefined;\n let triggerRing = true;\n\n const place = () => {\n if (trigger && popover && open()) placeDatePopover(trigger, popover, props.wide ?? false);\n };\n\n const close = () => {\n // Before hiding, so the popover does not return focus on its own.\n if (popover?.contains(document.activeElement)) returnFocus(trigger, triggerRing);\n if (popoverIsOpen(popover)) popover?.hidePopover();\n setOpen(false);\n };\n\n const show = () => {\n if (props.owner.disabled || !popover || popoverIsOpen(popover)) return;\n props.onOpen?.();\n triggerRing = ringOnReturn(trigger);\n popover.showPopover();\n setOpen(true);\n queueMicrotask(() => {\n place();\n const initial =\n popover?.querySelector<HTMLElement>('[data-date-focus=\"true\"]') ??\n popover?.querySelector<HTMLElement>('[data-date-day]:not([data-outside=\"true\"])');\n initial?.focus();\n });\n };\n\n const toggle = () => (open() ? close() : show());\n const plain = () => props.owner.appearance === \"plain\";\n const canClear = () => Boolean(props.owner.clearable && props.valueLabel() && !props.owner.disabled);\n const clear = () => {\n close();\n commitFieldValue(props.owner, props.clearValue);\n trigger?.focus();\n };\n\n onMount(() => {\n const syncOpenState = () => setOpen(popoverIsOpen(popover));\n popover?.addEventListener(\"toggle\", syncOpenState);\n onCleanup(() => popover?.removeEventListener(\"toggle\", syncOpenState));\n });\n\n createEffect(() => {\n if (!open()) return;\n window.addEventListener(\"resize\", place);\n window.addEventListener(\"scroll\", place, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", place);\n window.removeEventListener(\"scroll\", place, true);\n });\n });\n onCleanup(close);\n\n return (\n <Field\n class={props.owner.class}\n label={props.owner.label}\n description={props.owner.description}\n error={error()}\n required={props.owner.required}\n disabled={props.owner.disabled}\n meta={meta}\n >\n <div class=\"k2b-date-picker\" data-appearance={props.owner.appearance ?? \"field\"} data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={trigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-date-trigger\"\n data-placeholder={props.valueLabel() ? undefined : \"true\"}\n data-open={open() ? \"true\" : undefined}\n disabled={props.owner.disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open()}\n aria-controls={`${meta.controlId}-popover`}\n {...fieldControlAria(meta, props.owner)}\n // A button's name replaces its content, so the shown date reaches assistive technology as the description.\n aria-describedby={[fieldDescribedBy(meta, props.owner), `${meta.controlId}-value`].filter(Boolean).join(\" \")}\n onClick={toggle}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n show();\n }\n }}\n >\n <i class={`${props.icon} k2b-date-trigger__icon`} aria-hidden=\"true\" />\n <span id={`${meta.controlId}-value`} class=\"k2b-date-trigger__value\">\n <Show when={props.valueLabel()} fallback={props.owner.placeholder ?? messages().pickDate}>\n {props.valueContent?.() ?? props.valueLabel()}\n </Show>\n </span>\n <i class=\"ti ti-chevron-down k2b-date-trigger__chevron\" aria-hidden=\"true\" />\n </button>\n\n <Show when={canClear() && !plain()}>\n <button\n type=\"button\"\n class=\"k2b-date-trigger__clear k2b-input-clear-action\"\n aria-label={messages().clearDate}\n onClick={(event) => {\n event.stopPropagation();\n clear();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n\n <div\n ref={popover}\n id={`${meta.controlId}-popover`}\n class=\"k2b-date-popover\"\n popover=\"auto\"\n role=\"dialog\"\n aria-label={typeof props.owner.label === \"string\" ? props.owner.label : messages().datePicker}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n event.preventDefault();\n close();\n }}\n onToggle={(event) => {\n const nextOpen = event.newState === \"open\";\n setOpen(nextOpen);\n if (nextOpen) queueMicrotask(place);\n }}\n >\n {props.children(close)}\n <Show when={props.footerMeta || props.timezone || (plain() && canClear())}>\n <footer class=\"k2b-date-popover__footer\">\n <span>{props.footerMeta?.()}</span>\n {/* A plain trigger has no room for a clear button beside its value. */}\n <Show when={plain() && canClear()}>\n <button type=\"button\" class=\"k2b-date-popover__clear\" onClick={clear}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n {messages().clearDate}\n </button>\n </Show>\n <Show when={props.timezone}>\n <span class=\"k2b-date-popover__timezone\">\n <i class=\"ti ti-world\" aria-hidden=\"true\" />\n {props.timezone}\n </span>\n </Show>\n </footer>\n </Show>\n </div>\n </div>\n </Field>\n );\n}\n\nfunction PresetRail<T>(props: { presets?: readonly DatePreset<T>[]; onSelect: (value: T) => void }): JSX.Element {\n const messages = useUiMessages();\n return (\n <Show when={props.presets?.length}>\n <aside class=\"k2b-date-presets\" aria-label={messages().datePresets}>\n <For each={props.presets}>\n {(preset) => (\n <button type=\"button\" onClick={() => props.onSelect(preset.value)}>\n {preset.label}\n </button>\n )}\n </For>\n </aside>\n </Show>\n );\n}\n\nfunction DatePickerPanel(props: {\n visibleMonth: () => Date;\n setVisibleMonth: (date: Date) => void;\n selected?: () => string | null | undefined;\n range?: () => DateRangeValue;\n focusDate?: () => string | null | undefined;\n onSelect: (date: string) => void;\n onDayPreview?: (date: string | null) => void;\n dateConfig?: DateContext;\n}): JSX.Element {\n const messages = useUiMessages();\n const [view, setView] = createSignal<PanelView>(\"days\");\n const context = createMemo(() => pickerContext(props.dateConfig));\n const month = createMemo(() => yearMonth(props.visibleMonth(), context()));\n const weeks = createMemo(() => dates.getMonthGrid(month().year, month().month, context()));\n const weekdays = createMemo(() => dates.weekdays(context()));\n const months = createMemo(() => monthNames(context()));\n const dayNameFormatter = createMemo(\n () =>\n new Intl.DateTimeFormat(context().locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: context().timeZone,\n }),\n );\n const dayRows = createMemo(() => {\n const visibleMonth = props.visibleMonth();\n const dateContext = context();\n const formatter = dayNameFormatter();\n return weeks().map((week) =>\n week.map((day) => ({\n day,\n key: dates.formatDateKey(day, dateContext),\n outside: !dates.isSameMonth(day, visibleMonth, dateContext),\n label: formatter.format(day),\n number: dates.formatDayNumber(day, dateContext),\n })),\n );\n });\n // Today in the picker's time zone, the zone its values use. The browser reads\n // the clock again at the next midnight there, when a hidden tab becomes visible\n // again (timers may not fire on time while the device sleeps), and when the\n // date config changes. The mark and its timer share each reading, so neither\n // starts from an old one.\n const [clockCheck, checkClock] = createSignal<void>(undefined, { equals: false });\n const now = createMemo(() => {\n clockCheck();\n context();\n return new Date();\n });\n const todayKey = createMemo(() => dateKey(now(), context()));\n // The day's name is formatted in the date locale, so \"today\" joins it in the same language.\n const todayLabel = (date: string) => resolveUiMessages(context().locale).todayDate({ date });\n createEffect(() => {\n const timer = window.setTimeout(() => checkClock(), msUntilNextDay(now(), context()));\n onCleanup(() => window.clearTimeout(timer));\n });\n onMount(() => {\n const refresh = () => {\n if (document.visibilityState === \"visible\") checkClock();\n };\n document.addEventListener(\"visibilitychange\", refresh);\n onCleanup(() => document.removeEventListener(\"visibilitychange\", refresh));\n });\n // The weekend columns of the locale, read from the first week so they follow the grid's first day of the week.\n const weekendColumns = createMemo(() => (dayRows()[0] ?? []).map((cell) => isWeekendKey(cell.key, context().locale)));\n const bands = createMemo(() => weekendBands(weekendColumns()));\n let calendar: HTMLElement | undefined;\n // Days that belong to the visible month; the roving tabindex must land on one\n // of them or the grid becomes unreachable by keyboard after month navigation.\n const monthDayKeys = createMemo(() =>\n dayRows()\n .flat()\n .filter((day) => !day.outside)\n .map((day) => day.key),\n );\n // Remembers where arrow-key navigation left off so Tab returns to that day.\n const [focusedKey, setFocusedKey] = createSignal<string>();\n const defaultFocus = createMemo(() =>\n resolveFocusDay(monthDayKeys(), focusedKey() || props.focusDate?.() || props.selected?.() || todayKey()),\n );\n\n const moveMonth = (delta: number) => props.setVisibleMonth(dates.addMonths(props.visibleMonth(), delta, context()));\n const moveYear = (delta: number) => props.setVisibleMonth(monthDate(month().year + delta, month().month, context()));\n const previousLabel = () => (view() === \"days\" ? messages().previousMonth : messages().previousYear);\n const nextLabel = () => (view() === \"days\" ? messages().nextMonth : messages().nextYear);\n\n const focusDate = (date: Date) => {\n const targetKey = dateKey(date, context());\n if (!dates.isSameMonth(date, props.visibleMonth(), context())) props.setVisibleMonth(date);\n queueMicrotask(() => calendar?.querySelector<HTMLElement>(`[data-date-day=\"${targetKey}\"]`)?.focus());\n };\n\n const handleDayKeyDown = (event: KeyboardEvent, day: Date) => {\n const deltas: Partial<Record<string, number>> = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };\n const delta = deltas[event.key];\n if (delta !== undefined) {\n event.preventDefault();\n focusDate(dates.addDays(day, delta, context()));\n return;\n }\n if (event.key === \"PageUp\" || event.key === \"PageDown\") {\n event.preventDefault();\n focusDate(dates.addMonths(day, event.key === \"PageUp\" ? -1 : 1, context()));\n return;\n }\n if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n const buttons = Array.from(\n (event.currentTarget as HTMLButtonElement).closest(\".k2b-date-grid\")!.querySelectorAll<HTMLButtonElement>(\"[data-date-day]\"),\n );\n const index = buttons.indexOf(event.currentTarget as HTMLButtonElement);\n const offset = event.key === \"Home\" ? -(index % 7) : 6 - (index % 7);\n focusDate(dates.addDays(day, offset, context()));\n }\n };\n\n return (\n <section ref={calendar} class=\"k2b-date-calendar\" aria-label={messages().calendar}>\n <header class=\"k2b-date-calendar__header\">\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(-1) : moveYear(-1))}\n aria-label={previousLabel()}\n >\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"k2b-date-calendar__title\" onClick={() => setView(view() === \"days\" ? \"months\" : \"days\")}>\n <Show when={view() === \"days\"} fallback={month().year}>\n {dates.formatMonthYear(props.visibleMonth(), context())}\n </Show>\n </button>\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(1) : moveYear(1))}\n aria-label={nextLabel()}\n >\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </button>\n </header>\n\n <Show\n when={view() === \"days\"}\n fallback={\n <div class=\"k2b-date-months\" role=\"group\" aria-label={`Months in ${month().year}`}>\n <For each={months()}>\n {(name, index) => (\n <button\n type=\"button\"\n aria-pressed={index() === month().month}\n data-selected={index() === month().month ? \"true\" : undefined}\n onClick={() => {\n props.setVisibleMonth(monthDate(month().year, index(), context()));\n setView(\"days\");\n }}\n >\n {name}\n </button>\n )}\n </For>\n </div>\n }\n >\n {/* The weekend is a calm band behind its columns, from the weekday row through the last week. The band only\n paints a background, so it never moves a day. */}\n <div class=\"k2b-date-weekdays\" aria-hidden=\"true\">\n <For each={bands()}>\n {(band) => <span class=\"k2b-date-weekend\" style={{ \"grid-column\": `${band.start + 1} / span ${band.span}` }} />}\n </For>\n <For each={weekdays()}>{(day, index) => <span data-weekend={weekendColumns()[index()] ? \"true\" : undefined}>{day}</span>}</For>\n </div>\n <div class=\"k2b-date-grid\" role=\"grid\">\n <For each={bands()}>\n {(band) => (\n <span\n class=\"k2b-date-weekend\"\n aria-hidden=\"true\"\n style={{ \"grid-column\": `${band.start + 1} / span ${band.span}`, \"grid-row\": `1 / span ${dayRows().length}` }}\n />\n )}\n </For>\n <For each={dayRows()}>\n {(week) => (\n <div class=\"k2b-date-week\" role=\"row\">\n <For each={week}>\n {(cell, cellIndex) => {\n const selected = () => props.selected?.() === cell.key;\n const range = () => props.range?.() ?? { start: null, end: null };\n const active = () => selected() || isRangeEdge(cell.key, range());\n const focusable = () => cell.key === defaultFocus();\n const today = () => cell.key === todayKey();\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n data-date-day={cell.key}\n data-date-focus={focusable() ? \"true\" : undefined}\n data-outside={cell.outside ? \"true\" : undefined}\n data-weekend={weekendColumns()[cellIndex()] ? \"true\" : undefined}\n data-in-range={inRange(cell.key, range()) && !active() ? \"true\" : undefined}\n data-today={today() ? \"true\" : undefined}\n aria-current={today() ? \"date\" : undefined}\n aria-label={today() ? todayLabel(cell.label) : cell.label}\n aria-selected={active()}\n tabIndex={focusable() ? 0 : -1}\n onClick={() => props.onSelect(cell.key)}\n onKeyDown={(event) => handleDayKeyDown(event, cell.day)}\n onBlur={() => props.onDayPreview?.(null)}\n onFocus={() => {\n setFocusedKey(cell.key);\n props.onDayPreview?.(cell.key);\n }}\n onPointerEnter={() => props.onDayPreview?.(cell.key)}\n onPointerLeave={() => props.onDayPreview?.(null)}\n >\n {cell.number}\n </button>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n </Show>\n </section>\n );\n}\n\nfunction TimeInput(props: { time: string; onChange: (time: string) => void; label?: string }): JSX.Element {\n const messages = useUiMessages();\n return (\n <label class=\"k2b-date-time\">\n <Show when={props.label}>\n <span>{props.label}</span>\n </Show>\n <span class=\"k2b-date-time__control\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n value={props.time}\n placeholder=\"09:00\"\n onInput={(event) => props.onChange(filterTimeInput(event.currentTarget.value))}\n onBlur={() => props.onChange(normalizeTimeInput(props.time))}\n aria-label={props.label ? messages().timeLabel({ label: props.label }) : messages().time}\n />\n <i class=\"ti ti-clock\" aria-hidden=\"true\" />\n </span>\n </label>\n );\n}\n\nexport function DatePicker(props: DatePickerProps): JSX.Element {\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(value(), dateConfig()));\n const valueLabel = () => displayDate(value(), dateConfig());\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar\"\n valueLabel={valueLabel}\n valueContent={props.renderValue ? () => props.renderValue!(value()!) : undefined}\n clearValue={null}\n onOpen={() => setVisibleMonth(parseDateValue(value(), dateConfig()))}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => (\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={value}\n focusDate={value}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n dateConfig={dateConfig()}\n />\n </div>\n )}\n </PickerShell>\n );\n}\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const messages = useUiMessages();\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => splitDateTime(value(), dateConfig());\n const defaultTime = () => props.defaultTime ?? \"09:00\";\n // Without `optionalTime` every value has a time; with it a date key has none.\n const valueHasTime = () => !props.optionalTime || (Boolean(value()) && !isDateKey(value()!));\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().date, dateConfig()));\n const [draftDate, setDraftDate] = createSignal(parts().date);\n const [draftTime, setDraftTime] = createSignal(parts().time || defaultTime());\n const [withTime, setWithTime] = createSignal(valueHasTime());\n const valueLabel = () => (valueHasTime() ? formatDateTimeValue(value(), dateConfig()) : displayDate(value(), dateConfig()));\n let addTimeButton: HTMLButtonElement | undefined;\n let timeField: HTMLDivElement | undefined;\n\n const syncDraft = () => {\n const next = parts();\n setDraftDate(next.date);\n setDraftTime(next.time || defaultTime());\n setWithTime(valueHasTime());\n setVisibleMonth(parseDateValue(next.date, dateConfig()));\n };\n const canApply = () => Boolean(draftDate()) && (!withTime() || isCompleteTime(draftTime()));\n const draftValue = () => (withTime() ? toDateTimeValue(draftDate(), draftTime(), dateConfig()) : draftDate() || null);\n const addTime = () => {\n setWithTime(true);\n queueMicrotask(() => timeField?.querySelector(\"input\")?.focus());\n };\n const removeTime = () => {\n setWithTime(false);\n queueMicrotask(() => addTimeButton?.focus());\n };\n\n return (\n <PickerShell\n owner={props}\n icon={props.optionalTime && !valueHasTime() ? \"ti ti-calendar\" : \"ti ti-calendar-time\"}\n valueLabel={valueLabel}\n valueContent={props.renderValue ? () => props.renderValue!(value()!) : undefined}\n clearValue={null}\n timezone={dateConfig().timeZone}\n onOpen={syncDraft}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => {\n const apply = () => {\n if (!canApply()) return;\n const next = draftValue();\n close();\n commitFieldValue(props, next);\n };\n return (\n <>\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={draftDate}\n focusDate={draftDate}\n onSelect={(value) => {\n setDraftDate(value);\n setVisibleMonth(parseDateValue(value, dateConfig()));\n // A date without a time is complete with the day, as in the date picker.\n if (props.optionalTime && !withTime()) apply();\n }}\n dateConfig={dateConfig()}\n />\n </div>\n <div class=\"k2b-date-actions\">\n <Show when={props.optionalTime} fallback={<TimeInput time={draftTime()} onChange={setDraftTime} />}>\n {/* Adding and removing the time swap controls of one height in one place, so the panel never moves. */}\n <div ref={timeField} class=\"k2b-date-optional-time\" data-with-time={withTime() ? \"true\" : undefined}>\n <Show\n when={withTime()}\n fallback={\n <button ref={addTimeButton} type=\"button\" class=\"k2b-date-optional-time__add\" onClick={addTime}>\n <i class=\"ti ti-clock-plus\" aria-hidden=\"true\" />\n {messages().addTime}\n </button>\n }\n >\n <TimeInput time={draftTime()} onChange={setDraftTime} />\n <button\n type=\"button\"\n class=\"k2b-date-optional-time__remove\"\n aria-label={messages().removeTime}\n title={messages().removeTime}\n onClick={removeTime}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Show>\n <button type=\"button\" class=\"k2b-date-apply\" disabled={!canApply()} onClick={apply}>\n {messages().apply}\n </button>\n </div>\n </>\n );\n }}\n </PickerShell>\n );\n}\n\nexport function DateRangePicker(props: DateRangePickerProps): JSX.Element {\n const messages = useUiMessages();\n const withTime = () => props.withTime ?? false;\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => ({\n start: withTime() ? splitDateTime(value().start, dateConfig()) : { date: value().start ?? \"\", time: \"09:00\" },\n end: withTime() ? splitDateTime(value().end, dateConfig()) : { date: value().end ?? \"\", time: \"10:00\" },\n });\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().start.date || parts().end.date, dateConfig()));\n const [draftRange, setDraftRange] = createSignal<DateRangeValue>({\n start: parts().start.date || null,\n end: parts().end.date || null,\n });\n // The day of the last click that started a one-day range; the next click on another day extends from it.\n const [anchor, setAnchor] = createSignal<string | null>(null);\n const [previewDate, setPreviewDate] = createSignal<string | null>(null);\n const [startTime, setStartTime] = createSignal(parts().start.time || \"09:00\");\n const [endTime, setEndTime] = createSignal(parts().end.time || \"10:00\");\n const displayRange = createMemo(() => previewRange(draftRange(), anchor(), previewDate()));\n\n const syncDraft = () => {\n const next = parts();\n setDraftRange({ start: next.start.date || null, end: next.end.date || null });\n setAnchor(null);\n setPreviewDate(null);\n setStartTime(next.start.time || \"09:00\");\n setEndTime(next.end.time || \"10:00\");\n setVisibleMonth(parseDateValue(next.start.date || next.end.date, dateConfig()));\n };\n\n const valueLabel = () => {\n if (!value().start && !value().end) return \"\";\n const format = withTime() ? formatDateTimeValue : displayDate;\n return `${value().start ? format(value().start, dateConfig()) : \"Start\"} to ${value().end ? format(value().end, dateConfig()) : \"End\"}`;\n };\n\n const valueContent = () => {\n const format = withTime() ? formatDateTimeValue : displayDate;\n return (\n <span class=\"k2b-date-range-value\">\n <span>{value().start ? format(value().start, dateConfig()) : messages().start}</span>\n <i class=\"ti ti-arrow-narrow-right\" aria-hidden=\"true\" />\n <span>{value().end ? format(value().end, dateConfig()) : \"End\"}</span>\n </span>\n );\n };\n\n const selectDate = (value: string) => {\n const next = pickRangeDay(draftRange(), anchor(), value);\n setDraftRange(next.range);\n setAnchor(next.anchor);\n setPreviewDate(null);\n };\n\n const applyDuration = (minutes: number) => {\n const current = draftRange();\n if (!current.start || !isCompleteTime(startTime())) return;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n if (!start) return;\n const end = new Date(new Date(start).getTime() + minutes * 60_000).toISOString();\n const next = splitDateTime(end, dateConfig());\n setDraftRange({ start: current.start, end: next.date || current.end || current.start });\n setEndTime(next.time || endTime());\n };\n\n const durationMinutes = createMemo(() => {\n const current = displayRange();\n if (!current.start || !current.end || !isCompleteTime(startTime()) || !isCompleteTime(endTime())) return null;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n if (!start || !end) return null;\n return Math.round((new Date(end).getTime() - new Date(start).getTime()) / 60_000);\n });\n\n const durationLabel = () => {\n const current = displayRange();\n if (!current.start || !current.end) return \"\";\n if (!withTime()) return formatDateOnlyRangeDuration(current, dateConfig());\n if (!isCompleteTime(startTime()) || !isCompleteTime(endTime())) return \"\";\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n return start && end ? dates.formatDuration(start, end, dateConfig()) : \"\";\n };\n\n const commit = (close: () => void) => {\n const current = draftRange();\n if (!withTime()) {\n close();\n commitFieldValue(props, current);\n return;\n }\n if ((current.start || current.end) && (!isCompleteTime(startTime()) || !isCompleteTime(endTime()))) return;\n const value = {\n start: current.start ? toDateTimeValue(current.start, startTime(), dateConfig()) : null,\n end: current.end ? toDateTimeValue(current.end, endTime(), dateConfig()) : null,\n };\n close();\n commitFieldValue(props, value);\n };\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar-stats\"\n valueLabel={valueLabel}\n valueContent={valueContent}\n clearValue={{ start: null, end: null }}\n timezone={withTime() ? dateConfig().timeZone : undefined}\n footerMeta={() => (\n <Show when={durationLabel()}>\n <span class=\"k2b-date-duration\">\n <i class=\"ti ti-hourglass-low\" aria-hidden=\"true\" />\n {durationLabel()}\n </span>\n </Show>\n )}\n onOpen={syncDraft}\n wide={Boolean(props.datePresets?.length || props.presets?.length)}\n >\n {(close) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <Show\n when={props.datePresets?.length}\n fallback={\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n }\n >\n <PresetRail\n presets={props.datePresets}\n onSelect={(value) => {\n setDraftRange(value ? { start: value, end: value } : { start: null, end: null });\n if (value) setVisibleMonth(parseDateValue(value, dateConfig()));\n }}\n />\n </Show>\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n range={displayRange}\n focusDate={() => draftRange().start}\n onSelect={selectDate}\n onDayPreview={(value) => setPreviewDate(rangeAnchor(draftRange(), anchor()) ? value : null)}\n dateConfig={dateConfig()}\n />\n </div>\n\n <Show when={withTime()}>\n <div class=\"k2b-date-range-times\">\n <TimeInput label={messages().start} time={startTime()} onChange={setStartTime} />\n <TimeInput label={messages().end} time={endTime()} onChange={setEndTime} />\n </div>\n </Show>\n\n <div class=\"k2b-date-actions\">\n <Show when={withTime() && props.durationPresets?.length}>\n <div class=\"k2b-date-durations\" role=\"group\" aria-label={messages().durationPresets}>\n <For each={props.durationPresets}>\n {(preset) => (\n <button type=\"button\" aria-pressed={durationMinutes() === preset.minutes} onClick={() => applyDuration(preset.minutes)}>\n {preset.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n {/* Only a half-picked range is uncommittable; an empty draft must stay\n applicable so a \"clear\" date preset can be committed. */}\n <button\n type=\"button\"\n class=\"k2b-date-apply\"\n disabled={\n Boolean(draftRange().start) !== Boolean(draftRange().end) ||\n Boolean(\n withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime())),\n )\n }\n onClick={() => commit(close)}\n >\n {messages().apply}\n </button>\n </div>\n </>\n )}\n </PickerShell>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/DatePicker.tsx"],"sourcesContent":["import { type DateContext, dates } from \"@k2b/stdlib\";\nimport { batch, createEffect, createMemo, createSignal, For, type JSX, on, onCleanup, onMount, Show } from \"solid-js\";\nimport { prefersMenuSheet } from \"../actions/phone-sheet\";\nimport { createFieldMeta, Field, fieldControlAria, fieldDescribedBy } from \"../internal/field\";\nimport { returnFocus, ringOnReturn } from \"../internal/focus-return\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { resolveUiMessages, useUiMessages } from \"../intl/messages\";\nimport { isWeekendKey } from \"../intl/weekend\";\nimport { type DateInputResult, dateInputPattern, formatDateInput, parseDateInput } from \"./date-input\";\nimport { resolveDateInputMessages } from \"./date-input-messages\";\nimport {\n type DateStatusTone,\n draftStatusText,\n errorText,\n formatDateLong,\n limitErrorText,\n rangeStatusText,\n restStatusText,\n spokenDateText,\n typingStatusText,\n} from \"./date-input-status\";\nimport {\n type DateRangeValue,\n dateKey,\n displayDate,\n filterTimeInput,\n formatDateOnlyRangeDuration,\n formatDateTimeValue,\n inRange,\n isCompleteTime,\n isDateKey,\n isRangeEdge,\n monthDate,\n monthNames,\n msUntilNextDay,\n normalizeTimeInput,\n parseDateValue,\n pickerContext,\n pickRangeDay,\n previewRange,\n rangeAnchor,\n resolveFocusDay,\n splitDateTime,\n toDateTimeValue,\n weekendBands,\n yearMonth,\n} from \"./date-picker\";\nimport type { MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport type { ChoiceAppearance } from \"./Select\";\n\nexport type { DateRangeValue } from \"./date-picker\";\n\nexport type DatePreset<T> = {\n label: string;\n value: T;\n};\n\nexport type DurationPreset = {\n label: string;\n minutes: number;\n};\n\nexport type DatePickerBaseProps<T> = Omit<ValueFieldProps<T>, \"value\"> & {\n placeholder?: string;\n value: MaybeAccessor<T>;\n presets?: readonly DatePreset<T>[];\n dateConfig?: DateContext;\n clearable?: boolean;\n /**\n * `field` (default) is a text field: people type a date or open the calendar. `plain` shows the value as text for\n * property rows and only opens the calendar; a clearable plain picker offers clearing in its panel.\n */\n appearance?: ChoiceAppearance;\n /** Earliest selectable day as a date key such as `2026-11-02`; earlier days are locked and typed ones refused. */\n min?: string;\n /** Latest selectable day as a date key. */\n max?: string;\n /** Shows and announces the value without changing it; the field stays focusable. */\n readOnly?: boolean;\n};\n\nexport type DatePickerProps = DatePickerBaseProps<string | null> & {\n /** Content for a set value: the trigger of a `plain` picker, or the resting status line of a typed field. */\n renderValue?: (value: string) => JSX.Element;\n};\nexport type DateTimePickerProps = DatePickerBaseProps<string | null> & {\n /** Trigger content for a set value, for example the date and time with a relative hint. */\n renderValue?: (value: string) => JSX.Element;\n /**\n * The time is optional: the value is a date key such as `2026-10-24` until **Add time** adds one, then a date-time\n * like without this option. Removing the time returns to the date key.\n */\n optionalTime?: boolean;\n /** The time a new value starts with, `09:00` by default. */\n defaultTime?: string;\n};\nexport type DateRangePickerProps = DatePickerBaseProps<DateRangeValue> & {\n withTime?: boolean;\n datePresets?: readonly DatePreset<string | null>[];\n durationPresets?: readonly DurationPreset[];\n};\n\ntype PanelView = \"days\" | \"months\";\n\nconst popoverIsOpen = (popover: HTMLElement | undefined): boolean => {\n if (!popover) return false;\n try {\n return popover.matches(\":popover-open\");\n } catch {\n return false;\n }\n};\n\n/** `below` is a line under the trigger that the panel must not cover, such as a typed field's status line. */\nexport const placeDatePopover = (trigger: HTMLElement, popover: HTMLElement, wide: boolean, below?: HTMLElement): void => {\n const margin = 8;\n const gap = 4;\n const triggerRect = trigger.getBoundingClientRect();\n const belowRect = below?.getBoundingClientRect();\n const rect = {\n left: triggerRect.left,\n top: triggerRect.top,\n bottom: Math.max(triggerRect.bottom, belowRect?.height ? belowRect.bottom : 0),\n };\n // Keep the panel at its designed width instead of stretching to a full-width\n // trigger; it only ever shrinks to fit a narrow viewport.\n const preferredWidth = wide ? 440 : 336;\n const width = Math.min(preferredWidth, window.innerWidth - margin * 2);\n popover.style.width = `${width}px`;\n\n const popoverRect = popover.getBoundingClientRect();\n const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));\n const roomBelow = window.innerHeight - rect.bottom - gap - margin;\n const roomAbove = rect.top - gap - margin;\n const opensAbove = popoverRect.height > roomBelow && roomAbove > roomBelow;\n const top = opensAbove\n ? Math.max(margin, rect.top - popoverRect.height - gap)\n : Math.min(rect.bottom + gap, window.innerHeight - popoverRect.height - margin);\n\n popover.style.left = `${left}px`;\n popover.style.top = `${Math.max(margin, top)}px`;\n};\n\nfunction PickerShell<T>(props: {\n owner: DatePickerBaseProps<T>;\n icon: string;\n valueLabel: () => string;\n valueContent?: () => JSX.Element;\n children: (close: () => void) => JSX.Element;\n clearValue: T;\n onOpen?: () => void;\n footerMeta?: () => JSX.Element;\n wide?: boolean;\n timezone?: string;\n}): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.owner.id);\n const [open, setOpen] = createSignal(false);\n const error = () => resolveMaybeAccessor(props.owner.error);\n let trigger: HTMLButtonElement | undefined;\n let popover: HTMLDivElement | undefined;\n let triggerRing = true;\n\n const place = () => {\n if (trigger && popover && open()) placeDatePopover(trigger, popover, props.wide ?? false);\n };\n\n const close = () => {\n // Before hiding, so the popover does not return focus on its own.\n if (popover?.contains(document.activeElement)) returnFocus(trigger, triggerRing);\n if (popoverIsOpen(popover)) popover?.hidePopover();\n setOpen(false);\n };\n\n const show = () => {\n if (props.owner.disabled || !popover || popoverIsOpen(popover)) return;\n props.onOpen?.();\n triggerRing = ringOnReturn(trigger);\n popover.showPopover();\n setOpen(true);\n queueMicrotask(() => {\n place();\n const initial =\n popover?.querySelector<HTMLElement>('[data-date-focus=\"true\"]') ??\n popover?.querySelector<HTMLElement>('[data-date-day]:not([data-outside=\"true\"])');\n initial?.focus();\n });\n };\n\n const toggle = () => (open() ? close() : show());\n const plain = () => props.owner.appearance === \"plain\";\n const canClear = () => Boolean(props.owner.clearable && props.valueLabel() && !props.owner.disabled);\n const clear = () => {\n close();\n commitFieldValue(props.owner, props.clearValue);\n trigger?.focus();\n };\n\n onMount(() => {\n const syncOpenState = () => setOpen(popoverIsOpen(popover));\n popover?.addEventListener(\"toggle\", syncOpenState);\n onCleanup(() => popover?.removeEventListener(\"toggle\", syncOpenState));\n });\n\n createEffect(() => {\n if (!open()) return;\n window.addEventListener(\"resize\", place);\n window.addEventListener(\"scroll\", place, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", place);\n window.removeEventListener(\"scroll\", place, true);\n });\n });\n onCleanup(close);\n\n return (\n <Field\n class={props.owner.class}\n label={props.owner.label}\n description={props.owner.description}\n error={error()}\n required={props.owner.required}\n disabled={props.owner.disabled}\n meta={meta}\n >\n <div class=\"k2b-date-picker\" data-appearance={props.owner.appearance ?? \"field\"} data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={trigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-date-trigger\"\n data-placeholder={props.valueLabel() ? undefined : \"true\"}\n data-open={open() ? \"true\" : undefined}\n disabled={props.owner.disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open()}\n aria-controls={`${meta.controlId}-popover`}\n {...fieldControlAria(meta, props.owner)}\n // A button's name replaces its content, so the shown date reaches assistive technology as the description.\n aria-describedby={[fieldDescribedBy(meta, props.owner), `${meta.controlId}-value`].filter(Boolean).join(\" \")}\n onClick={toggle}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n show();\n }\n }}\n >\n <i class={`${props.icon} k2b-date-trigger__icon`} aria-hidden=\"true\" />\n <span id={`${meta.controlId}-value`} class=\"k2b-date-trigger__value\">\n <Show when={props.valueLabel()} fallback={props.owner.placeholder ?? messages().pickDate}>\n {props.valueContent?.() ?? props.valueLabel()}\n </Show>\n </span>\n <i class=\"ti ti-chevron-down k2b-date-trigger__chevron\" aria-hidden=\"true\" />\n </button>\n\n <Show when={canClear() && !plain()}>\n <button\n type=\"button\"\n class=\"k2b-date-trigger__clear k2b-input-clear-action\"\n aria-label={messages().clearDate}\n onClick={(event) => {\n event.stopPropagation();\n clear();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n\n <div\n ref={popover}\n id={`${meta.controlId}-popover`}\n class=\"k2b-date-popover\"\n popover=\"auto\"\n role=\"dialog\"\n aria-label={typeof props.owner.label === \"string\" ? props.owner.label : messages().datePicker}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n event.preventDefault();\n close();\n }}\n onToggle={(event) => {\n const nextOpen = event.newState === \"open\";\n setOpen(nextOpen);\n if (nextOpen) queueMicrotask(place);\n }}\n >\n {props.children(close)}\n <Show when={props.footerMeta || props.timezone || (plain() && canClear())}>\n <footer class=\"k2b-date-popover__footer\">\n <span>{props.footerMeta?.()}</span>\n {/* A plain trigger has no room for a clear button beside its value. */}\n <Show when={plain() && canClear()}>\n <button type=\"button\" class=\"k2b-date-popover__clear\" onClick={clear}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n {messages().clearDate}\n </button>\n </Show>\n <Show when={props.timezone}>\n <span class=\"k2b-date-popover__timezone\">\n <i class=\"ti ti-world\" aria-hidden=\"true\" />\n {props.timezone}\n </span>\n </Show>\n </footer>\n </Show>\n </div>\n </div>\n </Field>\n );\n}\n\nfunction PresetRail<T>(props: { presets?: readonly DatePreset<T>[]; onSelect: (value: T) => void }): JSX.Element {\n const messages = useUiMessages();\n return (\n <Show when={props.presets?.length}>\n <aside class=\"k2b-date-presets\" aria-label={messages().datePresets}>\n <For each={props.presets}>\n {(preset) => (\n <button type=\"button\" onClick={() => props.onSelect(preset.value)}>\n {preset.label}\n </button>\n )}\n </For>\n </aside>\n </Show>\n );\n}\n\nfunction DatePickerPanel(props: {\n visibleMonth: () => Date;\n setVisibleMonth: (date: Date) => void;\n selected?: () => string | null | undefined;\n range?: () => DateRangeValue;\n focusDate?: () => string | null | undefined;\n onSelect: (date: string) => void;\n onDayPreview?: (date: string | null) => void;\n dateConfig?: DateContext;\n /** Earliest and latest selectable day as date keys. */\n min?: string;\n max?: string;\n}): JSX.Element {\n const messages = useUiMessages();\n const [view, setView] = createSignal<PanelView>(\"days\");\n const context = createMemo(() => pickerContext(props.dateConfig));\n const month = createMemo(() => yearMonth(props.visibleMonth(), context()));\n // Always six weeks: typing moves an open calendar between months, and a month with fewer weeks would resize it.\n const weeks = createMemo(() => {\n const grid = [...dates.getMonthGrid(month().year, month().month, context())];\n while (grid.length < 6) {\n const last = grid[grid.length - 1]!.at(-1)!;\n grid.push(Array.from({ length: 7 }, (_, index) => dates.addDays(last, index + 1, context())));\n }\n return grid;\n });\n const blocked = (key: string) => Boolean((props.min && key < props.min) || (props.max && key > props.max));\n const inputMessages = createMemo(() => resolveDateInputMessages(context().locale));\n const weekdays = createMemo(() => dates.weekdays(context()));\n const months = createMemo(() => monthNames(context()));\n const dayNameFormatter = createMemo(\n () =>\n new Intl.DateTimeFormat(context().locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: context().timeZone,\n }),\n );\n const dayRows = createMemo(() => {\n const visibleMonth = props.visibleMonth();\n const dateContext = context();\n const formatter = dayNameFormatter();\n return weeks().map((week) =>\n week.map((day) => ({\n day,\n key: dates.formatDateKey(day, dateContext),\n outside: !dates.isSameMonth(day, visibleMonth, dateContext),\n label: formatter.format(day),\n number: dates.formatDayNumber(day, dateContext),\n })),\n );\n });\n // Today in the picker's time zone, the zone its values use. The browser reads\n // the clock again at the next midnight there, when a hidden tab becomes visible\n // again (timers may not fire on time while the device sleeps), and when the\n // date config changes. The mark and its timer share each reading, so neither\n // starts from an old one.\n const [clockCheck, checkClock] = createSignal<void>(undefined, { equals: false });\n const now = createMemo(() => {\n clockCheck();\n context();\n return new Date();\n });\n const todayKey = createMemo(() => dateKey(now(), context()));\n // The day's name is formatted in the date locale, so \"today\" joins it in the same language.\n const todayLabel = (date: string) => resolveUiMessages(context().locale).todayDate({ date });\n createEffect(() => {\n const timer = window.setTimeout(() => checkClock(), msUntilNextDay(now(), context()));\n onCleanup(() => window.clearTimeout(timer));\n });\n onMount(() => {\n const refresh = () => {\n if (document.visibilityState === \"visible\") checkClock();\n };\n document.addEventListener(\"visibilitychange\", refresh);\n onCleanup(() => document.removeEventListener(\"visibilitychange\", refresh));\n });\n // The weekend columns of the locale, read from the first week so they follow the grid's first day of the week.\n const weekendColumns = createMemo(() => (dayRows()[0] ?? []).map((cell) => isWeekendKey(cell.key, context().locale)));\n const bands = createMemo(() => weekendBands(weekendColumns()));\n let calendar: HTMLElement | undefined;\n // Days that belong to the visible month; the roving tabindex must land on one\n // of them or the grid becomes unreachable by keyboard after month navigation.\n const monthDayKeys = createMemo(() =>\n dayRows()\n .flat()\n .filter((day) => !day.outside && !blocked(day.key))\n .map((day) => day.key),\n );\n // Remembers where arrow-key navigation left off so Tab returns to that day.\n const [focusedKey, setFocusedKey] = createSignal<string>();\n const defaultFocus = createMemo(() =>\n resolveFocusDay(monthDayKeys(), focusedKey() || props.focusDate?.() || props.selected?.() || todayKey()),\n );\n\n const moveMonth = (delta: number) => props.setVisibleMonth(dates.addMonths(props.visibleMonth(), delta, context()));\n const moveYear = (delta: number) => props.setVisibleMonth(monthDate(month().year + delta, month().month, context()));\n const previousLabel = () => (view() === \"days\" ? messages().previousMonth : messages().previousYear);\n const nextLabel = () => (view() === \"days\" ? messages().nextMonth : messages().nextYear);\n // A step whose whole month (or year) lies outside min/max is not offered.\n const stepBlocked = (delta: number) => {\n if (view() === \"days\") {\n const target = dateKey(dates.addMonths(props.visibleMonth(), delta, context()), context()).slice(0, 7);\n return Boolean((props.min && target < props.min.slice(0, 7)) || (props.max && target > props.max.slice(0, 7)));\n }\n const year = String(month().year + delta);\n return Boolean((props.min && year < props.min.slice(0, 4)) || (props.max && year > props.max.slice(0, 4)));\n };\n\n const focusDate = (date: Date) => {\n const targetKey = dateKey(date, context());\n if (blocked(targetKey)) return;\n if (!dates.isSameMonth(date, props.visibleMonth(), context())) props.setVisibleMonth(date);\n queueMicrotask(() => calendar?.querySelector<HTMLElement>(`[data-date-day=\"${targetKey}\"]`)?.focus());\n };\n\n const handleDayKeyDown = (event: KeyboardEvent, day: Date) => {\n const deltas: Partial<Record<string, number>> = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };\n const delta = deltas[event.key];\n if (delta !== undefined) {\n event.preventDefault();\n focusDate(dates.addDays(day, delta, context()));\n return;\n }\n if (event.key === \"PageUp\" || event.key === \"PageDown\") {\n event.preventDefault();\n focusDate(dates.addMonths(day, event.key === \"PageUp\" ? -1 : 1, context()));\n return;\n }\n if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n const buttons = Array.from(\n (event.currentTarget as HTMLButtonElement).closest(\".k2b-date-grid\")!.querySelectorAll<HTMLButtonElement>(\"[data-date-day]\"),\n );\n const index = buttons.indexOf(event.currentTarget as HTMLButtonElement);\n const offset = event.key === \"Home\" ? -(index % 7) : 6 - (index % 7);\n focusDate(dates.addDays(day, offset, context()));\n }\n };\n\n return (\n <section ref={calendar} class=\"k2b-date-calendar\" aria-label={messages().calendar}>\n <header class=\"k2b-date-calendar__header\">\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(-1) : moveYear(-1))}\n disabled={stepBlocked(-1)}\n aria-label={previousLabel()}\n >\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"k2b-date-calendar__title\" onClick={() => setView(view() === \"days\" ? \"months\" : \"days\")}>\n <Show when={view() === \"days\"} fallback={month().year}>\n {dates.formatMonthYear(props.visibleMonth(), context())}\n </Show>\n </button>\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(1) : moveYear(1))}\n disabled={stepBlocked(1)}\n aria-label={nextLabel()}\n >\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </button>\n </header>\n\n <Show\n when={view() === \"days\"}\n fallback={\n <div class=\"k2b-date-months\" role=\"group\" aria-label={`Months in ${month().year}`}>\n <For each={months()}>\n {(name, index) => (\n <button\n type=\"button\"\n aria-pressed={index() === month().month}\n data-selected={index() === month().month ? \"true\" : undefined}\n onClick={() => {\n props.setVisibleMonth(monthDate(month().year, index(), context()));\n setView(\"days\");\n }}\n >\n {name}\n </button>\n )}\n </For>\n </div>\n }\n >\n {/* The weekend is a calm band behind its columns, from the weekday row through the last week. The band only\n paints a background, so it never moves a day. */}\n <div class=\"k2b-date-weekdays\" aria-hidden=\"true\">\n <For each={bands()}>\n {(band) => <span class=\"k2b-date-weekend\" style={{ \"grid-column\": `${band.start + 1} / span ${band.span}` }} />}\n </For>\n <For each={weekdays()}>{(day, index) => <span data-weekend={weekendColumns()[index()] ? \"true\" : undefined}>{day}</span>}</For>\n </div>\n <div class=\"k2b-date-grid\" role=\"grid\">\n <For each={bands()}>\n {(band) => (\n <span\n class=\"k2b-date-weekend\"\n aria-hidden=\"true\"\n style={{ \"grid-column\": `${band.start + 1} / span ${band.span}`, \"grid-row\": `1 / span ${dayRows().length}` }}\n />\n )}\n </For>\n <For each={dayRows()}>\n {(week) => (\n <div class=\"k2b-date-week\" role=\"row\">\n <For each={week}>\n {(cell, cellIndex) => {\n const selected = () => props.selected?.() === cell.key;\n const range = () => props.range?.() ?? { start: null, end: null };\n const active = () => selected() || isRangeEdge(cell.key, range());\n const focusable = () => cell.key === defaultFocus();\n const today = () => cell.key === todayKey();\n const label = () => {\n const name = today() ? todayLabel(cell.label) : cell.label;\n return blocked(cell.key) ? inputMessages().notSelectable({ date: name }) : name;\n };\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n data-date-day={cell.key}\n data-date-focus={focusable() ? \"true\" : undefined}\n data-outside={cell.outside ? \"true\" : undefined}\n data-weekend={weekendColumns()[cellIndex()] ? \"true\" : undefined}\n data-in-range={inRange(cell.key, range()) && !active() ? \"true\" : undefined}\n data-today={today() ? \"true\" : undefined}\n aria-current={today() ? \"date\" : undefined}\n aria-label={label()}\n aria-selected={active()}\n disabled={blocked(cell.key)}\n tabIndex={focusable() ? 0 : -1}\n onClick={() => props.onSelect(cell.key)}\n onKeyDown={(event) => handleDayKeyDown(event, cell.day)}\n onBlur={() => props.onDayPreview?.(null)}\n onFocus={() => {\n setFocusedKey(cell.key);\n props.onDayPreview?.(cell.key);\n }}\n onPointerEnter={() => props.onDayPreview?.(cell.key)}\n onPointerLeave={() => props.onDayPreview?.(null)}\n >\n {cell.number}\n </button>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n </Show>\n <Show when={props.min || props.max}>\n <footer class=\"k2b-date-calendar__limits\">\n <span>{props.min ? inputMessages().limitFrom({ date: formatDateInput(props.min, context().locale) }) : \"\"}</span>\n <span>{props.max ? inputMessages().limitUntil({ date: formatDateInput(props.max, context().locale) }) : \"\"}</span>\n </footer>\n </Show>\n </section>\n );\n}\n\nfunction TimeInput(props: { time: string; onChange: (time: string) => void; label?: string }): JSX.Element {\n const messages = useUiMessages();\n return (\n <label class=\"k2b-date-time\">\n <Show when={props.label}>\n <span>{props.label}</span>\n </Show>\n <span class=\"k2b-date-time__control\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n value={props.time}\n placeholder=\"09:00\"\n onInput={(event) => props.onChange(filterTimeInput(event.currentTarget.value))}\n onBlur={() => props.onChange(normalizeTimeInput(props.time))}\n aria-label={props.label ? messages().timeLabel({ label: props.label }) : messages().time}\n />\n <i class=\"ti ti-clock\" aria-hidden=\"true\" />\n </span>\n </label>\n );\n}\n\n/** The calendar popover of a typed field: it lives inside the field's shell, so focus in the calendar keeps the field's focus edge. */\nfunction createCalendarPopover(options: {\n anchor: () => HTMLElement | undefined;\n below: () => HTMLElement | undefined;\n wide: () => boolean;\n}) {\n const [open, setOpen] = createSignal(false);\n let popover: HTMLDivElement | undefined;\n const place = () => {\n const anchor = options.anchor();\n if (anchor && popover && open()) placeDatePopover(anchor, popover, options.wide(), options.below());\n };\n const show = () => {\n if (!popover || popoverIsOpen(popover)) return;\n setOpen(true);\n popover.showPopover();\n place();\n };\n const close = () => {\n if (popoverIsOpen(popover)) popover?.hidePopover();\n setOpen(false);\n };\n createEffect(() => {\n if (!open()) return;\n window.addEventListener(\"resize\", place);\n window.addEventListener(\"scroll\", place, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", place);\n window.removeEventListener(\"scroll\", place, true);\n });\n });\n onCleanup(close);\n return {\n open,\n show,\n close,\n place,\n ref: (element: HTMLDivElement) => {\n popover = element;\n // The browser also hides a popover itself, for example when it leaves the top layer.\n element.addEventListener(\"toggle\", () => setOpen(popoverIsOpen(element)));\n },\n element: () => popover,\n focusDay: () => queueMicrotask(() => popover?.querySelector<HTMLElement>('[data-date-focus=\"true\"]')?.focus()),\n };\n}\n\n/** The day an empty calendar opens on: today, moved inside min/max, so a limited field never opens on locked months only. */\nconst openingDay = (value: string | null | undefined, limits: { min?: string; max?: string }, context: DateContext): string => {\n if (value) return value;\n const today = dateKey(new Date(), context);\n if (limits.min && today < limits.min) return limits.min;\n if (limits.max && today > limits.max) return limits.max;\n return today;\n};\n\nconst fieldName = (owner: { label?: JSX.Element; \"aria-label\"?: string }): string | undefined =>\n typeof owner.label === \"string\" ? owner.label : owner[\"aria-label\"];\n\n/** Clicks on the calendar's empty space keep focus where it is, so the draft and caret stay in the text. */\nconst keepFocus = (event: PointerEvent) => {\n if (!(event.target as Element).closest(\"button\")) event.preventDefault();\n};\n\nconst caretToEnd = (input: HTMLInputElement | undefined) => {\n input?.focus();\n input?.setSelectionRange(input.value.length, input.value.length);\n};\n\nfunction DateStatusLine(props: {\n id: string;\n tone: DateStatusTone;\n text: JSX.Element;\n announcement: string;\n ref?: (element: HTMLElement) => void;\n}) {\n return (\n <>\n {/* Always one line, also when empty, so typing, a mistake or a cleared value never move what follows. */}\n <p\n ref={props.ref}\n id={props.id}\n class=\"k2b-date-status\"\n data-tone={props.tone}\n title={typeof props.text === \"string\" && props.text ? props.text : undefined}\n >\n {props.text}\n </p>\n <span class=\"k2b-sr-only\" aria-live=\"polite\">\n {props.announcement}\n </span>\n </>\n );\n}\n\n/**\n * The typed date field. The text and the calendar always show the same day: typing moves the calendar, picking a day\n * fills the text, and the status line says which day the text means before it is committed.\n */\nfunction DateTextField(props: { owner: DatePickerProps; value: () => string | null; dateConfig: () => DateContext }): JSX.Element {\n const uiMessages = useUiMessages();\n const meta = createFieldMeta(props.owner.id);\n const locale = () => props.dateConfig().locale;\n const t = createMemo(() => resolveDateInputMessages(locale()));\n const today = () => dateKey(new Date(), props.dateConfig());\n const format = (key: string | null | undefined) => (key ? formatDateInput(key, locale()) : \"\");\n const limits = () => ({ min: props.owner.min, max: props.owner.max });\n const interactive = () => !props.owner.disabled && !props.owner.readOnly;\n const [text, setText] = createSignal(format(props.value()));\n const [dirty, setDirty] = createSignal(false);\n const [failure, setFailure] = createSignal<string>();\n const [announcement, setAnnouncement] = createSignal(\"\");\n const [visibleMonth, setVisibleMonth] = createSignal(\n parseDateValue(openingDay(props.value(), limits(), props.dateConfig()), props.dateConfig()),\n );\n let shell: HTMLDivElement | undefined;\n let input: HTMLInputElement | undefined;\n let toggle: HTMLButtonElement | undefined;\n let statusLine: HTMLElement | undefined;\n const [sheetOpen, setSheetOpen] = createSignal(false);\n let announceTimer: ReturnType<typeof setTimeout> | undefined;\n const calendar = createCalendarPopover({\n anchor: () => shell,\n below: () => statusLine,\n wide: () => Boolean(props.owner.presets?.length),\n });\n const popoverId = `${meta.controlId}-calendar`;\n const sheetId = `${meta.controlId}-sheet`;\n // The status line holds the field's message slot, so it carries the `<id>-error` every field family uses.\n const statusId = meta.errorId;\n\n const parse = (value: string): DateInputResult => parseDateInput(value, { today: today(), locale: locale() });\n const parsed = createMemo(() => (dirty() ? parse(text()) : undefined));\n const draftKey = () => {\n const result = parsed();\n if (!result) return props.value();\n return result.kind === \"date\" ? result.date : null;\n };\n\n // A value set from outside replaces the text, unless someone is typing.\n createEffect(\n on([props.value, locale], () => {\n if (dirty()) return;\n setText(format(props.value()));\n setFailure(undefined);\n setVisibleMonth(parseDateValue(openingDay(props.value(), limits(), props.dateConfig()), props.dateConfig()));\n }),\n );\n // The calendar follows the typed day, and a refused text stops being red once it means an allowed day.\n createEffect(\n on(parsed, (result) => {\n if (result?.kind === \"date\") {\n setVisibleMonth(parseDateValue(result.date, props.dateConfig()));\n if (!limitErrorText(result.date, limits(), locale(), t())) setFailure(undefined);\n } else if (result?.kind === \"empty\") setFailure(undefined);\n }),\n );\n onCleanup(() => clearTimeout(announceTimer));\n\n const externalError = () => resolveMaybeAccessor(props.owner.error);\n const invalid = () => Boolean(failure() || externalError());\n const status = createMemo((): { tone: DateStatusTone; text: JSX.Element } => {\n const failed = failure();\n if (failed) return { tone: \"error\", text: failed };\n const result = parsed();\n if (result?.kind === \"date\") {\n const limit = limitErrorText(result.date, limits(), locale(), t());\n return limit ? { tone: \"rest\", text: limit } : { tone: \"draft\", text: draftStatusText(result.date, result.note, locale(), t()) };\n }\n if (result?.kind === \"error\") return { tone: \"rest\", text: typingStatusText(result.error, locale(), t(), today()) };\n const external = externalError();\n if (external) return { tone: \"error\", text: external };\n const value = props.value();\n if (!value || result) return { tone: \"rest\", text: \"\" };\n return { tone: \"rest\", text: props.owner.renderValue?.(value) ?? restStatusText(value, today(), locale()) };\n });\n\n const save = (next: string | null) => {\n if (next !== props.value()) commitFieldValue(props.owner, next);\n };\n const fail = (message: string) => {\n setFailure(message);\n setAnnouncement(message);\n };\n /** Enter, leaving the field and a picked day commit; a refused text stays for correction and the value is kept. */\n const commit = () => {\n const result = parse(text());\n setDirty(false);\n if (result.kind === \"empty\") {\n if (props.owner.required) return fail(t().required);\n setFailure(undefined);\n return save(null);\n }\n if (result.kind === \"error\") return fail(errorText(result.error, locale(), t(), today()));\n const limit = limitErrorText(result.date, limits(), locale(), t());\n if (limit) return fail(limit);\n setFailure(undefined);\n setText(format(result.date));\n save(result.date);\n };\n const restore = () => {\n setText(format(props.value()));\n setDirty(false);\n setFailure(undefined);\n setVisibleMonth(parseDateValue(openingDay(props.value(), limits(), props.dateConfig()), props.dateConfig()));\n calendar.close();\n };\n const pick = (key: string | null) => {\n setText(format(key));\n setDirty(false);\n setFailure(undefined);\n save(key);\n calendar.close();\n };\n\n const openSheet = async () => {\n setSheetOpen(true);\n calendar.close();\n const { openDateSheet } = await import(\"./date-sheet\");\n await openDateSheet<string>({\n title: props.owner.label ?? props.owner[\"aria-label\"],\n subtitle: props.value() ? formatDateLong(props.value()!, locale()) : t().noDate,\n ariaLabel: fieldName(props.owner),\n id: sheetId,\n locale: locale() ?? \"en\",\n content: (close) => (\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={draftKey}\n focusDate={draftKey}\n onSelect={(key) => {\n // Saved at once: the sheet's promise settles only after its history entry has gone.\n pick(key);\n close(key);\n }}\n dateConfig={props.dateConfig()}\n min={props.owner.min}\n max={props.owner.max}\n />\n ),\n });\n setSheetOpen(false);\n toggle?.focus({ preventScroll: true });\n };\n /** Phones open the calendar as a sheet; there the text only brings up the keypad. */\n const openCalendar = (focusDay: boolean) => {\n if (!interactive()) return;\n if (prefersMenuSheet()) return void openSheet();\n if (!dirty()) setVisibleMonth(parseDateValue(openingDay(props.value(), limits(), props.dateConfig()), props.dateConfig()));\n calendar.show();\n if (focusDay) calendar.focusDay();\n };\n\n const onPointerDown = (event: PointerEvent) => {\n const target = event.target as Element;\n if (!interactive() || calendar.element()?.contains(target) || target.closest(\".k2b-date-field__clear\")) return;\n const onIcon = target.closest(\".k2b-date-field__toggle, .k2b-date-field__icon\");\n if (prefersMenuSheet()) {\n if (onIcon) {\n event.preventDefault();\n void openSheet();\n }\n return;\n }\n if (onIcon) {\n event.preventDefault();\n input?.focus();\n if (calendar.open()) calendar.close();\n else openCalendar(false);\n return;\n }\n // A pointer in the text opens the calendar and keeps the caret; Tab focus never opens it.\n if (event.button === 0 && !calendar.open()) setTimeout(() => openCalendar(false));\n };\n const onKeyDown = (event: KeyboardEvent) => {\n // A refused text keeps Enter too, so it does not submit the form around it.\n if (event.key === \"Enter\" && (dirty() || calendar.open() || failure())) {\n event.preventDefault();\n commit();\n calendar.close();\n } else if (event.key === \"Escape\" && (dirty() || calendar.open() || failure())) {\n event.preventDefault();\n event.stopPropagation();\n restore();\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n openCalendar(true);\n } else if (event.key === \"ArrowUp\" && event.altKey) {\n event.preventDefault();\n calendar.close();\n }\n };\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget as Node | null;\n if (sheetOpen() || next === input || (next && calendar.element()?.contains(next))) return;\n if (dirty()) commit();\n calendar.close();\n };\n\n return (\n <Field\n class={props.owner.class}\n label={props.owner.label}\n description={props.owner.description}\n required={props.owner.required}\n disabled={props.owner.disabled}\n meta={meta}\n >\n <div\n class=\"k2b-date-picker k2b-date-field\"\n data-open={calendar.open() ? \"true\" : undefined}\n data-readonly={props.owner.readOnly ? \"true\" : undefined}\n onFocusOut={onFocusOut}\n >\n <div ref={shell} class=\"k2b-input-shell\" data-invalid={invalid() ? \"true\" : undefined} onPointerDown={onPointerDown}>\n <span class=\"k2b-input-shell__icon k2b-date-field__icon\" aria-hidden=\"true\">\n <i class=\"ti ti-calendar\" />\n </span>\n <input\n ref={input}\n {...fieldControlAria(meta, props.owner)}\n id={meta.controlId}\n class=\"k2b-input\"\n type=\"text\"\n inputMode=\"numeric\"\n autocomplete=\"off\"\n spellcheck={false}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={calendar.open() || sheetOpen()}\n aria-controls={sheetOpen() ? sheetId : popoverId}\n aria-describedby={[props.owner[\"aria-describedby\"], props.owner.description ? meta.descriptionId : undefined, statusId]\n .filter(Boolean)\n .join(\" \")}\n aria-invalid={invalid() ? \"true\" : undefined}\n placeholder={props.owner.placeholder ?? datePattern(locale(), t())}\n value={text()}\n disabled={props.owner.disabled}\n readOnly={props.owner.readOnly}\n onInput={(event) => {\n setText(event.currentTarget.value);\n setDirty(true);\n clearTimeout(announceTimer);\n announceTimer = setTimeout(() => {\n const result = parsed();\n setAnnouncement(result?.kind === \"date\" ? spokenDateText(result.date, result.note, locale(), t()) : \"\");\n }, 500);\n }}\n onKeyDown={onKeyDown}\n />\n <Show when={props.owner.clearable && interactive()}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action k2b-date-field__clear\"\n data-hidden={text() ? undefined : \"true\"}\n aria-label={uiMessages().clearDate}\n onClick={() => {\n pick(null);\n input?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show\n when={!props.owner.readOnly}\n fallback={\n <span class=\"k2b-date-field__lock\" aria-hidden=\"true\">\n <i class=\"ti ti-lock\" />\n </span>\n }\n >\n {/* One tab stop per field: the keyboard opens the calendar with ↓ from the text. */}\n <button\n ref={toggle}\n type=\"button\"\n class=\"k2b-date-field__toggle\"\n tabIndex={-1}\n disabled={props.owner.disabled}\n aria-label={calendar.open() ? t().closeCalendar : t().openCalendar}\n aria-expanded={calendar.open() || sheetOpen()}\n aria-controls={sheetOpen() ? sheetId : popoverId}\n onClick={(event) => {\n // Pointers are handled on pointerdown; this is activation by assistive technology.\n if (event.detail === 0) openCalendar(true);\n }}\n >\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div\n ref={calendar.ref}\n id={popoverId}\n class=\"k2b-date-popover\"\n popover=\"manual\"\n role=\"dialog\"\n aria-label={fieldName(props.owner) ?? uiMessages().datePicker}\n onPointerDown={keepFocus}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\" && !(event.key === \"ArrowUp\" && event.altKey)) return;\n event.preventDefault();\n event.stopPropagation();\n calendar.close();\n input?.focus();\n }}\n >\n <Show when={calendar.open()}>\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.owner.presets}\n onSelect={(value) => {\n pick(value);\n caretToEnd(input);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={draftKey}\n focusDate={draftKey}\n onSelect={(key) => {\n pick(key);\n caretToEnd(input);\n }}\n dateConfig={props.dateConfig()}\n min={props.owner.min}\n max={props.owner.max}\n />\n </div>\n </Show>\n </div>\n </div>\n <DateStatusLine\n ref={(element) => {\n statusLine = element;\n }}\n id={statusId}\n tone={status().tone}\n text={status().text}\n announcement={announcement()}\n />\n </div>\n </Field>\n );\n}\n\nconst datePattern = (locale: string | undefined, t: ReturnType<typeof resolveDateInputMessages>) =>\n dateInputPattern(locale, { day: t.dayLetters, month: t.monthLetters, year: t.yearLetters });\n\n/** \"11.11.2026 – 14.11.2026\", \"11.11. bis 14.11.\" or \"Nov 11 to Nov 14\" pasted into either half fills both. */\nconst splitPastedRange = (text: string): [string, string] | undefined => {\n const parts = text.trim().split(/\\s*[–—]\\s*|\\s+-\\s+|\\s+(?:bis|to|until)\\s+/i);\n return parts.length === 2 && parts[0] && parts[1] ? [parts[0], parts[1]] : undefined;\n};\n\n/** A date-only range as two typed halves in one field; the calendar keeps two clicks and Apply. */\nfunction DateRangeTextField(props: {\n owner: DateRangePickerProps;\n value: () => DateRangeValue;\n dateConfig: () => DateContext;\n}): JSX.Element {\n const uiMessages = useUiMessages();\n const meta = createFieldMeta(props.owner.id);\n const locale = () => props.dateConfig().locale;\n const t = createMemo(() => resolveDateInputMessages(locale()));\n const today = () => dateKey(new Date(), props.dateConfig());\n const format = (key: string | null | undefined) => (key ? formatDateInput(key, locale()) : \"\");\n const limits = () => ({ min: props.owner.min, max: props.owner.max });\n const interactive = () => !props.owner.disabled && !props.owner.readOnly;\n const [startText, setStartText] = createSignal(format(props.value().start));\n const [endText, setEndText] = createSignal(format(props.value().end));\n const [dirty, setDirty] = createSignal(false);\n const [failure, setFailure] = createSignal<string>();\n const [announcement, setAnnouncement] = createSignal(\"\");\n const [visibleMonth, setVisibleMonth] = createSignal(\n parseDateValue(openingDay(props.value().start || props.value().end, limits(), props.dateConfig()), props.dateConfig()),\n );\n // The calendar's own draft: two clicks pick a range, Apply commits it.\n const [picked, setPicked] = createSignal<DateRangeValue>(props.value());\n const [anchor, setAnchor] = createSignal<string | null>(null);\n const [previewDate, setPreviewDate] = createSignal<string | null>(null);\n let shell: HTMLDivElement | undefined;\n let startInput: HTMLInputElement | undefined;\n let endInput: HTMLInputElement | undefined;\n let toggle: HTMLButtonElement | undefined;\n let statusLine: HTMLElement | undefined;\n const [sheetOpen, setSheetOpen] = createSignal(false);\n let announceTimer: ReturnType<typeof setTimeout> | undefined;\n const wide = () => Boolean(props.owner.datePresets?.length || props.owner.presets?.length);\n const calendar = createCalendarPopover({ anchor: () => shell, below: () => statusLine, wide });\n const popoverId = `${meta.controlId}-calendar`;\n const sheetId = `${meta.controlId}-sheet`;\n // The status line holds the field's message slot, so it carries the `<id>-error` every field family uses.\n const statusId = meta.errorId;\n const name = () => fieldName(props.owner);\n\n const parse = (value: string): DateInputResult => parseDateInput(value, { today: today(), locale: locale() });\n const halves = createMemo(() => (dirty() ? ([parse(startText()), parse(endText())] as const) : undefined));\n const draft = createMemo((): DateRangeValue => {\n const current = halves();\n if (!current) return props.value();\n const [start, end] = current;\n return { start: start.kind === \"date\" ? start.date : null, end: end.kind === \"date\" ? end.date : null };\n });\n const shownRange = createMemo(() => previewRange(picked(), anchor(), previewDate()));\n\n const fill = (range: DateRangeValue) => {\n setStartText(format(range.start));\n setEndText(format(range.end));\n };\n createEffect(\n on([props.value, locale], () => {\n if (dirty()) return;\n fill(props.value());\n setPicked(props.value());\n setFailure(undefined);\n }),\n );\n createEffect(\n on(draft, (range) => {\n // A day picked in the calendar wrote this text itself; its half-picked range keeps going.\n if (!dirty() || (range.start === picked().start && range.end === picked().end)) return;\n setPicked(range);\n setAnchor(null);\n if (range.start || range.end) setVisibleMonth(parseDateValue(range.start || range.end, props.dateConfig()));\n setFailure(undefined);\n }),\n );\n onCleanup(() => clearTimeout(announceTimer));\n\n const externalError = () => resolveMaybeAccessor(props.owner.error);\n const invalid = () => Boolean(failure() || externalError());\n const status = createMemo((): { tone: DateStatusTone; text: JSX.Element } => {\n const failed = failure();\n if (failed) return { tone: \"error\", text: failed };\n const current = halves();\n if (current) {\n const mistake = current.find((half): half is Extract<DateInputResult, { kind: \"error\" }> => half.kind === \"error\");\n if (mistake) return { tone: \"rest\", text: typingStatusText(mistake.error, locale(), t(), today()) };\n const range = draft();\n const limit = [range.start, range.end].map((key) => key && limitErrorText(key, limits(), locale(), t())).find(Boolean);\n if (limit) return { tone: \"rest\", text: limit };\n const text = rangeStatusText(range, locale(), t());\n return { tone: text ? \"draft\" : \"rest\", text: text ? `→ ${text}` : \"\" };\n }\n const external = externalError();\n if (external) return { tone: \"error\", text: external };\n return { tone: \"rest\", text: rangeStatusText(props.value(), locale(), t()) };\n });\n\n const save = (next: DateRangeValue) => {\n if (next.start !== props.value().start || next.end !== props.value().end) commitFieldValue(props.owner, next);\n };\n const fail = (message: string) => {\n setFailure(message);\n setAnnouncement(message);\n };\n const commitRange = (range: DateRangeValue) => {\n setDirty(false);\n const limit = [range.start, range.end].map((key) => key && limitErrorText(key, limits(), locale(), t())).find(Boolean);\n if (limit) return fail(limit);\n if (range.start && range.end && range.end < range.start) return fail(t().endBeforeStart);\n if (range.start && !range.end) return fail(t().missingEnd);\n if (range.end && !range.start) return fail(t().missingStart);\n if (!range.start && props.owner.required) return fail(t().required);\n setFailure(undefined);\n fill(range);\n setPicked(range);\n save(range);\n };\n const commit = () => {\n const [start, end] = [parse(startText()), parse(endText())];\n const mistake = [start, end].find((half): half is Extract<DateInputResult, { kind: \"error\" }> => half.kind === \"error\");\n if (mistake) {\n setDirty(false);\n return fail(errorText(mistake.error, locale(), t(), today()));\n }\n commitRange({ start: start.kind === \"date\" ? start.date : null, end: end.kind === \"date\" ? end.date : null });\n };\n const restore = () => {\n fill(props.value());\n setPicked(props.value());\n setAnchor(null);\n setDirty(false);\n setFailure(undefined);\n calendar.close();\n };\n /** Calendar clicks fill both halves at once, so the text, the status line and the calendar show the same range. */\n const pickDay = (key: string) => {\n const next = pickRangeDay(picked(), anchor(), key);\n // One update: the start alone would read as a typed range and reset the anchor of the next click.\n batch(() => {\n setPicked(next.range);\n setAnchor(next.anchor);\n setPreviewDate(null);\n fill(next.range);\n setDirty(true);\n });\n };\n const apply = (range: DateRangeValue) => {\n commitRange(range);\n calendar.close();\n };\n const canApply = () => Boolean(picked().start) === Boolean(picked().end);\n\n const rangeCalendar = (onApply: (range: DateRangeValue) => void) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <Show when={props.owner.datePresets?.length} fallback={<PresetRail presets={props.owner.presets} onSelect={onApply} />}>\n <PresetRail\n presets={props.owner.datePresets}\n onSelect={(value) => {\n const next = value ? { start: value, end: value } : { start: null, end: null };\n batch(() => {\n setPicked(next);\n setAnchor(null);\n fill(next);\n setDirty(true);\n });\n if (value) setVisibleMonth(parseDateValue(value, props.dateConfig()));\n }}\n />\n </Show>\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n range={shownRange}\n focusDate={() => picked().start}\n onSelect={pickDay}\n onDayPreview={(key) => setPreviewDate(rangeAnchor(picked(), anchor()) ? key : null)}\n dateConfig={props.dateConfig()}\n min={props.owner.min}\n max={props.owner.max}\n />\n </div>\n <div class=\"k2b-date-actions\">\n <Show when={formatDateOnlyRangeDuration(shownRange(), props.dateConfig())}>\n {(duration) => (\n <span class=\"k2b-date-duration\">\n <i class=\"ti ti-hourglass-low\" aria-hidden=\"true\" />\n {duration()}\n </span>\n )}\n </Show>\n <button type=\"button\" class=\"k2b-date-apply\" disabled={!canApply()} onClick={() => onApply(picked())}>\n {uiMessages().apply}\n </button>\n </div>\n </>\n );\n\n const openSheet = async () => {\n setSheetOpen(true);\n calendar.close();\n const before = { start: startText(), end: endText(), dirty: dirty() };\n // Every opening starts from the text, also after a dismissed sheet left other days picked.\n batch(() => {\n setPicked(draft());\n setAnchor(null);\n setPreviewDate(null);\n });\n const { openDateSheet } = await import(\"./date-sheet\");\n const range = await openDateSheet<DateRangeValue>({\n title: props.owner.label ?? props.owner[\"aria-label\"],\n subtitle: rangeStatusText(props.value(), locale(), t()) || t().noDate,\n ariaLabel: name(),\n id: sheetId,\n locale: locale() ?? \"en\",\n content: (close) =>\n rangeCalendar((next) => {\n // Saved at once, as in the single date sheet.\n commitRange(next);\n close(next);\n }),\n });\n setSheetOpen(false);\n // A dismissed sheet saves nothing and leaves the text as it was before the sheet opened.\n if (!range)\n batch(() => {\n setStartText(before.start);\n setEndText(before.end);\n setDirty(before.dirty);\n setAnchor(null);\n });\n toggle?.focus({ preventScroll: true });\n };\n const openCalendar = (focusDay: boolean) => {\n if (!interactive()) return;\n setAnchor(null);\n setPreviewDate(null);\n setPicked(draft());\n if (prefersMenuSheet()) return void openSheet();\n const range = draft();\n setVisibleMonth(parseDateValue(openingDay(range.start || range.end, limits(), props.dateConfig()), props.dateConfig()));\n calendar.show();\n if (focusDay) calendar.focusDay();\n };\n\n const onPointerDown = (event: PointerEvent) => {\n const target = event.target as Element;\n if (!interactive() || calendar.element()?.contains(target) || target.closest(\".k2b-date-field__clear\")) return;\n const onIcon = target.closest(\".k2b-date-field__toggle, .k2b-date-field__icon\");\n if (prefersMenuSheet()) {\n if (onIcon) {\n event.preventDefault();\n void openSheet();\n }\n return;\n }\n if (onIcon) {\n event.preventDefault();\n if (!shell?.contains(document.activeElement)) startInput?.focus();\n if (calendar.open()) calendar.close();\n else openCalendar(false);\n return;\n }\n if (event.button === 0 && !calendar.open()) setTimeout(() => openCalendar(false));\n };\n const onKeyDown = (event: KeyboardEvent) => {\n // A refused text keeps Enter too, so it does not submit the form around it.\n if (event.key === \"Enter\" && (dirty() || calendar.open() || failure())) {\n event.preventDefault();\n commit();\n calendar.close();\n } else if (event.key === \"Escape\" && (dirty() || calendar.open() || failure())) {\n event.preventDefault();\n event.stopPropagation();\n restore();\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n openCalendar(true);\n } else if (event.key === \"ArrowUp\" && event.altKey) {\n event.preventDefault();\n calendar.close();\n }\n };\n const onInput = (setter: (value: string) => void) => (event: InputEvent & { currentTarget: HTMLInputElement }) => {\n setter(event.currentTarget.value);\n setDirty(true);\n clearTimeout(announceTimer);\n announceTimer = setTimeout(() => {\n const range = draft();\n setAnnouncement(range.start || range.end ? rangeStatusText(range, locale(), t()) : \"\");\n }, 500);\n };\n const onPaste = (event: ClipboardEvent) => {\n const parts = splitPastedRange(event.clipboardData?.getData(\"text\") ?? \"\");\n if (!parts) return;\n event.preventDefault();\n setStartText(parts[0]);\n setEndText(parts[1]);\n setDirty(true);\n };\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget as Node | null;\n if (sheetOpen() || (next && shell?.contains(next))) return;\n if (dirty()) commit();\n calendar.close();\n };\n const inputProps = {\n class: \"k2b-input\",\n type: \"text\",\n inputMode: \"numeric\",\n autocomplete: \"off\",\n spellcheck: false,\n \"aria-haspopup\": \"dialog\",\n onKeyDown,\n onPaste,\n } as const;\n const describedBy = () =>\n [props.owner[\"aria-describedby\"], props.owner.description ? meta.descriptionId : undefined, statusId].filter(Boolean).join(\" \");\n\n return (\n <Field\n class={props.owner.class}\n label={props.owner.label}\n description={props.owner.description}\n required={props.owner.required}\n disabled={props.owner.disabled}\n meta={meta}\n >\n <div\n class=\"k2b-date-picker k2b-date-field\"\n data-range=\"true\"\n data-open={calendar.open() ? \"true\" : undefined}\n data-readonly={props.owner.readOnly ? \"true\" : undefined}\n onFocusOut={onFocusOut}\n >\n <div\n ref={shell}\n class=\"k2b-input-shell\"\n role=\"group\"\n aria-labelledby={props.owner.label ? meta.labelId : undefined}\n aria-label={props.owner.label ? undefined : props.owner[\"aria-label\"]}\n data-invalid={invalid() ? \"true\" : undefined}\n onPointerDown={onPointerDown}\n >\n <span class=\"k2b-input-shell__icon k2b-date-field__icon\" aria-hidden=\"true\">\n <i class=\"ti ti-calendar-stats\" />\n </span>\n <input\n ref={startInput}\n {...inputProps}\n role=\"combobox\"\n aria-controls={sheetOpen() ? sheetId : popoverId}\n id={meta.controlId}\n aria-label={name() ? t().startOf({ label: name()! }) : t().start}\n aria-expanded={calendar.open() || sheetOpen()}\n aria-describedby={describedBy()}\n aria-invalid={invalid() ? \"true\" : undefined}\n aria-required={props.owner.required || undefined}\n placeholder={t().start}\n value={startText()}\n disabled={props.owner.disabled}\n readOnly={props.owner.readOnly}\n onInput={onInput(setStartText)}\n />\n <i class=\"ti ti-arrow-narrow-right k2b-date-field__arrow\" aria-hidden=\"true\" />\n <input\n ref={endInput}\n {...inputProps}\n role=\"combobox\"\n aria-controls={sheetOpen() ? sheetId : popoverId}\n aria-label={name() ? t().endOf({ label: name()! }) : t().end}\n aria-expanded={calendar.open() || sheetOpen()}\n aria-describedby={describedBy()}\n aria-invalid={invalid() ? \"true\" : undefined}\n aria-required={props.owner.required || undefined}\n placeholder={t().end}\n value={endText()}\n disabled={props.owner.disabled}\n readOnly={props.owner.readOnly}\n onInput={onInput(setEndText)}\n />\n <span class=\"k2b-date-field__spacer\" />\n <Show when={props.owner.clearable && interactive()}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action k2b-date-field__clear\"\n data-hidden={startText() || endText() ? undefined : \"true\"}\n aria-label={uiMessages().clearDate}\n onClick={() => {\n commitRange({ start: null, end: null });\n startInput?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show\n when={!props.owner.readOnly}\n fallback={\n <span class=\"k2b-date-field__lock\" aria-hidden=\"true\">\n <i class=\"ti ti-lock\" />\n </span>\n }\n >\n <button\n ref={toggle}\n type=\"button\"\n class=\"k2b-date-field__toggle\"\n tabIndex={-1}\n disabled={props.owner.disabled}\n aria-label={calendar.open() ? t().closeCalendar : t().openCalendar}\n aria-expanded={calendar.open() || sheetOpen()}\n aria-controls={sheetOpen() ? sheetId : popoverId}\n onClick={(event) => {\n if (event.detail === 0) openCalendar(true);\n }}\n >\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div\n ref={calendar.ref}\n id={popoverId}\n class=\"k2b-date-popover\"\n popover=\"manual\"\n role=\"dialog\"\n aria-label={name() ?? uiMessages().datePicker}\n onPointerDown={keepFocus}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\" && !(event.key === \"ArrowUp\" && event.altKey)) return;\n event.preventDefault();\n event.stopPropagation();\n calendar.close();\n startInput?.focus();\n }}\n >\n <Show when={calendar.open()}>\n {rangeCalendar((range) => {\n apply(range);\n caretToEnd(endInput);\n })}\n </Show>\n </div>\n </div>\n <DateStatusLine\n ref={(element) => {\n statusLine = element;\n }}\n id={statusId}\n tone={status().tone}\n text={status().text}\n announcement={announcement()}\n />\n </div>\n </Field>\n );\n}\n\nexport function DatePicker(props: DatePickerProps): JSX.Element {\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(value(), dateConfig()));\n const valueLabel = () => displayDate(value(), dateConfig());\n\n return (\n <Show when={props.appearance === \"plain\"} fallback={<DateTextField owner={props} value={value} dateConfig={dateConfig} />}>\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar\"\n valueLabel={valueLabel}\n valueContent={props.renderValue ? () => props.renderValue!(value()!) : undefined}\n clearValue={null}\n onOpen={() => setVisibleMonth(parseDateValue(openingDay(value(), { min: props.min, max: props.max }, dateConfig()), dateConfig()))}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => (\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={value}\n focusDate={value}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n dateConfig={dateConfig()}\n min={props.min}\n max={props.max}\n />\n </div>\n )}\n </PickerShell>\n </Show>\n );\n}\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const messages = useUiMessages();\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => splitDateTime(value(), dateConfig());\n const defaultTime = () => props.defaultTime ?? \"09:00\";\n // Without `optionalTime` every value has a time; with it a date key has none.\n const valueHasTime = () => !props.optionalTime || (Boolean(value()) && !isDateKey(value()!));\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().date, dateConfig()));\n const [draftDate, setDraftDate] = createSignal(parts().date);\n const [draftTime, setDraftTime] = createSignal(parts().time || defaultTime());\n const [withTime, setWithTime] = createSignal(valueHasTime());\n const valueLabel = () => (valueHasTime() ? formatDateTimeValue(value(), dateConfig()) : displayDate(value(), dateConfig()));\n let addTimeButton: HTMLButtonElement | undefined;\n let timeField: HTMLDivElement | undefined;\n\n const syncDraft = () => {\n const next = parts();\n setDraftDate(next.date);\n setDraftTime(next.time || defaultTime());\n setWithTime(valueHasTime());\n setVisibleMonth(parseDateValue(openingDay(next.date, { min: props.min, max: props.max }, dateConfig()), dateConfig()));\n };\n const canApply = () => Boolean(draftDate()) && (!withTime() || isCompleteTime(draftTime()));\n const draftValue = () => (withTime() ? toDateTimeValue(draftDate(), draftTime(), dateConfig()) : draftDate() || null);\n const addTime = () => {\n setWithTime(true);\n queueMicrotask(() => timeField?.querySelector(\"input\")?.focus());\n };\n const removeTime = () => {\n setWithTime(false);\n queueMicrotask(() => addTimeButton?.focus());\n };\n\n return (\n <PickerShell\n owner={props}\n icon={props.optionalTime && !valueHasTime() ? \"ti ti-calendar\" : \"ti ti-calendar-time\"}\n valueLabel={valueLabel}\n valueContent={props.renderValue ? () => props.renderValue!(value()!) : undefined}\n clearValue={null}\n timezone={dateConfig().timeZone}\n onOpen={syncDraft}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => {\n const apply = () => {\n if (!canApply()) return;\n const next = draftValue();\n close();\n commitFieldValue(props, next);\n };\n return (\n <>\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={draftDate}\n focusDate={draftDate}\n onSelect={(value) => {\n setDraftDate(value);\n setVisibleMonth(parseDateValue(value, dateConfig()));\n // A date without a time is complete with the day, as in the date picker.\n if (props.optionalTime && !withTime()) apply();\n }}\n dateConfig={dateConfig()}\n min={props.min}\n max={props.max}\n />\n </div>\n <div class=\"k2b-date-actions\">\n <Show when={props.optionalTime} fallback={<TimeInput time={draftTime()} onChange={setDraftTime} />}>\n {/* Adding and removing the time swap controls of one height in one place, so the panel never moves. */}\n <div ref={timeField} class=\"k2b-date-optional-time\" data-with-time={withTime() ? \"true\" : undefined}>\n <Show\n when={withTime()}\n fallback={\n <button ref={addTimeButton} type=\"button\" class=\"k2b-date-optional-time__add\" onClick={addTime}>\n <i class=\"ti ti-clock-plus\" aria-hidden=\"true\" />\n {messages().addTime}\n </button>\n }\n >\n <TimeInput time={draftTime()} onChange={setDraftTime} />\n <button\n type=\"button\"\n class=\"k2b-date-optional-time__remove\"\n aria-label={messages().removeTime}\n title={messages().removeTime}\n onClick={removeTime}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Show>\n <button type=\"button\" class=\"k2b-date-apply\" disabled={!canApply()} onClick={apply}>\n {messages().apply}\n </button>\n </div>\n </>\n );\n }}\n </PickerShell>\n );\n}\n\nexport function DateRangePicker(props: DateRangePickerProps): JSX.Element {\n const messages = useUiMessages();\n const withTime = () => props.withTime ?? false;\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => ({\n start: withTime() ? splitDateTime(value().start, dateConfig()) : { date: value().start ?? \"\", time: \"09:00\" },\n end: withTime() ? splitDateTime(value().end, dateConfig()) : { date: value().end ?? \"\", time: \"10:00\" },\n });\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().start.date || parts().end.date, dateConfig()));\n const [draftRange, setDraftRange] = createSignal<DateRangeValue>({\n start: parts().start.date || null,\n end: parts().end.date || null,\n });\n // The day of the last click that started a one-day range; the next click on another day extends from it.\n const [anchor, setAnchor] = createSignal<string | null>(null);\n const [previewDate, setPreviewDate] = createSignal<string | null>(null);\n const [startTime, setStartTime] = createSignal(parts().start.time || \"09:00\");\n const [endTime, setEndTime] = createSignal(parts().end.time || \"10:00\");\n const displayRange = createMemo(() => previewRange(draftRange(), anchor(), previewDate()));\n\n const syncDraft = () => {\n const next = parts();\n setDraftRange({ start: next.start.date || null, end: next.end.date || null });\n setAnchor(null);\n setPreviewDate(null);\n setStartTime(next.start.time || \"09:00\");\n setEndTime(next.end.time || \"10:00\");\n setVisibleMonth(\n parseDateValue(openingDay(next.start.date || next.end.date, { min: props.min, max: props.max }, dateConfig()), dateConfig()),\n );\n };\n\n const valueLabel = () => {\n if (!value().start && !value().end) return \"\";\n const format = withTime() ? formatDateTimeValue : displayDate;\n return `${value().start ? format(value().start, dateConfig()) : \"Start\"} to ${value().end ? format(value().end, dateConfig()) : \"End\"}`;\n };\n\n const valueContent = () => {\n const format = withTime() ? formatDateTimeValue : displayDate;\n return (\n <span class=\"k2b-date-range-value\">\n <span>{value().start ? format(value().start, dateConfig()) : messages().start}</span>\n <i class=\"ti ti-arrow-narrow-right\" aria-hidden=\"true\" />\n <span>{value().end ? format(value().end, dateConfig()) : \"End\"}</span>\n </span>\n );\n };\n\n const selectDate = (value: string) => {\n const next = pickRangeDay(draftRange(), anchor(), value);\n setDraftRange(next.range);\n setAnchor(next.anchor);\n setPreviewDate(null);\n };\n\n const applyDuration = (minutes: number) => {\n const current = draftRange();\n if (!current.start || !isCompleteTime(startTime())) return;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n if (!start) return;\n const end = new Date(new Date(start).getTime() + minutes * 60_000).toISOString();\n const next = splitDateTime(end, dateConfig());\n setDraftRange({ start: current.start, end: next.date || current.end || current.start });\n setEndTime(next.time || endTime());\n };\n\n const durationMinutes = createMemo(() => {\n const current = displayRange();\n if (!current.start || !current.end || !isCompleteTime(startTime()) || !isCompleteTime(endTime())) return null;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n if (!start || !end) return null;\n return Math.round((new Date(end).getTime() - new Date(start).getTime()) / 60_000);\n });\n\n const durationLabel = () => {\n const current = displayRange();\n if (!current.start || !current.end) return \"\";\n if (!withTime()) return formatDateOnlyRangeDuration(current, dateConfig());\n if (!isCompleteTime(startTime()) || !isCompleteTime(endTime())) return \"\";\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n return start && end ? dates.formatDuration(start, end, dateConfig()) : \"\";\n };\n\n const commit = (close: () => void) => {\n const current = draftRange();\n if (!withTime()) {\n close();\n commitFieldValue(props, current);\n return;\n }\n if ((current.start || current.end) && (!isCompleteTime(startTime()) || !isCompleteTime(endTime()))) return;\n const value = {\n start: current.start ? toDateTimeValue(current.start, startTime(), dateConfig()) : null,\n end: current.end ? toDateTimeValue(current.end, endTime(), dateConfig()) : null,\n };\n close();\n commitFieldValue(props, value);\n };\n\n return (\n <Show\n when={props.appearance === \"plain\" || withTime()}\n fallback={<DateRangeTextField owner={props} value={value} dateConfig={dateConfig} />}\n >\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar-stats\"\n valueLabel={valueLabel}\n valueContent={valueContent}\n clearValue={{ start: null, end: null }}\n timezone={withTime() ? dateConfig().timeZone : undefined}\n footerMeta={() => (\n <Show when={durationLabel()}>\n <span class=\"k2b-date-duration\">\n <i class=\"ti ti-hourglass-low\" aria-hidden=\"true\" />\n {durationLabel()}\n </span>\n </Show>\n )}\n onOpen={syncDraft}\n wide={Boolean(props.datePresets?.length || props.presets?.length)}\n >\n {(close) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <Show\n when={props.datePresets?.length}\n fallback={\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n }\n >\n <PresetRail\n presets={props.datePresets}\n onSelect={(value) => {\n setDraftRange(value ? { start: value, end: value } : { start: null, end: null });\n if (value) setVisibleMonth(parseDateValue(value, dateConfig()));\n }}\n />\n </Show>\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n range={displayRange}\n focusDate={() => draftRange().start}\n onSelect={selectDate}\n onDayPreview={(value) => setPreviewDate(rangeAnchor(draftRange(), anchor()) ? value : null)}\n dateConfig={dateConfig()}\n min={props.min}\n max={props.max}\n />\n </div>\n\n <Show when={withTime()}>\n <div class=\"k2b-date-range-times\">\n <TimeInput label={messages().start} time={startTime()} onChange={setStartTime} />\n <TimeInput label={messages().end} time={endTime()} onChange={setEndTime} />\n </div>\n </Show>\n\n <div class=\"k2b-date-actions\">\n <Show when={withTime() && props.durationPresets?.length}>\n <div class=\"k2b-date-durations\" role=\"group\" aria-label={messages().durationPresets}>\n <For each={props.durationPresets}>\n {(preset) => (\n <button\n type=\"button\"\n aria-pressed={durationMinutes() === preset.minutes}\n onClick={() => applyDuration(preset.minutes)}\n >\n {preset.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n {/* Only a half-picked range is uncommittable; an empty draft must stay\n applicable so a \"clear\" date preset can be committed. */}\n <button\n type=\"button\"\n class=\"k2b-date-apply\"\n disabled={\n Boolean(draftRange().start) !== Boolean(draftRange().end) ||\n Boolean(\n withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime())),\n )\n }\n onClick={() => commit(close)}\n >\n {messages().apply}\n </button>\n </div>\n </>\n )}\n </PickerShell>\n </Show>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,9 +39,10 @@ export function TextInput(props) {
39
39
  const [passwordVisible, setPasswordVisible] = createSignal(false);
40
40
  const multiline = () => Boolean(local.multiline || local.markdown);
41
41
  const compact = () => local.variant === "compact";
42
- const icon = () => local.icon === false ? "" : local.icon ?? (local.variant === "ai" ? "ti ti-sparkles" : local.markdown ? "ti ti-markdown" : "ti ti-cursor-text");
43
- // A custom icon stays while typing (a search field keeps its magnifier); only the default icon switches to the pencil.
44
- const activeIcon = () => local.activeIcon ?? (local.icon || undefined) ?? (local.variant === "ai" ? "ti ti-sparkles" : "ti ti-pencil");
42
+ // The field's edge already shows where to type; only a meaningful icon (a search magnifier, the AI mark) leads.
43
+ const icon = () => local.icon === false ? "" : local.icon ?? (local.variant === "ai" ? "ti ti-sparkles" : "");
44
+ // An icon stays while typing unless `activeIcon` names a different one.
45
+ const activeIcon = () => local.activeIcon ?? icon();
45
46
  // Names, addresses and passwords are typed exactly: phone keyboards must not capitalize or "correct" them.
46
47
  const verbatim = () => local.password || local.type === "email" || local.type === "url" || /\b(username|email|url)\b/.test(String(rest.autocomplete ?? ""));
47
48
  const input = next => local.onValueChange?.(next);
@@ -98,7 +99,7 @@ export function TextInput(props) {
98
99
  "--k2b-editor-lines": String(local.lines ?? 3)
99
100
  } : undefined), _$escape(_$createComponent(Show, {
100
101
  get when() {
101
- return _$memo(() => !!!compact())() && local.icon !== false;
102
+ return _$memo(() => !!!compact())() && icon();
102
103
  },
103
104
  get children() {
104
105
  return _$ssr(_tmpl$, _$ssrAttribute("class", _$escape(icon(), true), false), _$ssrAttribute("class", _$escape(activeIcon(), true), false));