@nocoo/basalt 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +134 -15
  2. package/ai/COMPATIBILITY.md +180 -0
  3. package/ai/INTEGRATION.md +1760 -0
  4. package/ai/RECIPES.md +161 -0
  5. package/ai/USAGE.md +99 -0
  6. package/ai/registry.json +38099 -0
  7. package/ai/sources.json +10 -0
  8. package/dist/assets/brand-mark.d.ts +1 -0
  9. package/dist/assets/brand-mark.js +7 -0
  10. package/dist/assets/brand-mark.js.map +1 -0
  11. package/dist/charts/area.d.ts +58 -5
  12. package/dist/charts/area.js +20 -12
  13. package/dist/charts/area.js.map +1 -1
  14. package/dist/charts/bar.d.ts +54 -5
  15. package/dist/charts/bar.js +16 -10
  16. package/dist/charts/bar.js.map +1 -1
  17. package/dist/charts/bullet.d.ts +18 -1
  18. package/dist/charts/bullet.js +6 -3
  19. package/dist/charts/bullet.js.map +1 -1
  20. package/dist/charts/charts.d.ts +58 -5
  21. package/dist/charts/charts.js +13 -2
  22. package/dist/charts/charts.js.map +1 -1
  23. package/dist/charts/config.d.ts +7 -0
  24. package/dist/charts/config.js +5 -1
  25. package/dist/charts/config.js.map +1 -1
  26. package/dist/charts/custom-chart.d.ts +58 -5
  27. package/dist/charts/custom-chart.js +13 -2
  28. package/dist/charts/custom-chart.js.map +1 -1
  29. package/dist/charts/donut.d.ts +18 -1
  30. package/dist/charts/donut.js +6 -3
  31. package/dist/charts/donut.js.map +1 -1
  32. package/dist/charts/frame.d.ts +40 -3
  33. package/dist/charts/frame.js +55 -28
  34. package/dist/charts/frame.js.map +1 -1
  35. package/dist/charts/funnel.d.ts +18 -1
  36. package/dist/charts/funnel.js +5 -1
  37. package/dist/charts/funnel.js.map +1 -1
  38. package/dist/charts/gauge.d.ts +18 -1
  39. package/dist/charts/gauge.js +38 -20
  40. package/dist/charts/gauge.js.map +1 -1
  41. package/dist/charts/grouped-bar.d.ts +54 -5
  42. package/dist/charts/grouped-bar.js +16 -10
  43. package/dist/charts/grouped-bar.js.map +1 -1
  44. package/dist/charts/heatmap-calendar.d.ts +61 -0
  45. package/dist/charts/heatmap-calendar.js +287 -96
  46. package/dist/charts/heatmap-calendar.js.map +1 -1
  47. package/dist/charts/heatmap-matrix.d.ts +99 -0
  48. package/dist/charts/heatmap-matrix.js +249 -0
  49. package/dist/charts/heatmap-matrix.js.map +1 -0
  50. package/dist/charts/line.d.ts +66 -5
  51. package/dist/charts/line.js +37 -30
  52. package/dist/charts/line.js.map +1 -1
  53. package/dist/charts/palette.d.ts +1 -0
  54. package/dist/charts/palette.js +7 -1
  55. package/dist/charts/palette.js.map +1 -1
  56. package/dist/charts/radar.d.ts +18 -1
  57. package/dist/charts/radar.js +26 -19
  58. package/dist/charts/radar.js.map +1 -1
  59. package/dist/charts/sankey.d.ts +18 -1
  60. package/dist/charts/sankey.js +4 -1
  61. package/dist/charts/sankey.js.map +1 -1
  62. package/dist/charts/series.d.ts +5 -7
  63. package/dist/charts/series.js.map +1 -1
  64. package/dist/charts/slot-bar.d.ts +38 -6
  65. package/dist/charts/slot-bar.js +5 -2
  66. package/dist/charts/slot-bar.js.map +1 -1
  67. package/dist/charts/sparkline.d.ts +35 -5
  68. package/dist/charts/sparkline.js +22 -18
  69. package/dist/charts/sparkline.js.map +1 -1
  70. package/dist/charts/stacked-bar.d.ts +58 -5
  71. package/dist/charts/stacked-bar.js +19 -12
  72. package/dist/charts/stacked-bar.js.map +1 -1
  73. package/dist/charts/stat-card.d.ts +51 -1
  74. package/dist/charts/stat-card.js +66 -39
  75. package/dist/charts/stat-card.js.map +1 -1
  76. package/dist/charts/timeline.d.ts +3 -0
  77. package/dist/charts/timeline.js +4 -3
  78. package/dist/charts/timeline.js.map +1 -1
  79. package/dist/charts/timeseries.d.ts +58 -5
  80. package/dist/charts/timeseries.js +13 -2
  81. package/dist/charts/timeseries.js.map +1 -1
  82. package/dist/charts/tooltip.d.ts +57 -0
  83. package/dist/charts/tooltip.js +119 -2
  84. package/dist/charts/tooltip.js.map +1 -1
  85. package/dist/components/accordion.d.ts +117 -2
  86. package/dist/components/accordion.js +20 -13
  87. package/dist/components/accordion.js.map +1 -1
  88. package/dist/components/alert-dialog.d.ts +131 -13
  89. package/dist/components/alert-dialog.js +12 -9
  90. package/dist/components/alert-dialog.js.map +1 -1
  91. package/dist/components/app-header.js +18 -17
  92. package/dist/components/app-header.js.map +1 -1
  93. package/dist/components/app-shell.js +15 -14
  94. package/dist/components/app-shell.js.map +1 -1
  95. package/dist/components/autocomplete.d.ts +4 -0
  96. package/dist/components/autocomplete.js.map +1 -1
  97. package/dist/components/avatar.d.ts +76 -3
  98. package/dist/components/avatar.js.map +1 -1
  99. package/dist/components/badge.d.ts +15 -1
  100. package/dist/components/badge.js +17 -16
  101. package/dist/components/badge.js.map +1 -1
  102. package/dist/components/banner.d.ts +88 -2
  103. package/dist/components/banner.js +41 -40
  104. package/dist/components/banner.js.map +1 -1
  105. package/dist/components/basalt-mark.js +14 -8
  106. package/dist/components/basalt-mark.js.map +1 -1
  107. package/dist/components/battery-meter.d.ts +10 -0
  108. package/dist/components/battery-meter.js +56 -0
  109. package/dist/components/battery-meter.js.map +1 -0
  110. package/dist/components/breadcrumbs.d.ts +27 -7
  111. package/dist/components/breadcrumbs.js +21 -20
  112. package/dist/components/breadcrumbs.js.map +1 -1
  113. package/dist/components/button.d.ts +48 -2
  114. package/dist/components/button.js +87 -36
  115. package/dist/components/button.js.map +1 -1
  116. package/dist/components/chat-bubble.d.ts +7 -0
  117. package/dist/components/chat-bubble.js +14 -13
  118. package/dist/components/chat-bubble.js.map +1 -1
  119. package/dist/components/chat-composer.d.ts +7 -3
  120. package/dist/components/chat-composer.js.map +1 -1
  121. package/dist/components/chat-header.d.ts +6 -1
  122. package/dist/components/chat-header.js +17 -16
  123. package/dist/components/chat-header.js.map +1 -1
  124. package/dist/components/chat-inbox.d.ts +7 -2
  125. package/dist/components/chat-inbox.js.map +1 -1
  126. package/dist/components/checkbox.js +84 -53
  127. package/dist/components/checkbox.js.map +1 -1
  128. package/dist/components/clipboard-text.d.ts +13 -2
  129. package/dist/components/clipboard-text.js +4 -4
  130. package/dist/components/clipboard-text.js.map +1 -1
  131. package/dist/components/collapsible.d.ts +58 -15
  132. package/dist/components/collapsible.js.map +1 -1
  133. package/dist/components/command-palette.d.ts +151 -61
  134. package/dist/components/command-palette.js.map +1 -1
  135. package/dist/components/confirm-dialog.d.ts +1 -1
  136. package/dist/components/confirm-dialog.js +6 -4
  137. package/dist/components/confirm-dialog.js.map +1 -1
  138. package/dist/components/context-menu.d.ts +210 -2
  139. package/dist/components/context-menu.js +7 -4
  140. package/dist/components/context-menu.js.map +1 -1
  141. package/dist/components/data-table.d.ts +40 -2
  142. package/dist/components/data-table.js +168 -120
  143. package/dist/components/data-table.js.map +1 -1
  144. package/dist/components/date-picker.d.ts +53 -2
  145. package/dist/components/date-picker.js +387 -219
  146. package/dist/components/date-picker.js.map +1 -1
  147. package/dist/components/delete-resource.d.ts +7 -1
  148. package/dist/components/delete-resource.js +22 -18
  149. package/dist/components/delete-resource.js.map +1 -1
  150. package/dist/components/description-list.js +16 -15
  151. package/dist/components/description-list.js.map +1 -1
  152. package/dist/components/dialog.d.ts +141 -12
  153. package/dist/components/dialog.js +42 -38
  154. package/dist/components/dialog.js.map +1 -1
  155. package/dist/components/dock.d.ts +1 -1
  156. package/dist/components/dock.js +39 -58
  157. package/dist/components/dock.js.map +1 -1
  158. package/dist/components/dropdown-menu.d.ts +229 -15
  159. package/dist/components/dropdown-menu.js +9 -6
  160. package/dist/components/dropdown-menu.js.map +1 -1
  161. package/dist/components/editable-nav-item.d.ts +33 -0
  162. package/dist/components/editable-nav-item.js +90 -0
  163. package/dist/components/editable-nav-item.js.map +1 -0
  164. package/dist/components/empty.d.ts +22 -2
  165. package/dist/components/empty.js +22 -13
  166. package/dist/components/empty.js.map +1 -1
  167. package/dist/components/field.js +31 -30
  168. package/dist/components/field.js.map +1 -1
  169. package/dist/components/file-dropzone.d.ts +37 -0
  170. package/dist/components/file-dropzone.js +103 -0
  171. package/dist/components/file-dropzone.js.map +1 -0
  172. package/dist/components/filter-bar.d.ts +34 -0
  173. package/dist/components/filter-bar.js +52 -0
  174. package/dist/components/filter-bar.js.map +1 -0
  175. package/dist/components/flow.js +19 -18
  176. package/dist/components/flow.js.map +1 -1
  177. package/dist/components/grid.d.ts +3 -1
  178. package/dist/components/grid.js.map +1 -1
  179. package/dist/components/hover-card.d.ts +111 -1
  180. package/dist/components/hover-card.js +9 -6
  181. package/dist/components/hover-card.js.map +1 -1
  182. package/dist/components/icon-picker.d.ts +34 -0
  183. package/dist/components/icon-picker.js +77 -0
  184. package/dist/components/icon-picker.js.map +1 -0
  185. package/dist/components/inline-editable.d.ts +46 -0
  186. package/dist/components/inline-editable.js +124 -0
  187. package/dist/components/inline-editable.js.map +1 -0
  188. package/dist/components/input-area.js +3 -3
  189. package/dist/components/input-group.js +7 -7
  190. package/dist/components/input.js +3 -3
  191. package/dist/components/label.js +18 -17
  192. package/dist/components/label.js.map +1 -1
  193. package/dist/components/layer-card.d.ts +10 -2
  194. package/dist/components/layer-card.js +71 -68
  195. package/dist/components/layer-card.js.map +1 -1
  196. package/dist/components/loader.d.ts +10 -2
  197. package/dist/components/loader.js.map +1 -1
  198. package/dist/components/menu-bar.d.ts +174 -6
  199. package/dist/components/menu-bar.js +33 -29
  200. package/dist/components/menu-bar.js.map +1 -1
  201. package/dist/components/meter.d.ts +27 -2
  202. package/dist/components/meter.js.map +1 -1
  203. package/dist/components/multi-select.d.ts +64 -0
  204. package/dist/components/multi-select.js +218 -0
  205. package/dist/components/multi-select.js.map +1 -0
  206. package/dist/components/navigation-menu.d.ts +88 -5
  207. package/dist/components/navigation-menu.js.map +1 -1
  208. package/dist/components/overlay.js +6 -5
  209. package/dist/components/overlay.js.map +1 -1
  210. package/dist/components/page-header.js +23 -21
  211. package/dist/components/page-header.js.map +1 -1
  212. package/dist/components/pagination.js +7 -7
  213. package/dist/components/popover.d.ts +136 -16
  214. package/dist/components/popover.js +32 -28
  215. package/dist/components/popover.js.map +1 -1
  216. package/dist/components/radio.js +38 -37
  217. package/dist/components/radio.js.map +1 -1
  218. package/dist/components/resource-list.d.ts +26 -1
  219. package/dist/components/resource-list.js +28 -15
  220. package/dist/components/resource-list.js.map +1 -1
  221. package/dist/components/responsive-master-detail.d.ts +27 -0
  222. package/dist/components/responsive-master-detail.js +85 -0
  223. package/dist/components/responsive-master-detail.js.map +1 -0
  224. package/dist/components/section-rule.js +23 -22
  225. package/dist/components/section-rule.js.map +1 -1
  226. package/dist/components/select.d.ts +27 -3
  227. package/dist/components/select.js +11 -11
  228. package/dist/components/select.js.map +1 -1
  229. package/dist/components/sheet.d.ts +115 -11
  230. package/dist/components/sheet.js +37 -30
  231. package/dist/components/sheet.js.map +1 -1
  232. package/dist/components/sidebar.d.ts +109 -17
  233. package/dist/components/sidebar.js +109 -108
  234. package/dist/components/sidebar.js.map +1 -1
  235. package/dist/components/skeleton-line.d.ts +22 -2
  236. package/dist/components/skeleton-line.js.map +1 -1
  237. package/dist/components/slider.d.ts +61 -1
  238. package/dist/components/slider.js +31 -15
  239. package/dist/components/slider.js.map +1 -1
  240. package/dist/components/stat-strip.js +16 -15
  241. package/dist/components/stat-strip.js.map +1 -1
  242. package/dist/components/switch.js +78 -47
  243. package/dist/components/switch.js.map +1 -1
  244. package/dist/components/table-of-contents.js +18 -17
  245. package/dist/components/table-of-contents.js.map +1 -1
  246. package/dist/components/table-pager.js +20 -19
  247. package/dist/components/table-pager.js.map +1 -1
  248. package/dist/components/table.d.ts +9 -3
  249. package/dist/components/table.js +19 -18
  250. package/dist/components/table.js.map +1 -1
  251. package/dist/components/tabs.js +29 -22
  252. package/dist/components/tabs.js.map +1 -1
  253. package/dist/components/tag-badge.d.ts +58 -0
  254. package/dist/components/tag-badge.js +72 -0
  255. package/dist/components/tag-badge.js.map +1 -0
  256. package/dist/components/tag-color-picker.d.ts +20 -0
  257. package/dist/components/tag-color-picker.js +42 -0
  258. package/dist/components/tag-color-picker.js.map +1 -0
  259. package/dist/components/text.js +17 -16
  260. package/dist/components/text.js.map +1 -1
  261. package/dist/components/toast.d.ts +173 -3
  262. package/dist/components/toast.js +1 -1
  263. package/dist/components/toast.js.map +1 -1
  264. package/dist/components/toggle-group.d.ts +88 -2
  265. package/dist/components/toggle-group.js +32 -31
  266. package/dist/components/toggle-group.js.map +1 -1
  267. package/dist/components/toggle.d.ts +35 -2
  268. package/dist/components/toggle.js +12 -11
  269. package/dist/components/toggle.js.map +1 -1
  270. package/dist/components/tooltip.d.ts +144 -6
  271. package/dist/components/tooltip.js +9 -6
  272. package/dist/components/tooltip.js.map +1 -1
  273. package/dist/components/typeahead-field.js +193 -132
  274. package/dist/components/typeahead-field.js.map +1 -1
  275. package/dist/components/upload-queue.d.ts +51 -0
  276. package/dist/components/upload-queue.js +116 -0
  277. package/dist/components/upload-queue.js.map +1 -0
  278. package/dist/providers/accent.d.ts +46 -2
  279. package/dist/providers/accent.js +358 -172
  280. package/dist/providers/accent.js.map +1 -1
  281. package/dist/providers/link.d.ts +14 -4
  282. package/dist/providers/link.js.map +1 -1
  283. package/dist/providers/theme.d.ts +38 -2
  284. package/dist/providers/theme.js +160 -27
  285. package/dist/providers/theme.js.map +1 -1
  286. package/dist/styles/base.css +83 -0
  287. package/dist/styles/standalone.css +711 -120
  288. package/dist/styles/tailwind.css +21 -7
  289. package/dist/styles/tokens.css +145 -91
  290. package/dist/utils/control-surface.d.ts +2 -1
  291. package/dist/utils/control-surface.js +4 -4
  292. package/dist/utils/control-surface.js.map +1 -1
  293. package/dist/utils/selection-indicator.js +2 -2
  294. package/dist/utils/selection-indicator.js.map +1 -1
  295. package/package.json +8 -4
