@devalok/shilp-sutra 0.38.0 → 0.40.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 (361) hide show
  1. package/AGENTS.md +151 -0
  2. package/MIGRATION.md +255 -0
  3. package/README.md +3 -0
  4. package/dist/_chunks/badge-group.js +76 -75
  5. package/dist/_chunks/badge-group.js.map +1 -1
  6. package/dist/_chunks/chart-container.js +50 -0
  7. package/dist/_chunks/chart-container.js.map +1 -0
  8. package/dist/_chunks/chat.js +236 -228
  9. package/dist/_chunks/chat.js.map +1 -1
  10. package/dist/_chunks/colors.js +30 -0
  11. package/dist/_chunks/colors.js.map +1 -0
  12. package/dist/_chunks/document-preview.js +2 -2
  13. package/dist/_chunks/document-preview.js.map +1 -1
  14. package/dist/_chunks/emoji-data.js +45 -0
  15. package/dist/_chunks/emoji-data.js.map +1 -0
  16. package/dist/_chunks/grid-lines.js +72 -0
  17. package/dist/_chunks/grid-lines.js.map +1 -0
  18. package/dist/_chunks/image-preview.js +2 -2
  19. package/dist/_chunks/image-preview.js.map +1 -1
  20. package/dist/_chunks/mention-suggestion.js +35 -263
  21. package/dist/_chunks/mention-suggestion.js.map +1 -1
  22. package/dist/_chunks/normalize-icon.js +18 -0
  23. package/dist/_chunks/normalize-icon.js.map +1 -0
  24. package/dist/_chunks/oauth-button.js +227 -0
  25. package/dist/_chunks/oauth-button.js.map +1 -0
  26. package/dist/_chunks/popover.js +3 -3
  27. package/dist/_chunks/popover.js.map +1 -1
  28. package/dist/_chunks/primitives.js +107 -107
  29. package/dist/_chunks/primitives.js.map +1 -1
  30. package/dist/_chunks/shared.js +5 -5
  31. package/dist/_chunks/shared.js.map +1 -1
  32. package/dist/_chunks/{text.js → success.js} +26 -63
  33. package/dist/_chunks/success.js.map +1 -0
  34. package/dist/_chunks/tiptap.js +1952 -1949
  35. package/dist/_chunks/tiptap.js.map +1 -1
  36. package/dist/_chunks/tooltip.js +58 -0
  37. package/dist/_chunks/tooltip.js.map +1 -0
  38. package/dist/_chunks/tree-view.js +101 -96
  39. package/dist/_chunks/tree-view.js.map +1 -1
  40. package/dist/_chunks/use-calendar.js +5 -5
  41. package/dist/_chunks/use-calendar.js.map +1 -1
  42. package/dist/ai/ai-command-provider.d.ts +3 -2
  43. package/dist/ai/ai-command-provider.d.ts.map +1 -1
  44. package/dist/ai/ai-command-provider.js.map +1 -1
  45. package/dist/ai/block-renderer.js +11 -9
  46. package/dist/ai/block-renderer.js.map +1 -1
  47. package/dist/ai/blocks/error.js +31 -0
  48. package/dist/ai/blocks/error.js.map +1 -0
  49. package/dist/ai/blocks/index.d.ts +0 -2
  50. package/dist/ai/blocks/index.d.ts.map +1 -1
  51. package/dist/ai/blocks/index.js +2 -2
  52. package/dist/ai/blocks/text.js +19 -0
  53. package/dist/ai/blocks/text.js.map +1 -0
  54. package/dist/ai/command-bar.d.ts.map +1 -1
  55. package/dist/ai/command-bar.js +198 -193
  56. package/dist/ai/command-bar.js.map +1 -1
  57. package/dist/ai/conversation.d.ts +2 -1
  58. package/dist/ai/conversation.d.ts.map +1 -1
  59. package/dist/ai/conversation.js +92 -87
  60. package/dist/ai/conversation.js.map +1 -1
  61. package/dist/ai/index.d.ts +0 -4
  62. package/dist/ai/index.d.ts.map +1 -1
  63. package/dist/ai/index.js +45 -46
  64. package/dist/ai/index.js.map +1 -1
  65. package/dist/composed/activity-feed.d.ts +2 -1
  66. package/dist/composed/activity-feed.d.ts.map +1 -1
  67. package/dist/composed/activity-feed.js +5 -5
  68. package/dist/composed/activity-feed.js.map +1 -1
  69. package/dist/composed/avatar-group.js +4 -4
  70. package/dist/composed/avatar-group.js.map +1 -1
  71. package/dist/composed/bulk-action-bar.d.ts +2 -2
  72. package/dist/composed/bulk-action-bar.d.ts.map +1 -1
  73. package/dist/composed/bulk-action-bar.js +12 -12
  74. package/dist/composed/bulk-action-bar.js.map +1 -1
  75. package/dist/composed/command-palette.d.ts +2 -1
  76. package/dist/composed/command-palette.d.ts.map +1 -1
  77. package/dist/composed/command-palette.js +106 -101
  78. package/dist/composed/command-palette.js.map +1 -1
  79. package/dist/composed/content-card.js +1 -1
  80. package/dist/composed/content-card.js.map +1 -1
  81. package/dist/composed/date-picker/index.js +747 -3
  82. package/dist/composed/date-picker/index.js.map +1 -0
  83. package/dist/composed/emoji-picker.js +4 -4
  84. package/dist/composed/emoji-picker.js.map +1 -1
  85. package/dist/composed/empty-state.d.ts +3 -3
  86. package/dist/composed/empty-state.d.ts.map +1 -1
  87. package/dist/composed/empty-state.js +40 -31
  88. package/dist/composed/empty-state.js.map +1 -1
  89. package/dist/composed/error-boundary.js +3 -3
  90. package/dist/composed/error-boundary.js.map +1 -1
  91. package/dist/composed/extensions/emoji-node.js +81 -0
  92. package/dist/composed/extensions/emoji-node.js.map +1 -0
  93. package/dist/composed/extensions/emoji-suggestion.js +117 -0
  94. package/dist/composed/extensions/emoji-suggestion.js.map +1 -0
  95. package/dist/composed/file-preview.js +498 -2
  96. package/dist/composed/file-preview.js.map +1 -0
  97. package/dist/composed/filter-bar.js +1 -1
  98. package/dist/composed/filter-bar.js.map +1 -1
  99. package/dist/composed/index.d.ts +0 -15
  100. package/dist/composed/index.d.ts.map +1 -1
  101. package/dist/composed/index.js +16 -24
  102. package/dist/composed/inline-edit.js +1 -1
  103. package/dist/composed/inline-edit.js.map +1 -1
  104. package/dist/composed/loading-skeleton.js +9 -9
  105. package/dist/composed/loading-skeleton.js.map +1 -1
  106. package/dist/composed/markdown-viewer.js +3 -3
  107. package/dist/composed/markdown-viewer.js.map +1 -1
  108. package/dist/composed/multi-select-popover.js +1 -1
  109. package/dist/composed/multi-select-popover.js.map +1 -1
  110. package/dist/composed/page-header.js +1 -1
  111. package/dist/composed/page-header.js.map +1 -1
  112. package/dist/composed/page-skeletons.js +15 -15
  113. package/dist/composed/page-skeletons.js.map +1 -1
  114. package/dist/composed/priority-indicator.js +3 -3
  115. package/dist/composed/priority-indicator.js.map +1 -1
  116. package/dist/composed/rich-chat-input.js +2073 -2
  117. package/dist/composed/rich-chat-input.js.map +1 -0
  118. package/dist/composed/rich-text-editor.js +75 -72
  119. package/dist/composed/rich-text-editor.js.map +1 -1
  120. package/dist/composed/schedule-view.js +3 -3
  121. package/dist/composed/schedule-view.js.map +1 -1
  122. package/dist/composed/status-badge.d.ts +3 -2
  123. package/dist/composed/status-badge.d.ts.map +1 -1
  124. package/dist/composed/status-badge.js +58 -53
  125. package/dist/composed/status-badge.js.map +1 -1
  126. package/dist/shell/app-command-palette.d.ts +2 -1
  127. package/dist/shell/app-command-palette.d.ts.map +1 -1
  128. package/dist/shell/app-command-palette.js.map +1 -1
  129. package/dist/shell/bottom-navbar.d.ts +3 -1
  130. package/dist/shell/bottom-navbar.d.ts.map +1 -1
  131. package/dist/shell/bottom-navbar.js +94 -86
  132. package/dist/shell/bottom-navbar.js.map +1 -1
  133. package/dist/shell/command-registry.d.ts +2 -1
  134. package/dist/shell/command-registry.d.ts.map +1 -1
  135. package/dist/shell/command-registry.js.map +1 -1
  136. package/dist/shell/notification-center.js +8 -8
  137. package/dist/shell/notification-center.js.map +1 -1
  138. package/dist/shell/notification-preferences.js +1 -1
  139. package/dist/shell/notification-preferences.js.map +1 -1
  140. package/dist/shell/sidebar.d.ts +7 -4
  141. package/dist/shell/sidebar.d.ts.map +1 -1
  142. package/dist/shell/sidebar.js +148 -134
  143. package/dist/shell/sidebar.js.map +1 -1
  144. package/dist/shell/top-bar.d.ts +4 -3
  145. package/dist/shell/top-bar.d.ts.map +1 -1
  146. package/dist/shell/top-bar.js +116 -108
  147. package/dist/shell/top-bar.js.map +1 -1
  148. package/dist/tokens/semantic.css +82 -9
  149. package/dist/ui/accordion.js +1 -1
  150. package/dist/ui/accordion.js.map +1 -1
  151. package/dist/ui/alert-dialog.js +3 -3
  152. package/dist/ui/alert-dialog.js.map +1 -1
  153. package/dist/ui/alert.js +2 -2
  154. package/dist/ui/alert.js.map +1 -1
  155. package/dist/ui/autocomplete.js +2 -2
  156. package/dist/ui/autocomplete.js.map +1 -1
  157. package/dist/ui/avatar.js +11 -11
  158. package/dist/ui/avatar.js.map +1 -1
  159. package/dist/ui/badge-indicator.js +1 -1
  160. package/dist/ui/badge-indicator.js.map +1 -1
  161. package/dist/ui/badge.d.ts +3 -2
  162. package/dist/ui/badge.d.ts.map +1 -1
  163. package/dist/ui/banner.js +1 -1
  164. package/dist/ui/banner.js.map +1 -1
  165. package/dist/ui/breadcrumb.js +1 -1
  166. package/dist/ui/breadcrumb.js.map +1 -1
  167. package/dist/ui/button.d.ts +5 -4
  168. package/dist/ui/button.d.ts.map +1 -1
  169. package/dist/ui/button.js +66 -65
  170. package/dist/ui/button.js.map +1 -1
  171. package/dist/ui/card.js +5 -5
  172. package/dist/ui/card.js.map +1 -1
  173. package/dist/ui/charts/area-chart.js +177 -0
  174. package/dist/ui/charts/area-chart.js.map +1 -0
  175. package/dist/ui/charts/bar-chart.js +127 -0
  176. package/dist/ui/charts/bar-chart.js.map +1 -0
  177. package/dist/ui/charts/chart-container.js +3 -0
  178. package/dist/ui/charts/gauge-chart.js +72 -0
  179. package/dist/ui/charts/gauge-chart.js.map +1 -0
  180. package/dist/ui/charts/index.js +10 -1035
  181. package/dist/ui/charts/line-chart.js +135 -0
  182. package/dist/ui/charts/line-chart.js.map +1 -0
  183. package/dist/ui/charts/pie-chart.js +111 -0
  184. package/dist/ui/charts/pie-chart.js.map +1 -0
  185. package/dist/ui/charts/radar-chart.js +170 -0
  186. package/dist/ui/charts/radar-chart.js.map +1 -0
  187. package/dist/ui/charts/sparkline.js +119 -0
  188. package/dist/ui/charts/sparkline.js.map +1 -0
  189. package/dist/ui/chat/message.d.ts +3 -3
  190. package/dist/ui/chat/message.d.ts.map +1 -1
  191. package/dist/ui/chat/system-message.d.ts +2 -1
  192. package/dist/ui/chat/system-message.d.ts.map +1 -1
  193. package/dist/ui/checkbox.js +1 -1
  194. package/dist/ui/checkbox.js.map +1 -1
  195. package/dist/ui/code.js +2 -2
  196. package/dist/ui/code.js.map +1 -1
  197. package/dist/ui/color-input.js +10 -10
  198. package/dist/ui/color-input.js.map +1 -1
  199. package/dist/ui/color-swatch.js +3 -3
  200. package/dist/ui/color-swatch.js.map +1 -1
  201. package/dist/ui/combobox.d.ts +2 -1
  202. package/dist/ui/combobox.d.ts.map +1 -1
  203. package/dist/ui/combobox.js +100 -95
  204. package/dist/ui/combobox.js.map +1 -1
  205. package/dist/ui/container.d.ts +6 -1
  206. package/dist/ui/container.d.ts.map +1 -1
  207. package/dist/ui/container.js +2 -1
  208. package/dist/ui/container.js.map +1 -1
  209. package/dist/ui/context-menu.js +6 -6
  210. package/dist/ui/context-menu.js.map +1 -1
  211. package/dist/ui/data-table-body.js +1 -1
  212. package/dist/ui/data-table-body.js.map +1 -1
  213. package/dist/ui/data-table-bulk-actions.js +2 -2
  214. package/dist/ui/data-table-bulk-actions.js.map +1 -1
  215. package/dist/ui/data-table-card.js +2 -2
  216. package/dist/ui/data-table-card.js.map +1 -1
  217. package/dist/ui/data-table-header.js +2 -2
  218. package/dist/ui/data-table-header.js.map +1 -1
  219. package/dist/ui/data-table-pagination.js +3 -3
  220. package/dist/ui/data-table-pagination.js.map +1 -1
  221. package/dist/ui/data-table-toolbar.js +1 -1
  222. package/dist/ui/data-table-toolbar.js.map +1 -1
  223. package/dist/ui/data-table.js +1 -1
  224. package/dist/ui/data-table.js.map +1 -1
  225. package/dist/ui/devalok-grain.d.ts +1 -1
  226. package/dist/ui/devalok-grain.js.map +1 -1
  227. package/dist/ui/dialog.js +2 -2
  228. package/dist/ui/dialog.js.map +1 -1
  229. package/dist/ui/dropdown-menu.js +6 -6
  230. package/dist/ui/dropdown-menu.js.map +1 -1
  231. package/dist/ui/file-upload.js +4 -4
  232. package/dist/ui/file-upload.js.map +1 -1
  233. package/dist/ui/hover-card.js +1 -1
  234. package/dist/ui/hover-card.js.map +1 -1
  235. package/dist/ui/icon-button.d.ts +9 -2
  236. package/dist/ui/icon-button.d.ts.map +1 -1
  237. package/dist/ui/icon-button.js +14 -13
  238. package/dist/ui/icon-button.js.map +1 -1
  239. package/dist/ui/index.d.ts +1 -3
  240. package/dist/ui/index.d.ts.map +1 -1
  241. package/dist/ui/index.js +31 -33
  242. package/dist/ui/index.js.map +1 -1
  243. package/dist/ui/input-otp.js +1 -1
  244. package/dist/ui/input-otp.js.map +1 -1
  245. package/dist/ui/input.js +2 -2
  246. package/dist/ui/input.js.map +1 -1
  247. package/dist/ui/lib/icon-input.d.ts +42 -0
  248. package/dist/ui/lib/icon-input.d.ts.map +1 -0
  249. package/dist/ui/lib/normalize-icon.d.ts +39 -0
  250. package/dist/ui/lib/normalize-icon.d.ts.map +1 -0
  251. package/dist/ui/link.js +1 -1
  252. package/dist/ui/link.js.map +1 -1
  253. package/dist/ui/menubar.js +8 -8
  254. package/dist/ui/menubar.js.map +1 -1
  255. package/dist/ui/navigation-menu.js +3 -3
  256. package/dist/ui/navigation-menu.js.map +1 -1
  257. package/dist/ui/number-input.js +3 -3
  258. package/dist/ui/number-input.js.map +1 -1
  259. package/dist/ui/oauth-button/index.d.ts +3 -0
  260. package/dist/ui/oauth-button/index.d.ts.map +1 -0
  261. package/dist/ui/oauth-button/index.js +3 -0
  262. package/dist/ui/oauth-button/oauth-button.d.ts +208 -0
  263. package/dist/ui/oauth-button/oauth-button.d.ts.map +1 -0
  264. package/dist/ui/pagination.js +1 -1
  265. package/dist/ui/pagination.js.map +1 -1
  266. package/dist/ui/progress.js +2 -2
  267. package/dist/ui/progress.js.map +1 -1
  268. package/dist/ui/radio.js +1 -1
  269. package/dist/ui/radio.js.map +1 -1
  270. package/dist/ui/segmented-control.d.ts +3 -4
  271. package/dist/ui/segmented-control.d.ts.map +1 -1
  272. package/dist/ui/segmented-control.js +53 -45
  273. package/dist/ui/segmented-control.js.map +1 -1
  274. package/dist/ui/select.js +3 -3
  275. package/dist/ui/select.js.map +1 -1
  276. package/dist/ui/sheet.js +2 -2
  277. package/dist/ui/sheet.js.map +1 -1
  278. package/dist/ui/sidebar.js +11 -11
  279. package/dist/ui/sidebar.js.map +1 -1
  280. package/dist/ui/skeleton.js +9 -9
  281. package/dist/ui/skeleton.js.map +1 -1
  282. package/dist/ui/slider.js +2 -2
  283. package/dist/ui/slider.js.map +1 -1
  284. package/dist/ui/split-button.js +7 -7
  285. package/dist/ui/split-button.js.map +1 -1
  286. package/dist/ui/stack.d.ts +6 -1
  287. package/dist/ui/stack.d.ts.map +1 -1
  288. package/dist/ui/stack.js +2 -1
  289. package/dist/ui/stack.js.map +1 -1
  290. package/dist/ui/stat-card.d.ts +2 -3
  291. package/dist/ui/stat-card.d.ts.map +1 -1
  292. package/dist/ui/stat-card.js +118 -116
  293. package/dist/ui/stat-card.js.map +1 -1
  294. package/dist/ui/status-dot.js +2 -2
  295. package/dist/ui/status-dot.js.map +1 -1
  296. package/dist/ui/stepper.d.ts +2 -1
  297. package/dist/ui/stepper.d.ts.map +1 -1
  298. package/dist/ui/stepper.js +74 -69
  299. package/dist/ui/stepper.js.map +1 -1
  300. package/dist/ui/switch.js +2 -2
  301. package/dist/ui/switch.js.map +1 -1
  302. package/dist/ui/tabs.js +3 -3
  303. package/dist/ui/tabs.js.map +1 -1
  304. package/dist/ui/text.d.ts +7 -2
  305. package/dist/ui/text.d.ts.map +1 -1
  306. package/dist/ui/text.js +2 -1
  307. package/dist/ui/text.js.map +1 -1
  308. package/dist/ui/textarea.js +1 -1
  309. package/dist/ui/textarea.js.map +1 -1
  310. package/dist/ui/toast.js +8 -8
  311. package/dist/ui/toast.js.map +1 -1
  312. package/dist/ui/toaster.d.ts +11 -2
  313. package/dist/ui/toaster.d.ts.map +1 -1
  314. package/dist/ui/toaster.js.map +1 -1
  315. package/dist/ui/toggle.js +1 -1
  316. package/dist/ui/toggle.js.map +1 -1
  317. package/dist/ui/tooltip.js +12 -12
  318. package/dist/ui/tooltip.js.map +1 -1
  319. package/dist/ui/tree-view/tree-item.d.ts +3 -2
  320. package/dist/ui/tree-view/tree-item.d.ts.map +1 -1
  321. package/dist/ui/tree-view/use-tree.d.ts +2 -1
  322. package/dist/ui/tree-view/use-tree.d.ts.map +1 -1
  323. package/docs/components/_header.md +90 -1
  324. package/docs/components/ui/oauth-button.md +86 -0
  325. package/docs/recipes/customize-brand.md +100 -4
  326. package/docs/recipes/index.md +5 -1
  327. package/docs/recipes/install-astro.md +15 -0
  328. package/docs/recipes/install-next-app-router.md +21 -5
  329. package/docs/recipes/install-next-pages.md +2 -0
  330. package/docs/recipes/install-remix.md +15 -0
  331. package/docs/recipes/install-tanstack-start.md +15 -0
  332. package/docs/recipes/install-vite.md +15 -0
  333. package/docs/recipes/troubleshoot.md +22 -0
  334. package/llms-full.txt +177 -2
  335. package/llms-quick.txt +247 -0
  336. package/llms.txt +116 -3
  337. package/package.json +80 -2
  338. package/scripts/welcome.mjs +219 -0
  339. package/skill/README.md +99 -0
  340. package/skill/SKILL.md +163 -0
  341. package/skill/install.sh +59 -0
  342. package/skill/references/components-full.md +7083 -0
  343. package/skill/references/components.md +778 -0
  344. package/skill/references/customize-brand.md +314 -0
  345. package/skill/references/server-components.md +211 -0
  346. package/skill/references/setup-astro.md +195 -0
  347. package/skill/references/setup-next-app-router.md +248 -0
  348. package/skill/references/setup-next-pages.md +127 -0
  349. package/skill/references/setup-remix.md +188 -0
  350. package/skill/references/setup-tanstack-start.md +160 -0
  351. package/skill/references/setup-vite.md +187 -0
  352. package/skill/references/troubleshoot.md +241 -0
  353. package/dist/_chunks/date-picker.js +0 -748
  354. package/dist/_chunks/date-picker.js.map +0 -1
  355. package/dist/_chunks/file-preview.js +0 -499
  356. package/dist/_chunks/file-preview.js.map +0 -1
  357. package/dist/_chunks/rich-chat-input.js +0 -2071
  358. package/dist/_chunks/rich-chat-input.js.map +0 -1
  359. package/dist/_chunks/text.js.map +0 -1
  360. package/dist/ui/charts/index.js.map +0 -1
  361. /package/{LICENSE → skill/LICENSE} +0 -0
