@nocoo/basalt 3.2.1 → 3.2.4

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 (192) hide show
  1. package/README.md +25 -19
  2. package/ai/COMPATIBILITY.md +41 -36
  3. package/ai/DESIGN.md +53 -47
  4. package/ai/INTEGRATION.md +814 -820
  5. package/ai/RECIPES.md +334 -135
  6. package/ai/USAGE.md +2 -2
  7. package/ai/registry.json +384 -27
  8. package/ai/sources.json +2 -2
  9. package/dist/assets/brand-mark.js +1 -2
  10. package/dist/charts/area.js +1 -2
  11. package/dist/charts/bar.js +1 -2
  12. package/dist/charts/bullet.js +1 -2
  13. package/dist/charts/chart-colors.js +1 -2
  14. package/dist/charts/charts.js +1 -2
  15. package/dist/charts/config.js +1 -2
  16. package/dist/charts/custom-chart.js +1 -2
  17. package/dist/charts/date-navigation.js +1 -2
  18. package/dist/charts/donut.js +1 -2
  19. package/dist/charts/frame.js +1 -2
  20. package/dist/charts/frame.js.map +1 -1
  21. package/dist/charts/funnel.js +1 -2
  22. package/dist/charts/gauge.js +1 -2
  23. package/dist/charts/grouped-bar.js +1 -2
  24. package/dist/charts/heatmap-calendar.js +3 -7
  25. package/dist/charts/heatmap-calendar.js.map +1 -1
  26. package/dist/charts/heatmap-matrix.js +1 -2
  27. package/dist/charts/item-list.js +1 -2
  28. package/dist/charts/legend.js +1 -2
  29. package/dist/charts/line.js +1 -2
  30. package/dist/charts/palette.js +1 -2
  31. package/dist/charts/radar.js +1 -2
  32. package/dist/charts/sample.js +1 -2
  33. package/dist/charts/sankey.js +1 -2
  34. package/dist/charts/series.js +1 -2
  35. package/dist/charts/slot-bar.js +1 -2
  36. package/dist/charts/sparkline.js +1 -2
  37. package/dist/charts/stacked-bar.js +1 -2
  38. package/dist/charts/stat-card.js +1 -2
  39. package/dist/charts/timeline.js +1 -2
  40. package/dist/charts/timeseries.js +1 -2
  41. package/dist/charts/tooltip.js +31 -27
  42. package/dist/charts/tooltip.js.map +1 -1
  43. package/dist/components/accordion.js +1 -2
  44. package/dist/components/alert-dialog.js +1 -2
  45. package/dist/components/app-header.js +1 -2
  46. package/dist/components/app-shell.js +1 -2
  47. package/dist/components/approval-card.js +1 -2
  48. package/dist/components/autocomplete.js +1 -2
  49. package/dist/components/avatar.js +1 -2
  50. package/dist/components/badge.js +1 -2
  51. package/dist/components/banner.js +1 -2
  52. package/dist/components/basalt-mark.js +1 -2
  53. package/dist/components/battery-meter.js +1 -2
  54. package/dist/components/breadcrumbs.js +1 -2
  55. package/dist/components/button.d.ts +1 -1
  56. package/dist/components/button.js +3 -3
  57. package/dist/components/button.js.map +1 -1
  58. package/dist/components/chat-bubble.js +1 -2
  59. package/dist/components/chat-composer.js +1 -2
  60. package/dist/components/chat-header.js +1 -2
  61. package/dist/components/chat-inbox.js +1 -2
  62. package/dist/components/chat-markdown.js +1 -2
  63. package/dist/components/chat-message.js +1 -2
  64. package/dist/components/checkbox.js +1 -2
  65. package/dist/components/clipboard-text.js +1 -2
  66. package/dist/components/code.js +1 -2
  67. package/dist/components/collapsible.js +1 -2
  68. package/dist/components/collapsible.js.map +1 -1
  69. package/dist/components/combobox.js +1 -2
  70. package/dist/components/command-palette.js +1 -2
  71. package/dist/components/confirm-dialog.js +3 -12
  72. package/dist/components/confirm-dialog.js.map +1 -1
  73. package/dist/components/context-cards.js +1 -2
  74. package/dist/components/context-menu.js +1 -2
  75. package/dist/components/data-table.js +2 -7
  76. package/dist/components/data-table.js.map +1 -1
  77. package/dist/components/date-picker.js +7 -18
  78. package/dist/components/date-picker.js.map +1 -1
  79. package/dist/components/delete-resource.js +1 -2
  80. package/dist/components/description-list.js +1 -2
  81. package/dist/components/dialog.js +1 -2
  82. package/dist/components/diff-table.js +1 -2
  83. package/dist/components/dock.js +1 -2
  84. package/dist/components/dock.js.map +1 -1
  85. package/dist/components/dropdown-menu.js +1 -2
  86. package/dist/components/editable-nav-item.js +1 -2
  87. package/dist/components/empty.js +1 -2
  88. package/dist/components/fab.js +1 -2
  89. package/dist/components/field.js +1 -2
  90. package/dist/components/file-dropzone.js +1 -2
  91. package/dist/components/filter-bar.js +1 -2
  92. package/dist/components/flow.js +1 -2
  93. package/dist/components/grid.js +1 -2
  94. package/dist/components/hover-card.js +1 -2
  95. package/dist/components/icon-picker.js +1 -2
  96. package/dist/components/inline-editable.js +1 -2
  97. package/dist/components/input-area.js +1 -2
  98. package/dist/components/input-group.js +2 -3
  99. package/dist/components/input-group.js.map +1 -1
  100. package/dist/components/input.js +1 -2
  101. package/dist/components/label.js +1 -2
  102. package/dist/components/layer-card.js +1 -2
  103. package/dist/components/link.js +1 -2
  104. package/dist/components/loader.js +1 -2
  105. package/dist/components/loading-screen.js +1 -2
  106. package/dist/components/menu-bar.js +1 -2
  107. package/dist/components/meter.js +1 -2
  108. package/dist/components/multi-select.js +1 -2
  109. package/dist/components/navigation-menu.js +1 -2
  110. package/dist/components/overlay.js +1 -2
  111. package/dist/components/page-header.js +1 -2
  112. package/dist/components/pagination.js +1 -2
  113. package/dist/components/popover.js +1 -2
  114. package/dist/components/prompt-bar.js +1 -2
  115. package/dist/components/radio.js +2 -7
  116. package/dist/components/radio.js.map +1 -1
  117. package/dist/components/recommendation-card.js +1 -2
  118. package/dist/components/resource-list.js +1 -2
  119. package/dist/components/responsive-master-detail.js +1 -2
  120. package/dist/components/scroll-area.js +1 -2
  121. package/dist/components/section-rule.js +1 -2
  122. package/dist/components/segment-control.js +1 -2
  123. package/dist/components/select.js +1 -2
  124. package/dist/components/sensitive-input.js +1 -2
  125. package/dist/components/separator.js +1 -2
  126. package/dist/components/sheet.js +1 -2
  127. package/dist/components/sidebar.d.ts +53 -19
  128. package/dist/components/sidebar.js +201 -100
  129. package/dist/components/sidebar.js.map +1 -1
  130. package/dist/components/skeleton-line.js +1 -2
  131. package/dist/components/slider.js +1 -2
  132. package/dist/components/stat-strip.js +1 -2
  133. package/dist/components/switch.js +1 -2
  134. package/dist/components/table-of-contents.js +1 -2
  135. package/dist/components/table-pager.js +1 -2
  136. package/dist/components/table.js +1 -2
  137. package/dist/components/tabs.js +1 -2
  138. package/dist/components/tag-badge.js +1 -2
  139. package/dist/components/tag-color-picker.js +1 -2
  140. package/dist/components/text.js +1 -2
  141. package/dist/components/theme-toggle.js +1 -2
  142. package/dist/components/thinking.js +1 -2
  143. package/dist/components/toast.js +1 -2
  144. package/dist/components/toggle-group.js +1 -2
  145. package/dist/components/toggle.js +1 -2
  146. package/dist/components/tool-chips.js +1 -2
  147. package/dist/components/toolbar.js +1 -2
  148. package/dist/components/tooltip.js +1 -2
  149. package/dist/components/typeahead-field.js +6 -21
  150. package/dist/components/typeahead-field.js.map +1 -1
  151. package/dist/components/upload-queue.js +1 -2
  152. package/dist/index.d.ts +1 -1
  153. package/dist/index.js +11 -11
  154. package/dist/models/agent-feedback.js +1 -2
  155. package/dist/models/avatar.js +1 -2
  156. package/dist/models/code.js +1 -2
  157. package/dist/models/context-cards.js +1 -2
  158. package/dist/models/diff-table.js +1 -2
  159. package/dist/models/recommendation.js +1 -2
  160. package/dist/providers/accent.js +2 -7
  161. package/dist/providers/accent.js.map +1 -1
  162. package/dist/providers/link.js +1 -2
  163. package/dist/providers/theme.js +2 -7
  164. package/dist/providers/theme.js.map +1 -1
  165. package/dist/styles/standalone.css +55 -11
  166. package/dist/styles/tailwind.css +2 -0
  167. package/dist/styles/tokens.css +51 -6
  168. package/dist/utils/cn.js +1 -2
  169. package/dist/utils/control-surface.js +1 -2
  170. package/dist/utils/navigation.d.ts +1 -1
  171. package/dist/utils/navigation.js +2 -3
  172. package/dist/utils/navigation.js.map +1 -1
  173. package/dist/utils/preference-store.js +1 -2
  174. package/dist/utils/selection-indicator.js +1 -2
  175. package/dist/utils/use-checkable-group.js +1 -2
  176. package/dist/utils/use-hover-highlight.js +2 -3
  177. package/dist/utils/use-hover-highlight.js.map +1 -1
  178. package/dist/viewmodels/use-approval-card.js +11 -13
  179. package/dist/viewmodels/use-approval-card.js.map +1 -1
  180. package/dist/viewmodels/use-chat-composer.js +1 -2
  181. package/dist/viewmodels/use-chat-message.js +1 -2
  182. package/dist/viewmodels/use-code-block.js +1 -2
  183. package/dist/viewmodels/use-code-block.js.map +1 -1
  184. package/dist/viewmodels/use-context-cards.js +1 -2
  185. package/dist/viewmodels/use-diff-table.js +1 -2
  186. package/dist/viewmodels/use-diff-table.js.map +1 -1
  187. package/dist/viewmodels/use-loader.js +1 -2
  188. package/dist/viewmodels/use-recommendation-card.js +1 -2
  189. package/dist/viewmodels/use-recommendation-card.js.map +1 -1
  190. package/dist/viewmodels/use-thinking.js +1 -2
  191. package/dist/viewmodels/use-tool-chips.js +1 -2
  192. package/package.json +1 -1
@@ -6,7 +6,7 @@ import * as a from "react";
6
6
  import { useEffect as o, useLayoutEffect as s, useMemo as c, useRef as l, useState as u } from "react";
7
7
  import { ChevronLeft as ee, ChevronRight as d } from "lucide-react";
8
8
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
- //#region src/components/date-picker.tsx
9
+ // src/components/date-picker.tsx
10
10
  function m(e) {
11
11
  return String(e).padStart(2, "0");
12
12
  }
@@ -262,7 +262,7 @@ function E({ value: m, defaultValue: _ = "", onChange: ae, mode: b = "single", m
262
262
  if (n >= 0 && J[n]?.m === q.m) t = n;
263
263
  else {
264
264
  let e = J.findIndex((e) => e?.m === q.m);
265
- t = e >= 0 ? e : 0;
265
+ t = Math.max(e, 0);
266
266
  }
267
267
  }
268
268
  }
@@ -331,9 +331,7 @@ function E({ value: m, defaultValue: _ = "", onChange: ae, mode: b = "single", m
331
331
  to: e
332
332
  };
333
333
  D === void 0 && Ne(n), pe?.(n), n.to && z(!1);
334
- return;
335
- }
336
- m === void 0 && je(e), z(!1), ae?.(e);
334
+ } else m === void 0 && je(e), z(!1), ae?.(e);
337
335
  }
338
336
  }