@@ -2,30 +2,31 @@
2
2
  import { cn as e } from "../utils/cn.js";
3
3
  import { Button as t } from "./button.js";
4
4
  import { Popover as n, PopoverContent as r, PopoverTrigger as i } from "./popover.js";
5
- import { useEffect as a, useLayoutEffect as o, useMemo as s, useRef as c, useState as l } from "react";
6
- import { ChevronLeft as u, ChevronRight as ee } from "lucide-react";
7
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
5
+ import * as a from "react";
6
+ import { useEffect as o, useLayoutEffect as s, useMemo as c, useRef as l, useState as u } from "react";
7
+ import { ChevronLeft as ee, ChevronRight as d } from "lucide-react";
8
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
8
9
  //#region src/components/date-picker.tsx
9
- function p(e) {
10
- return String(e).padStart(2, "0");
11
- }
12
10
  function m(e) {
13
- return `${String(e.y).padStart(4, "0")}-${p(e.m)}-${p(e.d)}`;
11
+ return String(e).padStart(2, "0");
14
12
  }
15
13
  function h(e) {
14
+ return `${String(e.y).padStart(4, "0")}-${m(e.m)}-${m(e.d)}`;
15
+ }
16
+ function g(e) {
16
17
  let t = new Date(Date.UTC(e.y, e.m - 1, e.d));
17
18
  return t.setUTCFullYear(e.y), t;
18
19
  }