@@ -1,4 +1,748 @@
1
1
  "use client";
2
- import { n as e, t } from "../../_chunks/use-calendar.js";
3
- import { a as n, i as r, n as i, o as a, r as o, s, t as c } from "../../_chunks/date-picker.js";
4
- export { e as CalendarGrid, n as DatePicker, o as DateRangePicker, i as DateTimePicker, s as MonthPicker, r as Presets, c as TimePicker, a as YearPicker, t as useCalendar };
2
+ import { cn as e } from "../../ui/lib/utils.js";
3
+ import { Icon as t } from "../../ui/icon.js";
4
+ import { i as n, r, t as i } from "../../_chunks/popover.js";
5
+ import { n as a, t as o } from "../../_chunks/use-calendar.js";
6
+ import * as s from "react";
7
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
+ import { IconCalendarClock as u, IconCalendarEvent as d, IconClock as f } from "@tabler/icons-react";
9
+ import { addMonths as p, endOfDay as m, endOfMonth as h, format as g, isAfter as _, isBefore as v, setHours as y, setMinutes as b, setMonth as x, setSeconds as S, setYear as C, startOfDay as w, startOfMonth as T, startOfYear as E, subDays as D, subMonths as O } from "date-fns";
10
+ //#region src/composed/date-picker/month-picker.tsx
11
+ var k = [
12
+ "Jan",
13
+ "Feb",
14
+ "Mar",
15
+ "Apr",
16
+ "May",
17
+ "Jun",
18
+ "Jul",
19
+ "Aug",
20
+ "Sep",
21
+ "Oct",
22
+ "Nov",
23
+ "Dec"
24
+ ], A = s.forwardRef(function({ currentYear: t, selectedMonth: n, onMonthSelect: r, minDate: i, maxDate: a, className: o, ...u }, d) {
25
+ let [f, p] = s.useState(n ?? 0), m = s.useRef([]), h = (e) => i != null && (t < i.getFullYear() || t === i.getFullYear() && e < i.getMonth()) || a != null && (t > a.getFullYear() || t === a.getFullYear() && e > a.getMonth()), g = (e) => {
26
+ let t = f;
27
+ switch (e.key) {
28
+ case "ArrowRight":
29
+ t = Math.min(11, f + 1);
30
+ break;
31
+ case "ArrowLeft":
32
+ t = Math.max(0, f - 1);
33
+ break;
34
+ case "ArrowDown":
35
+ t = Math.min(11, f + 4);
36
+ break;
37
+ case "ArrowUp":
38
+ t = Math.max(0, f - 4);
39
+ break;
40
+ case "Home":
41
+ t = 0;
42
+ break;
43
+ case "End":
44
+ t = 11;
45
+ break;
46
+ default: return;
47
+ }
48
+ for (e.preventDefault(); t !== f && h(t);) if (t += e.key === "ArrowLeft" || e.key === "ArrowUp" ? -1 : 1, t < 0 || t > 11) return;
49
+ p(t), m.current[t]?.focus();
50
+ };
51
+ return /* @__PURE__ */ l("div", {
52
+ ref: d,
53
+ ...u,
54
+ className: e("w-[252px]", o),
55
+ children: [/* @__PURE__ */ c("div", {
56
+ className: "text-center pb-ds-04 text-ds-md font-semibold text-surface-fg",
57
+ children: t
58
+ }), /* @__PURE__ */ c("div", {
59
+ role: "grid",
60
+ "aria-label": "Month picker",
61
+ tabIndex: -1,
62
+ onKeyDown: g,
63
+ children: [
64
+ 0,
65
+ 1,
66
+ 2
67
+ ].map((t) => /* @__PURE__ */ c("div", {
68
+ role: "row",
69
+ className: "grid grid-cols-4 gap-ds-02 mb-ds-02 last:mb-0",
70
+ children: k.slice(t * 4, t * 4 + 4).map((i, a) => {
71
+ let o = t * 4 + a, s = o === n, l = h(o);
72
+ return /* @__PURE__ */ c("button", {
73
+ ref: (e) => {
74
+ m.current[o] = e;
75
+ },
76
+ type: "button",
77
+ role: "gridcell",
78
+ tabIndex: o === f ? 0 : -1,
79
+ disabled: l || !1,
80
+ onClick: () => !l && r(o),
81
+ className: e("h-ds-sm-plus rounded-control text-ds-md transition-colors focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", l && "opacity-action-disabled pointer-events-none cursor-not-allowed", s && "bg-accent-9 text-accent-fg", !s && !l && "hover:bg-surface-raised-hover text-surface-fg"),
82
+ children: i
83
+ }, i);
84
+ })
85
+ }, t))
86
+ })]
87
+ });
88
+ });
89
+ A.displayName = "MonthPicker";
90
+ //#endregion
91
+ //#region src/composed/date-picker/year-picker.tsx
92
+ var j = s.forwardRef(function({ currentYear: t, selectedYear: n, onYearSelect: r, minDate: i, maxDate: a, className: o, ...u }, d) {
93
+ let f = Math.floor(t / 10) * 10, p = Array.from({ length: 12 }, (e, t) => f + t), [m, h] = s.useState(() => {
94
+ let e = p.indexOf(n ?? t);
95
+ return e >= 0 ? e : 0;
96
+ }), g = s.useRef([]), _ = (e) => i != null && e < i.getFullYear() || a != null && e > a.getFullYear(), v = (e) => {
97
+ let t = m;
98
+ switch (e.key) {
99
+ case "ArrowRight":
100
+ t = Math.min(11, m + 1);
101
+ break;
102
+ case "ArrowLeft":
103
+ t = Math.max(0, m - 1);
104
+ break;
105
+ case "ArrowDown":
106
+ t = Math.min(11, m + 3);
107
+ break;
108
+ case "ArrowUp":
109
+ t = Math.max(0, m - 3);
110
+ break;
111
+ case "Home":
112
+ t = 0;
113
+ break;
114
+ case "End":
115
+ t = 11;
116
+ break;
117
+ default: return;
118
+ }
119
+ for (e.preventDefault(); t !== m && _(p[t]);) if (t += e.key === "ArrowLeft" || e.key === "ArrowUp" ? -1 : 1, t < 0 || t > 11) return;
120
+ h(t), g.current[t]?.focus();
121
+ };
122
+ return /* @__PURE__ */ l("div", {
123
+ ref: d,
124
+ ...u,
125
+ className: e("w-[252px]", o),
126
+ children: [/* @__PURE__ */ l("div", {
127
+ className: "text-center pb-ds-04 text-ds-md font-semibold text-surface-fg",
128
+ children: [
129
+ f,
130
+ " – ",
131
+ f + 11
132
+ ]
133
+ }), /* @__PURE__ */ c("div", {
134
+ role: "grid",
135
+ "aria-label": "Year picker",
136
+ tabIndex: -1,
137
+ onKeyDown: v,
138
+ children: [
139
+ 0,
140
+ 1,
141
+ 2,
142
+ 3
143
+ ].map((t) => /* @__PURE__ */ c("div", {
144
+ role: "row",
145
+ className: "grid grid-cols-3 gap-ds-02 mb-ds-02 last:mb-0",
146
+ children: p.slice(t * 3, t * 3 + 3).map((t) => {
147
+ let i = p.indexOf(t), a = t === n, o = _(t);
148
+ return /* @__PURE__ */ c("button", {
149
+ ref: (e) => {
150
+ g.current[i] = e;
151
+ },
152
+ type: "button",
153
+ role: "gridcell",
154
+ tabIndex: i === m ? 0 : -1,
155
+ disabled: o || !1,
156
+ onClick: () => !o && r(t),
157
+ className: e("h-ds-sm-plus rounded-control text-ds-md transition-colors focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", o && "opacity-action-disabled pointer-events-none cursor-not-allowed", a && "bg-accent-9 text-accent-fg", !a && !o && "hover:bg-surface-raised-hover text-surface-fg"),
158
+ children: t
159
+ }, t);
160
+ })
161
+ }, t))
162
+ })]
163
+ });
164
+ });
165
+ j.displayName = "YearPicker";
166
+ //#endregion
167
+ //#region src/composed/date-picker/date-picker.tsx
168
+ var M = s.forwardRef(function({ value: o, onChange: u, placeholder: f = "Pick a date", className: p, formatStr: m = "MMM d, yyyy", minDate: h, maxDate: _, disabledDates: v, ...y }, b) {
169
+ let [S, w] = s.useState(!1), [T, E] = s.useState(o ?? /* @__PURE__ */ new Date()), [D, O] = s.useState("days");
170
+ s.useEffect(() => {
171
+ S || O("days");
172
+ }, [S]);
173
+ let k = (e) => {
174
+ u?.(e), w(!1);
175
+ }, M = () => {
176
+ O((e) => e === "days" ? "months" : "years");
177
+ }, N = (e) => {
178
+ E((t) => x(t, e)), O("days");
179
+ }, P = (e) => {
180
+ E((t) => C(t, e)), O("months");
181
+ }, F = () => {
182
+ switch (D) {
183
+ case "years": return /* @__PURE__ */ c(j, {
184
+ currentYear: T.getFullYear(),
185
+ selectedYear: o?.getFullYear(),
186
+ onYearSelect: P,
187
+ minDate: h,
188
+ maxDate: _
189
+ });
190
+ case "months": return /* @__PURE__ */ c(A, {
191
+ currentYear: T.getFullYear(),
192
+ selectedMonth: o?.getMonth(),
193
+ onMonthSelect: N,
194
+ minDate: h,
195
+ maxDate: _
196
+ });
197
+ default: return /* @__PURE__ */ c(a, {
198
+ currentMonth: T,
199
+ selected: o,
200
+ onSelect: k,
201
+ onMonthChange: E,
202
+ onHeaderClick: M,
203
+ disabledDates: v,
204
+ minDate: h,
205
+ maxDate: _
206
+ });
207
+ }
208
+ };
209
+ return /* @__PURE__ */ l(i, {
210
+ open: S,
211
+ onOpenChange: w,
212
+ children: [/* @__PURE__ */ c(n, {
213
+ asChild: !0,
214
+ children: /* @__PURE__ */ l("button", {
215
+ ref: b,
216
+ type: "button",
217
+ "aria-label": o ? `Change date, ${g(o, m)}` : f,
218
+ ...y,
219
+ className: e("inline-flex h-ds-sm-plus items-center gap-ds-03 rounded-surface border border-surface-border-strong bg-surface-overlay px-ds-04 text-left transition-colors duration-fast-01 ease-productive-standard", "hover:border-surface-border-strong", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", p),
220
+ children: [/* @__PURE__ */ c(t, {
221
+ icon: d,
222
+ size: "sm",
223
+ stroke: "light",
224
+ className: "text-surface-fg-subtle"
225
+ }), /* @__PURE__ */ c("span", {
226
+ className: e("text-ds-md", o ? "text-surface-fg" : "text-surface-fg-subtle"),
227
+ children: o ? g(o, m) : f
228
+ })]
229
+ })
230
+ }), /* @__PURE__ */ c(r, {
231
+ className: "w-auto border-surface-border-strong bg-surface-overlay p-ds-04",
232
+ align: "start",
233
+ sideOffset: 4,
234
+ children: F()
235
+ })]
236
+ });
237
+ });
238
+ M.displayName = "DatePicker";
239
+ //#endregion
240
+ //#region src/composed/date-picker/presets.tsx
241
+ var N = {
242
+ today: {
243
+ label: "Today",
244
+ getRange: () => {
245
+ let e = /* @__PURE__ */ new Date();
246
+ return {
247
+ start: w(e),
248
+ end: m(e)
249
+ };
250
+ }
251
+ },
252
+ yesterday: {
253
+ label: "Yesterday",
254
+ getRange: () => {
255
+ let e = D(/* @__PURE__ */ new Date(), 1);
256
+ return {
257
+ start: w(e),
258
+ end: m(e)
259
+ };
260
+ }
261
+ },
262
+ last7days: {
263
+ label: "Last 7 days",
264
+ getRange: () => {
265
+ let e = /* @__PURE__ */ new Date();
266
+ return {
267
+ start: w(D(e, 6)),
268
+ end: m(e)
269
+ };
270
+ }
271
+ },
272
+ last30days: {
273
+ label: "Last 30 days",
274
+ getRange: () => {
275
+ let e = /* @__PURE__ */ new Date();
276
+ return {
277
+ start: w(D(e, 29)),
278
+ end: m(e)
279
+ };
280
+ }
281
+ },
282
+ thisMonth: {
283
+ label: "This month",
284
+ getRange: () => {
285
+ let e = /* @__PURE__ */ new Date();
286
+ return {
287
+ start: T(e),
288
+ end: h(e)
289
+ };
290
+ }
291
+ },
292
+ lastMonth: {
293
+ label: "Last month",
294
+ getRange: () => {
295
+ let e = O(/* @__PURE__ */ new Date(), 1);
296
+ return {
297
+ start: T(e),
298
+ end: h(e)
299
+ };
300
+ }
301
+ },
302
+ thisYear: {
303
+ label: "This year",
304
+ getRange: () => {
305
+ let e = /* @__PURE__ */ new Date();
306
+ return {
307
+ start: E(e),
308
+ end: m(e)
309
+ };
310
+ }
311
+ }
312
+ }, P = s.forwardRef(function({ presets: t, onSelect: n, className: r, ...i }, a) {
313
+ return /* @__PURE__ */ c("div", {
314
+ ref: a,
315
+ ...i,
316
+ className: e("flex flex-col gap-ds-01", r),
317
+ children: t.map((t) => {
318
+ let r = N[t];
319
+ return r ? /* @__PURE__ */ c("button", {
320
+ type: "button",
321
+ onClick: () => {
322
+ let { start: e, end: t } = r.getRange();
323
+ n(e, t);
324
+ },
325
+ className: e("h-ds-sm w-full rounded-control px-ds-03 text-left text-ds-sm", "text-surface-fg transition-colors", "hover:bg-surface-raised-hover", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9"),
326
+ children: r.label
327
+ }, t) : null;
328
+ })
329
+ });
330
+ });
331
+ P.displayName = "Presets";
332
+ //#endregion
333
+ //#region src/composed/date-picker/date-range-picker.tsx
334
+ var F = s.forwardRef(function({ startDate: o, endDate: u, onChange: f, placeholder: m = "Pick a date range", className: h, formatStr: y = "MMM d, yyyy", minDate: b, maxDate: S, disabledDates: w, presets: T, numberOfMonths: E = 1, ...D }, O) {
335
+ let [k, M] = s.useState(!1), [N, F] = s.useState(o ?? /* @__PURE__ */ new Date()), [I, L] = s.useState(o ?? null), [R, z] = s.useState(u ?? null), [B, V] = s.useState(null), [H, U] = s.useState("days"), W = Math.max(1, E);
336
+ s.useEffect(() => {
337
+ L(o ?? null), z(u ?? null);
338
+ }, [o, u]), s.useEffect(() => {
339
+ k || U("days");
340
+ }, [k]);
341
+ let G = (e) => {
342
+ if (!I || I && R) L(e), z(null);
343
+ else {
344
+ let t = v(e, I) ? e : I, n = _(e, I) ? e : I;
345
+ L(t), z(n), f?.({
346
+ start: t,
347
+ end: n
348
+ }), M(!1);
349
+ }
350
+ }, K = (e, t) => {
351
+ L(e), z(t), f?.({
352
+ start: e,
353
+ end: t
354
+ }), M(!1);
355
+ }, q = () => {
356
+ U((e) => e === "days" ? "months" : "years");
357
+ }, J = (e) => {
358
+ F((t) => x(t, e)), U("days");
359
+ }, Y = (e) => {
360
+ F((t) => C(t, e)), U("months");
361
+ }, X = () => I && R ? `${g(I, y)} - ${g(R, y)}` : m, Z = () => W === 1 ? /* @__PURE__ */ c(a, {
362
+ currentMonth: N,
363
+ rangeStart: I,
364
+ rangeEnd: R,
365
+ hoverDate: B,
366
+ onSelect: G,
367
+ onHover: V,
368
+ onMonthChange: F,
369
+ onHeaderClick: q,
370
+ disabledDates: w,
371
+ minDate: b,
372
+ maxDate: S
373
+ }) : /* @__PURE__ */ c("div", {
374
+ className: "flex flex-row gap-ds-04",
375
+ children: Array.from({ length: W }, (e, t) => /* @__PURE__ */ c(a, {
376
+ currentMonth: p(N, t),
377
+ rangeStart: I,
378
+ rangeEnd: R,
379
+ hoverDate: B,
380
+ onSelect: G,
381
+ onHover: V,
382
+ onMonthChange: (e) => {
383
+ F(p(e, -t));
384
+ },
385
+ onHeaderClick: q,
386
+ disabledDates: w,
387
+ minDate: b,
388
+ maxDate: S,
389
+ hidePrevNav: t > 0,
390
+ hideNextNav: t < W - 1
391
+ }, t))
392
+ }), Q = () => {
393
+ switch (H) {
394
+ case "years": return /* @__PURE__ */ c(j, {
395
+ currentYear: N.getFullYear(),
396
+ selectedYear: I?.getFullYear(),
397
+ onYearSelect: Y,
398
+ minDate: b,
399
+ maxDate: S
400
+ });
401
+ case "months": return /* @__PURE__ */ c(A, {
402
+ currentYear: N.getFullYear(),
403
+ selectedMonth: I?.getMonth(),
404
+ onMonthSelect: J,
405
+ minDate: b,
406
+ maxDate: S
407
+ });
408
+ default: return Z();
409
+ }
410
+ }, $ = T && T.length > 0;
411
+ return /* @__PURE__ */ l(i, {
412
+ open: k,
413
+ onOpenChange: M,
414
+ children: [/* @__PURE__ */ c(n, {
415
+ asChild: !0,
416
+ children: /* @__PURE__ */ l("button", {
417
+ ref: O,
418
+ type: "button",
419
+ "aria-label": I && R ? `Change date range, ${X()}` : m,
420
+ ...D,
421
+ className: e("inline-flex h-ds-sm-plus items-center gap-ds-03 rounded-surface border border-surface-border-strong bg-surface-overlay px-ds-04 text-left transition-colors duration-fast-01 ease-productive-standard", "hover:border-surface-border-strong", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", h),
422
+ children: [/* @__PURE__ */ c(t, {
423
+ icon: d,
424
+ size: "sm",
425
+ stroke: "light",
426
+ className: "text-surface-fg-subtle"
427
+ }), /* @__PURE__ */ c("span", {
428
+ className: e("text-ds-md", I && R ? "text-surface-fg" : "text-surface-fg-subtle"),
429
+ children: X()
430
+ })]
431
+ })
432
+ }), /* @__PURE__ */ c(r, {
433
+ className: "w-auto border-surface-border-strong bg-surface-overlay p-ds-04",
434
+ align: "start",
435
+ sideOffset: 4,
436
+ children: $ ? /* @__PURE__ */ l("div", {
437
+ className: "flex flex-row gap-ds-04",
438
+ children: [/* @__PURE__ */ c("div", {
439
+ className: "min-w-[140px] border-r border-surface-border-strong pr-ds-04",
440
+ children: /* @__PURE__ */ c(P, {
441
+ presets: T,
442
+ onSelect: K
443
+ })
444
+ }), /* @__PURE__ */ c("div", { children: Q() })]
445
+ }) : Q()
446
+ })]
447
+ });
448
+ });
449
+ F.displayName = "DateRangePicker";
450
+ //#endregion
451
+ //#region src/composed/date-picker/date-time-picker.tsx
452
+ function I(e) {
453
+ return e.toString().padStart(2, "0");
454
+ }
455
+ function L(e, t, n) {
456
+ let r = [];
457
+ for (let i = e; i <= t; i += n) r.push(i);
458
+ return r;
459
+ }
460
+ var R = s.forwardRef(function({ value: o, onChange: d, minDate: f, maxDate: p, disabledDates: m, timeFormat: h = "12h", minuteStep: _ = 1, placeholder: v = "Pick date & time", className: S, ...w }, T) {
461
+ let [E, D] = s.useState(!1), [O, k] = s.useState(o ?? /* @__PURE__ */ new Date()), [M, N] = s.useState("days");
462
+ s.useEffect(() => {
463
+ E || N("days");
464
+ }, [E]);
465
+ let P = o ? o.getHours() : 0, F = o ? o.getMinutes() : 0, R = P >= 12 ? "PM" : "AM", z = P === 0 ? 12 : P > 12 ? P - 12 : P, B = h === "12h" ? L(1, 12, 1) : L(0, 23, 1), V = L(0, 59, _), H = h === "12h" ? z : P, U = (e) => {
466
+ let t = y(e, o ? o.getHours() : P);
467
+ t = b(t, o ? o.getMinutes() : F), d?.(t);
468
+ }, W = () => {
469
+ N((e) => e === "days" ? "months" : "years");
470
+ }, G = (e) => {
471
+ k((t) => x(t, e)), N("days");
472
+ }, K = (e) => {
473
+ k((t) => C(t, e)), N("months");
474
+ }, q = (e) => {
475
+ let t = o ? new Date(o) : /* @__PURE__ */ new Date(), n = e;
476
+ h === "12h" && (n = (o ? R : "AM") === "AM" ? e === 12 ? 0 : e : e === 12 ? 12 : e + 12);
477
+ let r = y(t, n);
478
+ d?.(r);
479
+ }, J = (e) => {
480
+ let t = b(o ? new Date(o) : /* @__PURE__ */ new Date(), e);
481
+ d?.(t);
482
+ }, Y = (e) => {
483
+ let t = o ? new Date(o) : /* @__PURE__ */ new Date(), n = t.getHours(), r;
484
+ r = e === "AM" ? n >= 12 ? n - 12 : n : n < 12 ? n + 12 : n, d?.(y(t, r));
485
+ }, X = s.useMemo(() => o ? g(o, h === "12h" ? "MMM d, yyyy h:mm a" : "MMM d, yyyy HH:mm") : null, [o, h]), Z = () => {
486
+ switch (M) {
487
+ case "years": return /* @__PURE__ */ c(j, {
488
+ currentYear: O.getFullYear(),
489
+ selectedYear: o?.getFullYear(),
490
+ onYearSelect: K,
491
+ minDate: f,
492
+ maxDate: p
493
+ });
494
+ case "months": return /* @__PURE__ */ c(A, {
495
+ currentYear: O.getFullYear(),
496
+ selectedMonth: o?.getMonth(),
497
+ onMonthSelect: G,
498
+ minDate: f,
499
+ maxDate: p
500
+ });
501
+ default: return /* @__PURE__ */ c(a, {
502
+ currentMonth: O,
503
+ selected: o,
504
+ onSelect: U,
505
+ onMonthChange: k,
506
+ onHeaderClick: W,
507
+ disabledDates: m,
508
+ minDate: f,
509
+ maxDate: p
510
+ });
511
+ }
512
+ }, Q = "h-ds-sm rounded-control border border-surface-border-strong bg-surface-overlay px-ds-02 text-ds-md text-surface-fg transition-colors duration-fast-01 ease-productive-standard hover:border-surface-border-strong focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 cursor-pointer appearance-none";
513
+ return /* @__PURE__ */ l(i, {
514
+ open: E,
515
+ onOpenChange: D,
516
+ children: [/* @__PURE__ */ c(n, {
517
+ asChild: !0,
518
+ children: /* @__PURE__ */ l("button", {
519
+ ref: T,
520
+ type: "button",
521
+ ...w,
522
+ className: e("inline-flex h-ds-sm-plus items-center gap-ds-03 rounded-surface border border-surface-border-strong bg-surface-overlay px-ds-04 text-left transition-colors duration-fast-01 ease-productive-standard", "hover:border-surface-border-strong", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", S),
523
+ "aria-label": X ? `Selected: ${X}` : v,
524
+ children: [/* @__PURE__ */ c(t, {
525
+ icon: u,
526
+ size: "sm",
527
+ stroke: "light",
528
+ className: "text-surface-fg-subtle"
529
+ }), /* @__PURE__ */ c("span", {
530
+ className: e("text-ds-md", X ? "text-surface-fg" : "text-surface-fg-subtle"),
531
+ children: X ?? v
532
+ })]
533
+ })
534
+ }), /* @__PURE__ */ c(r, {
535
+ className: "w-auto border-surface-border-strong bg-surface-overlay p-ds-04",
536
+ align: "start",
537
+ sideOffset: 4,
538
+ children: /* @__PURE__ */ l("div", {
539
+ className: "flex flex-col gap-ds-04",
540
+ children: [Z(), M === "days" && /* @__PURE__ */ l("div", {
541
+ className: "flex items-center gap-ds-02 border-t border-surface-border-strong pt-ds-04",
542
+ children: [
543
+ /* @__PURE__ */ c("span", {
544
+ className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle",
545
+ children: "Time"
546
+ }),
547
+ /* @__PURE__ */ l("select", {
548
+ value: H ?? "",
549
+ onChange: (e) => q(Number(e.target.value)),
550
+ className: Q,
551
+ "aria-label": "Hour",
552
+ children: [!o && /* @__PURE__ */ c("option", {
553
+ value: "",
554
+ children: "--"
555
+ }), B.map((e) => /* @__PURE__ */ c("option", {
556
+ value: e,
557
+ children: h === "24h" ? I(e) : e
558
+ }, e))]
559
+ }),
560
+ /* @__PURE__ */ c("span", {
561
+ className: "text-ds-md font-semibold text-surface-fg-subtle",
562
+ children: ":"
563
+ }),
564
+ /* @__PURE__ */ l("select", {
565
+ value: o ? F : "",
566
+ onChange: (e) => J(Number(e.target.value)),
567
+ className: Q,
568
+ "aria-label": "Minute",
569
+ children: [!o && /* @__PURE__ */ c("option", {
570
+ value: "",
571
+ children: "--"
572
+ }), V.map((e) => /* @__PURE__ */ c("option", {
573
+ value: e,
574
+ children: I(e)
575
+ }, e))]
576
+ }),
577
+ h === "12h" && /* @__PURE__ */ l("select", {
578
+ value: o ? R : "",
579
+ onChange: (e) => Y(e.target.value),
580
+ className: Q,
581
+ "aria-label": "AM or PM",
582
+ children: [
583
+ !o && /* @__PURE__ */ c("option", {
584
+ value: "",
585
+ children: "--"
586
+ }),
587
+ /* @__PURE__ */ c("option", {
588
+ value: "AM",
589
+ children: "AM"
590
+ }),
591
+ /* @__PURE__ */ c("option", {
592
+ value: "PM",
593
+ children: "PM"
594
+ })
595
+ ]
596
+ })
597
+ ]
598
+ })]
599
+ })
600
+ })]
601
+ });
602
+ });
603
+ R.displayName = "DateTimePicker";
604
+ //#endregion
605
+ //#region src/composed/date-picker/time-picker.tsx
606
+ function z(e, t, n) {
607
+ let r = [];
608
+ for (let i = e; i <= t; i += n) r.push(i);
609
+ return r;
610
+ }
611
+ function B(e) {
612
+ return e.toString().padStart(2, "0");
613
+ }
614
+ var V = s.forwardRef(function({ value: a, onChange: o, format: u = "12h", minuteStep: d = 1, secondStep: p = 1, showSeconds: m = !1, placeholder: h = "Pick a time", className: _, disabled: v = !1, ...x }, C) {
615
+ let [w, T] = s.useState(!1), E = a ? a.getHours() : null, D = a ? a.getMinutes() : null, O = a ? a.getSeconds() : null, k = E === null ? null : E >= 12 ? "PM" : "AM", A = E === null ? null : E === 0 ? 12 : E > 12 ? E - 12 : E, j = u === "12h" ? z(1, 12, 1) : z(0, 23, 1), M = z(0, 59, d), N = z(0, 59, p), P = (e) => {
616
+ let t = a ? new Date(a) : /* @__PURE__ */ new Date(), n = e.hours ?? t.getHours(), r = e.minutes ?? t.getMinutes(), i = e.seconds ?? t.getSeconds();
617
+ u === "12h" && e.hours !== void 0 && (n = (e.ampm ?? k ?? "AM") === "AM" ? e.hours === 12 ? 0 : e.hours : e.hours === 12 ? 12 : e.hours + 12);
618
+ let o = y(t, n);
619
+ return o = b(o, r), o = S(o, i), o;
620
+ }, F = (e) => {
621
+ let t = P({ hours: e });
622
+ o?.(t);
623
+ }, I = (e) => {
624
+ let t = P({ minutes: e });
625
+ o?.(t);
626
+ }, L = (e) => {
627
+ let t = P({ seconds: e });
628
+ o?.(t);
629
+ }, R = (e) => {
630
+ if (!a) {
631
+ let t = e === "AM" ? 0 : 12, n = /* @__PURE__ */ new Date();
632
+ n = y(n, t), n = b(n, 0), n = S(n, 0), o?.(n);
633
+ return;
634
+ }
635
+ let t = a.getHours(), n;
636
+ n = e === "AM" ? t >= 12 ? t - 12 : t : t < 12 ? t + 12 : t, o?.(y(new Date(a), n));
637
+ }, V = s.useMemo(() => a ? u === "12h" ? g(a, m ? "h:mm:ss a" : "h:mm a") : g(a, m ? "HH:mm:ss" : "HH:mm") : null, [
638
+ a,
639
+ u,
640
+ m
641
+ ]), H = u === "12h" ? A : E, U = "flex flex-col gap-ds-01 overflow-y-auto max-h-[200px] px-ds-01", W = "flex h-ds-sm w-full items-center justify-center rounded-control text-ds-md transition-colors duration-fast-01 ease-productive-standard cursor-pointer", G = "bg-accent-9 text-accent-fg", K = "text-surface-fg hover:bg-surface-raised-hover";
642
+ return /* @__PURE__ */ l(i, {
643
+ open: w,
644
+ onOpenChange: T,
645
+ children: [/* @__PURE__ */ c(n, {
646
+ asChild: !0,
647
+ children: /* @__PURE__ */ l("button", {
648
+ ref: C,
649
+ type: "button",
650
+ disabled: v,
651
+ ...x,
652
+ className: e("inline-flex h-ds-sm-plus items-center gap-ds-03 rounded-surface border border-surface-border-strong bg-surface-overlay px-ds-04 text-left transition-colors duration-fast-01 ease-productive-standard", "hover:border-surface-border-strong", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", v && "opacity-action-disabled pointer-events-none", _),
653
+ "aria-label": V ? `Selected time: ${V}` : h,
654
+ children: [/* @__PURE__ */ c(t, {
655
+ icon: f,
656
+ size: "sm",
657
+ stroke: "light",
658
+ className: "text-surface-fg-subtle"
659
+ }), /* @__PURE__ */ c("span", {
660
+ className: e("text-ds-md", V ? "text-surface-fg" : "text-surface-fg-subtle"),
661
+ children: V ?? h
662
+ })]
663
+ })
664
+ }), /* @__PURE__ */ c(r, {
665
+ className: "w-auto border-surface-border-strong bg-surface-overlay p-ds-04",
666
+ align: "start",
667
+ sideOffset: 4,
668
+ children: /* @__PURE__ */ l("div", {
669
+ className: "flex gap-ds-03",
670
+ role: "group",
671
+ "aria-label": "Time picker",
672
+ children: [
673
+ /* @__PURE__ */ l("div", {
674
+ className: "flex flex-col items-center gap-ds-02",
675
+ children: [/* @__PURE__ */ c("span", {
676
+ className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle",
677
+ children: "Hr"
678
+ }), /* @__PURE__ */ c("div", {
679
+ className: e(U, "min-w-[48px]"),
680
+ children: j.map((t) => /* @__PURE__ */ c("button", {
681
+ type: "button",
682
+ onClick: () => F(t),
683
+ className: e(W, H === t ? G : K),
684
+ "aria-label": `${t} hours`,
685
+ "aria-selected": H === t || void 0,
686
+ children: u === "24h" ? B(t) : t
687
+ }, t))
688
+ })]
689
+ }),
690
+ /* @__PURE__ */ l("div", {
691
+ className: "flex flex-col items-center gap-ds-02",
692
+ children: [/* @__PURE__ */ c("span", {
693
+ className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle",
694
+ children: "Min"
695
+ }), /* @__PURE__ */ c("div", {
696
+ className: e(U, "min-w-[48px]"),
697
+ children: M.map((t) => /* @__PURE__ */ c("button", {
698
+ type: "button",
699
+ onClick: () => I(t),
700
+ className: e(W, D === t ? G : K),
701
+ "aria-label": `${B(t)} minutes`,
702
+ "aria-selected": D === t || void 0,
703
+ children: B(t)
704
+ }, t))
705
+ })]
706
+ }),
707
+ m && /* @__PURE__ */ l("div", {
708
+ className: "flex flex-col items-center gap-ds-02",
709
+ children: [/* @__PURE__ */ c("span", {
710
+ className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle",
711
+ children: "Sec"
712
+ }), /* @__PURE__ */ c("div", {
713
+ className: e(U, "min-w-[48px]"),
714
+ children: N.map((t) => /* @__PURE__ */ c("button", {
715
+ type: "button",
716
+ onClick: () => L(t),
717
+ className: e(W, O === t ? G : K),
718
+ "aria-label": `${B(t)} seconds`,
719
+ "aria-selected": O === t || void 0,
720
+ children: B(t)
721
+ }, t))
722
+ })]
723
+ }),
724
+ u === "12h" && /* @__PURE__ */ l("div", {
725
+ className: "flex flex-col items-center gap-ds-02",
726
+ children: [/* @__PURE__ */ c("span", {
727
+ className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle",
728
+ children: "\xA0"
729
+ }), /* @__PURE__ */ c("div", {
730
+ className: "flex flex-col gap-ds-01 px-ds-01",
731
+ children: ["AM", "PM"].map((t) => /* @__PURE__ */ c("button", {
732
+ type: "button",
733
+ onClick: () => R(t),
734
+ className: e(W, "min-w-[44px] font-semibold", k === t ? G : K),
735
+ "aria-label": t,
736
+ "aria-selected": k === t || void 0,
737
+ children: t
738
+ }, t))
739
+ })]
740
+ })
741
+ ]
742
+ })
743
+ })]
744
+ });
745
+ });
746
+ V.displayName = "TimePicker";
747
+ //#endregion
748
+ export { a as CalendarGrid, M as DatePicker, F as DateRangePicker, R as DateTimePicker, A as MonthPicker, P as Presets, V as TimePicker, j as YearPicker, o as useCalendar };