339
337
  function pt(e) {
@@ -349,9 +347,7 @@ function E({ value: m, defaultValue: _ = "", onChange: ae, mode: b = "single", m
349
347
  return;
350
348
  }
351
349
  ft(e.value);
352
- return;
353
- }
354
- if (b === "range") {
350
+ } else if (b === "range") {
355
351
  if (!Q(e.value.from) || !Q(e.value.to)) return;
356
352
  D === void 0 && Ne(e.value), pe?.(e.value), z(!1);
357
353
  }
@@ -527,17 +523,13 @@ function E({ value: m, defaultValue: _ = "", onChange: ae, mode: b = "single", m
527
523
  for (let e = 0; r && r.y >= 1 && !Q(h(r)) && e < 42; e += 1) r = T(r, n);
528
524
  if (!r || r.y < 1 || !Q(h(r))) return;
529
525
  dt(r);
530
- return;
531
- }
532
- if (e.key === "Home" || e.key === "End") {
526
+ } else if (e.key === "Home" || e.key === "End") {
533
527
  e.preventDefault();
534
528
  let n = (g(t).getUTCDay() - O + 7) % 7, r = T(t, e.key === "Home" ? -n : 6 - n), i = e.key === "Home" ? 1 : -1;
535
529
  for (let e = 0; r && r.y >= 1 && !Q(h(r)) && e < 7; e += 1) r = T(r, i);
536
530
  if (!r || r.y < 1 || !Q(h(r))) return;
537
531
  dt(r);
538
- return;
539
- }
540
- if (e.key === "PageDown" || e.key === "PageUp") {
532
+ } else if (e.key === "PageDown" || e.key === "PageUp") {
541
533
  e.preventDefault();
542
534
  let n = oe(t, e.shiftKey ? e.key === "PageDown" ? 12 : -12 : e.key === "PageDown" ? 1 : -1);
543
535
  if (!n) return;
@@ -556,9 +548,7 @@ function E({ value: m, defaultValue: _ = "", onChange: ae, mode: b = "single", m
556
548
  m: r.m,
557
549
  d: 1
558
550
  });
559
- return;
560
- }
561
- if (e.key === "Enter" || e.key === " ") {
551
+ } else if (e.key === "Enter" || e.key === " ") {
562
552
  e.preventDefault();
563
553
  let n = h(t);
564
554
  t.y >= 1 && Q(n) && ft(n);
@@ -605,7 +595,6 @@ function E({ value: m, defaultValue: _ = "", onChange: ae, mode: b = "single", m
605
595
  ]
606
596
  });
607
597
  }
608
- //#endregion
609
598
  export { E as DatePicker };
610
599
 
611
600
  //# sourceMappingURL=date-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.js","names":["React","pad","value","formatIso","date","utcDate","next","civilDate","parseIso","match","year","month","day","utc","parseIsoMonth","civil","isValidCivil","formatIsoMonth","CALENDAR_BUTTON","todayCivil","parts","read","part","type","formatCivil","locale","options","isLeapYear","y","daysInCivilMonth","m","shiftCivilMonthClamped","total","current","deltaMonths","targetY","targetM","maxD","target","formatTriggerLabel","one","iso","formatDate","mode","rangeFrom","rangeTo","placeholder","selectedDate","compareCivil","left","right","withinBounds","minDate","min","maxDate","max","dateSelectable","isDisabledDate","clampCivil","isoOf","addDays","days","shiftMonth","delta","DatePicker","controlledMonthProp","defaultMonthProp","ariaLabel","ariaDescribedBy","ariaInvalid","inputRest","externalRef","externalOnInvalid","ariaLabelledBy","formRest","uncontrolled","setUncontrolled","useState","defaultValue","uncontrolledRange","setUncontrolledRange","defaultRangeValue","open","setOpen","isInvalid","setIsInvalid","validationMessage","setValidationMessage","focusIndex","setFocusIndex","dayRefs","useRef","pendingFocus","focusDay","hiddenRef","triggerRef","generatedErrorId","errorId","id","generatedMonthLiveId","monthLiveId","generatedKeyboardInstructionsId","keyboardInstructionsId","selected","selectedRange","rangeValue","cursorIso","submitted","controlledParsed","useMemo","isMonthControlled","uncontrolledMonth","setUncontrolledMonth","parsedDef","clampedInitial","timeZone","activeMonth","activeMonthKey","requestMonth","monthKey","onMonthChange","prevSelected","hasExplicitMonthConfig","useEffect","disabled","autoFocus","latestConfigRef","formAttr","form","disposed","timers","onReset","timer","event","cfg","weekdayLabels","formatter","index","weekStartsOn","first","startOffset","start","pending","focused","focusedIso","node","focusedIndex","selectedIndex","firstInMonth","enabled","inMonth","any","previousMonth","followingMonth","label","labels","calendarLabel","prevMonthLabel","nextMonthLabel","selectable","focusCalendarDay","commit","readOnly","nextRange","onRangeChange","onChange","applyPreset","preset","handleHiddenRef","cleanup","invalidState","hasDestructiveStyle","describedBy","Popover","synced","PopoverTrigger","Button","cn","className","PopoverContent","presets","ChevronLeft","ChevronRight","step","col","stepDir","weekIndex","colIndex","inRange","fromDate","toDate","thisDate","inSelectedRange","isRangeEdge","isSelected"],"sources":["../../src/components/date-picker.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type ComponentProps, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\ntype Civil = { y: number; m: number; d: number };\n\nfunction pad(value: number) {\n\treturn String(value).padStart(2, \"0\");\n}\n\nfunction formatIso(date: Civil) {\n\treturn `${String(date.y).padStart(4, \"0\")}-${pad(date.m)}-${pad(date.d)}`;\n}\n\nfunction utcDate(date: Civil) {\n\tconst next = new Date(Date.UTC(date.y, date.m - 1, date.d));\n\tnext.setUTCFullYear(date.y);\n\treturn next;\n}\n\nfunction civilDate(date: Civil) {\n\tconst next = new Date(date.y, date.m - 1, date.d);\n\tnext.setFullYear(date.y);\n\treturn next;\n}\n\nfunction parseIso(value: string): Civil | null {\n\tconst match = /^(\\d{4,})-(\\d{2})-(\\d{2})$/.exec(value);\n\tif (!match) {\n\t\treturn null;\n\t}\n\tconst year = Number(match[1]);\n\tconst month = Number(match[2]);\n\tconst day = Number(match[3]);\n\tif (year < 1) {\n\t\treturn null;\n\t}\n\tconst utc = utcDate({ y: year, m: month, d: day });\n\tif (\n\t\tutc.getUTCFullYear() !== year ||\n\t\tutc.getUTCMonth() + 1 !== month ||\n\t\tutc.getUTCDate() !== day\n\t) {\n\t\treturn null;\n\t}\n\treturn { y: year, m: month, d: day };\n}\n\nfunction parseIsoMonth(value: string | undefined): Civil | null {\n\tif (!value) {\n\t\treturn null;\n\t}\n\tconst match = /^(\\d{4,})-(\\d{2})$/.exec(value);\n\tif (!match) {\n\t\treturn null;\n\t}\n\tconst year = Number(match[1]);\n\tconst month = Number(match[2]);\n\tif (year < 1 || month < 1 || month > 12) {\n\t\treturn null;\n\t}\n\tconst civil = { y: year, m: month, d: 1 };\n\treturn isValidCivil(civil) ? civil : null;\n}\n\nfunction formatIsoMonth(date: Civil): string {\n\treturn `${String(date.y).padStart(4, \"0\")}-${pad(date.m)}`;\n}\n\nconst CALENDAR_BUTTON =\n\t\"appearance-none border-0 bg-transparent p-0 font-inherit text-inherit cursor-pointer\";\n\nfunction todayCivil(timeZone?: string): Civil {\n\tconst parts = new Intl.DateTimeFormat(\"en-CA\", {\n\t\ttimeZone,\n\t\tyear: \"numeric\",\n\t\tmonth: \"2-digit\",\n\t\tday: \"2-digit\",\n\t}).formatToParts(new Date());\n\tconst read = (type: Intl.DateTimeFormatPartTypes) =>\n\t\tNumber(parts.find((part) => part.type === type)?.value);\n\treturn { y: read(\"year\"), m: read(\"month\"), d: read(\"day\") };\n}\n\nfunction formatCivil(date: Civil, locale: string, options: Intl.DateTimeFormatOptions) {\n\treturn new Intl.DateTimeFormat(locale, {\n\t\t...options,\n\t\ttimeZone: \"UTC\",\n\t\tcalendar: \"gregory\",\n\t}).format(utcDate(date));\n}\n\nfunction isLeapYear(y: number): boolean {\n\treturn (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;\n}\n\nfunction daysInCivilMonth(y: number, m: number): number {\n\tif (m === 2) {\n\t\treturn isLeapYear(y) ? 29 : 28;\n\t}\n\tif (m === 4 || m === 6 || m === 9 || m === 11) {\n\t\treturn 30;\n\t}\n\treturn 31;\n}\n\nfunction shiftCivilMonthClamped(current: Civil, deltaMonths: number): Civil | null {\n\tconst total = current.y * 12 + (current.m - 1) + deltaMonths;\n\tconst targetY = Math.floor(total / 12);\n\tif (targetY < 1) {\n\t\treturn null;\n\t}\n\tconst targetM = (((total % 12) + 12) % 12) + 1;\n\tconst maxD = daysInCivilMonth(targetY, targetM);\n\tconst target = { y: targetY, m: targetM, d: Math.min(current.d, maxD) };\n\treturn isValidCivil(target) ? target : null;\n}\n\nfunction formatTriggerLabel({\n\tmode,\n\tselectedDate,\n\trangeFrom,\n\trangeTo,\n\tlocale,\n\tformatDate,\n\tplaceholder = \"Pick a date\",\n}: {\n\tmode: \"single\" | \"range\";\n\tselectedDate: Civil | null;\n\trangeFrom: string;\n\trangeTo?: string;\n\tlocale: string;\n\tformatDate?: (date: Date) => string;\n\tplaceholder?: string;\n}) {\n\tfunction one(iso: string) {\n\t\tconst date = parseIso(iso);\n\t\tif (!date) {\n\t\t\treturn iso;\n\t\t}\n\t\treturn formatDate?.(civilDate(date)) ?? formatCivil(date, locale, { dateStyle: \"medium\" });\n\t}\n\tif (mode === \"range\") {\n\t\tif (!rangeFrom) {\n\t\t\treturn placeholder;\n\t\t}\n\t\tif (!rangeTo) {\n\t\t\treturn `${one(rangeFrom)} – …`;\n\t\t}\n\t\treturn `${one(rangeFrom)} – ${one(rangeTo)}`;\n\t}\n\treturn selectedDate\n\t\t? (formatDate?.(civilDate(selectedDate)) ??\n\t\t\t\tformatCivil(selectedDate, locale, { dateStyle: \"medium\" }))\n\t\t: placeholder;\n}\n\nfunction compareCivil(left: Civil, right: Civil) {\n\tif (left.y !== right.y) {\n\t\treturn left.y - right.y;\n\t}\n\tif (left.m !== right.m) {\n\t\treturn left.m - right.m;\n\t}\n\treturn left.d - right.d;\n}\n\nfunction withinBounds(iso: string, min?: string, max?: string) {\n\tconst date = parseIso(iso);\n\tconst minDate = min ? parseIso(min) : null;\n\tconst maxDate = max ? parseIso(max) : null;\n\tif (!date) {\n\t\treturn false;\n\t}\n\tif (minDate && compareCivil(date, minDate) < 0) {\n\t\treturn false;\n\t}\n\tif (maxDate && compareCivil(date, maxDate) > 0) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction dateSelectable(\n\tiso: string,\n\tmin?: string,\n\tmax?: string,\n\tisDisabledDate?: (iso: string) => boolean,\n) {\n\treturn withinBounds(iso, min, max) && !isDisabledDate?.(iso);\n}\n\nexport type DatePickerRange = { from: string; to?: string };\n\nexport type DatePickerPreset = {\n\tlabel: string;\n\tvalue: string | { from: string; to: string };\n};\n\nexport type DatePickerLabels = {\n\t/**\n\t * Accessible label for the calendar popup container.\n\t * @default \"Date calendar\" (or derived from `aria-label`)\n\t */\n\tcalendar?: string;\n\t/**\n\t * Accessible label for previous month button.\n\t * @default \"Prev\"\n\t */\n\tpreviousMonth?: string;\n\t/**\n\t * Accessible label for next month button.\n\t * @default \"Next\"\n\t */\n\tnextMonth?: string;\n\t/**\n\t * Fallback label for the trigger when no date is chosen.\n\t * @default \"Pick a date\"\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Custom validation error message displayed when form validation fails.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Accessible keyboard navigation instructions announced for the calendar grid.\n\t */\n\tkeyboardInstructions?: string;\n};\n\nexport type DatePickerProps = Omit<\n\tComponentProps<\"input\">,\n\t| \"value\"\n\t| \"defaultValue\"\n\t| \"onChange\"\n\t| \"type\"\n\t| \"children\"\n\t| \"disabled\"\n\t| \"name\"\n\t| \"required\"\n\t| \"min\"\n\t| \"max\"\n> & {\n\t/**\n\t * The controlled ISO date in single mode.\n\t */\n\tvalue?: string;\n\t/**\n\t * The uncontrolled initial ISO date in single mode.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Called with the ISO date in single mode.\n\t */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Selection mode.\n\t * @default single\n\t */\n\tmode?: \"single\" | \"range\";\n\t/**\n\t * The controlled displayed month in `YYYY-MM` format (at least 4-digit positive year).\n\t * If omitted or invalid, falls back smoothly to `defaultMonth`, selected date, or today.\n\t */\n\tmonth?: string;\n\t/**\n\t * The uncontrolled initial displayed month in `YYYY-MM` format (at least 4-digit positive year).\n\t * If omitted or invalid, falls back smoothly to selected date or today.\n\t */\n\tdefaultMonth?: string;\n\t/**\n\t * Called only when calendar navigation requests a month change (`YYYY-MM`).\n\t * Not invoked during component render or synchronous prop synchronization.\n\t */\n\tonMonthChange?: (month: string) => void;\n\t/**\n\t * The controlled range in range mode.\n\t */\n\trangeValue?: DatePickerRange;\n\t/**\n\t * The uncontrolled initial range in range mode.\n\t */\n\tdefaultRangeValue?: DatePickerRange;\n\t/**\n\t * Called when the range changes.\n\t */\n\tonRangeChange?: (value: DatePickerRange) => void;\n\t/**\n\t * Additional dates that cannot be selected.\n\t */\n\tisDisabledDate?: (iso: string) => boolean;\n\t/**\n\t * Shortcut values shown above the calendar.\n\t */\n\tpresets?: DatePickerPreset[];\n\t/**\n\t * Locale used to format the trigger and weekday labels.\n\t * @default en-US\n\t */\n\tlocale?: string;\n\t/**\n\t * First day of the week. 0 is Sunday.\n\t * @default 0\n\t */\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\t/**\n\t * IANA time zone used to resolve today.\n\t */\n\ttimeZone?: string;\n\t/**\n\t * Custom formatter for the trigger label.\n\t */\n\tformatDate?: (date: Date) => string;\n\t/**\n\t * Optional localized labels for calendar dialog, navigation, and trigger placeholder.\n\t */\n\tlabels?: DatePickerLabels;\n\t/**\n\t * Native form field name.\n\t */\n\tname?: string;\n\t/**\n\t * Native required constraint. When readOnly is set, native required validation is disabled.\n\t * When an empty required DatePicker submits, the visible trigger receives focus and invalid state.\n\t */\n\trequired?: boolean;\n\t/**\n\t * Inclusive lower ISO bound.\n\t */\n\tmin?: string;\n\t/**\n\t * Inclusive upper ISO bound.\n\t */\n\tmax?: string;\n\t/**\n\t * Disable the trigger and calendar.\n\t */\n\tdisabled?: boolean;\n};\n\nfunction clampCivil(date: Civil, min?: string, max?: string) {\n\tconst minDate = min ? parseIso(min) : null;\n\tconst maxDate = max ? parseIso(max) : null;\n\tif (minDate && compareCivil(date, minDate) < 0) {\n\t\treturn minDate;\n\t}\n\tif (maxDate && compareCivil(date, maxDate) > 0) {\n\t\treturn maxDate;\n\t}\n\treturn date;\n}\n\nfunction isValidCivil(date: Civil): boolean {\n\tif (!Number.isFinite(date.y) || date.m < 1 || date.m > 12 || date.d < 1 || date.d > 31) {\n\t\treturn false;\n\t}\n\tconst utc = utcDate(date);\n\treturn (\n\t\t!Number.isNaN(utc.getTime()) &&\n\t\tutc.getUTCFullYear() === date.y &&\n\t\tutc.getUTCMonth() + 1 === date.m &&\n\t\tutc.getUTCDate() === date.d\n\t);\n}\n\nfunction isoOf(date: Civil | null) {\n\treturn date ? formatIso(date) : \"\";\n}\n\nfunction addDays(date: Civil, days: number): Civil | null {\n\tconst next = utcDate(date);\n\tif (Number.isNaN(next.getTime())) {\n\t\treturn null;\n\t}\n\tnext.setUTCDate(next.getUTCDate() + days);\n\tif (Number.isNaN(next.getTime())) {\n\t\treturn null;\n\t}\n\tconst civil = { y: next.getUTCFullYear(), m: next.getUTCMonth() + 1, d: next.getUTCDate() };\n\treturn isValidCivil(civil) ? civil : null;\n}\n\nfunction shiftMonth(month: Civil, delta: number): Civil | null {\n\tconst total = month.y * 12 + (month.m - 1) + delta;\n\tconst next = { y: Math.floor(total / 12), m: (total % 12) + 1, d: 1 };\n\treturn isValidCivil(next) ? next : null;\n}\n\nexport function DatePicker({\n\tvalue,\n\tdefaultValue = \"\",\n\tonChange,\n\tmode = \"single\",\n\tmonth: controlledMonthProp,\n\tdefaultMonth: defaultMonthProp,\n\tonMonthChange,\n\trangeValue,\n\tdefaultRangeValue,\n\tonRangeChange,\n\tisDisabledDate,\n\tpresets,\n\tlocale = \"en-US\",\n\tweekStartsOn = 0,\n\ttimeZone,\n\tformatDate,\n\tname,\n\trequired,\n\tmin,\n\tmax,\n\tdisabled,\n\tclassName,\n\tid,\n\t\"aria-label\": ariaLabel,\n\t\"aria-describedby\": ariaDescribedBy,\n\t\"aria-invalid\": ariaInvalid,\n\tlabels,\n\t...inputRest\n}: DatePickerProps) {\n\tconst {\n\t\tref: externalRef,\n\t\treadOnly,\n\t\tautoFocus,\n\t\tonFocus,\n\t\tonBlur,\n\t\tonInvalid: externalOnInvalid,\n\t\t\"aria-labelledby\": ariaLabelledBy,\n\t\t...formRest\n\t} = inputRest;\n\tconst [uncontrolled, setUncontrolled] = useState(defaultValue);\n\tconst [uncontrolledRange, setUncontrolledRange] = useState<DatePickerRange>(\n\t\tdefaultRangeValue ?? { from: \"\", to: undefined },\n\t);\n\tconst [open, setOpen] = useState(false);\n\tconst [isInvalid, setIsInvalid] = useState(false);\n\tconst [validationMessage, setValidationMessage] = useState(\"\");\n\tconst [focusIndex, setFocusIndex] = useState(0);\n\tconst dayRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\tconst pendingFocus = useRef<{ targetMonthKey: string; iso: string } | null>(null);\n\tconst focusDay = useRef(false);\n\tconst hiddenRef = useRef<HTMLInputElement>(null);\n\tconst triggerRef = useRef<HTMLButtonElement>(null);\n\tconst generatedErrorId = React.useId();\n\tconst errorId = id ? `${id}-error` : generatedErrorId;\n\tconst generatedMonthLiveId = React.useId();\n\tconst monthLiveId = id ? `${id}-month-live` : generatedMonthLiveId;\n\tconst generatedKeyboardInstructionsId = React.useId();\n\tconst keyboardInstructionsId = id\n\t\t? `${id}-keyboard-instructions`\n\t\t: generatedKeyboardInstructionsId;\n\n\tconst selected = value ?? uncontrolled;\n\tconst selectedRange = rangeValue ?? uncontrolledRange;\n\tconst selectedDate = parseIso(\n\t\tmode === \"range\" ? selectedRange.to || selectedRange.from || \"\" : selected,\n\t);\n\tconst cursorIso = selectedDate ? formatIso(selectedDate) : \"\";\n\n\tuseEffect(() => {\n\t\tif (cursorIso) {\n\t\t\tsetIsInvalid(false);\n\t\t\tsetValidationMessage(\"\");\n\t\t}\n\t}, [cursorIso]);\n\tconst submitted = mode === \"range\" ? \"\" : cursorIso;\n\n\tconst controlledParsed = useMemo(() => parseIsoMonth(controlledMonthProp), [controlledMonthProp]);\n\tconst isMonthControlled = controlledParsed !== null;\n\n\tconst [uncontrolledMonth, setUncontrolledMonth] = useState<Civil>(() => {\n\t\tconst parsedDef = parseIsoMonth(defaultMonthProp);\n\t\tif (parsedDef) {\n\t\t\treturn parsedDef;\n\t\t}\n\t\tconst initialCursor = selectedDate ?? todayCivil(timeZone);\n\t\tconst clampedInitial = clampCivil(initialCursor, min, max);\n\t\treturn { y: clampedInitial.y, m: clampedInitial.m, d: 1 };\n\t});\n\n\tconst activeMonth = controlledParsed ?? uncontrolledMonth;\n\tconst activeMonthKey = formatIsoMonth(activeMonth);\n\n\tconst requestMonth = (target: Civil) => {\n\t\tconst monthKey = formatIsoMonth(target);\n\t\tif (!isMonthControlled) {\n\t\t\tsetUncontrolledMonth(target);\n\t\t}\n\t\tonMonthChange?.(monthKey);\n\t};\n\n\tconst prevSelected = useRef(cursorIso);\n\tif (open && prevSelected.current !== cursorIso) {\n\t\tfocusDay.current = true;\n\t\tif (controlledMonthProp === undefined && defaultMonthProp === undefined) {\n\t\t\tconst next = selectedDate ?? todayCivil(timeZone);\n\t\t\tif (activeMonth.y !== next.y || activeMonth.m !== next.m) {\n\t\t\t\tsetUncontrolledMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\t}\n\t\t}\n\t}\n\tprevSelected.current = cursorIso;\n\n\tconst hasExplicitMonthConfig =\n\t\tcontrolledMonthProp !== undefined || defaultMonthProp !== undefined;\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\treturn;\n\t\t}\n\t\tif (!hasExplicitMonthConfig) {\n\t\t\tconst next = clampCivil(\n\t\t\t\t(cursorIso ? parseIso(cursorIso) : null) ?? todayCivil(timeZone),\n\t\t\t\tmin,\n\t\t\t\tmax,\n\t\t\t);\n\t\t\tsetUncontrolledMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\tif (!cursorIso) {\n\t\t\t\tfocusDay.current = true;\n\t\t\t}\n\t\t}\n\t}, [open, cursorIso, timeZone, min, max, hasExplicitMonthConfig]);\n\n\tuseEffect(() => {\n\t\tif (disabled) {\n\t\t\tsetOpen(false);\n\t\t}\n\t}, [disabled]);\n\n\tuseEffect(() => {\n\t\tif (autoFocus) {\n\t\t\ttriggerRef.current?.focus();\n\t\t}\n\t}, [autoFocus]);\n\n\tconst latestConfigRef = useRef({\n\t\tdefaultValue,\n\t\tdefaultRangeValue,\n\t\tmode,\n\t\trangeValue,\n\t\tvalue,\n\t});\n\tuseEffect(() => {\n\t\tlatestConfigRef.current = {\n\t\t\tdefaultValue,\n\t\t\tdefaultRangeValue,\n\t\t\tmode,\n\t\t\trangeValue,\n\t\t\tvalue,\n\t\t};\n\t});\n\n\tconst formAttr = formRest.form;\n\tuseEffect(() => {\n\t\tconst form = hiddenRef.current?.form;\n\t\tif (!form || (formAttr && form.id !== formAttr)) {\n\t\t\treturn;\n\t\t}\n\t\tlet disposed = false;\n\t\tconst timers = new Set<ReturnType<typeof setTimeout>>();\n\t\tconst onReset = (event: Event) => {\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\ttimers.delete(timer);\n\t\t\t\tif (disposed || event.defaultPrevented) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cfg = latestConfigRef.current;\n\t\t\t\tif (cfg.mode === \"range\" ? cfg.rangeValue === undefined : cfg.value === undefined) {\n\t\t\t\t\tsetUncontrolled(cfg.defaultValue);\n\t\t\t\t\tsetUncontrolledRange(cfg.defaultRangeValue ?? { from: \"\", to: undefined });\n\t\t\t\t}\n\t\t\t\tsetIsInvalid(false);\n\t\t\t\tsetValidationMessage(\"\");\n\t\t\t\tsetOpen(false);\n\t\t\t}, 0);\n\t\t\ttimers.add(timer);\n\t\t};\n\t\tform.addEventListener(\"reset\", onReset);\n\t\treturn () => {\n\t\t\tdisposed = true;\n\t\t\tfor (const timer of timers) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\ttimers.clear();\n\t\t\tform.removeEventListener(\"reset\", onReset);\n\t\t};\n\t}, [formAttr]);\n\n\tconst weekdayLabels = useMemo(() => {\n\t\tconst formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\", timeZone: \"UTC\" });\n\t\treturn Array.from({ length: 7 }, (_, index) => {\n\t\t\tconst day = new Date(Date.UTC(2024, 0, 7 + ((index + weekStartsOn) % 7)));\n\t\t\treturn formatter.format(day);\n\t\t});\n\t}, [locale, weekStartsOn]);\n\n\tconst days = useMemo(() => {\n\t\tconst first = { y: activeMonth.y, m: activeMonth.m, d: 1 };\n\t\tif (!isValidCivil(first)) {\n\t\t\treturn Array.from({ length: 42 }, () => null);\n\t\t}\n\t\tconst startOffset = (utcDate(first).getUTCDay() - weekStartsOn + 7) % 7;\n\t\tconst start = addDays(first, -startOffset);\n\t\tif (!start) {\n\t\t\treturn Array.from({ length: 42 }, (_, index) => addDays(first, index - startOffset));\n\t\t}\n\t\treturn Array.from({ length: 42 }, (_, index) => addDays(start, index));\n\t}, [activeMonth, weekStartsOn]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!open) {\n\t\t\treturn;\n\t\t}\n\t\tconst pending = pendingFocus.current;\n\t\tlet index = 0;\n\t\tif (pending) {\n\t\t\tif (pending.targetMonthKey === activeMonthKey) {\n\t\t\t\tpendingFocus.current = null;\n\t\t\t\tindex = days.findIndex((date) => isoOf(date) === pending.iso);\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\t\t\t\tfocusDay.current = true;\n\t\t\t} else {\n\t\t\t\tconst focused = document.activeElement;\n\t\t\t\tconst focusedIso =\n\t\t\t\t\tfocused instanceof HTMLElement && dayRefs.current.some((node) => node === focused)\n\t\t\t\t\t\t? focused.getAttribute(\"aria-label\")\n\t\t\t\t\t\t: null;\n\t\t\t\tconst focusedIndex = focusedIso ? days.findIndex((date) => isoOf(date) === focusedIso) : -1;\n\t\t\t\tif (focusedIndex >= 0) {\n\t\t\t\t\tindex = focusedIndex;\n\t\t\t\t} else {\n\t\t\t\t\tindex = focusIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst focused = document.activeElement;\n\t\t\tconst focusedIso =\n\t\t\t\t!focusDay.current &&\n\t\t\t\tfocused instanceof HTMLElement &&\n\t\t\t\tdayRefs.current.some((node) => node === focused)\n\t\t\t\t\t? focused.getAttribute(\"aria-label\")\n\t\t\t\t\t: null;\n\t\t\tconst focusedIndex = focusedIso ? days.findIndex((date) => isoOf(date) === focusedIso) : -1;\n\t\t\tif (focusedIndex >= 0) {\n\t\t\t\tindex = focusedIndex;\n\t\t\t} else {\n\t\t\t\tconst iso = cursorIso || submitted || formatIso(todayCivil(timeZone));\n\t\t\t\tconst selectedIndex = days.findIndex((date) => isoOf(date) === iso);\n\t\t\t\tif (selectedIndex >= 0 && days[selectedIndex]?.m === activeMonth.m) {\n\t\t\t\t\tindex = selectedIndex;\n\t\t\t\t} else {\n\t\t\t\t\tconst firstInMonth = days.findIndex((date) => date?.m === activeMonth.m);\n\t\t\t\t\tindex = firstInMonth >= 0 ? firstInMonth : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst enabled = (date: Civil | null) =>\n\t\t\tBoolean(date && date.y >= 1 && dateSelectable(formatIso(date), min, max, isDisabledDate));\n\t\tif (!enabled(days[index] ?? null)) {\n\t\t\tconst inMonth = days.findIndex((date) => date?.m === activeMonth.m && enabled(date));\n\t\t\tconst any = days.findIndex((date) => enabled(date));\n\t\t\tindex = inMonth >= 0 ? inMonth : any >= 0 ? any : index;\n\t\t}\n\t\tsetFocusIndex(index);\n\t\tif (focusDay.current) {\n\t\t\tfocusDay.current = false;\n\t\t\tdayRefs.current[index]?.focus();\n\t\t}\n\t}, [\n\t\topen,\n\t\tcursorIso,\n\t\tsubmitted,\n\t\ttimeZone,\n\t\tdays,\n\t\tactiveMonth.m,\n\t\tactiveMonthKey,\n\t\tfocusIndex,\n\t\tmin,\n\t\tmax,\n\t\tisDisabledDate,\n\t]);\n\n\tconst previousMonth = shiftMonth(activeMonth, -1);\n\tconst followingMonth = shiftMonth(activeMonth, 1);\n\tconst rangeFrom = mode === \"range\" ? selectedRange.from : \"\";\n\tconst rangeTo = mode === \"range\" ? selectedRange.to : undefined;\n\tconst label = formatTriggerLabel({\n\t\tmode,\n\t\tselectedDate,\n\t\trangeFrom,\n\t\trangeTo,\n\t\tlocale,\n\t\tformatDate,\n\t\tplaceholder: labels?.placeholder,\n\t});\n\tconst calendarLabel = labels?.calendar ?? (ariaLabel ? `${ariaLabel} calendar` : \"Date calendar\");\n\tconst prevMonthLabel = labels?.previousMonth ?? \"Prev\";\n\tconst nextMonthLabel = labels?.nextMonth ?? \"Next\";\n\n\tfunction selectable(iso: string) {\n\t\treturn dateSelectable(iso, min, max, isDisabledDate);\n\t}\n\n\tfunction focusCalendarDay(next: Civil) {\n\t\tif (next.y !== activeMonth.y || next.m !== activeMonth.m) {\n\t\t\tpendingFocus.current = {\n\t\t\t\ttargetMonthKey: formatIsoMonth(next),\n\t\t\t\tiso: formatIso(next),\n\t\t\t};\n\t\t\trequestMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\treturn;\n\t\t}\n\t\tconst index = days.findIndex((date) => isoOf(date) === formatIso(next));\n\t\tif (index >= 0) {\n\t\t\tsetFocusIndex(index);\n\t\t\tdayRefs.current[index]?.focus();\n\t\t}\n\t}\n\n\tfunction commit(next: string) {\n\t\tif (disabled || readOnly || !selectable(next)) {\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tsetIsInvalid(false);\n\t\t\tsetValidationMessage(\"\");\n\t\t}\n\t\tif (mode === \"range\") {\n\t\t\tconst current = rangeValue ?? uncontrolledRange;\n\t\t\tconst nextRange =\n\t\t\t\t!current.from || current.to\n\t\t\t\t\t? { from: next }\n\t\t\t\t\t: compareCivil(\n\t\t\t\t\t\t\t\tparseIso(next) ?? { y: 1, m: 1, d: 1 },\n\t\t\t\t\t\t\t\tparseIso(current.from) ?? { y: 1, m: 1, d: 1 },\n\t\t\t\t\t\t\t) < 0\n\t\t\t\t\t\t? { from: next, to: current.from }\n\t\t\t\t\t\t: { from: current.from, to: next };\n\t\t\tif (rangeValue === undefined) {\n\t\t\t\tsetUncontrolledRange(nextRange);\n\t\t\t}\n\t\t\tonRangeChange?.(nextRange);\n\t\t\tif (nextRange.to) {\n\t\t\t\tsetOpen(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (value === undefined) {\n\t\t\tsetUncontrolled(next);\n\t\t}\n\t\tsetOpen(false);\n\t\tonChange?.(next);\n\t}\n\n\tfunction applyPreset(preset: DatePickerPreset) {\n\t\tif (disabled || readOnly) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof preset.value === \"string\") {\n\t\t\tif (mode === \"range\") {\n\t\t\t\tif (!selectable(preset.value)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst nextRange = { from: preset.value, to: preset.value };\n\t\t\t\tif (rangeValue === undefined) {\n\t\t\t\t\tsetUncontrolledRange(nextRange);\n\t\t\t\t}\n\t\t\t\tonRangeChange?.(nextRange);\n\t\t\t\tsetOpen(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcommit(preset.value);\n\t\t\treturn;\n\t\t}\n\t\tif (mode === \"range\") {\n\t\t\tif (!selectable(preset.value.from) || !selectable(preset.value.to)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rangeValue === undefined) {\n\t\t\t\tsetUncontrolledRange(preset.value);\n\t\t\t}\n\t\t\tonRangeChange?.(preset.value);\n\t\t\tsetOpen(false);\n\t\t}\n\t}\n\n\tconst handleHiddenRef = React.useCallback(\n\t\t(node: HTMLInputElement | null) => {\n\t\t\thiddenRef.current = node;\n\t\t\tif (!externalRef) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof externalRef === \"function\") {\n\t\t\t\tconst cleanup = externalRef(node);\n\t\t\t\tif (typeof cleanup === \"function\") {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\thiddenRef.current = null;\n\t\t\t\t\t\tcleanup();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn () => {\n\t\t\t\t\thiddenRef.current = null;\n\t\t\t\t\texternalRef(null);\n\t\t\t\t};\n\t\t\t}\n\t\t\t(externalRef as React.RefObject<HTMLInputElement | null>).current = node;\n\t\t\treturn () => {\n\t\t\t\thiddenRef.current = null;\n\t\t\t\t(externalRef as React.RefObject<HTMLInputElement | null>).current = null;\n\t\t\t};\n\t\t},\n\t\t[externalRef],\n\t);\n\n\tconst invalidState = ariaInvalid ?? (isInvalid || undefined);\n\tconst hasDestructiveStyle =\n\t\tinvalidState === true ||\n\t\tinvalidState === \"true\" ||\n\t\tinvalidState === \"grammar\" ||\n\t\tinvalidState === \"spelling\";\n\n\tconst describedBy =\n\t\t[ariaDescribedBy, isInvalid && errorId ? errorId : undefined].filter(Boolean).join(\" \") ||\n\t\tundefined;\n\n\treturn (\n\t\t<Popover\n\t\t\topen={open}\n\t\t\tonOpenChange={(next) => {\n\t\t\t\tif (next && disabled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (next) {\n\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t\tif (controlledMonthProp === undefined && defaultMonthProp === undefined) {\n\t\t\t\t\t\tconst synced = (cursorIso ? parseIso(cursorIso) : null) ?? todayCivil(timeZone);\n\t\t\t\t\t\tsetUncontrolledMonth({ y: synced.y, m: synced.m, d: 1 });\n\t\t\t\t\t}\n\t\t\t\t\tfocusDay.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t}\n\t\t\t\tsetOpen(next);\n\t\t\t}}\n\t\t>\n\t\t\t<input\n\t\t\t\tref={handleHiddenRef}\n\t\t\t\ttype={mode === \"range\" ? \"text\" : \"date\"}\n\t\t\t\tname={name}\n\t\t\t\trequired={required}\n\t\t\t\treadOnly={readOnly}\n\t\t\t\tmin={mode === \"range\" ? undefined : min}\n\t\t\t\tmax={mode === \"range\" ? undefined : max}\n\t\t\t\tclassName=\"sr-only mb-basalt-space-lg min-h-basalt-control-inset\"\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1,\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\tclip: \"rect(0, 0, 0, 0)\",\n\t\t\t\t}}\n\t\t\t\tvalue={\n\t\t\t\t\tmode === \"range\" ? (rangeFrom && rangeTo ? `${rangeFrom}/${rangeTo}` : \"\") : submitted\n\t\t\t\t}\n\t\t\t\tonChange={() => undefined}\n\t\t\t\tonInvalid={(event) => {\n\t\t\t\t\texternalOnInvalid?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tsetIsInvalid(true);\n\t\t\t\t\t\tsetValidationMessage(\n\t\t\t\t\t\t\tlabels?.validationMessage ||\n\t\t\t\t\t\t\t\t(event.target as HTMLInputElement).validationMessage ||\n\t\t\t\t\t\t\t\t\"Please fill out this field.\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttriggerRef.current?.focus();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\t{...formRest}\n\t\t\t/>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tref={triggerRef}\n\t\t\t\t\tid={id}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonFocus={onFocus as ComponentProps<\"button\">[\"onFocus\"]}\n\t\t\t\t\tonBlur={onBlur as ComponentProps<\"button\">[\"onBlur\"]}\n\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tariaLabel ? (label === \"Pick a date\" ? ariaLabel : `${ariaLabel}: ${label}`) : undefined\n\t\t\t\t\t}\n\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\taria-invalid={invalidState}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"justify-start font-normal\",\n\t\t\t\t\t\thasDestructiveStyle && \"border-basalt-destructive text-basalt-destructive\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t{isInvalid && validationMessage ? (\n\t\t\t\t<span\n\t\t\t\t\tid={errorId}\n\t\t\t\t\trole=\"alert\"\n\t\t\t\t\tclassName=\"mt-basalt-space-sm block text-basalt-sm text-basalt-destructive\"\n\t\t\t\t>\n\t\t\t\t\t{validationMessage}\n\t\t\t\t</span>\n\t\t\t) : null}\n\t\t\t<PopoverContent\n\t\t\t\tarrow={false}\n\t\t\t\tclassName=\"w-basalt-64 p-basalt-space-lg\"\n\t\t\t\taria-label={calendarLabel}\n\t\t\t\taria-describedby={keyboardInstructionsId}\n\t\t\t\tonOpenAutoFocus={(event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tconst iso = cursorIso || submitted || formatIso(todayCivil(timeZone));\n\t\t\t\t\tconst selectedIndex = days.findIndex((date) => isoOf(date) === iso);\n\t\t\t\t\tconst enabled = (date: Civil | null) =>\n\t\t\t\t\t\tBoolean(\n\t\t\t\t\t\t\tdate && date.y >= 1 && dateSelectable(formatIso(date), min, max, isDisabledDate),\n\t\t\t\t\t\t);\n\t\t\t\t\tlet index =\n\t\t\t\t\t\tselectedIndex >= 0 && days[selectedIndex]?.m === activeMonth.m\n\t\t\t\t\t\t\t? selectedIndex\n\t\t\t\t\t\t\t: Math.max(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tdays.findIndex((date) => date?.m === activeMonth.m),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\tif (!enabled(days[index] ?? null)) {\n\t\t\t\t\t\tconst inMonth = days.findIndex((date) => date?.m === activeMonth.m && enabled(date));\n\t\t\t\t\t\tconst any = days.findIndex((date) => enabled(date));\n\t\t\t\t\t\tindex = inMonth >= 0 ? inMonth : any >= 0 ? any : index;\n\t\t\t\t\t}\n\t\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t\tdayRefs.current[index]?.focus();\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{presets && presets.length > 0 ? (\n\t\t\t\t\t<div className=\"mb-basalt-space-lg flex flex-wrap gap-basalt-space-sm\">\n\t\t\t\t\t\t{presets.map((preset) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={preset.label}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control-inset px-basalt-space-lg text-basalt-sm\"\n\t\t\t\t\t\t\t\tdisabled={disabled || readOnly}\n\t\t\t\t\t\t\t\tonClick={() => applyPreset(preset)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{preset.label}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t<div className=\"mb-basalt-space-lg flex items-center justify-between gap-basalt-space-lg\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\ticon={<ChevronLeft />}\n\t\t\t\t\t\taria-label={prevMonthLabel}\n\t\t\t\t\t\tclassName=\"size-basalt-8\"\n\t\t\t\t\t\tdisabled={disabled || !previousMonth || previousMonth.y < 1}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tif (!previousMonth || previousMonth.y < 1) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t\t\t\tfocusDay.current = false;\n\t\t\t\t\t\t\trequestMonth(previousMonth);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<span\n\t\t\t\t\t\tid={monthLiveId}\n\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\taria-atomic=\"true\"\n\t\t\t\t\t\tclassName=\"text-basalt-base font-medium\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{formatCivil(activeMonth, locale, { month: \"long\", year: \"numeric\" })}\n\t\t\t\t\t</span>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\ticon={<ChevronRight />}\n\t\t\t\t\t\taria-label={nextMonthLabel}\n\t\t\t\t\t\tclassName=\"size-basalt-8\"\n\t\t\t\t\t\tdisabled={disabled || !followingMonth}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tif (!followingMonth) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t\t\t\tfocusDay.current = false;\n\t\t\t\t\t\t\trequestMonth(followingMonth);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<p id={keyboardInstructionsId} className=\"sr-only\">\n\t\t\t\t\t{labels?.keyboardInstructions ??\n\t\t\t\t\t\t\"Use arrow keys to navigate dates, PageUp and PageDown to change months, and Enter or Space to select.\"}\n\t\t\t\t</p>\n\t\t\t\t{/* Biome override: WAI-ARIA APG Date Picker pattern uses a semantic table with role=\"grid\" and role=\"gridcell\" on cells while roving tabindex focuses the child button */}\n\t\t\t\t<table\n\t\t\t\t\trole=\"grid\"\n\t\t\t\t\taria-labelledby={monthLiveId}\n\t\t\t\t\taria-multiselectable={mode === \"range\" ? \"true\" : undefined}\n\t\t\t\t\tclassName=\"w-full border-collapse text-center\"\n\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\tconst current = days[focusIndex];\n\t\t\t\t\t\tif (!current) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.key === \"ArrowRight\" ||\n\t\t\t\t\t\t\tevent.key === \"ArrowLeft\" ||\n\t\t\t\t\t\t\tevent.key === \"ArrowDown\" ||\n\t\t\t\t\t\t\tevent.key === \"ArrowUp\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst delta =\n\t\t\t\t\t\t\t\tevent.key === \"ArrowRight\"\n\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t: event.key === \"ArrowLeft\"\n\t\t\t\t\t\t\t\t\t\t? -1\n\t\t\t\t\t\t\t\t\t\t: event.key === \"ArrowDown\"\n\t\t\t\t\t\t\t\t\t\t\t? 7\n\t\t\t\t\t\t\t\t\t\t\t: -7;\n\t\t\t\t\t\t\tlet next = addDays(current, delta);\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 42;\n\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnext = addDays(next, delta);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfocusCalendarDay(next);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === \"Home\" || event.key === \"End\") {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst dayOfWeek = utcDate(current).getUTCDay();\n\t\t\t\t\t\t\tconst col = (dayOfWeek - weekStartsOn + 7) % 7;\n\t\t\t\t\t\t\tconst deltaToEdge = event.key === \"Home\" ? -col : 6 - col;\n\t\t\t\t\t\t\tlet next: Civil | null = addDays(current, deltaToEdge);\n\t\t\t\t\t\t\tconst stepDir = event.key === \"Home\" ? 1 : -1;\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 7;\n\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnext = addDays(next, stepDir);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfocusCalendarDay(next);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === \"PageDown\" || event.key === \"PageUp\") {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst deltaMonths = event.shiftKey\n\t\t\t\t\t\t\t\t? event.key === \"PageDown\"\n\t\t\t\t\t\t\t\t\t? 12\n\t\t\t\t\t\t\t\t\t: -12\n\t\t\t\t\t\t\t\t: event.key === \"PageDown\"\n\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t: -1;\n\t\t\t\t\t\t\tconst target = shiftCivilMonthClamped(current, deltaMonths);\n\t\t\t\t\t\t\tif (!target) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet next: Civil | null = target;\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 42;\n\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnext = addDays(next, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\tnext = target;\n\t\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 42;\n\t\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tnext = addDays(next, -1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpendingFocus.current = {\n\t\t\t\t\t\t\t\ttargetMonthKey: formatIsoMonth(next),\n\t\t\t\t\t\t\t\tiso: formatIso(next),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\trequestMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === \"Enter\" || event.key === \" \") {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst iso = formatIso(current);\n\t\t\t\t\t\t\tif (current.y >= 1 && selectable(iso)) {\n\t\t\t\t\t\t\t\tcommit(iso);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{weekdayLabels.map((day, index) => (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={`${day}-${index}`}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control text-center text-basalt-sm font-medium text-basalt-muted-foreground\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{Array.from({ length: 6 }, (_, weekIndex) => (\n\t\t\t\t\t\t\t<tr key={`week-${weekIndex}`}>\n\t\t\t\t\t\t\t\t{days.slice(weekIndex * 7, weekIndex * 7 + 7).map((date, colIndex) => {\n\t\t\t\t\t\t\t\t\tconst index = weekIndex * 7 + colIndex;\n\t\t\t\t\t\t\t\t\tif (!date) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\t\tkey={`empty-${index}`}\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control p-0 text-center\"\n\t\t\t\t\t\t\t\t\t\t\t\tref={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdayRefs.current[index] = null;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst iso = formatIso(date);\n\t\t\t\t\t\t\t\t\tconst inMonth = date.m === activeMonth.m;\n\t\t\t\t\t\t\t\t\tconst inRange = date.y >= 1 && selectable(iso);\n\t\t\t\t\t\t\t\t\tconst fromDate = rangeFrom ? parseIso(rangeFrom) : null;\n\t\t\t\t\t\t\t\t\tconst toDate = rangeTo ? parseIso(rangeTo) : null;\n\t\t\t\t\t\t\t\t\tconst thisDate = parseIso(iso);\n\t\t\t\t\t\t\t\t\tconst inSelectedRange = Boolean(\n\t\t\t\t\t\t\t\t\t\tfromDate &&\n\t\t\t\t\t\t\t\t\t\t\ttoDate &&\n\t\t\t\t\t\t\t\t\t\t\tthisDate &&\n\t\t\t\t\t\t\t\t\t\t\tcompareCivil(thisDate, fromDate) >= 0 &&\n\t\t\t\t\t\t\t\t\t\t\tcompareCivil(thisDate, toDate) <= 0,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tconst isRangeEdge = iso === rangeFrom || iso === rangeTo;\n\t\t\t\t\t\t\t\t\tconst isSelected =\n\t\t\t\t\t\t\t\t\t\tmode === \"range\"\n\t\t\t\t\t\t\t\t\t\t\t? inSelectedRange || isRangeEdge\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(submitted) && iso === submitted;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\tkey={iso}\n\t\t\t\t\t\t\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\t\t\t\t\t\t\taria-selected={isSelected ? \"true\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control p-0 text-center\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdayRefs.current[index] = node;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={index === focusIndex ? 0 : -1}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-date={iso}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={iso}\n\t\t\t\t\t\t\t\t\t\t\t\taria-pressed={mode === \"range\" ? isRangeEdge : isSelected}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled || readOnly || !inRange}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\tCALENDAR_BUTTON,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mx-auto flex min-h-basalt-control w-basalt-control items-center justify-center rounded-basalt-md text-basalt-base\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinMonth ? \"text-basalt-foreground\" : \"text-basalt-muted-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinRange && \"hover:bg-basalt-hover\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinSelectedRange && !isRangeEdge && \"bg-basalt-selected\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinRange &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mode === \"range\" ? isRangeEdge : isSelected) &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"bg-basalt-primary text-basalt-primary-foreground hover:bg-basalt-primary-hover\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => inRange && commit(iso)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{date.d}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-picker.js","names":["React","pad","value","formatIso","date","utcDate","next","civilDate","parseIso","match","year","month","day","utc","parseIsoMonth","civil","isValidCivil","formatIsoMonth","CALENDAR_BUTTON","todayCivil","parts","read","part","type","formatCivil","locale","options","isLeapYear","y","daysInCivilMonth","m","shiftCivilMonthClamped","total","current","deltaMonths","targetY","targetM","maxD","target","formatTriggerLabel","one","iso","formatDate","mode","rangeFrom","rangeTo","placeholder","selectedDate","compareCivil","left","right","withinBounds","minDate","min","maxDate","max","dateSelectable","isDisabledDate","clampCivil","isoOf","addDays","days","shiftMonth","delta","DatePicker","controlledMonthProp","defaultMonthProp","ariaLabel","ariaDescribedBy","ariaInvalid","inputRest","externalRef","externalOnInvalid","ariaLabelledBy","formRest","uncontrolled","setUncontrolled","useState","defaultValue","uncontrolledRange","setUncontrolledRange","defaultRangeValue","open","setOpen","isInvalid","setIsInvalid","validationMessage","setValidationMessage","focusIndex","setFocusIndex","dayRefs","useRef","pendingFocus","focusDay","hiddenRef","triggerRef","generatedErrorId","errorId","id","generatedMonthLiveId","monthLiveId","generatedKeyboardInstructionsId","keyboardInstructionsId","selected","selectedRange","rangeValue","cursorIso","submitted","controlledParsed","useMemo","isMonthControlled","uncontrolledMonth","setUncontrolledMonth","parsedDef","clampedInitial","timeZone","activeMonth","activeMonthKey","requestMonth","monthKey","onMonthChange","prevSelected","hasExplicitMonthConfig","useEffect","disabled","autoFocus","latestConfigRef","formAttr","form","disposed","timers","onReset","timer","event","cfg","weekdayLabels","formatter","index","weekStartsOn","first","startOffset","start","pending","focused","focusedIso","node","focusedIndex","selectedIndex","firstInMonth","enabled","inMonth","any","previousMonth","followingMonth","label","labels","calendarLabel","prevMonthLabel","nextMonthLabel","selectable","focusCalendarDay","commit","readOnly","nextRange","onRangeChange","onChange","applyPreset","preset","handleHiddenRef","cleanup","invalidState","hasDestructiveStyle","describedBy","Popover","synced","PopoverTrigger","Button","cn","className","PopoverContent","presets","ChevronLeft","ChevronRight","step","col","stepDir","weekIndex","colIndex","inRange","fromDate","toDate","thisDate","inSelectedRange","isRangeEdge","isSelected"],"sources":["../../src/components/date-picker.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type ComponentProps, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\ntype Civil = { y: number; m: number; d: number };\n\nfunction pad(value: number) {\n\treturn String(value).padStart(2, \"0\");\n}\n\nfunction formatIso(date: Civil) {\n\treturn `${String(date.y).padStart(4, \"0\")}-${pad(date.m)}-${pad(date.d)}`;\n}\n\nfunction utcDate(date: Civil) {\n\tconst next = new Date(Date.UTC(date.y, date.m - 1, date.d));\n\tnext.setUTCFullYear(date.y);\n\treturn next;\n}\n\nfunction civilDate(date: Civil) {\n\tconst next = new Date(date.y, date.m - 1, date.d);\n\tnext.setFullYear(date.y);\n\treturn next;\n}\n\nfunction parseIso(value: string): Civil | null {\n\tconst match = /^(\\d{4,})-(\\d{2})-(\\d{2})$/.exec(value);\n\tif (!match) {\n\t\treturn null;\n\t}\n\tconst year = Number(match[1]);\n\tconst month = Number(match[2]);\n\tconst day = Number(match[3]);\n\tif (year < 1) {\n\t\treturn null;\n\t}\n\tconst utc = utcDate({ y: year, m: month, d: day });\n\tif (\n\t\tutc.getUTCFullYear() !== year ||\n\t\tutc.getUTCMonth() + 1 !== month ||\n\t\tutc.getUTCDate() !== day\n\t) {\n\t\treturn null;\n\t}\n\treturn { y: year, m: month, d: day };\n}\n\nfunction parseIsoMonth(value: string | undefined): Civil | null {\n\tif (!value) {\n\t\treturn null;\n\t}\n\tconst match = /^(\\d{4,})-(\\d{2})$/.exec(value);\n\tif (!match) {\n\t\treturn null;\n\t}\n\tconst year = Number(match[1]);\n\tconst month = Number(match[2]);\n\tif (year < 1 || month < 1 || month > 12) {\n\t\treturn null;\n\t}\n\tconst civil = { y: year, m: month, d: 1 };\n\treturn isValidCivil(civil) ? civil : null;\n}\n\nfunction formatIsoMonth(date: Civil): string {\n\treturn `${String(date.y).padStart(4, \"0\")}-${pad(date.m)}`;\n}\n\nconst CALENDAR_BUTTON =\n\t\"appearance-none border-0 bg-transparent p-0 font-inherit text-inherit cursor-pointer\";\n\nfunction todayCivil(timeZone?: string): Civil {\n\tconst parts = new Intl.DateTimeFormat(\"en-CA\", {\n\t\ttimeZone,\n\t\tyear: \"numeric\",\n\t\tmonth: \"2-digit\",\n\t\tday: \"2-digit\",\n\t}).formatToParts(new Date());\n\tconst read = (type: Intl.DateTimeFormatPartTypes) =>\n\t\tNumber(parts.find((part) => part.type === type)?.value);\n\treturn { y: read(\"year\"), m: read(\"month\"), d: read(\"day\") };\n}\n\nfunction formatCivil(date: Civil, locale: string, options: Intl.DateTimeFormatOptions) {\n\treturn new Intl.DateTimeFormat(locale, {\n\t\t...options,\n\t\ttimeZone: \"UTC\",\n\t\tcalendar: \"gregory\",\n\t}).format(utcDate(date));\n}\n\nfunction isLeapYear(y: number): boolean {\n\treturn (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;\n}\n\nfunction daysInCivilMonth(y: number, m: number): number {\n\tif (m === 2) {\n\t\treturn isLeapYear(y) ? 29 : 28;\n\t}\n\tif (m === 4 || m === 6 || m === 9 || m === 11) {\n\t\treturn 30;\n\t}\n\treturn 31;\n}\n\nfunction shiftCivilMonthClamped(current: Civil, deltaMonths: number): Civil | null {\n\tconst total = current.y * 12 + (current.m - 1) + deltaMonths;\n\tconst targetY = Math.floor(total / 12);\n\tif (targetY < 1) {\n\t\treturn null;\n\t}\n\tconst targetM = (((total % 12) + 12) % 12) + 1;\n\tconst maxD = daysInCivilMonth(targetY, targetM);\n\tconst target = { y: targetY, m: targetM, d: Math.min(current.d, maxD) };\n\treturn isValidCivil(target) ? target : null;\n}\n\nfunction formatTriggerLabel({\n\tmode,\n\tselectedDate,\n\trangeFrom,\n\trangeTo,\n\tlocale,\n\tformatDate,\n\tplaceholder = \"Pick a date\",\n}: {\n\tmode: \"single\" | \"range\";\n\tselectedDate: Civil | null;\n\trangeFrom: string;\n\trangeTo?: string;\n\tlocale: string;\n\tformatDate?: (date: Date) => string;\n\tplaceholder?: string;\n}) {\n\tfunction one(iso: string) {\n\t\tconst date = parseIso(iso);\n\t\tif (!date) {\n\t\t\treturn iso;\n\t\t}\n\t\treturn formatDate?.(civilDate(date)) ?? formatCivil(date, locale, { dateStyle: \"medium\" });\n\t}\n\tif (mode === \"range\") {\n\t\tif (!rangeFrom) {\n\t\t\treturn placeholder;\n\t\t}\n\t\tif (!rangeTo) {\n\t\t\treturn `${one(rangeFrom)} – …`;\n\t\t}\n\t\treturn `${one(rangeFrom)} – ${one(rangeTo)}`;\n\t}\n\treturn selectedDate\n\t\t? (formatDate?.(civilDate(selectedDate)) ??\n\t\t\t\tformatCivil(selectedDate, locale, { dateStyle: \"medium\" }))\n\t\t: placeholder;\n}\n\nfunction compareCivil(left: Civil, right: Civil) {\n\tif (left.y !== right.y) {\n\t\treturn left.y - right.y;\n\t}\n\tif (left.m !== right.m) {\n\t\treturn left.m - right.m;\n\t}\n\treturn left.d - right.d;\n}\n\nfunction withinBounds(iso: string, min?: string, max?: string) {\n\tconst date = parseIso(iso);\n\tconst minDate = min ? parseIso(min) : null;\n\tconst maxDate = max ? parseIso(max) : null;\n\tif (!date) {\n\t\treturn false;\n\t}\n\tif (minDate && compareCivil(date, minDate) < 0) {\n\t\treturn false;\n\t}\n\tif (maxDate && compareCivil(date, maxDate) > 0) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction dateSelectable(\n\tiso: string,\n\tmin?: string,\n\tmax?: string,\n\tisDisabledDate?: (iso: string) => boolean,\n) {\n\treturn withinBounds(iso, min, max) && !isDisabledDate?.(iso);\n}\n\nexport type DatePickerRange = { from: string; to?: string };\n\nexport type DatePickerPreset = {\n\tlabel: string;\n\tvalue: string | { from: string; to: string };\n};\n\nexport type DatePickerLabels = {\n\t/**\n\t * Accessible label for the calendar popup container.\n\t * @default \"Date calendar\" (or derived from `aria-label`)\n\t */\n\tcalendar?: string;\n\t/**\n\t * Accessible label for previous month button.\n\t * @default \"Prev\"\n\t */\n\tpreviousMonth?: string;\n\t/**\n\t * Accessible label for next month button.\n\t * @default \"Next\"\n\t */\n\tnextMonth?: string;\n\t/**\n\t * Fallback label for the trigger when no date is chosen.\n\t * @default \"Pick a date\"\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Custom validation error message displayed when form validation fails.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Accessible keyboard navigation instructions announced for the calendar grid.\n\t */\n\tkeyboardInstructions?: string;\n};\n\nexport type DatePickerProps = Omit<\n\tComponentProps<\"input\">,\n\t| \"value\"\n\t| \"defaultValue\"\n\t| \"onChange\"\n\t| \"type\"\n\t| \"children\"\n\t| \"disabled\"\n\t| \"name\"\n\t| \"required\"\n\t| \"min\"\n\t| \"max\"\n> & {\n\t/**\n\t * The controlled ISO date in single mode.\n\t */\n\tvalue?: string;\n\t/**\n\t * The uncontrolled initial ISO date in single mode.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Called with the ISO date in single mode.\n\t */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Selection mode.\n\t * @default single\n\t */\n\tmode?: \"single\" | \"range\";\n\t/**\n\t * The controlled displayed month in `YYYY-MM` format (at least 4-digit positive year).\n\t * If omitted or invalid, falls back smoothly to `defaultMonth`, selected date, or today.\n\t */\n\tmonth?: string;\n\t/**\n\t * The uncontrolled initial displayed month in `YYYY-MM` format (at least 4-digit positive year).\n\t * If omitted or invalid, falls back smoothly to selected date or today.\n\t */\n\tdefaultMonth?: string;\n\t/**\n\t * Called only when calendar navigation requests a month change (`YYYY-MM`).\n\t * Not invoked during component render or synchronous prop synchronization.\n\t */\n\tonMonthChange?: (month: string) => void;\n\t/**\n\t * The controlled range in range mode.\n\t */\n\trangeValue?: DatePickerRange;\n\t/**\n\t * The uncontrolled initial range in range mode.\n\t */\n\tdefaultRangeValue?: DatePickerRange;\n\t/**\n\t * Called when the range changes.\n\t */\n\tonRangeChange?: (value: DatePickerRange) => void;\n\t/**\n\t * Additional dates that cannot be selected.\n\t */\n\tisDisabledDate?: (iso: string) => boolean;\n\t/**\n\t * Shortcut values shown above the calendar.\n\t */\n\tpresets?: DatePickerPreset[];\n\t/**\n\t * Locale used to format the trigger and weekday labels.\n\t * @default en-US\n\t */\n\tlocale?: string;\n\t/**\n\t * First day of the week. 0 is Sunday.\n\t * @default 0\n\t */\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\t/**\n\t * IANA time zone used to resolve today.\n\t */\n\ttimeZone?: string;\n\t/**\n\t * Custom formatter for the trigger label.\n\t */\n\tformatDate?: (date: Date) => string;\n\t/**\n\t * Optional localized labels for calendar dialog, navigation, and trigger placeholder.\n\t */\n\tlabels?: DatePickerLabels;\n\t/**\n\t * Native form field name.\n\t */\n\tname?: string;\n\t/**\n\t * Native required constraint. When readOnly is set, native required validation is disabled.\n\t * When an empty required DatePicker submits, the visible trigger receives focus and invalid state.\n\t */\n\trequired?: boolean;\n\t/**\n\t * Inclusive lower ISO bound.\n\t */\n\tmin?: string;\n\t/**\n\t * Inclusive upper ISO bound.\n\t */\n\tmax?: string;\n\t/**\n\t * Disable the trigger and calendar.\n\t */\n\tdisabled?: boolean;\n};\n\nfunction clampCivil(date: Civil, min?: string, max?: string) {\n\tconst minDate = min ? parseIso(min) : null;\n\tconst maxDate = max ? parseIso(max) : null;\n\tif (minDate && compareCivil(date, minDate) < 0) {\n\t\treturn minDate;\n\t}\n\tif (maxDate && compareCivil(date, maxDate) > 0) {\n\t\treturn maxDate;\n\t}\n\treturn date;\n}\n\nfunction isValidCivil(date: Civil): boolean {\n\tif (!Number.isFinite(date.y) || date.m < 1 || date.m > 12 || date.d < 1 || date.d > 31) {\n\t\treturn false;\n\t}\n\tconst utc = utcDate(date);\n\treturn (\n\t\t!Number.isNaN(utc.getTime()) &&\n\t\tutc.getUTCFullYear() === date.y &&\n\t\tutc.getUTCMonth() + 1 === date.m &&\n\t\tutc.getUTCDate() === date.d\n\t);\n}\n\nfunction isoOf(date: Civil | null) {\n\treturn date ? formatIso(date) : \"\";\n}\n\nfunction addDays(date: Civil, days: number): Civil | null {\n\tconst next = utcDate(date);\n\tif (Number.isNaN(next.getTime())) {\n\t\treturn null;\n\t}\n\tnext.setUTCDate(next.getUTCDate() + days);\n\tif (Number.isNaN(next.getTime())) {\n\t\treturn null;\n\t}\n\tconst civil = { y: next.getUTCFullYear(), m: next.getUTCMonth() + 1, d: next.getUTCDate() };\n\treturn isValidCivil(civil) ? civil : null;\n}\n\nfunction shiftMonth(month: Civil, delta: number): Civil | null {\n\tconst total = month.y * 12 + (month.m - 1) + delta;\n\tconst next = { y: Math.floor(total / 12), m: (total % 12) + 1, d: 1 };\n\treturn isValidCivil(next) ? next : null;\n}\n\nexport function DatePicker({\n\tvalue,\n\tdefaultValue = \"\",\n\tonChange,\n\tmode = \"single\",\n\tmonth: controlledMonthProp,\n\tdefaultMonth: defaultMonthProp,\n\tonMonthChange,\n\trangeValue,\n\tdefaultRangeValue,\n\tonRangeChange,\n\tisDisabledDate,\n\tpresets,\n\tlocale = \"en-US\",\n\tweekStartsOn = 0,\n\ttimeZone,\n\tformatDate,\n\tname,\n\trequired,\n\tmin,\n\tmax,\n\tdisabled,\n\tclassName,\n\tid,\n\t\"aria-label\": ariaLabel,\n\t\"aria-describedby\": ariaDescribedBy,\n\t\"aria-invalid\": ariaInvalid,\n\tlabels,\n\t...inputRest\n}: DatePickerProps) {\n\tconst {\n\t\tref: externalRef,\n\t\treadOnly,\n\t\tautoFocus,\n\t\tonFocus,\n\t\tonBlur,\n\t\tonInvalid: externalOnInvalid,\n\t\t\"aria-labelledby\": ariaLabelledBy,\n\t\t...formRest\n\t} = inputRest;\n\tconst [uncontrolled, setUncontrolled] = useState(defaultValue);\n\tconst [uncontrolledRange, setUncontrolledRange] = useState<DatePickerRange>(\n\t\tdefaultRangeValue ?? { from: \"\", to: undefined },\n\t);\n\tconst [open, setOpen] = useState(false);\n\tconst [isInvalid, setIsInvalid] = useState(false);\n\tconst [validationMessage, setValidationMessage] = useState(\"\");\n\tconst [focusIndex, setFocusIndex] = useState(0);\n\tconst dayRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\tconst pendingFocus = useRef<{ targetMonthKey: string; iso: string } | null>(null);\n\tconst focusDay = useRef(false);\n\tconst hiddenRef = useRef<HTMLInputElement>(null);\n\tconst triggerRef = useRef<HTMLButtonElement>(null);\n\tconst generatedErrorId = React.useId();\n\tconst errorId = id ? `${id}-error` : generatedErrorId;\n\tconst generatedMonthLiveId = React.useId();\n\tconst monthLiveId = id ? `${id}-month-live` : generatedMonthLiveId;\n\tconst generatedKeyboardInstructionsId = React.useId();\n\tconst keyboardInstructionsId = id\n\t\t? `${id}-keyboard-instructions`\n\t\t: generatedKeyboardInstructionsId;\n\n\tconst selected = value ?? uncontrolled;\n\tconst selectedRange = rangeValue ?? uncontrolledRange;\n\tconst selectedDate = parseIso(\n\t\tmode === \"range\" ? selectedRange.to || selectedRange.from || \"\" : selected,\n\t);\n\tconst cursorIso = selectedDate ? formatIso(selectedDate) : \"\";\n\n\tuseEffect(() => {\n\t\tif (cursorIso) {\n\t\t\tsetIsInvalid(false);\n\t\t\tsetValidationMessage(\"\");\n\t\t}\n\t}, [cursorIso]);\n\tconst submitted = mode === \"range\" ? \"\" : cursorIso;\n\n\tconst controlledParsed = useMemo(() => parseIsoMonth(controlledMonthProp), [controlledMonthProp]);\n\tconst isMonthControlled = controlledParsed !== null;\n\n\tconst [uncontrolledMonth, setUncontrolledMonth] = useState<Civil>(() => {\n\t\tconst parsedDef = parseIsoMonth(defaultMonthProp);\n\t\tif (parsedDef) {\n\t\t\treturn parsedDef;\n\t\t}\n\t\tconst initialCursor = selectedDate ?? todayCivil(timeZone);\n\t\tconst clampedInitial = clampCivil(initialCursor, min, max);\n\t\treturn { y: clampedInitial.y, m: clampedInitial.m, d: 1 };\n\t});\n\n\tconst activeMonth = controlledParsed ?? uncontrolledMonth;\n\tconst activeMonthKey = formatIsoMonth(activeMonth);\n\n\tconst requestMonth = (target: Civil) => {\n\t\tconst monthKey = formatIsoMonth(target);\n\t\tif (!isMonthControlled) {\n\t\t\tsetUncontrolledMonth(target);\n\t\t}\n\t\tonMonthChange?.(monthKey);\n\t};\n\n\tconst prevSelected = useRef(cursorIso);\n\tif (open && prevSelected.current !== cursorIso) {\n\t\tfocusDay.current = true;\n\t\tif (controlledMonthProp === undefined && defaultMonthProp === undefined) {\n\t\t\tconst next = selectedDate ?? todayCivil(timeZone);\n\t\t\tif (activeMonth.y !== next.y || activeMonth.m !== next.m) {\n\t\t\t\tsetUncontrolledMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\t}\n\t\t}\n\t}\n\tprevSelected.current = cursorIso;\n\n\tconst hasExplicitMonthConfig =\n\t\tcontrolledMonthProp !== undefined || defaultMonthProp !== undefined;\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\treturn;\n\t\t}\n\t\tif (!hasExplicitMonthConfig) {\n\t\t\tconst next = clampCivil(\n\t\t\t\t(cursorIso ? parseIso(cursorIso) : null) ?? todayCivil(timeZone),\n\t\t\t\tmin,\n\t\t\t\tmax,\n\t\t\t);\n\t\t\tsetUncontrolledMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\tif (!cursorIso) {\n\t\t\t\tfocusDay.current = true;\n\t\t\t}\n\t\t}\n\t}, [open, cursorIso, timeZone, min, max, hasExplicitMonthConfig]);\n\n\tuseEffect(() => {\n\t\tif (disabled) {\n\t\t\tsetOpen(false);\n\t\t}\n\t}, [disabled]);\n\n\tuseEffect(() => {\n\t\tif (autoFocus) {\n\t\t\ttriggerRef.current?.focus();\n\t\t}\n\t}, [autoFocus]);\n\n\tconst latestConfigRef = useRef({\n\t\tdefaultValue,\n\t\tdefaultRangeValue,\n\t\tmode,\n\t\trangeValue,\n\t\tvalue,\n\t});\n\tuseEffect(() => {\n\t\tlatestConfigRef.current = {\n\t\t\tdefaultValue,\n\t\t\tdefaultRangeValue,\n\t\t\tmode,\n\t\t\trangeValue,\n\t\t\tvalue,\n\t\t};\n\t});\n\n\tconst formAttr = formRest.form;\n\tuseEffect(() => {\n\t\tconst form = hiddenRef.current?.form;\n\t\tif (!form || (formAttr && form.id !== formAttr)) {\n\t\t\treturn;\n\t\t}\n\t\tlet disposed = false;\n\t\tconst timers = new Set<ReturnType<typeof setTimeout>>();\n\t\tconst onReset = (event: Event) => {\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\ttimers.delete(timer);\n\t\t\t\tif (disposed || event.defaultPrevented) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cfg = latestConfigRef.current;\n\t\t\t\tif (cfg.mode === \"range\" ? cfg.rangeValue === undefined : cfg.value === undefined) {\n\t\t\t\t\tsetUncontrolled(cfg.defaultValue);\n\t\t\t\t\tsetUncontrolledRange(cfg.defaultRangeValue ?? { from: \"\", to: undefined });\n\t\t\t\t}\n\t\t\t\tsetIsInvalid(false);\n\t\t\t\tsetValidationMessage(\"\");\n\t\t\t\tsetOpen(false);\n\t\t\t}, 0);\n\t\t\ttimers.add(timer);\n\t\t};\n\t\tform.addEventListener(\"reset\", onReset);\n\t\treturn () => {\n\t\t\tdisposed = true;\n\t\t\tfor (const timer of timers) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\ttimers.clear();\n\t\t\tform.removeEventListener(\"reset\", onReset);\n\t\t};\n\t}, [formAttr]);\n\n\tconst weekdayLabels = useMemo(() => {\n\t\tconst formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\", timeZone: \"UTC\" });\n\t\treturn Array.from({ length: 7 }, (_, index) => {\n\t\t\tconst day = new Date(Date.UTC(2024, 0, 7 + ((index + weekStartsOn) % 7)));\n\t\t\treturn formatter.format(day);\n\t\t});\n\t}, [locale, weekStartsOn]);\n\n\tconst days = useMemo(() => {\n\t\tconst first = { y: activeMonth.y, m: activeMonth.m, d: 1 };\n\t\tif (!isValidCivil(first)) {\n\t\t\treturn Array.from({ length: 42 }, () => null);\n\t\t}\n\t\tconst startOffset = (utcDate(first).getUTCDay() - weekStartsOn + 7) % 7;\n\t\tconst start = addDays(first, -startOffset);\n\t\tif (!start) {\n\t\t\treturn Array.from({ length: 42 }, (_, index) => addDays(first, index - startOffset));\n\t\t}\n\t\treturn Array.from({ length: 42 }, (_, index) => addDays(start, index));\n\t}, [activeMonth, weekStartsOn]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!open) {\n\t\t\treturn;\n\t\t}\n\t\tconst pending = pendingFocus.current;\n\t\tlet index = 0;\n\t\tif (pending) {\n\t\t\tif (pending.targetMonthKey === activeMonthKey) {\n\t\t\t\tpendingFocus.current = null;\n\t\t\t\tindex = days.findIndex((date) => isoOf(date) === pending.iso);\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\t\t\t\tfocusDay.current = true;\n\t\t\t} else {\n\t\t\t\tconst focused = document.activeElement;\n\t\t\t\tconst focusedIso =\n\t\t\t\t\tfocused instanceof HTMLElement && dayRefs.current.some((node) => node === focused)\n\t\t\t\t\t\t? focused.getAttribute(\"aria-label\")\n\t\t\t\t\t\t: null;\n\t\t\t\tconst focusedIndex = focusedIso ? days.findIndex((date) => isoOf(date) === focusedIso) : -1;\n\t\t\t\tif (focusedIndex >= 0) {\n\t\t\t\t\tindex = focusedIndex;\n\t\t\t\t} else {\n\t\t\t\t\tindex = focusIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst focused = document.activeElement;\n\t\t\tconst focusedIso =\n\t\t\t\t!focusDay.current &&\n\t\t\t\tfocused instanceof HTMLElement &&\n\t\t\t\tdayRefs.current.some((node) => node === focused)\n\t\t\t\t\t? focused.getAttribute(\"aria-label\")\n\t\t\t\t\t: null;\n\t\t\tconst focusedIndex = focusedIso ? days.findIndex((date) => isoOf(date) === focusedIso) : -1;\n\t\t\tif (focusedIndex >= 0) {\n\t\t\t\tindex = focusedIndex;\n\t\t\t} else {\n\t\t\t\tconst iso = cursorIso || submitted || formatIso(todayCivil(timeZone));\n\t\t\t\tconst selectedIndex = days.findIndex((date) => isoOf(date) === iso);\n\t\t\t\tif (selectedIndex >= 0 && days[selectedIndex]?.m === activeMonth.m) {\n\t\t\t\t\tindex = selectedIndex;\n\t\t\t\t} else {\n\t\t\t\t\tconst firstInMonth = days.findIndex((date) => date?.m === activeMonth.m);\n\t\t\t\t\tindex = Math.max(firstInMonth, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst enabled = (date: Civil | null) =>\n\t\t\tBoolean(date && date.y >= 1 && dateSelectable(formatIso(date), min, max, isDisabledDate));\n\t\tif (!enabled(days[index] ?? null)) {\n\t\t\tconst inMonth = days.findIndex((date) => date?.m === activeMonth.m && enabled(date));\n\t\t\tconst any = days.findIndex((date) => enabled(date));\n\t\t\tindex = inMonth >= 0 ? inMonth : any >= 0 ? any : index;\n\t\t}\n\t\tsetFocusIndex(index);\n\t\tif (focusDay.current) {\n\t\t\tfocusDay.current = false;\n\t\t\tdayRefs.current[index]?.focus();\n\t\t}\n\t}, [\n\t\topen,\n\t\tcursorIso,\n\t\tsubmitted,\n\t\ttimeZone,\n\t\tdays,\n\t\tactiveMonth.m,\n\t\tactiveMonthKey,\n\t\tfocusIndex,\n\t\tmin,\n\t\tmax,\n\t\tisDisabledDate,\n\t]);\n\n\tconst previousMonth = shiftMonth(activeMonth, -1);\n\tconst followingMonth = shiftMonth(activeMonth, 1);\n\tconst rangeFrom = mode === \"range\" ? selectedRange.from : \"\";\n\tconst rangeTo = mode === \"range\" ? selectedRange.to : undefined;\n\tconst label = formatTriggerLabel({\n\t\tmode,\n\t\tselectedDate,\n\t\trangeFrom,\n\t\trangeTo,\n\t\tlocale,\n\t\tformatDate,\n\t\tplaceholder: labels?.placeholder,\n\t});\n\tconst calendarLabel = labels?.calendar ?? (ariaLabel ? `${ariaLabel} calendar` : \"Date calendar\");\n\tconst prevMonthLabel = labels?.previousMonth ?? \"Prev\";\n\tconst nextMonthLabel = labels?.nextMonth ?? \"Next\";\n\n\tfunction selectable(iso: string) {\n\t\treturn dateSelectable(iso, min, max, isDisabledDate);\n\t}\n\n\tfunction focusCalendarDay(next: Civil) {\n\t\tif (next.y !== activeMonth.y || next.m !== activeMonth.m) {\n\t\t\tpendingFocus.current = {\n\t\t\t\ttargetMonthKey: formatIsoMonth(next),\n\t\t\t\tiso: formatIso(next),\n\t\t\t};\n\t\t\trequestMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\treturn;\n\t\t}\n\t\tconst index = days.findIndex((date) => isoOf(date) === formatIso(next));\n\t\tif (index >= 0) {\n\t\t\tsetFocusIndex(index);\n\t\t\tdayRefs.current[index]?.focus();\n\t\t}\n\t}\n\n\tfunction commit(next: string) {\n\t\tif (disabled || readOnly || !selectable(next)) {\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tsetIsInvalid(false);\n\t\t\tsetValidationMessage(\"\");\n\t\t}\n\t\tif (mode === \"range\") {\n\t\t\tconst current = rangeValue ?? uncontrolledRange;\n\t\t\tconst nextRange =\n\t\t\t\t!current.from || current.to\n\t\t\t\t\t? { from: next }\n\t\t\t\t\t: compareCivil(\n\t\t\t\t\t\t\t\tparseIso(next) ?? { y: 1, m: 1, d: 1 },\n\t\t\t\t\t\t\t\tparseIso(current.from) ?? { y: 1, m: 1, d: 1 },\n\t\t\t\t\t\t\t) < 0\n\t\t\t\t\t\t? { from: next, to: current.from }\n\t\t\t\t\t\t: { from: current.from, to: next };\n\t\t\tif (rangeValue === undefined) {\n\t\t\t\tsetUncontrolledRange(nextRange);\n\t\t\t}\n\t\t\tonRangeChange?.(nextRange);\n\t\t\tif (nextRange.to) {\n\t\t\t\tsetOpen(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (value === undefined) {\n\t\t\tsetUncontrolled(next);\n\t\t}\n\t\tsetOpen(false);\n\t\tonChange?.(next);\n\t}\n\n\tfunction applyPreset(preset: DatePickerPreset) {\n\t\tif (disabled || readOnly) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof preset.value === \"string\") {\n\t\t\tif (mode === \"range\") {\n\t\t\t\tif (!selectable(preset.value)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst nextRange = { from: preset.value, to: preset.value };\n\t\t\t\tif (rangeValue === undefined) {\n\t\t\t\t\tsetUncontrolledRange(nextRange);\n\t\t\t\t}\n\t\t\t\tonRangeChange?.(nextRange);\n\t\t\t\tsetOpen(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcommit(preset.value);\n\t\t\treturn;\n\t\t}\n\t\tif (mode === \"range\") {\n\t\t\tif (!selectable(preset.value.from) || !selectable(preset.value.to)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rangeValue === undefined) {\n\t\t\t\tsetUncontrolledRange(preset.value);\n\t\t\t}\n\t\t\tonRangeChange?.(preset.value);\n\t\t\tsetOpen(false);\n\t\t}\n\t}\n\n\tconst handleHiddenRef = React.useCallback(\n\t\t(node: HTMLInputElement | null) => {\n\t\t\thiddenRef.current = node;\n\t\t\tif (!externalRef) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof externalRef === \"function\") {\n\t\t\t\tconst cleanup = externalRef(node);\n\t\t\t\tif (typeof cleanup === \"function\") {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\thiddenRef.current = null;\n\t\t\t\t\t\tcleanup();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn () => {\n\t\t\t\t\thiddenRef.current = null;\n\t\t\t\t\texternalRef(null);\n\t\t\t\t};\n\t\t\t}\n\t\t\t(externalRef as React.RefObject<HTMLInputElement | null>).current = node;\n\t\t\treturn () => {\n\t\t\t\thiddenRef.current = null;\n\t\t\t\t(externalRef as React.RefObject<HTMLInputElement | null>).current = null;\n\t\t\t};\n\t\t},\n\t\t[externalRef],\n\t);\n\n\tconst invalidState = ariaInvalid ?? (isInvalid || undefined);\n\tconst hasDestructiveStyle =\n\t\tinvalidState === true ||\n\t\tinvalidState === \"true\" ||\n\t\tinvalidState === \"grammar\" ||\n\t\tinvalidState === \"spelling\";\n\n\tconst describedBy =\n\t\t[ariaDescribedBy, isInvalid && errorId ? errorId : undefined].filter(Boolean).join(\" \") ||\n\t\tundefined;\n\n\treturn (\n\t\t<Popover\n\t\t\topen={open}\n\t\t\tonOpenChange={(next) => {\n\t\t\t\tif (next && disabled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (next) {\n\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t\tif (controlledMonthProp === undefined && defaultMonthProp === undefined) {\n\t\t\t\t\t\tconst synced = (cursorIso ? parseIso(cursorIso) : null) ?? todayCivil(timeZone);\n\t\t\t\t\t\tsetUncontrolledMonth({ y: synced.y, m: synced.m, d: 1 });\n\t\t\t\t\t}\n\t\t\t\t\tfocusDay.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t}\n\t\t\t\tsetOpen(next);\n\t\t\t}}\n\t\t>\n\t\t\t<input\n\t\t\t\tref={handleHiddenRef}\n\t\t\t\ttype={mode === \"range\" ? \"text\" : \"date\"}\n\t\t\t\tname={name}\n\t\t\t\trequired={required}\n\t\t\t\treadOnly={readOnly}\n\t\t\t\tmin={mode === \"range\" ? undefined : min}\n\t\t\t\tmax={mode === \"range\" ? undefined : max}\n\t\t\t\tclassName=\"sr-only mb-basalt-space-lg min-h-basalt-control-inset\"\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1,\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\tclip: \"rect(0, 0, 0, 0)\",\n\t\t\t\t}}\n\t\t\t\tvalue={\n\t\t\t\t\tmode === \"range\" ? (rangeFrom && rangeTo ? `${rangeFrom}/${rangeTo}` : \"\") : submitted\n\t\t\t\t}\n\t\t\t\tonChange={() => undefined}\n\t\t\t\tonInvalid={(event) => {\n\t\t\t\t\texternalOnInvalid?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tsetIsInvalid(true);\n\t\t\t\t\t\tsetValidationMessage(\n\t\t\t\t\t\t\tlabels?.validationMessage ||\n\t\t\t\t\t\t\t\t(event.target as HTMLInputElement).validationMessage ||\n\t\t\t\t\t\t\t\t\"Please fill out this field.\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttriggerRef.current?.focus();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\t{...formRest}\n\t\t\t/>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tref={triggerRef}\n\t\t\t\t\tid={id}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonFocus={onFocus as ComponentProps<\"button\">[\"onFocus\"]}\n\t\t\t\t\tonBlur={onBlur as ComponentProps<\"button\">[\"onBlur\"]}\n\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tariaLabel ? (label === \"Pick a date\" ? ariaLabel : `${ariaLabel}: ${label}`) : undefined\n\t\t\t\t\t}\n\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\taria-invalid={invalidState}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"justify-start font-normal\",\n\t\t\t\t\t\thasDestructiveStyle && \"border-basalt-destructive text-basalt-destructive\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t{isInvalid && validationMessage ? (\n\t\t\t\t<span\n\t\t\t\t\tid={errorId}\n\t\t\t\t\trole=\"alert\"\n\t\t\t\t\tclassName=\"mt-basalt-space-sm block text-basalt-sm text-basalt-destructive\"\n\t\t\t\t>\n\t\t\t\t\t{validationMessage}\n\t\t\t\t</span>\n\t\t\t) : null}\n\t\t\t<PopoverContent\n\t\t\t\tarrow={false}\n\t\t\t\tclassName=\"w-basalt-64 p-basalt-space-lg\"\n\t\t\t\taria-label={calendarLabel}\n\t\t\t\taria-describedby={keyboardInstructionsId}\n\t\t\t\tonOpenAutoFocus={(event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tconst iso = cursorIso || submitted || formatIso(todayCivil(timeZone));\n\t\t\t\t\tconst selectedIndex = days.findIndex((date) => isoOf(date) === iso);\n\t\t\t\t\tconst enabled = (date: Civil | null) =>\n\t\t\t\t\t\tBoolean(\n\t\t\t\t\t\t\tdate && date.y >= 1 && dateSelectable(formatIso(date), min, max, isDisabledDate),\n\t\t\t\t\t\t);\n\t\t\t\t\tlet index =\n\t\t\t\t\t\tselectedIndex >= 0 && days[selectedIndex]?.m === activeMonth.m\n\t\t\t\t\t\t\t? selectedIndex\n\t\t\t\t\t\t\t: Math.max(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tdays.findIndex((date) => date?.m === activeMonth.m),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\tif (!enabled(days[index] ?? null)) {\n\t\t\t\t\t\tconst inMonth = days.findIndex((date) => date?.m === activeMonth.m && enabled(date));\n\t\t\t\t\t\tconst any = days.findIndex((date) => enabled(date));\n\t\t\t\t\t\tindex = inMonth >= 0 ? inMonth : any >= 0 ? any : index;\n\t\t\t\t\t}\n\t\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t\tdayRefs.current[index]?.focus();\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{presets && presets.length > 0 ? (\n\t\t\t\t\t<div className=\"mb-basalt-space-lg flex flex-wrap gap-basalt-space-sm\">\n\t\t\t\t\t\t{presets.map((preset) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={preset.label}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control-inset px-basalt-space-lg text-basalt-sm\"\n\t\t\t\t\t\t\t\tdisabled={disabled || readOnly}\n\t\t\t\t\t\t\t\tonClick={() => applyPreset(preset)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{preset.label}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t<div className=\"mb-basalt-space-lg flex items-center justify-between gap-basalt-space-lg\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\ticon={<ChevronLeft />}\n\t\t\t\t\t\taria-label={prevMonthLabel}\n\t\t\t\t\t\tclassName=\"size-basalt-8\"\n\t\t\t\t\t\tdisabled={disabled || !previousMonth || previousMonth.y < 1}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tif (!previousMonth || previousMonth.y < 1) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t\t\t\tfocusDay.current = false;\n\t\t\t\t\t\t\trequestMonth(previousMonth);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<span\n\t\t\t\t\t\tid={monthLiveId}\n\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\taria-atomic=\"true\"\n\t\t\t\t\t\tclassName=\"text-basalt-base font-medium\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{formatCivil(activeMonth, locale, { month: \"long\", year: \"numeric\" })}\n\t\t\t\t\t</span>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\ticon={<ChevronRight />}\n\t\t\t\t\t\taria-label={nextMonthLabel}\n\t\t\t\t\t\tclassName=\"size-basalt-8\"\n\t\t\t\t\t\tdisabled={disabled || !followingMonth}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tif (!followingMonth) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpendingFocus.current = null;\n\t\t\t\t\t\t\tfocusDay.current = false;\n\t\t\t\t\t\t\trequestMonth(followingMonth);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<p id={keyboardInstructionsId} className=\"sr-only\">\n\t\t\t\t\t{labels?.keyboardInstructions ??\n\t\t\t\t\t\t\"Use arrow keys to navigate dates, PageUp and PageDown to change months, and Enter or Space to select.\"}\n\t\t\t\t</p>\n\t\t\t\t{/* Biome override: WAI-ARIA APG Date Picker pattern uses a semantic table with role=\"grid\" and role=\"gridcell\" on cells while roving tabindex focuses the child button */}\n\t\t\t\t<table\n\t\t\t\t\trole=\"grid\"\n\t\t\t\t\taria-labelledby={monthLiveId}\n\t\t\t\t\taria-multiselectable={mode === \"range\" ? \"true\" : undefined}\n\t\t\t\t\tclassName=\"w-full border-collapse text-center\"\n\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\tconst current = days[focusIndex];\n\t\t\t\t\t\tif (!current) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.key === \"ArrowRight\" ||\n\t\t\t\t\t\t\tevent.key === \"ArrowLeft\" ||\n\t\t\t\t\t\t\tevent.key === \"ArrowDown\" ||\n\t\t\t\t\t\t\tevent.key === \"ArrowUp\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst delta =\n\t\t\t\t\t\t\t\tevent.key === \"ArrowRight\"\n\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t: event.key === \"ArrowLeft\"\n\t\t\t\t\t\t\t\t\t\t? -1\n\t\t\t\t\t\t\t\t\t\t: event.key === \"ArrowDown\"\n\t\t\t\t\t\t\t\t\t\t\t? 7\n\t\t\t\t\t\t\t\t\t\t\t: -7;\n\t\t\t\t\t\t\tlet next = addDays(current, delta);\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 42;\n\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnext = addDays(next, delta);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfocusCalendarDay(next);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === \"Home\" || event.key === \"End\") {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst dayOfWeek = utcDate(current).getUTCDay();\n\t\t\t\t\t\t\tconst col = (dayOfWeek - weekStartsOn + 7) % 7;\n\t\t\t\t\t\t\tconst deltaToEdge = event.key === \"Home\" ? -col : 6 - col;\n\t\t\t\t\t\t\tlet next: Civil | null = addDays(current, deltaToEdge);\n\t\t\t\t\t\t\tconst stepDir = event.key === \"Home\" ? 1 : -1;\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 7;\n\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnext = addDays(next, stepDir);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfocusCalendarDay(next);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === \"PageDown\" || event.key === \"PageUp\") {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst deltaMonths = event.shiftKey\n\t\t\t\t\t\t\t\t? event.key === \"PageDown\"\n\t\t\t\t\t\t\t\t\t? 12\n\t\t\t\t\t\t\t\t\t: -12\n\t\t\t\t\t\t\t\t: event.key === \"PageDown\"\n\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t: -1;\n\t\t\t\t\t\t\tconst target = shiftCivilMonthClamped(current, deltaMonths);\n\t\t\t\t\t\t\tif (!target) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet next: Civil | null = target;\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 42;\n\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnext = addDays(next, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\tnext = target;\n\t\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\t\tlet step = 0;\n\t\t\t\t\t\t\t\t\tnext && next.y >= 1 && !selectable(formatIso(next)) && step < 42;\n\t\t\t\t\t\t\t\t\tstep += 1\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tnext = addDays(next, -1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!next || next.y < 1 || !selectable(formatIso(next))) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpendingFocus.current = {\n\t\t\t\t\t\t\t\ttargetMonthKey: formatIsoMonth(next),\n\t\t\t\t\t\t\t\tiso: formatIso(next),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\trequestMonth({ y: next.y, m: next.m, d: 1 });\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === \"Enter\" || event.key === \" \") {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tconst iso = formatIso(current);\n\t\t\t\t\t\t\tif (current.y >= 1 && selectable(iso)) {\n\t\t\t\t\t\t\t\tcommit(iso);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{weekdayLabels.map((day, index) => (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={`${day}-${index}`}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control text-center text-basalt-sm font-medium text-basalt-muted-foreground\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{Array.from({ length: 6 }, (_, weekIndex) => (\n\t\t\t\t\t\t\t<tr key={`week-${weekIndex}`}>\n\t\t\t\t\t\t\t\t{days.slice(weekIndex * 7, weekIndex * 7 + 7).map((date, colIndex) => {\n\t\t\t\t\t\t\t\t\tconst index = weekIndex * 7 + colIndex;\n\t\t\t\t\t\t\t\t\tif (!date) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\t\tkey={`empty-${index}`}\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control p-0 text-center\"\n\t\t\t\t\t\t\t\t\t\t\t\tref={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdayRefs.current[index] = null;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst iso = formatIso(date);\n\t\t\t\t\t\t\t\t\tconst inMonth = date.m === activeMonth.m;\n\t\t\t\t\t\t\t\t\tconst inRange = date.y >= 1 && selectable(iso);\n\t\t\t\t\t\t\t\t\tconst fromDate = rangeFrom ? parseIso(rangeFrom) : null;\n\t\t\t\t\t\t\t\t\tconst toDate = rangeTo ? parseIso(rangeTo) : null;\n\t\t\t\t\t\t\t\t\tconst thisDate = parseIso(iso);\n\t\t\t\t\t\t\t\t\tconst inSelectedRange = Boolean(\n\t\t\t\t\t\t\t\t\t\tfromDate &&\n\t\t\t\t\t\t\t\t\t\t\ttoDate &&\n\t\t\t\t\t\t\t\t\t\t\tthisDate &&\n\t\t\t\t\t\t\t\t\t\t\tcompareCivil(thisDate, fromDate) >= 0 &&\n\t\t\t\t\t\t\t\t\t\t\tcompareCivil(thisDate, toDate) <= 0,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tconst isRangeEdge = iso === rangeFrom || iso === rangeTo;\n\t\t\t\t\t\t\t\t\tconst isSelected =\n\t\t\t\t\t\t\t\t\t\tmode === \"range\"\n\t\t\t\t\t\t\t\t\t\t\t? inSelectedRange || isRangeEdge\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(submitted) && iso === submitted;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\tkey={iso}\n\t\t\t\t\t\t\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\t\t\t\t\t\t\taria-selected={isSelected ? \"true\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-h-basalt-control p-0 text-center\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdayRefs.current[index] = node;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={index === focusIndex ? 0 : -1}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-date={iso}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={iso}\n\t\t\t\t\t\t\t\t\t\t\t\taria-pressed={mode === \"range\" ? isRangeEdge : isSelected}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled || readOnly || !inRange}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\tCALENDAR_BUTTON,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mx-auto flex min-h-basalt-control w-basalt-control items-center justify-center rounded-basalt-md text-basalt-base\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinMonth ? \"text-basalt-foreground\" : \"text-basalt-muted-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinRange && \"hover:bg-basalt-hover\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinSelectedRange && !isRangeEdge && \"bg-basalt-selected\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinRange &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mode === \"range\" ? isRangeEdge : isSelected) &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"bg-basalt-primary text-basalt-primary-foreground hover:bg-basalt-primary-hover\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => inRange && commit(iso)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{date.d}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Button as e } from "./button.js";
3
3
  import { ConfirmDialog as t } from "./confirm-dialog.js";
4
4
  import * as n from "react";
5
5
  import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
6
- //#region src/components/delete-resource.tsx
6
+ // src/components/delete-resource.tsx
7
7
  function o({ name: o, onDelete: s, errorMessage: c }) {
8
8
  let [l, u] = n.useState(!1), [d, f] = n.useState(!1), [p, m] = n.useState(null), h = (e) => typeof c == "function" ? c(e) : c ?? (e instanceof Error && e.message ? e.message : "Failed to delete resource. Please try again.");
9
9
  return /* @__PURE__ */ i(t, {
@@ -36,7 +36,6 @@ function o({ name: o, onDelete: s, errorMessage: c }) {
36
36
  }
37
37
  });
38
38
  }
39
- //#endregion
40
39
  export { o as DeleteResource };
41
40
 
42
41
  //# sourceMappingURL=delete-resource.js.map
@@ -2,7 +2,7 @@
2
2
  import { cn as e } from "../utils/cn.js";
3
3
  import { BASALT_UI_CLASS as t } from "../utils/control-surface.js";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
- //#region src/components/description-list.tsx
5
+ // src/components/description-list.tsx
6
6
  var i = {
7
7
  1: "sm:grid-cols-1",
8
8
  2: "sm:grid-cols-2",
@@ -30,7 +30,6 @@ function o({ term: t, className: i, children: a, ...o }) {
30
30
  }
31
31
  o.displayName = "DescriptionList.Item";
32
32
  var s = Object.assign(a, { Item: o });
33
- //#endregion
34
33
  export { s as DescriptionList };
35
34
 
36
35
  //# sourceMappingURL=description-list.js.map
@@ -5,7 +5,7 @@ import { OVERLAY_LAYER as n, OVERLAY_MOTION as r } from "./overlay.js";
5
5
  import * as i from "react";
6
6
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
7
  import * as s from "@radix-ui/react-dialog";
8
- //#region src/components/dialog.tsx
8
+ // src/components/dialog.tsx
9
9
  var c = {
10
10
  sm: "sm:w-basalt-72",
11
11
  base: "sm:w-basalt-96",
@@ -66,7 +66,6 @@ var b = ({ className: t, ...n }) => /* @__PURE__ */ a("div", {
66
66
  ...n
67
67
  });
68
68
  b.displayName = "DialogFooter";
69
- //#endregion
70
69
  export { c as DIALOG_SIZES, d as Dialog, p as DialogClose, g as DialogContent, v as DialogDescription, b as DialogFooter, y as DialogHeader, h as DialogOverlay, m as DialogPortal, _ as DialogTitle, f as DialogTrigger, l as dialogOverlayClass, u as dialogPanelClass };
71
70
 
72
71
  //# sourceMappingURL=dialog.js.map
@@ -8,7 +8,7 @@ import { Table as a, TableBody as o, TableCell as s, TableHead as c, TableHeader
8
8
  import { useId as d } from "react";
9
9
  import { Check as f, Minus as p, Plus as m } from "lucide-react";
10
10
  import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
11
- //#region src/components/diff-table.tsx
11
+ // src/components/diff-table.tsx
12
12
  function v({ title: v = "Proposed changes", columns: y, className: b, ...x }) {
13
13
  let S = i(x), C = d();
14
14
  return /* @__PURE__ */ _(r, {
@@ -145,7 +145,6 @@ function v({ title: v = "Proposed changes", columns: y, className: b, ...x }) {
145
145
  ]
146
146
  });
147
147
  }
148
- //#endregion
149
148
  export { v as DiffTable };
150
149
 
151
150
  //# sourceMappingURL=diff-table.js.map
@@ -5,7 +5,7 @@ import { OVERLAY_LAYER as n, OVERLAY_MOTION as r } from "./overlay.js";
5
5
  import { dialogOverlayClass as i } from "./dialog.js";
6
6
  import { useEffect as a, useRef as o } from "react";
7
7
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
- //#region src/components/dock.tsx
8
+ // src/components/dock.tsx
9
9
  var l = "button:not([disabled]), [href], input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
10
10
  function u(e) {
11
11
  return e ? [...e.querySelectorAll(l)].filter((e) => {
@@ -90,7 +90,6 @@ function f({ open: l, mode: d = "push", width: f = "clamp(300px, 32.5vw, 546px)"
90
90
  children: T
91
91
  });
92
92
  }
93
- //#endregion
94
93
  export { f as Dock, d as DockBody };
95
94
 
96
95
  //# sourceMappingURL=dock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dock.js","names":["FOCUSABLE","tabbables","root","node","current","DockBody","cn","className","Dock","ariaLabel","overlay","mode","panelRef","useRef","setPanel","wasOpen","open","previousFocus","useEffect","timer","onKeyDown","event","onDismiss","panelClass","OVERLAY_LAYER","OVERLAY_MOTION","panelStyle","width","inner","dismissLabel","dialogOverlayClass","BASALT_UI_CLASS"],"sources":["../../src/components/dock.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useRef } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { BASALT_UI_CLASS } from \"../utils/control-surface\";\nimport { dialogOverlayClass } from \"./dialog\";\nimport { OVERLAY_LAYER, OVERLAY_MOTION } from \"./overlay\";\n\nconst FOCUSABLE =\n\t'button:not([disabled]), [href], input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction tabbables(root: HTMLElement | null) {\n\tif (!root) {\n\t\treturn [];\n\t}\n\treturn [...root.querySelectorAll<HTMLElement>(FOCUSABLE)].filter((node) => {\n\t\tif (node.closest(\"[inert], [hidden]\")) {\n\t\t\treturn false;\n\t\t}\n\t\tif (node.tabIndex < 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (window.getComputedStyle(node).visibility === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let current: HTMLElement | null = node; current; current = current.parentElement) {\n\t\t\tif (window.getComputedStyle(current).display === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n}\n\nexport type DockMode = \"overlay\" | \"push\";\n\nexport interface DockProps {\n\t/**\n\t * Whether the dock occupies its width.\n\t */\n\topen: boolean;\n\t/**\n\t * `push` shrinks the main column. `overlay` covers the local region with a non-modal scrim.\n\t * @default \"push\"\n\t */\n\tmode?: DockMode;\n\t/**\n\t * Width when open.\n\t * @default \"clamp(300px, 32.5vw, 546px)\"\n\t */\n\twidth?: string;\n\t/**\n\t * Overlay scrim click. Ignored in push mode.\n\t */\n\tonDismiss?: () => void;\n\t/**\n\t * Overlay scrim accessible name.\n\t * @default \"Dismiss\"\n\t */\n\tdismissLabel?: string;\n\t/**\n\t * Accessible name.\n\t */\n\t\"aria-label\": string;\n\tclassName?: string;\n\tchildren: ReactNode;\n}\n\nexport interface DockBodyProps {\n\tclassName?: string;\n\tchildren: ReactNode;\n}\n\nexport function DockBody({ className, children }: DockBodyProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-1 flex-col gap-basalt-space-lg overflow-y-auto px-basalt-space-lg py-basalt-space-lg\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nexport function Dock({\n\topen,\n\tmode = \"push\",\n\twidth = \"clamp(300px, 32.5vw, 546px)\",\n\tonDismiss,\n\tdismissLabel = \"Dismiss\",\n\tclassName,\n\tchildren,\n\t\"aria-label\": ariaLabel,\n}: DockProps) {\n\tconst overlay = mode === \"overlay\";\n\tconst panelRef = useRef<HTMLElement | null>(null);\n\tconst setPanel = (node: HTMLElement | null) => {\n\t\tpanelRef.current = node;\n\t};\n\tconst wasOpen = useRef(!overlay && open);\n\tconst previousFocus = useRef<HTMLElement | null>(null);\n\n\tuseEffect(() => {\n\t\tif (open) {\n\t\t\tif (wasOpen.current) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreviousFocus.current =\n\t\t\t\tdocument.activeElement instanceof HTMLElement ? document.activeElement : null;\n\t\t\tconst timer = window.setTimeout(() => {\n\t\t\t\tconst root = panelRef.current;\n\t\t\t\tconst nodes = tabbables(root);\n\t\t\t\t(nodes[0] ?? root)?.focus();\n\t\t\t\twasOpen.current = true;\n\t\t\t}, 0);\n\t\t\treturn () => window.clearTimeout(timer);\n\t\t}\n\t\tif (wasOpen.current) {\n\t\t\tpreviousFocus.current?.focus?.();\n\t\t\tpreviousFocus.current = null;\n\t\t\twasOpen.current = false;\n\t\t}\n\t}, [open]);\n\n\tuseEffect(() => {\n\t\tif (!overlay || !open) {\n\t\t\treturn;\n\t\t}\n\t\tconst onKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tif (event.defaultPrevented || !onDismiss) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonDismiss();\n\t\t\t}\n\t\t};\n\t\twindow.addEventListener(\"keydown\", onKeyDown);\n\t\treturn () => window.removeEventListener(\"keydown\", onKeyDown);\n\t}, [overlay, open, onDismiss]);\n\tconst panelClass = cn(\n\t\t\"overflow-hidden bg-basalt-background transition-[width] basalt-motion duration-basalt-normal ease-basalt\",\n\t\toverlay ? cn(\"absolute top-0 right-0 h-full\", OVERLAY_LAYER) : \"sticky top-0 h-screen shrink-0\",\n\t\tOVERLAY_MOTION,\n\t\tclassName,\n\t);\n\tconst panelStyle = { width: open ? width : 0 };\n\tconst inner = (\n\t\t<div\n\t\t\tclassName=\"flex h-full flex-col bg-basalt-card shadow-lg ring-1 ring-basalt-border/40\"\n\t\t\tstyle={{ width }}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\tif (!overlay) {\n\t\treturn (\n\t\t\t<aside\n\t\t\t\tref={setPanel}\n\t\t\t\tclassName={cn(BASALT_UI_CLASS, panelClass)}\n\t\t\t\tstyle={panelStyle}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\taria-hidden={!open}\n\t\t\t\tinert={!open || undefined}\n\t\t\t\ttabIndex={open ? -1 : undefined}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</aside>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn(\"absolute inset-0\", OVERLAY_LAYER, !open && \"pointer-events-none\")}>\n\t\t\t{onDismiss ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttabIndex={open ? 0 : -1}\n\t\t\t\t\taria-label={dismissLabel}\n\t\t\t\t\taria-hidden={!open}\n\t\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\t\tclassName={cn(dialogOverlayClass(\"absolute\"), !open && \"opacity-0\")}\n\t\t\t\t\tonClick={open ? onDismiss : undefined}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\taria-hidden\n\t\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\t\tclassName={cn(dialogOverlayClass(\"absolute\"), !open && \"opacity-0\")}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tref={setPanel}\n\t\t\t\trole=\"region\"\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn(BASALT_UI_CLASS, panelClass)}\n\t\t\t\tstyle={panelStyle}\n\t\t\t\taria-hidden={!open}\n\t\t\t\tinert={!open || undefined}\n\t\t\t\ttabIndex={open ? -1 : undefined}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dock.js","names":["FOCUSABLE","tabbables","root","node","current","DockBody","cn","className","Dock","ariaLabel","overlay","mode","panelRef","useRef","setPanel","wasOpen","open","previousFocus","useEffect","timer","onKeyDown","event","onDismiss","panelClass","OVERLAY_LAYER","OVERLAY_MOTION","panelStyle","width","inner","dismissLabel","dialogOverlayClass","BASALT_UI_CLASS"],"sources":["../../src/components/dock.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useRef } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { BASALT_UI_CLASS } from \"../utils/control-surface\";\nimport { dialogOverlayClass } from \"./dialog\";\nimport { OVERLAY_LAYER, OVERLAY_MOTION } from \"./overlay\";\n\nconst FOCUSABLE =\n\t'button:not([disabled]), [href], input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction tabbables(root: HTMLElement | null) {\n\tif (!root) {\n\t\treturn [];\n\t}\n\treturn [...root.querySelectorAll<HTMLElement>(FOCUSABLE)].filter((node) => {\n\t\tif (node.closest(\"[inert], [hidden]\")) {\n\t\t\treturn false;\n\t\t}\n\t\tif (node.tabIndex < 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (window.getComputedStyle(node).visibility === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let current: HTMLElement | null = node; current; current = current.parentElement) {\n\t\t\tif (window.getComputedStyle(current).display === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n}\n\nexport type DockMode = \"overlay\" | \"push\";\n\nexport interface DockProps {\n\t/**\n\t * Whether the dock occupies its width.\n\t */\n\topen: boolean;\n\t/**\n\t * `push` shrinks the main column. `overlay` covers the local region with a non-modal scrim.\n\t * @default \"push\"\n\t */\n\tmode?: DockMode;\n\t/**\n\t * Width when open.\n\t * @default \"clamp(300px, 32.5vw, 546px)\"\n\t */\n\twidth?: string;\n\t/**\n\t * Overlay scrim click. Ignored in push mode.\n\t */\n\tonDismiss?: () => void;\n\t/**\n\t * Overlay scrim accessible name.\n\t * @default \"Dismiss\"\n\t */\n\tdismissLabel?: string;\n\t/**\n\t * Accessible name.\n\t */\n\t\"aria-label\": string;\n\tclassName?: string;\n\tchildren: ReactNode;\n}\n\nexport interface DockBodyProps {\n\tclassName?: string;\n\tchildren: ReactNode;\n}\n\nexport function DockBody({ className, children }: DockBodyProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-1 flex-col gap-basalt-space-lg overflow-y-auto px-basalt-space-lg py-basalt-space-lg\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nexport function Dock({\n\topen,\n\tmode = \"push\",\n\twidth = \"clamp(300px, 32.5vw, 546px)\",\n\tonDismiss,\n\tdismissLabel = \"Dismiss\",\n\tclassName,\n\tchildren,\n\t\"aria-label\": ariaLabel,\n}: DockProps) {\n\tconst overlay = mode === \"overlay\";\n\tconst panelRef = useRef<HTMLElement | null>(null);\n\tconst setPanel = (node: HTMLElement | null) => {\n\t\tpanelRef.current = node;\n\t};\n\tconst wasOpen = useRef(!overlay && open);\n\tconst previousFocus = useRef<HTMLElement | null>(null);\n\n\tuseEffect(() => {\n\t\tif (open) {\n\t\t\tif (wasOpen.current) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreviousFocus.current =\n\t\t\t\tdocument.activeElement instanceof HTMLElement ? document.activeElement : null;\n\t\t\tconst timer = window.setTimeout(() => {\n\t\t\t\tconst root = panelRef.current;\n\t\t\t\tconst nodes = tabbables(root);\n\t\t\t\t(nodes[0] ?? root)?.focus();\n\t\t\t\twasOpen.current = true;\n\t\t\t}, 0);\n\t\t\treturn () => window.clearTimeout(timer);\n\t\t}\n\t\tif (wasOpen.current) {\n\t\t\tpreviousFocus.current?.focus?.();\n\t\t\tpreviousFocus.current = null;\n\t\t\twasOpen.current = false;\n\t\t}\n\t}, [open]);\n\n\tuseEffect(() => {\n\t\tif (!overlay || !open) {\n\t\t\treturn;\n\t\t}\n\t\tconst onKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tif (event.defaultPrevented || !onDismiss) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonDismiss();\n\t\t\t}\n\t\t};\n\t\twindow.addEventListener(\"keydown\", onKeyDown);\n\t\treturn () => window.removeEventListener(\"keydown\", onKeyDown);\n\t}, [overlay, open, onDismiss]);\n\tconst panelClass = cn(\n\t\t\"overflow-hidden bg-basalt-background transition-[width] basalt-motion duration-basalt-normal ease-basalt\",\n\t\toverlay ? cn(\"absolute top-0 right-0 h-full\", OVERLAY_LAYER) : \"sticky top-0 h-screen shrink-0\",\n\t\tOVERLAY_MOTION,\n\t\tclassName,\n\t);\n\tconst panelStyle = { width: open ? width : 0 };\n\tconst inner = (\n\t\t<div\n\t\t\tclassName=\"flex h-full flex-col bg-basalt-card shadow-lg ring-1 ring-basalt-border/40\"\n\t\t\tstyle={{ width }}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n\n\tif (!overlay) {\n\t\treturn (\n\t\t\t<aside\n\t\t\t\tref={setPanel}\n\t\t\t\tclassName={cn(BASALT_UI_CLASS, panelClass)}\n\t\t\t\tstyle={panelStyle}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\taria-hidden={!open}\n\t\t\t\tinert={!open || undefined}\n\t\t\t\ttabIndex={open ? -1 : undefined}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</aside>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn(\"absolute inset-0\", OVERLAY_LAYER, !open && \"pointer-events-none\")}>\n\t\t\t{onDismiss ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttabIndex={open ? 0 : -1}\n\t\t\t\t\taria-label={dismissLabel}\n\t\t\t\t\taria-hidden={!open}\n\t\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\t\tclassName={cn(dialogOverlayClass(\"absolute\"), !open && \"opacity-0\")}\n\t\t\t\t\tonClick={open ? onDismiss : undefined}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\taria-hidden\n\t\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\t\tclassName={cn(dialogOverlayClass(\"absolute\"), !open && \"opacity-0\")}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tref={setPanel}\n\t\t\t\trole=\"region\"\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn(BASALT_UI_CLASS, panelClass)}\n\t\t\t\tstyle={panelStyle}\n\t\t\t\taria-hidden={!open}\n\t\t\t\tinert={!open || undefined}\n\t\t\t\ttabIndex={open ? -1 : undefined}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { useHoverHighlight as r } from "../utils/use-hover-highlight.js";
5
5
  import * as i from "react";
6
6
  import { jsx as a } from "react/jsx-runtime";
7
7
  import * as o from "@radix-ui/react-dropdown-menu";
8
- //#region src/components/dropdown-menu.tsx
8
+ // src/components/dropdown-menu.tsx
9
9
  var s = o.Root, c = o.Trigger, l = o.Group, u = o.Portal, d = o.Sub, f = o.RadioGroup, p = i.forwardRef(({ className: t, sideOffset: i = 8, ...s }, c) => {
10
10
  let l = r(c);
11
11
  return /* @__PURE__ */ a(o.Portal, {
@@ -26,7 +26,6 @@ var m = i.forwardRef(({ className: n, ...r }, i) => /* @__PURE__ */ a(o.Item, {
26
26
  ...r
27
27
  }));
28
28
  m.displayName = o.Item.displayName;
29
- //#endregion
30
29
  export { s as DropdownMenu, p as DropdownMenuContent, l as DropdownMenuGroup, m as DropdownMenuItem, u as DropdownMenuPortal, f as DropdownMenuRadioGroup, d as DropdownMenuSub, c as DropdownMenuTrigger };
31
30
 
32
31
  //# sourceMappingURL=dropdown-menu.js.map
@@ -9,7 +9,7 @@ import { InlineEditable as o } from "./inline-editable.js";
9
9
  import { useId as s, useLayoutEffect as c, useRef as l, useState as u } from "react";
10
10
  import { Folder as d, Pencil as f } from "lucide-react";
11
11
  import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
12
- //#region src/components/editable-nav-item.tsx
12
+ // src/components/editable-nav-item.tsx
13
13
  function g({ label: d, href: g, onSelect: _, selected: v = !1, icon: y, count: b, actions: x, onRename: S, disabled: C = !1, renameLabel: w = "Rename", saveLabel: T = "Save", cancelLabel: E = "Cancel", className: D }) {
14
14
  let [O, k] = u(!1), A = s(), j = l(null), M = l(!1);
15
15
  c(() => {
@@ -89,7 +89,6 @@ function _({ icon: e = /* @__PURE__ */ m(d, { className: "size-basalt-icon-lg" }
89
89
  ...t
90
90
  });
91
91
  }
92
- //#endregion
93
92
  export { g as EditableNavItem, _ as FolderNavItem };
94
93
 
95
94
  //# sourceMappingURL=editable-nav-item.js.map
@@ -2,7 +2,7 @@
2
2
  import { cn as e } from "../utils/cn.js";
3
3
  import { BASALT_UI_CLASS as t } from "../utils/control-surface.js";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
- //#region src/components/empty.tsx
5
+ // src/components/empty.tsx
6
6
  function i({ title: i = "No results", description: a, icon: o, action: s, children: c, className: l, ...u }) {
7
7
  return /* @__PURE__ */ r("div", {
8
8
  className: e(t, "flex flex-col items-center gap-basalt-space-lg text-center", l),
@@ -31,7 +31,6 @@ function i({ title: i = "No results", description: a, icon: o, action: s, childr
31
31
  ]
32
32
  });
33
33
  }
34
- //#endregion
35
34
  export { i as Empty };
36
35
 
37
36
  //# sourceMappingURL=empty.js.map
@@ -4,7 +4,7 @@ import { OVERLAY_LAYER as t, OVERLAY_MOTION as n } from "./overlay.js";
4
4
  import { Button as r } from "./button.js";
5
5
  import * as i from "react";
6
6
  import { jsx as a } from "react/jsx-runtime";
7
- //#region src/components/fab.tsx
7
+ // src/components/fab.tsx
8
8
  var o = i.forwardRef(({ open: i = !1, placement: o = "fixed", className: s, children: c, onClick: l, "aria-label": u, disabled: d }, f) => /* @__PURE__ */ a(r, {
9
9
  ref: f,
10
10
  size: "icon",
@@ -19,7 +19,6 @@ var o = i.forwardRef(({ open: i = !1, placement: o = "fixed", className: s, chil
19
19
  children: c
20
20
  }));
21
21
  o.displayName = "Fab";
22
- //#endregion
23
22
  export { o as Fab };
24
23
 
25
24
  //# sourceMappingURL=fab.js.map
@@ -4,7 +4,7 @@ import { BASALT_UI_CLASS as t } from "../utils/control-surface.js";
4
4
  import { Label as n } from "./label.js";
5
5
  import * as r from "react";
6
6
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
- //#region src/components/field.tsx
7
+ // src/components/field.tsx
8
8
  function o(e) {
9
9
  return typeof e == "object" && !!e && !Array.isArray(e) && !r.isValidElement(e) && "message" in e;
10
10
  }
@@ -44,7 +44,6 @@ var c = r.forwardRef(({ label: o, htmlFor: c, hint: l, error: u, required: d, la
44
44
  });
45
45
  });
46
46
  c.displayName = "Field";
47
- //#endregion
48
47
  export { c as Field };
49
48
 
50
49
  //# sourceMappingURL=field.js.map