19
- function g(e) {
20
+ function _(e) {
20
21
  let t = new Date(e.y, e.m - 1, e.d);
21
22
  return t.setFullYear(e.y), t;
22
23
  }
23
- function _(e) {
24
+ function v(e) {
24
25
  let t = /^(\d{4,})-(\d{2})-(\d{2})$/.exec(e);
25
26
  if (!t) return null;
26
27
  let n = Number(t[1]), r = Number(t[2]), i = Number(t[3]);
27
28
  if (n < 1) return null;
28
- let a = h({
29
+ let a = g({
29
30
  y: n,
30
31
  m: r,
31
32
  d: i
@@ -36,8 +37,24 @@ function _(e) {
36
37
  d: i
37
38
  };
38
39
  }
39
- var te = "appearance-none border-0 bg-transparent p-0 font-inherit text-inherit cursor-pointer";
40
- function v(e) {
40
+ function te(e) {
41
+ if (!e) return null;
42
+ let t = /^(\d{4,})-(\d{2})$/.exec(e);
43
+ if (!t) return null;
44
+ let n = Number(t[1]), r = Number(t[2]);
45
+ if (n < 1 || r < 1 || r > 12) return null;
46
+ let i = {
47
+ y: n,
48
+ m: r,
49
+ d: 1
50
+ };
51
+ return w(i) ? i : null;
52
+ }
53
+ function y(e) {
54
+ return `${String(e.y).padStart(4, "0")}-${m(e.m)}`;
55
+ }
56
+ var ne = "appearance-none border-0 bg-transparent p-0 font-inherit text-inherit cursor-pointer";
57
+ function b(e) {
41
58
  let t = new Intl.DateTimeFormat("en-CA", {
42
59
  timeZone: e,
43
60
  year: "numeric",
@@ -50,186 +67,244 @@ function v(e) {
50
67
  d: n("day")
51
68
  };
52
69
  }
53
- function y(e, t, n) {
70
+ function re(e, t, n) {
54
71
  return new Intl.DateTimeFormat(t, {
55
72
  ...n,
56
73
  timeZone: "UTC",
57
74
  calendar: "gregory"
58
- }).format(h(e));
75
+ }).format(g(e));
59
76
  }
60
- function ne({ mode: e, selectedDate: t, rangeFrom: n, rangeTo: r, locale: i, formatDate: a }) {
61
- function o(e) {
62
- let t = _(e);
63
- return t ? a?.(g(t)) ?? y(t, i, { dateStyle: "medium" }) : e;
77
+ function ie(e) {
78
+ return e % 4 == 0 && e % 100 != 0 || e % 400 == 0;
79
+ }
80
+ function x(e, t) {
81
+ return t === 2 ? ie(e) ? 29 : 28 : t === 4 || t === 6 || t === 9 || t === 11 ? 30 : 31;
82
+ }
83
+ function ae(e, t) {
84
+ let n = e.y * 12 + (e.m - 1) + t, r = Math.floor(n / 12);
85
+ if (r < 1) return null;
86
+ let i = (n % 12 + 12) % 12 + 1, a = x(r, i), o = {
87
+ y: r,
88
+ m: i,
89
+ d: Math.min(e.d, a)
90
+ };
91
+ return w(o) ? o : null;
92
+ }
93
+ function oe({ mode: e, selectedDate: t, rangeFrom: n, rangeTo: r, locale: i, formatDate: a, placeholder: o = "Pick a date" }) {
94
+ function s(e) {
95
+ let t = v(e);
96
+ return t ? a?.(_(t)) ?? re(t, i, { dateStyle: "medium" }) : e;
64
97
  }
65
- return e === "range" ? n ? r ? `${o(n)} – ${o(r)}` : `${o(n)} – …` : "Pick a date" : t ? a?.(g(t)) ?? y(t, i, { dateStyle: "medium" }) : "Pick a date";
98
+ return e === "range" ? n ? r ? `${s(n)} – ${s(r)}` : `${s(n)} – …` : o : t ? a?.(_(t)) ?? re(t, i, { dateStyle: "medium" }) : o;
66
99
  }
67
- function b(e, t) {
100
+ function S(e, t) {
68
101
  return e.y === t.y ? e.m === t.m ? e.d - t.d : e.m - t.m : e.y - t.y;
69
102
  }
70
- function re(e, t, n) {
71
- let r = _(e), i = t ? _(t) : null, a = n ? _(n) : null;
72
- return !(!r || i && b(r, i) < 0 || a && b(r, a) > 0);
103
+ function C(e, t, n) {
104
+ let r = v(e), i = t ? v(t) : null, a = n ? v(n) : null;
105
+ return !(!r || i && S(r, i) < 0 || a && S(r, a) > 0);
73
106
  }
74
- function x(e, t, n, r) {
75
- return re(e, t, n) && !r?.(e);
107
+ function se(e, t, n, r) {
108
+ return C(e, t, n) && !r?.(e);
76
109
  }
77
- function ie(e, t, n) {
78
- let r = t ? _(t) : null, i = n ? _(n) : null;
79
- return r && b(e, r) < 0 ? r : i && b(e, i) > 0 ? i : e;
110
+ function ce(e, t, n) {
111
+ let r = t ? v(t) : null, i = n ? v(n) : null;
112
+ return r && S(e, r) < 0 ? r : i && S(e, i) > 0 ? i : e;
80
113
  }
81
- function S(e) {
114
+ function w(e) {
82
115
  if (!Number.isFinite(e.y) || e.m < 1 || e.m > 12 || e.d < 1 || e.d > 31) return !1;
83
- let t = h(e);
116
+ let t = g(e);
84
117
  return !Number.isNaN(t.getTime()) && t.getUTCFullYear() === e.y && t.getUTCMonth() + 1 === e.m && t.getUTCDate() === e.d;
85
118
  }
86
- function C(e) {
87
- return e ? m(e) : "";
119
+ function T(e) {
120
+ return e ? h(e) : "";
88
121
  }
89
- function w(e, t) {
90
- let n = h(e);
122
+ function E(e, t) {
123
+ let n = g(e);
91
124
  if (Number.isNaN(n.getTime()) || (n.setUTCDate(n.getUTCDate() + t), Number.isNaN(n.getTime()))) return null;
92
125
  let r = {
93
126
  y: n.getUTCFullYear(),
94
127
  m: n.getUTCMonth() + 1,
95
128
  d: n.getUTCDate()
96
129
  };
97
- return S(r) ? r : null;
130
+ return w(r) ? r : null;
98
131
  }
99
- function ae(e, t) {
132
+ function le(e, t) {
100
133
  let n = e.y * 12 + (e.m - 1) + t, r = {
101
134
  y: Math.floor(n / 12),
102
135
  m: n % 12 + 1,
103
136
  d: 1
104
137
  };
105
- return S(r) ? r : null;
138
+ return w(r) ? r : null;
106
139
  }
107
- function T({ value: p, defaultValue: g = "", onChange: re, mode: T = "single", rangeValue: E, defaultRangeValue: oe, onRangeChange: se, isDisabledDate: D, presets: O, locale: k = "en-US", weekStartsOn: A = 0, timeZone: j, formatDate: ce, name: le, required: ue, min: M, max: N, disabled: P, className: de, id: fe, "aria-label": F, "aria-describedby": pe, "aria-invalid": me, ...he }) {
108
- let { readOnly: I, autoFocus: ge, onFocus: _e, onBlur: ve, "aria-labelledby": ye, ...be } = he, [xe, Se] = l(g), [Ce, L] = l(oe ?? {
140
+ function D({ value: m, defaultValue: _ = "", onChange: ie, mode: x = "single", month: C, defaultMonth: D, onMonthChange: ue, rangeValue: O, defaultRangeValue: de, onRangeChange: fe, isDisabledDate: pe, presets: me, locale: he = "en-US", weekStartsOn: k = 0, timeZone: A, formatDate: ge, name: _e, required: ve, min: j, max: M, disabled: N, className: ye, id: P, "aria-label": F, "aria-describedby": be, "aria-invalid": xe, labels: I, ...Se }) {
141
+ let { ref: L, readOnly: R, autoFocus: Ce, onFocus: we, onBlur: Te, onInvalid: Ee, "aria-labelledby": De, ...Oe } = Se, [ke, Ae] = u(_), [je, Me] = u(de ?? {
109
142
  from: "",
110
143
  to: void 0
111
- }), [R, z] = l(!1), [we, Te] = l(0), B = c([]), V = c(null), H = c(!1), Ee = c(null), De = c(null), Oe = p ?? xe, U = E ?? Ce, W = _(T === "range" ? U.to || U.from || "" : Oe), G = W ? m(W) : "", K = T === "range" ? "" : G, ke = W ?? v(j), [q, J] = l({
112
- y: ke.y,
113
- m: ke.m,
114
- d: 1
115
- }), Ae = c(G);
116
- if (R && Ae.current !== G) {
117
- H.current = !0;
118
- let e = W ?? v(j);
119
- (q.y !== e.y || q.m !== e.m) && J({
144
+ }), [z, B] = u(!1), [Ne, Pe] = u(!1), [Fe, Ie] = u(""), [Le, Re] = u(0), V = l([]), H = l(null), U = l(!1), W = l(null), ze = l(null), Be = a.useId(), Ve = P ? `${P}-error` : Be, He = a.useId(), Ue = P ? `${P}-month-live` : He, We = a.useId(), Ge = P ? `${P}-keyboard-instructions` : We, Ke = m ?? ke, qe = O ?? je, G = v(x === "range" ? qe.to || qe.from || "" : Ke), K = G ? h(G) : "";
145
+ o(() => {
146
+ K && (Pe(!1), Ie(""));
147
+ }, [K]);
148
+ let q = x === "range" ? "" : K, Je = c(() => te(C), [C]), Ye = Je !== null, [Xe, Ze] = u(() => {
149
+ let e = te(D);
150
+ if (e) return e;
151
+ let t = ce(G ?? b(A), j, M);
152
+ return {
153
+ y: t.y,
154
+ m: t.m,
155
+ d: 1
156
+ };
157
+ }), J = Je ?? Xe, Qe = y(J), $e = (e) => {
158
+ let t = y(e);
159
+ Ye || Ze(e), ue?.(t);
160
+ }, et = l(K);
161
+ if (z && et.current !== K && (U.current = !0, C === void 0 && D === void 0)) {
162
+ let e = G ?? b(A);
163
+ (J.y !== e.y || J.m !== e.m) && Ze({
120
164
  y: e.y,
121
165
  m: e.m,
122
166
  d: 1
123
167
  });
124
168
  }
125
- Ae.current = G, a(() => {
126
- if (!R) return;
127
- let e = ie((G ? _(G) : null) ?? v(j), M, N);
128
- J({
129
- y: e.y,
130
- m: e.m,
131
- d: 1
132
- }), G || (H.current = !0);
169
+ et.current = K;
170
+ let tt = C !== void 0 || D !== void 0;
171
+ o(() => {
172
+ if (z && !tt) {
173
+ let e = ce((K ? v(K) : null) ?? b(A), j, M);
174
+ Ze({
175
+ y: e.y,
176
+ m: e.m,
177
+ d: 1
178
+ }), K || (U.current = !0);
179
+ }
133
180
  }, [
134
- R,
135
- G,
181
+ z,
182
+ K,
183
+ A,
136
184
  j,
137
185
  M,
138
- N
139
- ]), a(() => {
140
- P && z(!1);
141
- }, [P]), a(() => {
142
- ge && De.current?.focus();
143
- }, [ge]), a(() => {
144
- let e = Ee.current?.form;
145
- if (!e || (T === "range" ? E !== void 0 : p !== void 0)) return;
146
- let t = (e) => {
147
- queueMicrotask(() => {
148
- e.defaultPrevented || (Se(g), L(oe ?? {
186
+ tt
187
+ ]), o(() => {
188
+ N && B(!1);
189
+ }, [N]), o(() => {
190
+ Ce && ze.current?.focus();
191
+ }, [Ce]);
192
+ let nt = l({
193
+ defaultValue: _,
194
+ defaultRangeValue: de,
195
+ mode: x,
196
+ rangeValue: O,
197
+ value: m
198
+ });
199
+ o(() => {
200
+ nt.current = {
201
+ defaultValue: _,
202
+ defaultRangeValue: de,
203
+ mode: x,
204
+ rangeValue: O,
205
+ value: m
206
+ };
207
+ });
208
+ let rt = Oe.form;
209
+ o(() => {
210
+ let e = W.current?.form;
211
+ if (!e || rt && e.id !== rt) return;
212
+ let t = !1, n = /* @__PURE__ */ new Set(), r = (e) => {
213
+ let r = setTimeout(() => {
214
+ if (n.delete(r), t || e.defaultPrevented) return;
215
+ let i = nt.current;
216
+ (i.mode === "range" ? i.rangeValue === void 0 : i.value === void 0) && (Ae(i.defaultValue), Me(i.defaultRangeValue ?? {
149
217
  from: "",
150
218
  to: void 0
151
- }), z(!1));
152
- });
219
+ })), Pe(!1), Ie(""), B(!1);
220
+ }, 0);
221
+ n.add(r);
153
222
  };
154
- return e.addEventListener("reset", t), () => e.removeEventListener("reset", t);
155
- }, [
156
- oe,
157
- g,
158
- T,
159
- E,
160
- p
161
- ]);
162
- let je = s(() => {
163
- let e = new Intl.DateTimeFormat(k, {
223
+ return e.addEventListener("reset", r), () => {
224
+ t = !0;
225
+ for (let e of n) clearTimeout(e);
226
+ n.clear(), e.removeEventListener("reset", r);
227
+ };
228
+ }, [rt]);
229
+ let it = c(() => {
230
+ let e = new Intl.DateTimeFormat(he, {
164
231
  weekday: "short",
165
232
  timeZone: "UTC"
166
233
  });
167
234
  return Array.from({ length: 7 }, (t, n) => {
168
- let r = new Date(Date.UTC(2024, 0, 7 + (n + A) % 7));
235
+ let r = new Date(Date.UTC(2024, 0, 7 + (n + k) % 7));
169
236
  return e.format(r);
170
237
  });
171
- }, [k, A]), Y = s(() => {
238
+ }, [he, k]), Y = c(() => {
172
239
  let e = {
173
- y: q.y,
174
- m: q.m,
240
+ y: J.y,
241
+ m: J.m,
175
242
  d: 1
176
243
  };
177
- if (!S(e)) return Array.from({ length: 42 }, () => null);
178
- let t = (h(e).getUTCDay() - A + 7) % 7, n = w(e, -t);
179
- return n ? Array.from({ length: 42 }, (e, t) => w(n, t)) : Array.from({ length: 42 }, (n, r) => w(e, r - t));
180
- }, [q, A]);
181
- o(() => {
182
- if (!R) return;
183
- let e = V.current, t = 0;
184
- if (e) V.current = null, t = Y.findIndex((t) => C(t) === e), t < 0 && (t = 0);
185
- else {
186
- let e = document.activeElement, n = !H.current && e instanceof HTMLElement && B.current.some((t) => t === e) ? e.getAttribute("aria-label") : null, r = n ? Y.findIndex((e) => C(e) === n) : -1;
244
+ if (!w(e)) return Array.from({ length: 42 }, () => null);
245
+ let t = (g(e).getUTCDay() - k + 7) % 7, n = E(e, -t);
246
+ return n ? Array.from({ length: 42 }, (e, t) => E(n, t)) : Array.from({ length: 42 }, (n, r) => E(e, r - t));
247
+ }, [J, k]);
248
+ s(() => {
249
+ if (!z) return;
250
+ let e = H.current, t = 0;
251
+ if (e) {
252
+ if (e.targetMonthKey === Qe) H.current = null, t = Y.findIndex((t) => T(t) === e.iso), t < 0 && (t = 0), U.current = !0;
253
+ else {
254
+ let e = document.activeElement, n = e instanceof HTMLElement && V.current.some((t) => t === e) ? e.getAttribute("aria-label") : null, r = n ? Y.findIndex((e) => T(e) === n) : -1;
255
+ t = r >= 0 ? r : Le;
256
+ }
257
+ } else {
258
+ let e = document.activeElement, n = !U.current && e instanceof HTMLElement && V.current.some((t) => t === e) ? e.getAttribute("aria-label") : null, r = n ? Y.findIndex((e) => T(e) === n) : -1;
187
259
  if (r >= 0) t = r;
188
260
  else {
189
- let e = G || K || m(v(j)), n = Y.findIndex((t) => C(t) === e);
190
- if (n >= 0 && Y[n]?.m === q.m) t = n;
261
+ let e = K || q || h(b(A)), n = Y.findIndex((t) => T(t) === e);
262
+ if (n >= 0 && Y[n]?.m === J.m) t = n;
191
263
  else {
192
- let e = Y.findIndex((e) => e?.m === q.m);
264
+ let e = Y.findIndex((e) => e?.m === J.m);
193
265
  t = e >= 0 ? e : 0;
194
266
  }
195
267
  }
196
268
  }
197
- let n = (e) => !!(e && e.y >= 1 && x(m(e), M, N, D));
269
+ let n = (e) => !!(e && e.y >= 1 && se(h(e), j, M, pe));
198
270
  if (!n(Y[t] ?? null)) {
199
- let e = Y.findIndex((e) => e?.m === q.m && n(e)), r = Y.findIndex((e) => n(e));
271
+ let e = Y.findIndex((e) => e?.m === J.m && n(e)), r = Y.findIndex((e) => n(e));
200
272
  t = e >= 0 ? e : r >= 0 ? r : t;
201
273
  }
202
- Te(t), H.current && (H.current = !1, B.current[t]?.focus());
274
+ Re(t), U.current && (U.current = !1, V.current[t]?.focus());
203
275
  }, [
204
- R,
205
- G,
276
+ z,
206
277
  K,
207
- j,
278
+ q,
279
+ A,
208
280
  Y,
209
- q.m,
281
+ J.m,
282
+ Qe,
283
+ Le,
284
+ j,
210
285
  M,
211
- N,
212
- D
286
+ pe
213
287
  ]);
214
- let X = ae(q, -1), Me = ae(q, 1), Z = T === "range" ? U.from : "", Q = T === "range" ? U.to : void 0, Ne = ne({
215
- mode: T,
216
- selectedDate: W,
288
+ let X = le(J, -1), at = le(J, 1), Z = x === "range" ? qe.from : "", Q = x === "range" ? qe.to : void 0, ot = oe({
289
+ mode: x,
290
+ selectedDate: G,
217
291
  rangeFrom: Z,
218
292
  rangeTo: Q,
219
- locale: k,
220
- formatDate: ce
221
- });
293
+ locale: he,
294
+ formatDate: ge,
295
+ placeholder: I?.placeholder
296
+ }), st = I?.calendar ?? (F ? `${F} calendar` : "Date calendar"), ct = I?.previousMonth ?? "Prev", lt = I?.nextMonth ?? "Next";
222
297
  function $(e) {
223
- return x(e, M, N, D);
298
+ return se(e, j, M, pe);
224
299
  }
225
- function Pe(e) {
226
- if (!(P || I || !$(e))) {
227
- if (T === "range") {
228
- let t = E ?? Ce, n = !t.from || t.to ? { from: e } : b(_(e) ?? {
300
+ function ut(e) {
301
+ if (!(N || R || !$(e))) {
302
+ if (e && (Pe(!1), Ie("")), x === "range") {
303
+ let t = O ?? je, n = !t.from || t.to ? { from: e } : S(v(e) ?? {
229
304
  y: 1,
230
305
  m: 1,
231
306
  d: 1
232
- }, _(t.from) ?? {
307
+ }, v(t.from) ?? {
233
308
  y: 1,
234
309
  m: 1,
235
310
  d: 1
@@ -240,56 +315,75 @@ function T({ value: p, defaultValue: g = "", onChange: re, mode: T = "single", r
240
315
  from: t.from,
241
316
  to: e
242
317
  };
243
- E === void 0 && L(n), se?.(n), n.to && z(!1);
318
+ O === void 0 && Me(n), fe?.(n), n.to && B(!1);
244
319
  return;
245
320
  }
246
- p === void 0 && Se(e), z(!1), re?.(e);
321
+ m === void 0 && Ae(e), B(!1), ie?.(e);
247
322
  }
248
323
  }
249
- function Fe(e) {
250
- if (!(P || I)) {
324
+ function dt(e) {
325
+ if (!(N || R)) {
251
326
  if (typeof e.value == "string") {
252
- if (T === "range") {
327
+ if (x === "range") {
253
328
  if (!$(e.value)) return;
254
329
  let t = {
255
330
  from: e.value,
256
331
  to: e.value
257
332
  };
258
- E === void 0 && L(t), se?.(t), z(!1);
333
+ O === void 0 && Me(t), fe?.(t), B(!1);
259
334
  return;
260
335
  }
261
- Pe(e.value);
336
+ ut(e.value);
262
337
  return;
263
338
  }
264
- if (T === "range") {
339
+ if (x === "range") {
265
340
  if (!$(e.value.from) || !$(e.value.to)) return;
266
- E === void 0 && L(e.value), se?.(e.value), z(!1);
341
+ O === void 0 && Me(e.value), fe?.(e.value), B(!1);
267
342
  }
268
343
  }
269
344
  }
270
- return /* @__PURE__ */ f(n, {
271
- open: R,
345
+ let ft = a.useCallback((e) => {
346
+ if (W.current = e, L) {
347
+ if (typeof L == "function") {
348
+ let t = L(e);
349
+ return typeof t == "function" ? () => {
350
+ W.current = null, t();
351
+ } : () => {
352
+ W.current = null, L(null);
353
+ };
354
+ }
355
+ return L.current = e, () => {
356
+ W.current = null, L.current = null;
357
+ };
358
+ }
359
+ }, [L]), pt = xe ?? (Ne || void 0), mt = pt === !0 || pt === "true" || pt === "grammar" || pt === "spelling", ht = [be, Ne && Ve ? Ve : void 0].filter(Boolean).join(" ") || void 0;
360
+ return /* @__PURE__ */ p(n, {
361
+ open: z,
272
362
  onOpenChange: (e) => {
273
- if (!(e && P)) {
363
+ if (!(e && N)) {
274
364
  if (e) {
275
- let e = (G ? _(G) : null) ?? v(j);
276
- J({
277
- y: e.y,
278
- m: e.m,
279
- d: 1
280
- }), H.current = !0;
281
- }
282
- z(e);
365
+ if (H.current = null, C === void 0 && D === void 0) {
366
+ let e = (K ? v(K) : null) ?? b(A);
367
+ Ze({
368
+ y: e.y,
369
+ m: e.m,
370
+ d: 1
371
+ });
372
+ }
373
+ U.current = !0;
374
+ } else H.current = null;
375
+ B(e);
283
376
  }
284
377
  },
285
378
  children: [
286
- /* @__PURE__ */ d("input", {
287
- ref: Ee,
288
- type: T === "range" ? "text" : "date",
289
- name: le,
290
- required: ue,
291
- min: T === "range" ? void 0 : M,
292
- max: T === "range" ? void 0 : N,
379
+ /* @__PURE__ */ f("input", {
380
+ ref: ft,
381
+ type: x === "range" ? "text" : "date",
382
+ name: _e,
383
+ required: ve,
384
+ readOnly: R,
385
+ min: x === "range" ? void 0 : j,
386
+ max: x === "range" ? void 0 : M,
293
387
  className: "sr-only mb-2 h-7",
294
388
  style: {
295
389
  position: "absolute",
@@ -298,148 +392,222 @@ function T({ value: p, defaultValue: g = "", onChange: re, mode: T = "single", r
298
392
  overflow: "hidden",
299
393
  clip: "rect(0, 0, 0, 0)"
300
394
  },
301
- value: T === "range" ? Z && Q ? `${Z}/${Q}` : "" : K,
395
+ value: x === "range" ? Z && Q ? `${Z}/${Q}` : "" : q,
302
396
  onChange: () => void 0,
303
- disabled: P,
397
+ onInvalid: (e) => {
398
+ Ee?.(e), e.defaultPrevented || (e.preventDefault(), Pe(!0), Ie(I?.validationMessage || e.target.validationMessage || "Please fill out this field."), ze.current?.focus());
399
+ },
400
+ disabled: N,
304
401
  "aria-hidden": "true",
305
402
  tabIndex: -1,
306
- ...be
403
+ ...Oe
307
404
  }),
308
- /* @__PURE__ */ d(i, {
405
+ /* @__PURE__ */ f(i, {
309
406
  asChild: !0,
310
- children: /* @__PURE__ */ d(t, {
407
+ children: /* @__PURE__ */ f(t, {
311
408
  type: "button",
312
- ref: De,
313
- id: fe,
409
+ ref: ze,
410
+ id: P,
314
411
  variant: "outline",
315
- disabled: P,
316
- onFocus: _e,
317
- onBlur: ve,
318
- "aria-labelledby": ye,
319
- "aria-label": F ? Ne === "Pick a date" ? F : `${F}: ${Ne}` : void 0,
320
- "aria-describedby": pe,
321
- "aria-invalid": me,
322
- className: e("justify-start font-normal", de),
323
- children: Ne
412
+ disabled: N,
413
+ onFocus: we,
414
+ onBlur: Te,
415
+ "aria-labelledby": De,
416
+ "aria-label": F ? ot === "Pick a date" ? F : `${F}: ${ot}` : void 0,
417
+ "aria-describedby": ht,
418
+ "aria-invalid": pt,
419
+ className: e("justify-start font-normal", mt && "border-basalt-destructive text-basalt-destructive", ye),
420
+ children: ot
324
421
  })
325
422
  }),
326
- /* @__PURE__ */ f(r, {
423
+ Ne && Fe ? /* @__PURE__ */ f("span", {
424
+ id: Ve,
425
+ role: "alert",
426
+ className: "mt-1 block text-xs text-basalt-destructive",
427
+ children: Fe
428
+ }) : null,
429
+ /* @__PURE__ */ p(r, {
327
430
  arrow: !1,
328
431
  className: "w-64 p-3",
329
- "aria-label": F ? `${F} calendar` : "Date calendar",
432
+ "aria-label": st,
433
+ "aria-describedby": Ge,
330
434
  onOpenAutoFocus: (e) => {
331
435
  e.preventDefault();
332
- let t = G || K || m(v(j)), n = Y.findIndex((e) => C(e) === t), r = (e) => !!(e && e.y >= 1 && x(m(e), M, N, D)), i = n >= 0 && Y[n]?.m === q.m ? n : Math.max(0, Y.findIndex((e) => e?.m === q.m));
436
+ let t = K || q || h(b(A)), n = Y.findIndex((e) => T(e) === t), r = (e) => !!(e && e.y >= 1 && se(h(e), j, M, pe)), i = n >= 0 && Y[n]?.m === J.m ? n : Math.max(0, Y.findIndex((e) => e?.m === J.m));
333
437
  if (!r(Y[i] ?? null)) {
334
- let e = Y.findIndex((e) => e?.m === q.m && r(e)), t = Y.findIndex((e) => r(e));
438
+ let e = Y.findIndex((e) => e?.m === J.m && r(e)), t = Y.findIndex((e) => r(e));
335
439
  i = e >= 0 ? e : t >= 0 ? t : i;
336
440
  }
337
441
  queueMicrotask(() => {
338
- B.current[i]?.focus();
442
+ V.current[i]?.focus();
339
443
  });
340
444
  },
341
445
  children: [
342
- O && O.length > 0 ? /* @__PURE__ */ d("div", {
446
+ me && me.length > 0 ? /* @__PURE__ */ f("div", {
343
447
  className: "mb-2 flex flex-wrap gap-1",
344
- children: O.map((e) => /* @__PURE__ */ d(t, {
448
+ children: me.map((e) => /* @__PURE__ */ f(t, {
345
449
  type: "button",
346
450
  variant: "ghost",
347
451
  className: "h-7 px-2 text-xs",
348
- disabled: P || I,
349
- onClick: () => Fe(e),
452
+ disabled: N || R,
453
+ onClick: () => dt(e),
350
454
  children: e.label
351
455
  }, e.label))
352
456
  }) : null,
353
- /* @__PURE__ */ f("div", {
457
+ /* @__PURE__ */ p("div", {
354
458
  className: "mb-2 flex items-center justify-between gap-2",
355
459
  children: [
356
- /* @__PURE__ */ d(t, {
460
+ /* @__PURE__ */ f(t, {
357
461
  type: "button",
358
462
  variant: "ghost",
359
463
  size: "icon",
360
- icon: /* @__PURE__ */ d(u, {}),
361
- "aria-label": "Prev",
464
+ icon: /* @__PURE__ */ f(ee, {}),
465
+ "aria-label": ct,
362
466
  className: "size-8",
363
- disabled: P || !X || X.y < 1,
467
+ disabled: N || !X || X.y < 1,
364
468
  onClick: () => {
365
- !X || X.y < 1 || (H.current = !1, J(X));
469
+ !X || X.y < 1 || (H.current = null, U.current = !1, $e(X));
366
470
  }
367
471
  }),
368
- /* @__PURE__ */ d("span", {
472
+ /* @__PURE__ */ f("span", {
473
+ id: Ue,
474
+ "aria-live": "polite",
475
+ "aria-atomic": "true",
369
476
  className: "text-sm font-medium",
370
- children: y(q, k, {
477
+ children: re(J, he, {
371
478
  month: "long",
372
479
  year: "numeric"
373
480
  })
374
481
  }),
375
- /* @__PURE__ */ d(t, {
482
+ /* @__PURE__ */ f(t, {
376
483
  type: "button",
377
484
  variant: "ghost",
378
485
  size: "icon",
379
- icon: /* @__PURE__ */ d(ee, {}),
380
- "aria-label": "Next",
486
+ icon: /* @__PURE__ */ f(d, {}),
487
+ "aria-label": lt,
381
488
  className: "size-8",
382
- disabled: P || !Me,
489
+ disabled: N || !at,
383
490
  onClick: () => {
384
- Me && (H.current = !1, J(Me));
491
+ at && (H.current = null, U.current = !1, $e(at));
385
492
  }
386
493
  })
387
494
  ]
388
495
  }),
389
- /* @__PURE__ */ f("div", {
390
- className: "grid grid-cols-7 gap-1 text-center",
496
+ /* @__PURE__ */ f("p", {
497
+ id: Ge,
498
+ className: "sr-only",
499
+ children: I?.keyboardInstructions ?? "Use arrow keys to navigate dates, PageUp and PageDown to change months, and Enter or Space to select."
500
+ }),
501
+ /* @__PURE__ */ p("table", {
502
+ role: "grid",
503
+ "aria-labelledby": Ue,
504
+ "aria-multiselectable": x === "range" ? "true" : void 0,
505
+ className: "w-full border-collapse text-center",
391
506
  onKeyDown: (e) => {
392
- let t = Y[we];
507
+ let t = Y[Le];
393
508
  if (t) {
394
509
  if (e.key === "ArrowRight" || e.key === "ArrowLeft" || e.key === "ArrowDown" || e.key === "ArrowUp") {
395
510
  e.preventDefault();
396
- let n = e.key === "ArrowRight" ? 1 : e.key === "ArrowLeft" ? -1 : e.key === "ArrowDown" ? 7 : -7, r = w(t, n);
397
- for (let e = 0; r && r.y >= 1 && !$(m(r)) && e < 42; e += 1) r = w(r, n);
398
- if (!r || r.y < 1 || !$(m(r))) return;
399
- if (r.y !== q.y || r.m !== q.m) {
400
- V.current = m(r), H.current = !0, J({
511
+ let n = e.key === "ArrowRight" ? 1 : e.key === "ArrowLeft" ? -1 : e.key === "ArrowDown" ? 7 : -7, r = E(t, n);
512
+ for (let e = 0; r && r.y >= 1 && !$(h(r)) && e < 42; e += 1) r = E(r, n);
513
+ if (!r || r.y < 1 || !$(h(r))) return;
514
+ if (r.y !== J.y || r.m !== J.m) {
515
+ H.current = {
516
+ targetMonthKey: y(r),
517
+ iso: h(r)
518
+ }, $e({
401
519
  y: r.y,
402
520
  m: r.m,
403
521
  d: 1
404
522
  });
405
523
  return;
406
524
  }
407
- let i = Y.findIndex((e) => C(e) === m(r));
408
- i >= 0 && (Te(i), B.current[i]?.focus());
525
+ let i = Y.findIndex((e) => T(e) === h(r));
526
+ i >= 0 && (Re(i), V.current[i]?.focus());
527
+ return;
528
+ }
529
+ if (e.key === "Home" || e.key === "End") {
530
+ e.preventDefault();
531
+ let n = (g(t).getUTCDay() - k + 7) % 7, r = E(t, e.key === "Home" ? -n : 6 - n), i = e.key === "Home" ? 1 : -1;
532
+ for (let e = 0; r && r.y >= 1 && !$(h(r)) && e < 7; e += 1) r = E(r, i);
533
+ if (!r || r.y < 1 || !$(h(r))) return;
534
+ if (r.y !== J.y || r.m !== J.m) {
535
+ H.current = {
536
+ targetMonthKey: y(r),
537
+ iso: h(r)
538
+ }, $e({
539
+ y: r.y,
540
+ m: r.m,
541
+ d: 1
542
+ });
543
+ return;
544
+ }
545
+ let a = Y.findIndex((e) => T(e) === h(r));
546
+ a >= 0 && (Re(a), V.current[a]?.focus());
547
+ return;
548
+ }
549
+ if (e.key === "PageDown" || e.key === "PageUp") {
550
+ e.preventDefault();
551
+ let n = ae(t, e.shiftKey ? e.key === "PageDown" ? 12 : -12 : e.key === "PageDown" ? 1 : -1);
552
+ if (!n) return;
553
+ let r = n;
554
+ for (let e = 0; r && r.y >= 1 && !$(h(r)) && e < 42; e += 1) r = E(r, 1);
555
+ if (!r || r.y < 1 || !$(h(r))) {
556
+ r = n;
557
+ for (let e = 0; r && r.y >= 1 && !$(h(r)) && e < 42; e += 1) r = E(r, -1);
558
+ }
559
+ if (!r || r.y < 1 || !$(h(r))) return;
560
+ H.current = {
561
+ targetMonthKey: y(r),
562
+ iso: h(r)
563
+ }, $e({
564
+ y: r.y,
565
+ m: r.m,
566
+ d: 1
567
+ });
409
568
  return;
410
569
  }
411
570
  if (e.key === "Enter" || e.key === " ") {
412
571
  e.preventDefault();
413
- let n = m(t);
414
- t.y >= 1 && $(n) && Pe(n);
572
+ let n = h(t);
573
+ t.y >= 1 && $(n) && ut(n);
415
574
  }
416
575
  }
417
576
  },
418
- children: [je.map((e, t) => /* @__PURE__ */ d("span", {
419
- className: "flex h-8 items-center justify-center text-xs font-medium text-basalt-muted-foreground",
577
+ children: [/* @__PURE__ */ f("thead", { children: /* @__PURE__ */ f("tr", { children: it.map((e, t) => /* @__PURE__ */ f("th", {
578
+ scope: "col",
579
+ className: "h-8 text-center text-xs font-medium text-basalt-muted-foreground",
420
580
  children: e
421
- }, `${e}-${t}`)), Y.map((t, n) => {
422
- if (!t) return /* @__PURE__ */ d("span", {
423
- className: "h-8",
581
+ }, `${e}-${t}`)) }) }), /* @__PURE__ */ f("tbody", { children: Array.from({ length: 6 }, (t, n) => /* @__PURE__ */ f("tr", { children: Y.slice(n * 7, n * 7 + 7).map((t, r) => {
582
+ let i = n * 7 + r;
583
+ if (!t) return /* @__PURE__ */ f("td", {
584
+ role: "gridcell",
585
+ className: "h-8 p-0 text-center",
424
586
  ref: () => {
425
- B.current[n] = null;
587
+ V.current[i] = null;
426
588
  }
427
- }, `empty-${n}`);
428
- let r = m(t), i = t.m === q.m, a = t.y >= 1 && $(r), o = Z ? _(Z) : null, s = Q ? _(Q) : null, c = _(r), l = !!(o && s && c && b(c, o) >= 0 && b(c, s) <= 0), u = r === Z || r === Q;
429
- return /* @__PURE__ */ d("button", {
430
- type: "button",
431
- ref: (e) => {
432
- B.current[n] = e;
433
- },
434
- tabIndex: n === we ? 0 : -1,
435
- "aria-label": r,
436
- "aria-pressed": T === "range" ? r === Z || r === Q : !!K && r === K,
437
- disabled: P || I || !a,
438
- className: e(te, "flex h-8 w-8 items-center justify-center rounded-basalt-md text-sm", i ? "text-basalt-foreground" : "text-basalt-muted-foreground", a && "hover:bg-basalt-accent", l && !u && "bg-basalt-accent", a && (T === "range" ? u : r === K) && "bg-basalt-primary text-basalt-primary-foreground hover:bg-basalt-primary/90"),
439
- onClick: () => a && Pe(r),
440
- children: t.d
441
- }, r);
442
- })]
589
+ }, `empty-${i}`);
590
+ let a = h(t), o = t.m === J.m, s = t.y >= 1 && $(a), c = Z ? v(Z) : null, l = Q ? v(Q) : null, u = v(a), ee = !!(c && l && u && S(u, c) >= 0 && S(u, l) <= 0), d = a === Z || a === Q, p = x === "range" ? ee || d : !!q && a === q;
591
+ return /* @__PURE__ */ f("td", {
592
+ role: "gridcell",
593
+ "aria-selected": p ? "true" : void 0,
594
+ className: "h-8 p-0 text-center",
595
+ children: /* @__PURE__ */ f("button", {
596
+ type: "button",
597
+ ref: (e) => {
598
+ V.current[i] = e;
599
+ },
600
+ tabIndex: i === Le ? 0 : -1,
601
+ "data-date": a,
602
+ "aria-label": a,
603
+ "aria-pressed": x === "range" ? d : p,
604
+ disabled: N || R || !s,
605
+ className: e(ne, "mx-auto flex h-8 w-8 items-center justify-center rounded-basalt-md text-sm", o ? "text-basalt-foreground" : "text-basalt-muted-foreground", s && "hover:bg-basalt-accent", ee && !d && "bg-basalt-accent", s && (x === "range" ? d : p) && "bg-basalt-primary text-basalt-primary-foreground hover:bg-basalt-primary/90"),
606
+ onClick: () => s && ut(a),
607
+ children: t.d
608
+ })
609
+ }, a);
610
+ }) }, `week-${n}`)) })]
443
611
  })
444
612
  ]
445
613
  })
@@ -447,6 +615,6 @@ function T({ value: p, defaultValue: g = "", onChange: re, mode: T = "single", r
447
615
  });
448
616
  }
449
617
  //#endregion
450
- export { T as DatePicker };
618
+ export { D as DatePicker };
451
619
 
452
620
  //# sourceMappingURL=date-picker.js.map