@datum-cloud/datum-ui 1.3.2 → 1.5.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 (1055) hide show
  1. package/README.md +54 -46
  2. package/dist/_shadcn/hooks/use-mobile.d.ts +0 -1
  3. package/dist/_shadcn/hooks/use-theme.d.ts +0 -1
  4. package/dist/_shadcn/lib/utils.d.ts +1 -6
  5. package/dist/_shadcn/ui/alert.d.ts +2 -3
  6. package/dist/_shadcn/ui/avatar.d.ts +4 -5
  7. package/dist/_shadcn/ui/badge.d.ts +1 -2
  8. package/dist/_shadcn/ui/breadcrumb.d.ts +9 -10
  9. package/dist/_shadcn/ui/button-group.d.ts +1 -2
  10. package/dist/_shadcn/ui/button.d.ts +1 -2
  11. package/dist/_shadcn/ui/card.d.ts +7 -8
  12. package/dist/_shadcn/ui/chart.d.ts +8 -9
  13. package/dist/_shadcn/ui/checkbox.d.ts +0 -1
  14. package/dist/_shadcn/ui/collapsible.d.ts +1 -2
  15. package/dist/_shadcn/ui/command.d.ts +12 -13
  16. package/dist/_shadcn/ui/dialog.d.ts +10 -11
  17. package/dist/_shadcn/ui/dropdown-menu.d.ts +5 -6
  18. package/dist/_shadcn/ui/hover-card.d.ts +1 -2
  19. package/dist/_shadcn/ui/input-group.d.ts +2 -3
  20. package/dist/_shadcn/ui/input.d.ts +4 -5
  21. package/dist/_shadcn/ui/label.d.ts +1 -2
  22. package/dist/_shadcn/ui/map/controls.d.ts +20 -0
  23. package/dist/_shadcn/ui/map/draw.d.ts +15 -0
  24. package/dist/_shadcn/ui/map/hooks.d.ts +7 -0
  25. package/dist/_shadcn/ui/map/layers.d.ts +45 -0
  26. package/dist/_shadcn/ui/map/lazy.d.ts +20 -0
  27. package/dist/_shadcn/ui/map/primitives.d.ts +36 -0
  28. package/dist/_shadcn/ui/map/shared.d.ts +5 -0
  29. package/dist/_shadcn/ui/map-leaflet-imports.d.ts +0 -1
  30. package/dist/_shadcn/ui/map.d.ts +6 -115
  31. package/dist/_shadcn/ui/place-autocomplete.d.ts +0 -1
  32. package/dist/_shadcn/ui/popover.d.ts +5 -6
  33. package/dist/_shadcn/ui/radio-group.d.ts +0 -1
  34. package/dist/_shadcn/ui/select.d.ts +10 -11
  35. package/dist/_shadcn/ui/separator.d.ts +1 -2
  36. package/dist/_shadcn/ui/sheet.d.ts +11 -12
  37. package/dist/_shadcn/ui/skeleton.d.ts +0 -1
  38. package/dist/_shadcn/ui/sonner.d.ts +1 -2
  39. package/dist/_shadcn/ui/spinner.d.ts +0 -1
  40. package/dist/_shadcn/ui/switch.d.ts +0 -1
  41. package/dist/_shadcn/ui/table.d.ts +9 -10
  42. package/dist/_shadcn/ui/tabs.d.ts +1 -2
  43. package/dist/_shadcn/ui/textarea.d.ts +0 -1
  44. package/dist/_shadcn/ui/tooltip.d.ts +5 -6
  45. package/dist/_shadcn/ui/visuallyhidden.d.ts +0 -1
  46. package/dist/{action-row-BhMyMSep.mjs → action-row-DTvs91_3.mjs} +1 -1
  47. package/dist/alert/index.mjs +1 -1
  48. package/dist/{alert-o1rpjbOJ.mjs → alert-SAPwee1h.mjs} +3 -3
  49. package/dist/app-navigation/index.mjs +3 -4
  50. package/dist/app-navigation--mry98XV.mjs +576 -0
  51. package/dist/assistant/index.mjs +987 -0
  52. package/dist/autocomplete/index.mjs +1 -1
  53. package/dist/{autocomplete-Bg187x6x.mjs → autocomplete-G24AgvxU.mjs} +20 -29
  54. package/dist/autosearch/index.mjs +14 -21
  55. package/dist/avatar/index.mjs +27 -1
  56. package/dist/avatar-stack/index.mjs +1 -1
  57. package/dist/{avatar-stack-dsUoEFWs.mjs → avatar-stack-D1-BA7hA.mjs} +3 -3
  58. package/dist/badge/index.mjs +1 -1
  59. package/dist/{badge-DO2_XsXD.mjs → badge-BTNW_FEU.mjs} +1 -1
  60. package/dist/breadcrumb/index.mjs +1 -1
  61. package/dist/{breadcrumb-2S5MuWmM.mjs → breadcrumb-DmdhC8bE.mjs} +14 -14
  62. package/dist/button/index.mjs +2 -2
  63. package/dist/{button-B_N7A8gv.mjs → button-A1qTjZ8U.mjs} +25 -11
  64. package/dist/{button-BLYlDzP-.mjs → button-H_8dI-Ib.mjs} +3 -9
  65. package/dist/button-group/index.mjs +1 -1
  66. package/dist/{button-group-B5s-1BCV.mjs → button-group-DFrTH4L8.mjs} +1 -1
  67. package/dist/calendar/index.mjs +110 -1
  68. package/dist/{calendar-date-picker-DAVXW7Jg.mjs → calendar-date-picker-C52Y05ZN.mjs} +4 -4
  69. package/dist/card/index.mjs +1 -1
  70. package/dist/{card-C5ykfNwX.mjs → card-Cphn2nA3.mjs} +10 -11
  71. package/dist/chart/index.mjs +1 -1
  72. package/dist/{chart-CyOC7Ha-.mjs → chart-DeCrbcpY.mjs} +3 -3
  73. package/dist/checkbox/index.mjs +1 -1
  74. package/dist/{checkbox-BZr9bkke.mjs → checkbox-C6P12fio.mjs} +2 -3
  75. package/dist/{close.icon-ClpRDt_H.mjs → close.icon-DdXKQ4m0.mjs} +1 -1
  76. package/dist/code-editor/index.mjs +1 -1
  77. package/dist/{col-DlpHgWOq.mjs → col-BYGWTB4j.mjs} +17 -4
  78. package/dist/collapsible/index.mjs +6 -1
  79. package/dist/command/index.mjs +1 -1
  80. package/dist/{command-B1sx-XVY.mjs → command-C0aGIYnQ.mjs} +19 -19
  81. package/dist/components/base/alert/alert.d.ts +2 -2
  82. package/dist/components/base/alert/index.d.ts +0 -1
  83. package/dist/components/base/avatar/index.d.ts +0 -1
  84. package/dist/components/base/badge/badge.d.ts +0 -1
  85. package/dist/components/base/badge/index.d.ts +0 -1
  86. package/dist/components/base/breadcrumb/index.d.ts +0 -1
  87. package/dist/components/base/button/button.d.ts +0 -1
  88. package/dist/components/base/button/icon-only.d.ts +14 -0
  89. package/dist/components/base/button/index.d.ts +0 -1
  90. package/dist/components/base/button/link-button.d.ts +0 -1
  91. package/dist/components/base/button-group/index.d.ts +0 -1
  92. package/dist/components/base/calendar/calendar.d.ts +0 -1
  93. package/dist/components/base/calendar/index.d.ts +0 -1
  94. package/dist/components/base/card/card.d.ts +0 -1
  95. package/dist/components/base/card/index.d.ts +0 -1
  96. package/dist/components/base/chart/index.d.ts +0 -1
  97. package/dist/components/base/checkbox/checkbox.d.ts +0 -1
  98. package/dist/components/base/checkbox/index.d.ts +0 -1
  99. package/dist/components/base/collapsible/index.d.ts +0 -1
  100. package/dist/components/base/command/index.d.ts +0 -1
  101. package/dist/components/base/date-picker/index.d.ts +0 -1
  102. package/dist/components/base/date-picker/types.d.ts +0 -1
  103. package/dist/components/base/date-picker/use-date-constraints.d.ts +0 -1
  104. package/dist/components/base/dialog/dialog.d.ts +0 -1
  105. package/dist/components/base/dialog/index.d.ts +0 -1
  106. package/dist/components/base/hooks/index.d.ts +2 -0
  107. package/dist/components/base/hooks/use-controllable-state.d.ts +10 -0
  108. package/dist/components/base/hover-card/index.d.ts +0 -1
  109. package/dist/components/base/index.d.ts +1 -1
  110. package/dist/components/base/input/index.d.ts +0 -1
  111. package/dist/components/base/input/input.d.ts +0 -1
  112. package/dist/components/base/input-group/index.d.ts +0 -1
  113. package/dist/components/base/label/index.d.ts +0 -1
  114. package/dist/components/base/label/label.d.ts +0 -1
  115. package/dist/components/base/loader-overlay/index.d.ts +1 -0
  116. package/dist/components/base/loader-overlay/loader-overlay.d.ts +4 -0
  117. package/dist/components/base/map/index.d.ts +0 -1
  118. package/dist/components/base/mobile-sheet/context.d.ts +0 -1
  119. package/dist/components/base/mobile-sheet/index.d.ts +1 -1
  120. package/dist/components/base/mobile-sheet/mobile-sheet.d.ts +0 -1
  121. package/dist/components/base/mobile-sheet/responsive-sheet-trigger.d.ts +25 -0
  122. package/dist/components/base/option-picker/index.d.ts +0 -1
  123. package/dist/components/base/option-picker/option-list.d.ts +0 -1
  124. package/dist/components/base/option-picker/types.d.ts +28 -1
  125. package/dist/components/base/option-picker/use-option-picker.d.ts +0 -1
  126. package/dist/components/base/place-autocomplete/index.d.ts +0 -1
  127. package/dist/components/base/popover/index.d.ts +0 -1
  128. package/dist/components/base/radio-group/index.d.ts +0 -1
  129. package/dist/components/base/radio-group/radio-group.d.ts +0 -1
  130. package/dist/components/base/responsive-dropdown/index.d.ts +0 -1
  131. package/dist/components/base/responsive-dropdown/responsive-dropdown.d.ts +0 -1
  132. package/dist/components/base/responsive-popover/index.d.ts +0 -1
  133. package/dist/components/base/responsive-popover/responsive-popover.d.ts +4 -3
  134. package/dist/components/base/select/index.d.ts +0 -1
  135. package/dist/components/base/select/select.d.ts +3 -4
  136. package/dist/components/base/separator/index.d.ts +0 -1
  137. package/dist/components/base/sheet/index.d.ts +0 -1
  138. package/dist/components/base/sheet/sheet.d.ts +0 -1
  139. package/dist/components/base/sidebar/context.d.ts +32 -0
  140. package/dist/components/base/sidebar/group.d.ts +10 -0
  141. package/dist/components/base/sidebar/index.d.ts +0 -1
  142. package/dist/components/base/sidebar/menu.d.ts +33 -0
  143. package/dist/components/base/sidebar/shell.d.ts +18 -0
  144. package/dist/components/base/sidebar/sidebar.d.ts +4 -84
  145. package/dist/components/base/skeleton/index.d.ts +0 -1
  146. package/dist/components/base/skeleton/skeleton.d.ts +0 -1
  147. package/dist/components/base/spinner/index.d.ts +0 -1
  148. package/dist/components/base/switch/index.d.ts +0 -1
  149. package/dist/components/base/switch/switch.d.ts +0 -1
  150. package/dist/components/base/table/index.d.ts +0 -1
  151. package/dist/components/base/tabs/index.d.ts +0 -1
  152. package/dist/components/base/tabs/tabs.d.ts +0 -1
  153. package/dist/components/base/textarea/index.d.ts +0 -1
  154. package/dist/components/base/textarea/textarea.d.ts +0 -1
  155. package/dist/components/base/tooltip/index.d.ts +0 -1
  156. package/dist/components/base/tooltip/tooltip.d.ts +0 -1
  157. package/dist/components/base/typography/index.d.ts +0 -1
  158. package/dist/components/base/typography/typography.d.ts +0 -1
  159. package/dist/components/base/visuallyhidden/index.d.ts +0 -1
  160. package/dist/components/features/_shared/index.d.ts +2 -0
  161. package/dist/components/features/_shared/timezone.d.ts +13 -0
  162. package/dist/components/features/_shared/use-deprecation-warning.d.ts +8 -0
  163. package/dist/components/features/app-navigation/app-navigation.d.ts +1 -2
  164. package/dist/components/features/app-navigation/index.d.ts +0 -1
  165. package/dist/components/features/app-navigation/nav-menu/active-path.d.ts +33 -0
  166. package/dist/components/features/app-navigation/nav-menu/index.d.ts +4 -0
  167. package/dist/components/features/app-navigation/nav-menu/nav-menu-context.d.ts +47 -0
  168. package/dist/components/features/app-navigation/nav-menu/nav-menu-item.d.ts +13 -0
  169. package/dist/components/features/app-navigation/{nav-menu.d.ts → nav-menu/nav-menu.d.ts} +7 -20
  170. package/dist/components/features/app-navigation/nav-menu/parts.d.ts +31 -0
  171. package/dist/components/features/app-navigation/nav-menu/types.d.ts +18 -0
  172. package/dist/components/features/assistant/components/assistant-workspace.d.ts +48 -0
  173. package/dist/components/features/assistant/components/brain-glyph.d.ts +8 -0
  174. package/dist/components/features/assistant/components/composer/equalizer.d.ts +6 -0
  175. package/dist/components/features/assistant/components/composer/index.d.ts +3 -0
  176. package/dist/components/features/assistant/components/composer/model-selector.d.ts +10 -0
  177. package/dist/components/features/assistant/components/composer/prompt-card.d.ts +21 -0
  178. package/dist/components/features/assistant/components/conversation/conversation.d.ts +15 -0
  179. package/dist/components/features/assistant/components/conversation/index.d.ts +3 -0
  180. package/dist/components/features/assistant/components/conversation/scroll-to-bottom-button.d.ts +5 -0
  181. package/dist/components/features/assistant/components/conversation/turn-rail.d.ts +12 -0
  182. package/dist/components/features/assistant/components/empty-state.d.ts +10 -0
  183. package/dist/components/features/assistant/components/message/assistant-message.d.ts +9 -0
  184. package/dist/components/features/assistant/components/message/index.d.ts +4 -0
  185. package/dist/components/features/assistant/components/message/loading-dots.d.ts +4 -0
  186. package/dist/components/features/assistant/components/message/thinking-block.d.ts +4 -0
  187. package/dist/components/features/assistant/components/message/user-message.d.ts +4 -0
  188. package/dist/components/features/assistant/components/sidebar/chat-rail.d.ts +7 -0
  189. package/dist/components/features/assistant/components/sidebar/history-panel.d.ts +9 -0
  190. package/dist/components/features/assistant/components/sidebar/index.d.ts +2 -0
  191. package/dist/components/features/assistant/context/assistant-config.d.ts +19 -0
  192. package/dist/components/features/assistant/context/index.d.ts +1 -0
  193. package/dist/components/features/assistant/hooks/index.d.ts +1 -0
  194. package/dist/components/features/assistant/hooks/use-turn-rail.d.ts +16 -0
  195. package/dist/components/features/assistant/index.d.ts +11 -0
  196. package/dist/components/features/assistant/types.d.ts +59 -0
  197. package/dist/components/features/assistant/utils/format-relative-time.d.ts +2 -0
  198. package/dist/components/features/assistant/utils/index.d.ts +2 -0
  199. package/dist/components/features/assistant/utils/sanitize-html.d.ts +2 -0
  200. package/dist/components/features/autocomplete/autocomplete.d.ts +0 -1
  201. package/dist/components/features/autocomplete/autocomplete.types.d.ts +0 -1
  202. package/dist/components/features/autocomplete/index.d.ts +0 -1
  203. package/dist/components/features/autocomplete/trigger.d.ts +6 -2
  204. package/dist/components/features/autosearch/autosearch.d.ts +0 -1
  205. package/dist/components/features/autosearch/autosearch.types.d.ts +1 -2
  206. package/dist/components/features/autosearch/index.d.ts +0 -1
  207. package/dist/components/features/avatar-stack/avatar-stack.d.ts +0 -1
  208. package/dist/components/features/avatar-stack/index.d.ts +0 -1
  209. package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts +0 -1
  210. package/dist/components/features/calendar-date-picker/index.d.ts +0 -1
  211. package/dist/components/features/calendar-date-picker/types.d.ts +3 -8
  212. package/dist/components/features/code-editor/code-editor-tabs.d.ts +0 -1
  213. package/dist/components/features/code-editor/code-editor.d.ts +0 -1
  214. package/dist/components/features/code-editor/index.d.ts +0 -1
  215. package/dist/components/features/code-editor/lib/editor.d.ts +0 -1
  216. package/dist/components/features/code-editor/types.d.ts +0 -1
  217. package/dist/components/features/data-table/adapters/nuqs-adapter.d.ts +0 -1
  218. package/dist/components/features/data-table/columns/selection-column.d.ts +2 -3
  219. package/dist/components/features/data-table/components/active-filters.d.ts +0 -1
  220. package/dist/components/features/data-table/components/bulk-actions.d.ts +0 -1
  221. package/dist/components/features/data-table/components/column-header.d.ts +0 -1
  222. package/dist/components/features/data-table/components/content.d.ts +0 -1
  223. package/dist/components/features/data-table/components/inline-content.d.ts +0 -1
  224. package/dist/components/features/data-table/components/loading.d.ts +0 -1
  225. package/dist/components/features/data-table/components/pagination.d.ts +0 -1
  226. package/dist/components/features/data-table/components/row-actions.d.ts +0 -1
  227. package/dist/components/features/data-table/components/search.d.ts +0 -1
  228. package/dist/components/features/data-table/constants.d.ts +0 -1
  229. package/dist/components/features/data-table/core/client-provider.d.ts +0 -1
  230. package/dist/components/features/data-table/core/data-table-context.d.ts +0 -1
  231. package/dist/components/features/data-table/core/filter-engine.d.ts +1 -3
  232. package/dist/components/features/data-table/core/server-provider.d.ts +0 -1
  233. package/dist/components/features/data-table/core/store.d.ts +0 -1
  234. package/dist/components/features/data-table/data-table.d.ts +0 -1
  235. package/dist/components/features/data-table/filters/checkbox-filter.d.ts +0 -1
  236. package/dist/components/features/data-table/filters/date-picker-filter.d.ts +0 -1
  237. package/dist/components/features/data-table/filters/select-filter.d.ts +0 -1
  238. package/dist/components/features/data-table/hooks/index.d.ts +0 -1
  239. package/dist/components/features/data-table/hooks/use-data-table-client.d.ts +2 -3
  240. package/dist/components/features/data-table/hooks/use-data-table-server.d.ts +2 -3
  241. package/dist/components/features/data-table/hooks/use-selectors.d.ts +1 -1
  242. package/dist/components/features/data-table/index.d.ts +1 -2
  243. package/dist/components/features/data-table/types.d.ts +36 -19
  244. package/dist/components/features/date-picker/index.d.ts +0 -1
  245. package/dist/components/features/date-time-picker/date-time-picker.d.ts +0 -1
  246. package/dist/components/features/date-time-picker/index.d.ts +0 -1
  247. package/dist/components/features/date-time-picker/types.d.ts +0 -1
  248. package/dist/components/features/date-time-picker/utils/format.d.ts +0 -1
  249. package/dist/components/features/date-time-picker/utils/index.d.ts +0 -1
  250. package/dist/components/features/date-time-picker/utils/timezone.d.ts +1 -5
  251. package/dist/components/features/dropdown/dropdown.d.ts +0 -1
  252. package/dist/components/features/dropdown/index.d.ts +0 -1
  253. package/dist/components/features/dropzone/dropzone.d.ts +0 -1
  254. package/dist/components/features/dropzone/index.d.ts +0 -1
  255. package/dist/components/features/empty-content/empty-content.d.ts +1 -2
  256. package/dist/components/features/empty-content/index.d.ts +0 -1
  257. package/dist/components/features/file-input-button/file-input-button.d.ts +0 -1
  258. package/dist/components/features/file-input-button/index.d.ts +0 -1
  259. package/dist/components/features/form/adapter-context.d.ts +0 -1
  260. package/dist/components/features/form/adapter-types.d.ts +0 -1
  261. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts +13 -1
  262. package/dist/components/features/form/adapters/conform/conform-provider.d.ts +0 -1
  263. package/dist/components/features/form/adapters/conform/index.d.ts +0 -1
  264. package/dist/components/features/form/adapters/rhf/index.d.ts +0 -1
  265. package/dist/components/features/form/adapters/rhf/rhf-adapter.d.ts +0 -1
  266. package/dist/components/features/form/adapters/rhf/rhf-provider.d.ts +0 -1
  267. package/dist/components/features/form/components/form-autocomplete.d.ts +1 -2
  268. package/dist/components/features/form/components/form-autosearch.d.ts +0 -1
  269. package/dist/components/features/form/components/form-button.d.ts +0 -1
  270. package/dist/components/features/form/components/form-checkbox.d.ts +0 -1
  271. package/dist/components/features/form/components/form-combobox.d.ts +1 -2
  272. package/dist/components/features/form/components/form-copy-box.d.ts +0 -1
  273. package/dist/components/features/form/components/form-custom.d.ts +0 -1
  274. package/dist/components/features/form/components/form-date-picker.d.ts +0 -1
  275. package/dist/components/features/form/components/form-date-time-picker.d.ts +0 -1
  276. package/dist/components/features/form/components/form-description.d.ts +0 -1
  277. package/dist/components/features/form/components/form-dialog.d.ts +0 -1
  278. package/dist/components/features/form/components/form-error.d.ts +0 -1
  279. package/dist/components/features/form/components/form-field-array.d.ts +0 -1
  280. package/dist/components/features/form/components/form-field.d.ts +0 -1
  281. package/dist/components/features/form/components/form-input-group.d.ts +0 -1
  282. package/dist/components/features/form/components/form-input.d.ts +0 -1
  283. package/dist/components/features/form/components/form-radio-group.d.ts +0 -1
  284. package/dist/components/features/form/components/form-root.d.ts +0 -1
  285. package/dist/components/features/form/components/form-select.d.ts +0 -1
  286. package/dist/components/features/form/components/form-submit.d.ts +0 -1
  287. package/dist/components/features/form/components/form-switch.d.ts +0 -1
  288. package/dist/components/features/form/components/form-textarea.d.ts +0 -1
  289. package/dist/components/features/form/components/form-time-picker.d.ts +0 -1
  290. package/dist/components/features/form/components/form-transfer.d.ts +0 -1
  291. package/dist/components/features/form/components/form-when.d.ts +0 -1
  292. package/dist/components/features/form/components/index.d.ts +0 -1
  293. package/dist/components/features/form/components/stepper/form-step.d.ts +0 -1
  294. package/dist/components/features/form/components/stepper/form-stepper.d.ts +0 -1
  295. package/dist/components/features/form/components/stepper/index.d.ts +0 -1
  296. package/dist/components/features/form/components/stepper/stepper-controls.d.ts +0 -1
  297. package/dist/components/features/form/components/stepper/stepper-navigation.d.ts +0 -1
  298. package/dist/components/features/form/context/field-context.d.ts +0 -1
  299. package/dist/components/features/form/context/form-context.d.ts +0 -1
  300. package/dist/components/features/form/context/index.d.ts +0 -1
  301. package/dist/components/features/form/hooks/index.d.ts +0 -1
  302. package/dist/components/features/form/hooks/use-display-touched.d.ts +0 -1
  303. package/dist/components/features/form/hooks/use-field-context.d.ts +0 -1
  304. package/dist/components/features/form/hooks/use-field.d.ts +0 -1
  305. package/dist/components/features/form/hooks/use-form-context.d.ts +0 -1
  306. package/dist/components/features/form/hooks/use-form-state.d.ts +0 -1
  307. package/dist/components/features/form/hooks/use-stepper.d.ts +0 -1
  308. package/dist/components/features/form/hooks/use-watch.d.ts +0 -1
  309. package/dist/components/features/form/index.d.ts +0 -1
  310. package/dist/components/features/form/stepper/index.d.ts +0 -1
  311. package/dist/components/features/form/types/context.d.ts +18 -0
  312. package/dist/components/features/form/types/core.d.ts +20 -0
  313. package/dist/components/features/form/types/dialog.d.ts +83 -0
  314. package/dist/components/features/form/types/field.d.ts +113 -0
  315. package/dist/components/features/form/types/index.d.ts +9 -651
  316. package/dist/components/features/form/types/inputs.d.ts +157 -0
  317. package/dist/components/features/form/types/root.d.ts +86 -0
  318. package/dist/components/features/form/types/stepper.d.ts +98 -0
  319. package/dist/components/features/form/types/telemetry.d.ts +44 -0
  320. package/dist/components/features/form/utils/get-field-constraints.d.ts +0 -1
  321. package/dist/components/features/form/utils/get-schema-defaults.d.ts +0 -1
  322. package/dist/components/features/form/utils/zod-helpers.d.ts +0 -1
  323. package/dist/components/features/grid/components/col.d.ts +0 -1
  324. package/dist/components/features/grid/components/index.d.ts +0 -1
  325. package/dist/components/features/grid/components/row.d.ts +0 -1
  326. package/dist/components/features/grid/constants/grid.constants.d.ts +0 -1
  327. package/dist/components/features/grid/index.d.ts +0 -1
  328. package/dist/components/features/grid/types/grid.types.d.ts +0 -1
  329. package/dist/components/features/grid/utils/responsive.d.ts +9 -1
  330. package/dist/components/features/grouped-table/components/grouped-skeleton.d.ts +0 -1
  331. package/dist/components/features/grouped-table/components/grouped-toolbar.d.ts +0 -1
  332. package/dist/components/features/grouped-table/grouped-table.d.ts +0 -1
  333. package/dist/components/features/grouped-table/index.d.ts +0 -1
  334. package/dist/components/features/grouped-table/lib/bucket-rows.d.ts +0 -1
  335. package/dist/components/features/grouped-table/lib/compose-columns.d.ts +3 -4
  336. package/dist/components/features/grouped-table/lib/sort-rows.d.ts +0 -1
  337. package/dist/components/features/grouped-table/lib/use-controllable-state.d.ts +7 -6
  338. package/dist/components/features/grouped-table/types.d.ts +3 -4
  339. package/dist/components/features/grouped-table/use-grouped-expansion.d.ts +0 -1
  340. package/dist/components/features/index.d.ts +6 -1
  341. package/dist/components/features/input-number/index.d.ts +0 -1
  342. package/dist/components/features/input-number/input-number.d.ts +0 -1
  343. package/dist/components/features/input-with-addons/index.d.ts +0 -1
  344. package/dist/components/features/input-with-addons/input-with-addons.d.ts +0 -1
  345. package/dist/components/features/loader-overlay/index.d.ts +0 -1
  346. package/dist/components/features/loader-overlay/loader-overlay.d.ts +6 -5
  347. package/dist/components/features/logo/index.d.ts +0 -1
  348. package/dist/components/features/logo/logo-flat.d.ts +0 -1
  349. package/dist/components/features/logo/logo-icon.d.ts +0 -1
  350. package/dist/components/features/logo/logo-stacked.d.ts +0 -1
  351. package/dist/components/features/logo/logo-text.d.ts +0 -1
  352. package/dist/components/features/logo/logo.d.ts +0 -1
  353. package/dist/components/features/logo/logo.styles.d.ts +0 -1
  354. package/dist/components/features/logo/themed/index.d.ts +0 -1
  355. package/dist/components/features/logo/themed/logo-themed.d.ts +0 -1
  356. package/dist/components/features/more-actions/action-row.d.ts +0 -1
  357. package/dist/components/features/more-actions/index.d.ts +0 -1
  358. package/dist/components/features/more-actions/more-actions.d.ts +14 -3
  359. package/dist/components/features/more-actions/types.d.ts +0 -1
  360. package/dist/components/features/multi-select/index.d.ts +0 -1
  361. package/dist/components/features/multi-select/multi-select-options.d.ts +21 -0
  362. package/dist/components/features/multi-select/multi-select-shared.d.ts +21 -0
  363. package/dist/components/features/multi-select/multi-select.d.ts +6 -19
  364. package/dist/components/features/multi-select/selected-badge-list.d.ts +29 -0
  365. package/dist/components/features/nprogress/index.d.ts +0 -1
  366. package/dist/components/features/page-title/index.d.ts +0 -1
  367. package/dist/components/features/page-title/page-title.d.ts +0 -1
  368. package/dist/components/features/picker/components/calendar.d.ts +0 -1
  369. package/dist/components/features/picker/components/content.d.ts +0 -1
  370. package/dist/components/features/picker/components/context.d.ts +0 -1
  371. package/dist/components/features/picker/components/footer.d.ts +0 -1
  372. package/dist/components/features/picker/components/index.d.ts +0 -1
  373. package/dist/components/features/picker/components/presets.d.ts +0 -1
  374. package/dist/components/features/picker/components/root.d.ts +0 -1
  375. package/dist/components/features/picker/components/time-input-field.d.ts +0 -1
  376. package/dist/components/features/picker/components/time-input.d.ts +0 -1
  377. package/dist/components/features/picker/components/timezone-indicator.d.ts +0 -1
  378. package/dist/components/features/picker/components/timezone-select.d.ts +0 -1
  379. package/dist/components/features/picker/components/trigger.d.ts +0 -1
  380. package/dist/components/features/picker/hooks/index.d.ts +0 -1
  381. package/dist/components/features/picker/hooks/use-keyboard-shortcuts.d.ts +16 -10
  382. package/dist/components/features/picker/hooks/use-picker-state.d.ts +0 -1
  383. package/dist/components/features/picker/hooks/use-presets.d.ts +0 -1
  384. package/dist/components/features/picker/hooks/use-time-slots.d.ts +0 -1
  385. package/dist/components/features/picker/index.d.ts +0 -1
  386. package/dist/components/features/picker/internal/use-deprecation-warning.d.ts +1 -9
  387. package/dist/components/features/picker/presets/defaults.d.ts +0 -1
  388. package/dist/components/features/picker/presets/index.d.ts +0 -1
  389. package/dist/components/features/picker/types.d.ts +0 -1
  390. package/dist/components/features/picker/utils/commit.d.ts +0 -1
  391. package/dist/components/features/picker/utils/compare.d.ts +0 -1
  392. package/dist/components/features/picker/utils/format-value.d.ts +0 -1
  393. package/dist/components/features/picker/utils/format.d.ts +0 -1
  394. package/dist/components/features/picker/utils/index.d.ts +0 -1
  395. package/dist/components/features/picker/utils/range.d.ts +0 -1
  396. package/dist/components/features/picker/utils/timezone.d.ts +7 -3
  397. package/dist/components/features/picker/wrappers/date-picker.d.ts +0 -1
  398. package/dist/components/features/picker/wrappers/date-range-picker.d.ts +0 -1
  399. package/dist/components/features/picker/wrappers/date-range-time-picker.d.ts +0 -1
  400. package/dist/components/features/picker/wrappers/date-time-picker.d.ts +0 -1
  401. package/dist/components/features/picker/wrappers/date-time-range-picker.d.ts +0 -1
  402. package/dist/components/features/picker/wrappers/index.d.ts +0 -1
  403. package/dist/components/features/picker/wrappers/internal/default-footer.d.ts +0 -1
  404. package/dist/components/features/picker/wrappers/time-picker.d.ts +0 -1
  405. package/dist/components/features/picker/wrappers/time-range-picker.d.ts +0 -1
  406. package/dist/components/features/picker/wrappers/types.d.ts +0 -1
  407. package/dist/components/features/rich-text-editor/index.d.ts +0 -1
  408. package/dist/components/features/rich-text-editor/rich-text-content.d.ts +0 -1
  409. package/dist/components/features/rich-text-editor/rich-text-editor.d.ts +0 -1
  410. package/dist/components/features/rich-text-editor/toolbar/bold-toolbar.d.ts +0 -1
  411. package/dist/components/features/rich-text-editor/toolbar/italic-toolbar.d.ts +0 -1
  412. package/dist/components/features/rich-text-editor/toolbar/link-toolbar.d.ts +0 -1
  413. package/dist/components/features/rich-text-editor/toolbar/strike-toolbar.d.ts +0 -1
  414. package/dist/components/features/rich-text-editor/toolbar/toolbar-button.d.ts +0 -1
  415. package/dist/components/features/rich-text-editor/toolbar/toolbar.d.ts +0 -1
  416. package/dist/components/features/rich-text-editor/toolbar/underline-toolbar.d.ts +0 -1
  417. package/dist/components/features/rich-text-editor/types.d.ts +0 -1
  418. package/dist/components/features/stepper/index.d.ts +0 -1
  419. package/dist/components/features/stepper/parts.d.ts +25 -0
  420. package/dist/components/features/stepper/stepper.d.ts +0 -7
  421. package/dist/components/features/stepper/utils.d.ts +8 -0
  422. package/dist/components/features/tag-input/index.d.ts +0 -1
  423. package/dist/components/features/tag-input/parse.d.ts +56 -0
  424. package/dist/components/features/tag-input/tag-input-field.d.ts +16 -0
  425. package/dist/components/features/tag-input/tag-input.d.ts +3 -3
  426. package/dist/components/features/tag-input/use-tags-input.d.ts +38 -0
  427. package/dist/components/features/task-queue/constants.d.ts +0 -1
  428. package/dist/components/features/task-queue/core/index.d.ts +0 -1
  429. package/dist/components/features/task-queue/core/task-panel-actions.d.ts +0 -1
  430. package/dist/components/features/task-queue/core/task-panel-counter.d.ts +0 -1
  431. package/dist/components/features/task-queue/core/task-panel-header.d.ts +0 -1
  432. package/dist/components/features/task-queue/core/task-panel-item.d.ts +0 -1
  433. package/dist/components/features/task-queue/core/task-panel.d.ts +0 -1
  434. package/dist/components/features/task-queue/core/task-queue-dropdown.d.ts +0 -1
  435. package/dist/components/features/task-queue/core/task-queue-trigger.d.ts +0 -1
  436. package/dist/components/features/task-queue/core/task-summary-dialog.d.ts +0 -1
  437. package/dist/components/features/task-queue/engine/executor.d.ts +2 -3
  438. package/dist/components/features/task-queue/engine/index.d.ts +0 -1
  439. package/dist/components/features/task-queue/engine/queue.d.ts +52 -8
  440. package/dist/components/features/task-queue/engine/storage/detect-storage.d.ts +0 -1
  441. package/dist/components/features/task-queue/engine/storage/index.d.ts +0 -1
  442. package/dist/components/features/task-queue/engine/storage/local-storage.d.ts +9 -5
  443. package/dist/components/features/task-queue/engine/storage/memory-storage.d.ts +0 -1
  444. package/dist/components/features/task-queue/engine/storage/redis-storage.d.ts +11 -6
  445. package/dist/components/features/task-queue/engine/storage/serialize.d.ts +12 -0
  446. package/dist/components/features/task-queue/engine/storage/storage.d.ts +0 -1
  447. package/dist/components/features/task-queue/engine/summary-store.d.ts +17 -0
  448. package/dist/components/features/task-queue/hooks/index.d.ts +0 -1
  449. package/dist/components/features/task-queue/hooks/use-task-queue.d.ts +0 -1
  450. package/dist/components/features/task-queue/hooks/use-task-scope.d.ts +0 -1
  451. package/dist/components/features/task-queue/index.d.ts +0 -1
  452. package/dist/components/features/task-queue/provider/index.d.ts +0 -1
  453. package/dist/components/features/task-queue/provider/task-queue-provider.d.ts +0 -1
  454. package/dist/components/features/task-queue/types.d.ts +66 -25
  455. package/dist/components/features/task-queue/utils/index.d.ts +0 -1
  456. package/dist/components/features/time-picker/index.d.ts +0 -1
  457. package/dist/components/features/time-picker/time-picker.d.ts +0 -1
  458. package/dist/components/features/time-picker/types.d.ts +0 -1
  459. package/dist/components/features/time-range-picker/components/absolute-range-panel.d.ts +0 -1
  460. package/dist/components/features/time-range-picker/components/index.d.ts +0 -1
  461. package/dist/components/features/time-range-picker/components/quick-ranges-panel.d.ts +0 -1
  462. package/dist/components/features/time-range-picker/components/timezone-selector.d.ts +0 -1
  463. package/dist/components/features/time-range-picker/index.d.ts +0 -1
  464. package/dist/components/features/time-range-picker/presets.d.ts +0 -1
  465. package/dist/components/features/time-range-picker/time-range-picker.d.ts +0 -1
  466. package/dist/components/features/time-range-picker/types.d.ts +0 -1
  467. package/dist/components/features/time-range-picker/utils/format-display.d.ts +0 -1
  468. package/dist/components/features/time-range-picker/utils/index.d.ts +0 -1
  469. package/dist/components/features/time-range-picker/utils/timezone.d.ts +2 -15
  470. package/dist/components/features/time-range-picker/utils/to-api-format.d.ts +0 -1
  471. package/dist/components/features/toast/headless-toast.d.ts +7 -2
  472. package/dist/components/features/toast/index.d.ts +0 -1
  473. package/dist/components/features/toast/toast.d.ts +0 -1
  474. package/dist/components/features/toast/toaster.d.ts +0 -1
  475. package/dist/components/features/toast/types.d.ts +7 -3
  476. package/dist/components/features/toast/use-toast.d.ts +0 -1
  477. package/dist/components/features/transfer/components/index.d.ts +0 -1
  478. package/dist/components/features/transfer/components/transfer-group.d.ts +0 -1
  479. package/dist/components/features/transfer/components/transfer-item.d.ts +0 -1
  480. package/dist/components/features/transfer/components/transfer-panel.d.ts +0 -1
  481. package/dist/components/features/transfer/components/transfer-search.d.ts +0 -1
  482. package/dist/components/features/transfer/hooks/use-transfer-state.d.ts +0 -1
  483. package/dist/components/features/transfer/index.d.ts +0 -1
  484. package/dist/components/features/transfer/transfer.d.ts +0 -1
  485. package/dist/components/features/transfer/types.d.ts +0 -1
  486. package/dist/components/icons/close.icon.d.ts +0 -1
  487. package/dist/components/icons/icon-wrapper.d.ts +0 -1
  488. package/dist/components/icons/index.d.ts +0 -1
  489. package/dist/components/icons/spinner.icon.d.ts +0 -1
  490. package/dist/components/index.d.ts +0 -1
  491. package/dist/components/themes/client-only.d.ts +0 -1
  492. package/dist/components/themes/index.d.ts +0 -1
  493. package/dist/components/themes/script.d.ts +0 -1
  494. package/dist/components/themes/theme-script.d.ts +0 -1
  495. package/dist/components/themes/theme.provider.d.ts +0 -1
  496. package/dist/components/themes/types.d.ts +0 -1
  497. package/dist/components/toast.d.ts +0 -1
  498. package/dist/data-table/index.mjs +1 -1
  499. package/dist/{data-table-BYhWsINw.mjs → data-table-CfeovSJV.mjs} +35 -42
  500. package/dist/date-picker/index.mjs +3 -2
  501. package/dist/date-time-picker/index.mjs +1 -1
  502. package/dist/{date-time-picker-BWrS9k-c.mjs → date-time-picker-BbtA6JJJ.mjs} +2 -2
  503. package/dist/dialog/index.mjs +1 -1
  504. package/dist/{dialog-Lg6iiEcv.mjs → dialog-CmkrpaYy.mjs} +20 -20
  505. package/dist/{dialog-ZmYSe4-x.mjs → dialog-N2pkQIc4.mjs} +4 -4
  506. package/dist/dropdown/index.mjs +1 -1
  507. package/dist/{dropdown-DIeMiG4G.mjs → dropdown-B0znsOlu.mjs} +1 -1
  508. package/dist/dropdown-menu-b8zY5Cs6.mjs +82 -0
  509. package/dist/dropzone/index.mjs +1 -1
  510. package/dist/{dropzone-ZJhq4Ec9.mjs → dropzone-C_vA4q0u.mjs} +11 -11
  511. package/dist/empty-content/index.mjs +1 -1
  512. package/dist/{empty-content-C4Z0QVfg.mjs → empty-content-BpS0PONb.mjs} +7 -7
  513. package/dist/exports/map.d.ts +0 -1
  514. package/dist/form/adapters/conform/index.mjs +73 -17
  515. package/dist/form/adapters/rhf/index.mjs +24 -9
  516. package/dist/form/index.mjs +1 -1
  517. package/dist/form/stepper/index.mjs +34 -15
  518. package/dist/{form-JM1Rqh6g.mjs → form-2pTdgtYr.mjs} +57 -41
  519. package/dist/grid/index.mjs +1 -1
  520. package/dist/grouped-table/index.mjs +1 -351
  521. package/dist/grouped-table-CPF8Jijv.mjs +342 -0
  522. package/dist/hooks/index.d.ts +1 -1
  523. package/dist/hooks/index.mjs +3 -2
  524. package/dist/hooks/use-breakpoint.d.ts +0 -1
  525. package/dist/hooks/use-copy-to-clipboard.d.ts +0 -1
  526. package/dist/hooks/use-debounce.d.ts +0 -1
  527. package/dist/hooks/use-debounced-search-input.d.ts +16 -0
  528. package/dist/hooks/use-theme.d.ts +0 -1
  529. package/dist/icons/index.mjs +2 -2
  530. package/dist/index.d.ts +0 -1
  531. package/dist/index.mjs +75 -66
  532. package/dist/input/index.mjs +1 -1
  533. package/dist/{input-BJBQxFli.mjs → input-DR-XbgpD.mjs} +2 -2
  534. package/dist/input-group/index.mjs +1 -1
  535. package/dist/{input-group-Cr_BOTbn.mjs → input-group-DieA8aBt.mjs} +3 -3
  536. package/dist/{input-DBzgl-pN.mjs → input-j4tbmYYz.mjs} +2 -2
  537. package/dist/input-number/index.mjs +1 -1
  538. package/dist/{input-number-BSRdHUdT.mjs → input-number-TXmW-X9o.mjs} +38 -23
  539. package/dist/input-with-addons/index.mjs +1 -1
  540. package/dist/label/index.mjs +1 -1
  541. package/dist/{label-CiVSCTp9.mjs → label-Bk6FXsju.mjs} +4 -5
  542. package/dist/{map-_GaPwJUi.mjs → layers-DJYz6fyE.mjs} +334 -357
  543. package/dist/loader-overlay/index.mjs +1 -1
  544. package/dist/{loader-overlay-CumsP4Xh.mjs → loader-overlay-DD94azZX.mjs} +3 -3
  545. package/dist/logo/index.mjs +2 -2
  546. package/dist/logo/themed/index.mjs +2 -2
  547. package/dist/{logo-BhV6hnzH.mjs → logo-C3FxD7jb.mjs} +1 -1
  548. package/dist/{logo-text-DMp3dH-h.mjs → logo-text-Dpm5O6Kg.mjs} +1 -1
  549. package/dist/map/index.mjs +1 -1
  550. package/dist/mobile-sheet/index.mjs +2 -2
  551. package/dist/{mobile-sheet-Cx8B89jB.mjs → mobile-sheet-D9L-JOee.mjs} +40 -5
  552. package/dist/more-actions/index.mjs +2 -2
  553. package/dist/{more-actions-B6sw_I8O.mjs → more-actions-G9hs0rpJ.mjs} +9 -6
  554. package/dist/multi-select/index.mjs +1 -1
  555. package/dist/multi-select-DIWTdi0i.mjs +310 -0
  556. package/dist/page-title/index.mjs +1 -1
  557. package/dist/{page-title-Wj1lF0BP.mjs → page-title-ipRWEOeM.mjs} +1 -1
  558. package/dist/picker/index.mjs +1 -272
  559. package/dist/picker-CRUSdzpo.mjs +1945 -0
  560. package/dist/popover/index.mjs +33 -1
  561. package/dist/radio-group/index.mjs +1 -1
  562. package/dist/{radio-group-kjKWAwdr.mjs → radio-group-LduBVTnh.mjs} +3 -4
  563. package/dist/responsive-dropdown/index.mjs +1 -1
  564. package/dist/responsive-dropdown-fCmduKaz.mjs +35 -0
  565. package/dist/responsive-popover/index.mjs +1 -1
  566. package/dist/responsive-popover-DJZgXWIE.mjs +42 -0
  567. package/dist/rich-text-editor/index.mjs +1 -1
  568. package/dist/{rich-text-editor-B3i5csUE.mjs → rich-text-editor-DRIwcleW.mjs} +89 -48
  569. package/dist/select/index.mjs +1 -1
  570. package/dist/{select-DNnPDWSW.mjs → select-DCU44UO6.mjs} +2 -2
  571. package/dist/{select-B8z0c7UD.mjs → select-daE2Nn0Z.mjs} +20 -20
  572. package/dist/separator/index.mjs +1 -1
  573. package/dist/{separator-BONRV3sq.mjs → separator-vbPD_WFQ.mjs} +2 -2
  574. package/dist/sheet/index.mjs +2 -2
  575. package/dist/{sheet-C6-WAHk2.mjs → sheet-BZViad2U.mjs} +3 -3
  576. package/dist/{sheet-CIdmO-NE.mjs → sheet-DXCZyMHI.mjs} +18 -18
  577. package/dist/sidebar/index.mjs +1 -1
  578. package/dist/{sidebar-DPQbMC3f.mjs → sidebar-Df6Po0K8.mjs} +184 -177
  579. package/dist/skeleton/index.mjs +25 -1
  580. package/dist/{spinner.icon-DSvVwPjx.mjs → spinner.icon-BYUMQ8H-.mjs} +1 -1
  581. package/dist/stepper/index.mjs +1 -1
  582. package/dist/{stepper-DV9FH5Cy.mjs → stepper-DJkYcilu.mjs} +175 -156
  583. package/dist/styles/root.css +4 -0
  584. package/dist/styles/shadcn/shadcn.css +212 -212
  585. package/dist/styles/shadcn/style.css +2 -0
  586. package/dist/switch/index.mjs +1 -1
  587. package/dist/switch-DPHr3TcN.mjs +28 -0
  588. package/dist/table/index.mjs +65 -1
  589. package/dist/tabs/index.mjs +1 -1
  590. package/dist/tag-input/index.mjs +1 -1
  591. package/dist/tag-input-CSav22U5.mjs +433 -0
  592. package/dist/task-queue/index.mjs +1 -1
  593. package/dist/{task-queue-dropdown-B63xh0f-.mjs → task-queue-dropdown-DfdGiyfA.mjs} +451 -147
  594. package/dist/textarea/index.mjs +1 -1
  595. package/dist/{textarea-BzQxX-oL.mjs → textarea-B6YhjFVC.mjs} +1 -1
  596. package/dist/theme/index.mjs +1 -1
  597. package/dist/{themes-CAmRnjUM.mjs → themes-BK5atywZ.mjs} +61 -23
  598. package/dist/time-picker/index.mjs +1 -1
  599. package/dist/{time-picker-B52KLKGe.mjs → time-picker-Bgt6R1fU.mjs} +2 -2
  600. package/dist/{to-api-format-tidT5mxa.mjs → to-api-format-CgKtSuWO.mjs} +68 -94
  601. package/dist/toast/index.mjs +2 -2
  602. package/dist/{toast-qSJgeN-g.mjs → toast-BUPlDkN3.mjs} +47 -10
  603. package/dist/tooltip/index.mjs +1 -1
  604. package/dist/{tooltip-BqrOCH8l.mjs → tooltip-BhatUaar.mjs} +10 -11
  605. package/dist/transfer/index.mjs +1 -1
  606. package/dist/{transfer-Dp6tTYeN.mjs → transfer-CEq9AhL7.mjs} +13 -6
  607. package/dist/{types-B7jxIH5I.mjs → types-DrN0rei5.mjs} +48 -22
  608. package/dist/typography/index.mjs +1 -1
  609. package/dist/{typography-Bcq9Tkwi.mjs → typography-BXIBvq3-.mjs} +1 -1
  610. package/dist/use-controllable-state-Dna7u3r9.mjs +26 -0
  611. package/dist/{use-copy-to-clipboard-BOCe6C1j.mjs → use-copy-to-clipboard-DZDq_85T.mjs} +8 -2
  612. package/dist/use-debounced-search-input-yu_F0QBt.mjs +37 -0
  613. package/dist/{use-deprecation-warning-BjKiPZ98.mjs → use-deprecation-warning-DXrGc0jX.mjs} +1 -1
  614. package/dist/{use-display-touched-B31H1Ziq.mjs → use-display-touched-CMEEv7aT.mjs} +2 -27
  615. package/dist/{use-option-picker-Cqzcr5f2.mjs → use-option-picker-CV-9CyBV.mjs} +46 -24
  616. package/dist/{toast-0C5jhuto.mjs → use-toast-Bpq0yJIT.mjs} +10 -3
  617. package/dist/utils/cn.d.ts +1 -3
  618. package/dist/utils/index.d.ts +0 -1
  619. package/dist/utils/index.mjs +2 -2
  620. package/dist/utils/timezone.d.ts +0 -1
  621. package/dist/zod-helpers-YEhVo2S-.mjs +27 -0
  622. package/package.json +68 -45
  623. package/dist/_shadcn/hooks/use-mobile.d.ts.map +0 -1
  624. package/dist/_shadcn/hooks/use-theme.d.ts.map +0 -1
  625. package/dist/_shadcn/lib/utils.d.ts.map +0 -1
  626. package/dist/_shadcn/ui/alert.d.ts.map +0 -1
  627. package/dist/_shadcn/ui/avatar.d.ts.map +0 -1
  628. package/dist/_shadcn/ui/badge.d.ts.map +0 -1
  629. package/dist/_shadcn/ui/breadcrumb.d.ts.map +0 -1
  630. package/dist/_shadcn/ui/button-group.d.ts.map +0 -1
  631. package/dist/_shadcn/ui/button.d.ts.map +0 -1
  632. package/dist/_shadcn/ui/card.d.ts.map +0 -1
  633. package/dist/_shadcn/ui/chart.d.ts.map +0 -1
  634. package/dist/_shadcn/ui/checkbox.d.ts.map +0 -1
  635. package/dist/_shadcn/ui/collapsible.d.ts.map +0 -1
  636. package/dist/_shadcn/ui/command.d.ts.map +0 -1
  637. package/dist/_shadcn/ui/dialog.d.ts.map +0 -1
  638. package/dist/_shadcn/ui/dropdown-menu.d.ts.map +0 -1
  639. package/dist/_shadcn/ui/hover-card.d.ts.map +0 -1
  640. package/dist/_shadcn/ui/input-group.d.ts.map +0 -1
  641. package/dist/_shadcn/ui/input.d.ts.map +0 -1
  642. package/dist/_shadcn/ui/label.d.ts.map +0 -1
  643. package/dist/_shadcn/ui/map-leaflet-imports.d.ts.map +0 -1
  644. package/dist/_shadcn/ui/map.d.ts.map +0 -1
  645. package/dist/_shadcn/ui/place-autocomplete.d.ts.map +0 -1
  646. package/dist/_shadcn/ui/popover.d.ts.map +0 -1
  647. package/dist/_shadcn/ui/radio-group.d.ts.map +0 -1
  648. package/dist/_shadcn/ui/select.d.ts.map +0 -1
  649. package/dist/_shadcn/ui/separator.d.ts.map +0 -1
  650. package/dist/_shadcn/ui/sheet.d.ts.map +0 -1
  651. package/dist/_shadcn/ui/skeleton.d.ts.map +0 -1
  652. package/dist/_shadcn/ui/sonner.d.ts.map +0 -1
  653. package/dist/_shadcn/ui/spinner.d.ts.map +0 -1
  654. package/dist/_shadcn/ui/switch.d.ts.map +0 -1
  655. package/dist/_shadcn/ui/table.d.ts.map +0 -1
  656. package/dist/_shadcn/ui/tabs.d.ts.map +0 -1
  657. package/dist/_shadcn/ui/textarea.d.ts.map +0 -1
  658. package/dist/_shadcn/ui/tooltip.d.ts.map +0 -1
  659. package/dist/_shadcn/ui/visuallyhidden.d.ts.map +0 -1
  660. package/dist/app-navigation-D2EAiTGO.mjs +0 -482
  661. package/dist/avatar-DbTh2mk4.mjs +0 -28
  662. package/dist/calendar-BQF1XDjq.mjs +0 -77
  663. package/dist/calendar-ByqfbFGx.mjs +0 -111
  664. package/dist/cn-dlASUkDY.mjs +0 -8
  665. package/dist/collapsible-BeCdkxTJ.mjs +0 -7
  666. package/dist/components/base/alert/alert.d.ts.map +0 -1
  667. package/dist/components/base/alert/index.d.ts.map +0 -1
  668. package/dist/components/base/avatar/index.d.ts.map +0 -1
  669. package/dist/components/base/badge/badge.d.ts.map +0 -1
  670. package/dist/components/base/badge/index.d.ts.map +0 -1
  671. package/dist/components/base/breadcrumb/index.d.ts.map +0 -1
  672. package/dist/components/base/button/button.d.ts.map +0 -1
  673. package/dist/components/base/button/index.d.ts.map +0 -1
  674. package/dist/components/base/button/link-button.d.ts.map +0 -1
  675. package/dist/components/base/button-group/index.d.ts.map +0 -1
  676. package/dist/components/base/calendar/calendar.d.ts.map +0 -1
  677. package/dist/components/base/calendar/index.d.ts.map +0 -1
  678. package/dist/components/base/card/card.d.ts.map +0 -1
  679. package/dist/components/base/card/index.d.ts.map +0 -1
  680. package/dist/components/base/chart/index.d.ts.map +0 -1
  681. package/dist/components/base/checkbox/checkbox.d.ts.map +0 -1
  682. package/dist/components/base/checkbox/index.d.ts.map +0 -1
  683. package/dist/components/base/collapsible/index.d.ts.map +0 -1
  684. package/dist/components/base/command/index.d.ts.map +0 -1
  685. package/dist/components/base/date-picker/index.d.ts.map +0 -1
  686. package/dist/components/base/date-picker/types.d.ts.map +0 -1
  687. package/dist/components/base/date-picker/use-date-constraints.d.ts.map +0 -1
  688. package/dist/components/base/dialog/dialog.d.ts.map +0 -1
  689. package/dist/components/base/dialog/index.d.ts.map +0 -1
  690. package/dist/components/base/hover-card/index.d.ts.map +0 -1
  691. package/dist/components/base/index.d.ts.map +0 -1
  692. package/dist/components/base/input/index.d.ts.map +0 -1
  693. package/dist/components/base/input/input.d.ts.map +0 -1
  694. package/dist/components/base/input-group/index.d.ts.map +0 -1
  695. package/dist/components/base/label/index.d.ts.map +0 -1
  696. package/dist/components/base/label/label.d.ts.map +0 -1
  697. package/dist/components/base/map/index.d.ts.map +0 -1
  698. package/dist/components/base/mobile-sheet/context.d.ts.map +0 -1
  699. package/dist/components/base/mobile-sheet/index.d.ts.map +0 -1
  700. package/dist/components/base/mobile-sheet/mobile-sheet.d.ts.map +0 -1
  701. package/dist/components/base/option-picker/index.d.ts.map +0 -1
  702. package/dist/components/base/option-picker/option-list.d.ts.map +0 -1
  703. package/dist/components/base/option-picker/types.d.ts.map +0 -1
  704. package/dist/components/base/option-picker/use-option-picker.d.ts.map +0 -1
  705. package/dist/components/base/place-autocomplete/index.d.ts.map +0 -1
  706. package/dist/components/base/popover/index.d.ts.map +0 -1
  707. package/dist/components/base/radio-group/index.d.ts.map +0 -1
  708. package/dist/components/base/radio-group/radio-group.d.ts.map +0 -1
  709. package/dist/components/base/responsive-dropdown/index.d.ts.map +0 -1
  710. package/dist/components/base/responsive-dropdown/responsive-dropdown.d.ts.map +0 -1
  711. package/dist/components/base/responsive-popover/index.d.ts.map +0 -1
  712. package/dist/components/base/responsive-popover/responsive-popover.d.ts.map +0 -1
  713. package/dist/components/base/select/index.d.ts.map +0 -1
  714. package/dist/components/base/select/select.d.ts.map +0 -1
  715. package/dist/components/base/separator/index.d.ts.map +0 -1
  716. package/dist/components/base/sheet/index.d.ts.map +0 -1
  717. package/dist/components/base/sheet/sheet.d.ts.map +0 -1
  718. package/dist/components/base/sidebar/index.d.ts.map +0 -1
  719. package/dist/components/base/sidebar/sidebar.d.ts.map +0 -1
  720. package/dist/components/base/skeleton/index.d.ts.map +0 -1
  721. package/dist/components/base/skeleton/skeleton.d.ts.map +0 -1
  722. package/dist/components/base/spinner/index.d.ts.map +0 -1
  723. package/dist/components/base/switch/index.d.ts.map +0 -1
  724. package/dist/components/base/switch/switch.d.ts.map +0 -1
  725. package/dist/components/base/table/index.d.ts.map +0 -1
  726. package/dist/components/base/tabs/index.d.ts.map +0 -1
  727. package/dist/components/base/tabs/tabs.d.ts.map +0 -1
  728. package/dist/components/base/textarea/index.d.ts.map +0 -1
  729. package/dist/components/base/textarea/textarea.d.ts.map +0 -1
  730. package/dist/components/base/tooltip/index.d.ts.map +0 -1
  731. package/dist/components/base/tooltip/tooltip.d.ts.map +0 -1
  732. package/dist/components/base/typography/index.d.ts.map +0 -1
  733. package/dist/components/base/typography/typography.d.ts.map +0 -1
  734. package/dist/components/base/visuallyhidden/index.d.ts.map +0 -1
  735. package/dist/components/features/app-navigation/app-navigation.d.ts.map +0 -1
  736. package/dist/components/features/app-navigation/index.d.ts.map +0 -1
  737. package/dist/components/features/app-navigation/nav-menu.d.ts.map +0 -1
  738. package/dist/components/features/autocomplete/autocomplete.d.ts.map +0 -1
  739. package/dist/components/features/autocomplete/autocomplete.types.d.ts.map +0 -1
  740. package/dist/components/features/autocomplete/index.d.ts.map +0 -1
  741. package/dist/components/features/autocomplete/trigger.d.ts.map +0 -1
  742. package/dist/components/features/autosearch/autosearch.d.ts.map +0 -1
  743. package/dist/components/features/autosearch/autosearch.types.d.ts.map +0 -1
  744. package/dist/components/features/autosearch/index.d.ts.map +0 -1
  745. package/dist/components/features/avatar-stack/avatar-stack.d.ts.map +0 -1
  746. package/dist/components/features/avatar-stack/index.d.ts.map +0 -1
  747. package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts.map +0 -1
  748. package/dist/components/features/calendar-date-picker/calendar-header.d.ts +0 -13
  749. package/dist/components/features/calendar-date-picker/calendar-header.d.ts.map +0 -1
  750. package/dist/components/features/calendar-date-picker/calendar-presets.d.ts +0 -9
  751. package/dist/components/features/calendar-date-picker/calendar-presets.d.ts.map +0 -1
  752. package/dist/components/features/calendar-date-picker/date-trigger.d.ts +0 -24
  753. package/dist/components/features/calendar-date-picker/date-trigger.d.ts.map +0 -1
  754. package/dist/components/features/calendar-date-picker/index.d.ts.map +0 -1
  755. package/dist/components/features/calendar-date-picker/types.d.ts.map +0 -1
  756. package/dist/components/features/calendar-date-picker/use-calendar-date-picker.d.ts +0 -48
  757. package/dist/components/features/calendar-date-picker/use-calendar-date-picker.d.ts.map +0 -1
  758. package/dist/components/features/code-editor/code-editor-tabs.d.ts.map +0 -1
  759. package/dist/components/features/code-editor/code-editor.d.ts.map +0 -1
  760. package/dist/components/features/code-editor/index.d.ts.map +0 -1
  761. package/dist/components/features/code-editor/lib/editor.d.ts.map +0 -1
  762. package/dist/components/features/code-editor/types.d.ts.map +0 -1
  763. package/dist/components/features/data-table/adapters/nuqs-adapter.d.ts.map +0 -1
  764. package/dist/components/features/data-table/columns/selection-column.d.ts.map +0 -1
  765. package/dist/components/features/data-table/components/active-filters.d.ts.map +0 -1
  766. package/dist/components/features/data-table/components/bulk-actions.d.ts.map +0 -1
  767. package/dist/components/features/data-table/components/column-header.d.ts.map +0 -1
  768. package/dist/components/features/data-table/components/content.d.ts.map +0 -1
  769. package/dist/components/features/data-table/components/inline-content.d.ts.map +0 -1
  770. package/dist/components/features/data-table/components/loading.d.ts.map +0 -1
  771. package/dist/components/features/data-table/components/pagination.d.ts.map +0 -1
  772. package/dist/components/features/data-table/components/row-actions.d.ts.map +0 -1
  773. package/dist/components/features/data-table/components/search.d.ts.map +0 -1
  774. package/dist/components/features/data-table/constants.d.ts.map +0 -1
  775. package/dist/components/features/data-table/core/client-provider.d.ts.map +0 -1
  776. package/dist/components/features/data-table/core/data-table-context.d.ts.map +0 -1
  777. package/dist/components/features/data-table/core/filter-engine.d.ts.map +0 -1
  778. package/dist/components/features/data-table/core/server-provider.d.ts.map +0 -1
  779. package/dist/components/features/data-table/core/store.d.ts.map +0 -1
  780. package/dist/components/features/data-table/data-table.d.ts.map +0 -1
  781. package/dist/components/features/data-table/filters/checkbox-filter.d.ts.map +0 -1
  782. package/dist/components/features/data-table/filters/date-picker-filter.d.ts.map +0 -1
  783. package/dist/components/features/data-table/filters/select-filter.d.ts.map +0 -1
  784. package/dist/components/features/data-table/hooks/index.d.ts.map +0 -1
  785. package/dist/components/features/data-table/hooks/use-data-table-client.d.ts.map +0 -1
  786. package/dist/components/features/data-table/hooks/use-data-table-server.d.ts.map +0 -1
  787. package/dist/components/features/data-table/hooks/use-selectors.d.ts.map +0 -1
  788. package/dist/components/features/data-table/index.d.ts.map +0 -1
  789. package/dist/components/features/data-table/types.d.ts.map +0 -1
  790. package/dist/components/features/date-picker/index.d.ts.map +0 -1
  791. package/dist/components/features/date-time-picker/date-time-picker.d.ts.map +0 -1
  792. package/dist/components/features/date-time-picker/index.d.ts.map +0 -1
  793. package/dist/components/features/date-time-picker/types.d.ts.map +0 -1
  794. package/dist/components/features/date-time-picker/utils/format.d.ts.map +0 -1
  795. package/dist/components/features/date-time-picker/utils/index.d.ts.map +0 -1
  796. package/dist/components/features/date-time-picker/utils/timezone.d.ts.map +0 -1
  797. package/dist/components/features/dropdown/dropdown.d.ts.map +0 -1
  798. package/dist/components/features/dropdown/index.d.ts.map +0 -1
  799. package/dist/components/features/dropzone/dropzone.d.ts.map +0 -1
  800. package/dist/components/features/dropzone/index.d.ts.map +0 -1
  801. package/dist/components/features/empty-content/empty-content.d.ts.map +0 -1
  802. package/dist/components/features/empty-content/index.d.ts.map +0 -1
  803. package/dist/components/features/file-input-button/file-input-button.d.ts.map +0 -1
  804. package/dist/components/features/file-input-button/index.d.ts.map +0 -1
  805. package/dist/components/features/form/adapter-context.d.ts.map +0 -1
  806. package/dist/components/features/form/adapter-types.d.ts.map +0 -1
  807. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts.map +0 -1
  808. package/dist/components/features/form/adapters/conform/conform-provider.d.ts.map +0 -1
  809. package/dist/components/features/form/adapters/conform/index.d.ts.map +0 -1
  810. package/dist/components/features/form/adapters/rhf/index.d.ts.map +0 -1
  811. package/dist/components/features/form/adapters/rhf/rhf-adapter.d.ts.map +0 -1
  812. package/dist/components/features/form/adapters/rhf/rhf-provider.d.ts.map +0 -1
  813. package/dist/components/features/form/components/form-autocomplete.d.ts.map +0 -1
  814. package/dist/components/features/form/components/form-autosearch.d.ts.map +0 -1
  815. package/dist/components/features/form/components/form-button.d.ts.map +0 -1
  816. package/dist/components/features/form/components/form-checkbox.d.ts.map +0 -1
  817. package/dist/components/features/form/components/form-combobox.d.ts.map +0 -1
  818. package/dist/components/features/form/components/form-copy-box.d.ts.map +0 -1
  819. package/dist/components/features/form/components/form-custom.d.ts.map +0 -1
  820. package/dist/components/features/form/components/form-date-picker.d.ts.map +0 -1
  821. package/dist/components/features/form/components/form-date-time-picker.d.ts.map +0 -1
  822. package/dist/components/features/form/components/form-description.d.ts.map +0 -1
  823. package/dist/components/features/form/components/form-dialog.d.ts.map +0 -1
  824. package/dist/components/features/form/components/form-error.d.ts.map +0 -1
  825. package/dist/components/features/form/components/form-field-array.d.ts.map +0 -1
  826. package/dist/components/features/form/components/form-field.d.ts.map +0 -1
  827. package/dist/components/features/form/components/form-input-group.d.ts.map +0 -1
  828. package/dist/components/features/form/components/form-input.d.ts.map +0 -1
  829. package/dist/components/features/form/components/form-radio-group.d.ts.map +0 -1
  830. package/dist/components/features/form/components/form-root.d.ts.map +0 -1
  831. package/dist/components/features/form/components/form-select.d.ts.map +0 -1
  832. package/dist/components/features/form/components/form-submit.d.ts.map +0 -1
  833. package/dist/components/features/form/components/form-switch.d.ts.map +0 -1
  834. package/dist/components/features/form/components/form-textarea.d.ts.map +0 -1
  835. package/dist/components/features/form/components/form-time-picker.d.ts.map +0 -1
  836. package/dist/components/features/form/components/form-transfer.d.ts.map +0 -1
  837. package/dist/components/features/form/components/form-when.d.ts.map +0 -1
  838. package/dist/components/features/form/components/index.d.ts.map +0 -1
  839. package/dist/components/features/form/components/stepper/form-step.d.ts.map +0 -1
  840. package/dist/components/features/form/components/stepper/form-stepper.d.ts.map +0 -1
  841. package/dist/components/features/form/components/stepper/index.d.ts.map +0 -1
  842. package/dist/components/features/form/components/stepper/stepper-controls.d.ts.map +0 -1
  843. package/dist/components/features/form/components/stepper/stepper-navigation.d.ts.map +0 -1
  844. package/dist/components/features/form/context/field-context.d.ts.map +0 -1
  845. package/dist/components/features/form/context/form-context.d.ts.map +0 -1
  846. package/dist/components/features/form/context/index.d.ts.map +0 -1
  847. package/dist/components/features/form/hooks/index.d.ts.map +0 -1
  848. package/dist/components/features/form/hooks/use-display-touched.d.ts.map +0 -1
  849. package/dist/components/features/form/hooks/use-field-context.d.ts.map +0 -1
  850. package/dist/components/features/form/hooks/use-field.d.ts.map +0 -1
  851. package/dist/components/features/form/hooks/use-form-context.d.ts.map +0 -1
  852. package/dist/components/features/form/hooks/use-form-state.d.ts.map +0 -1
  853. package/dist/components/features/form/hooks/use-stepper.d.ts.map +0 -1
  854. package/dist/components/features/form/hooks/use-watch.d.ts.map +0 -1
  855. package/dist/components/features/form/index.d.ts.map +0 -1
  856. package/dist/components/features/form/stepper/index.d.ts.map +0 -1
  857. package/dist/components/features/form/types/index.d.ts.map +0 -1
  858. package/dist/components/features/form/utils/get-field-constraints.d.ts.map +0 -1
  859. package/dist/components/features/form/utils/get-schema-defaults.d.ts.map +0 -1
  860. package/dist/components/features/form/utils/zod-helpers.d.ts.map +0 -1
  861. package/dist/components/features/grid/components/col.d.ts.map +0 -1
  862. package/dist/components/features/grid/components/index.d.ts.map +0 -1
  863. package/dist/components/features/grid/components/row.d.ts.map +0 -1
  864. package/dist/components/features/grid/constants/grid.constants.d.ts.map +0 -1
  865. package/dist/components/features/grid/index.d.ts.map +0 -1
  866. package/dist/components/features/grid/types/grid.types.d.ts.map +0 -1
  867. package/dist/components/features/grid/utils/responsive.d.ts.map +0 -1
  868. package/dist/components/features/grouped-table/components/grouped-skeleton.d.ts.map +0 -1
  869. package/dist/components/features/grouped-table/components/grouped-toolbar.d.ts.map +0 -1
  870. package/dist/components/features/grouped-table/grouped-table.d.ts.map +0 -1
  871. package/dist/components/features/grouped-table/index.d.ts.map +0 -1
  872. package/dist/components/features/grouped-table/lib/bucket-rows.d.ts.map +0 -1
  873. package/dist/components/features/grouped-table/lib/compose-columns.d.ts.map +0 -1
  874. package/dist/components/features/grouped-table/lib/sort-rows.d.ts.map +0 -1
  875. package/dist/components/features/grouped-table/lib/use-controllable-state.d.ts.map +0 -1
  876. package/dist/components/features/grouped-table/types.d.ts.map +0 -1
  877. package/dist/components/features/grouped-table/use-grouped-expansion.d.ts.map +0 -1
  878. package/dist/components/features/index.d.ts.map +0 -1
  879. package/dist/components/features/input-number/index.d.ts.map +0 -1
  880. package/dist/components/features/input-number/input-number.d.ts.map +0 -1
  881. package/dist/components/features/input-with-addons/index.d.ts.map +0 -1
  882. package/dist/components/features/input-with-addons/input-with-addons.d.ts.map +0 -1
  883. package/dist/components/features/loader-overlay/index.d.ts.map +0 -1
  884. package/dist/components/features/loader-overlay/loader-overlay.d.ts.map +0 -1
  885. package/dist/components/features/logo/index.d.ts.map +0 -1
  886. package/dist/components/features/logo/logo-flat.d.ts.map +0 -1
  887. package/dist/components/features/logo/logo-icon.d.ts.map +0 -1
  888. package/dist/components/features/logo/logo-stacked.d.ts.map +0 -1
  889. package/dist/components/features/logo/logo-text.d.ts.map +0 -1
  890. package/dist/components/features/logo/logo.d.ts.map +0 -1
  891. package/dist/components/features/logo/logo.styles.d.ts.map +0 -1
  892. package/dist/components/features/logo/themed/index.d.ts.map +0 -1
  893. package/dist/components/features/logo/themed/logo-themed.d.ts.map +0 -1
  894. package/dist/components/features/more-actions/action-row.d.ts.map +0 -1
  895. package/dist/components/features/more-actions/index.d.ts.map +0 -1
  896. package/dist/components/features/more-actions/more-actions.d.ts.map +0 -1
  897. package/dist/components/features/more-actions/types.d.ts.map +0 -1
  898. package/dist/components/features/multi-select/index.d.ts.map +0 -1
  899. package/dist/components/features/multi-select/multi-select.d.ts.map +0 -1
  900. package/dist/components/features/nprogress/index.d.ts.map +0 -1
  901. package/dist/components/features/page-title/index.d.ts.map +0 -1
  902. package/dist/components/features/page-title/page-title.d.ts.map +0 -1
  903. package/dist/components/features/picker/components/calendar.d.ts.map +0 -1
  904. package/dist/components/features/picker/components/content.d.ts.map +0 -1
  905. package/dist/components/features/picker/components/context.d.ts.map +0 -1
  906. package/dist/components/features/picker/components/footer.d.ts.map +0 -1
  907. package/dist/components/features/picker/components/index.d.ts.map +0 -1
  908. package/dist/components/features/picker/components/presets.d.ts.map +0 -1
  909. package/dist/components/features/picker/components/root.d.ts.map +0 -1
  910. package/dist/components/features/picker/components/time-input-field.d.ts.map +0 -1
  911. package/dist/components/features/picker/components/time-input.d.ts.map +0 -1
  912. package/dist/components/features/picker/components/timezone-indicator.d.ts.map +0 -1
  913. package/dist/components/features/picker/components/timezone-select.d.ts.map +0 -1
  914. package/dist/components/features/picker/components/trigger.d.ts.map +0 -1
  915. package/dist/components/features/picker/hooks/index.d.ts.map +0 -1
  916. package/dist/components/features/picker/hooks/use-keyboard-shortcuts.d.ts.map +0 -1
  917. package/dist/components/features/picker/hooks/use-picker-state.d.ts.map +0 -1
  918. package/dist/components/features/picker/hooks/use-presets.d.ts.map +0 -1
  919. package/dist/components/features/picker/hooks/use-time-slots.d.ts.map +0 -1
  920. package/dist/components/features/picker/index.d.ts.map +0 -1
  921. package/dist/components/features/picker/internal/use-deprecation-warning.d.ts.map +0 -1
  922. package/dist/components/features/picker/presets/defaults.d.ts.map +0 -1
  923. package/dist/components/features/picker/presets/index.d.ts.map +0 -1
  924. package/dist/components/features/picker/types.d.ts.map +0 -1
  925. package/dist/components/features/picker/utils/commit.d.ts.map +0 -1
  926. package/dist/components/features/picker/utils/compare.d.ts.map +0 -1
  927. package/dist/components/features/picker/utils/format-value.d.ts.map +0 -1
  928. package/dist/components/features/picker/utils/format.d.ts.map +0 -1
  929. package/dist/components/features/picker/utils/index.d.ts.map +0 -1
  930. package/dist/components/features/picker/utils/range.d.ts.map +0 -1
  931. package/dist/components/features/picker/utils/timezone.d.ts.map +0 -1
  932. package/dist/components/features/picker/wrappers/date-picker.d.ts.map +0 -1
  933. package/dist/components/features/picker/wrappers/date-range-picker.d.ts.map +0 -1
  934. package/dist/components/features/picker/wrappers/date-range-time-picker.d.ts.map +0 -1
  935. package/dist/components/features/picker/wrappers/date-time-picker.d.ts.map +0 -1
  936. package/dist/components/features/picker/wrappers/date-time-range-picker.d.ts.map +0 -1
  937. package/dist/components/features/picker/wrappers/index.d.ts.map +0 -1
  938. package/dist/components/features/picker/wrappers/internal/default-footer.d.ts.map +0 -1
  939. package/dist/components/features/picker/wrappers/time-picker.d.ts.map +0 -1
  940. package/dist/components/features/picker/wrappers/time-range-picker.d.ts.map +0 -1
  941. package/dist/components/features/picker/wrappers/types.d.ts.map +0 -1
  942. package/dist/components/features/rich-text-editor/index.d.ts.map +0 -1
  943. package/dist/components/features/rich-text-editor/rich-text-content.d.ts.map +0 -1
  944. package/dist/components/features/rich-text-editor/rich-text-editor.d.ts.map +0 -1
  945. package/dist/components/features/rich-text-editor/toolbar/bold-toolbar.d.ts.map +0 -1
  946. package/dist/components/features/rich-text-editor/toolbar/italic-toolbar.d.ts.map +0 -1
  947. package/dist/components/features/rich-text-editor/toolbar/link-toolbar.d.ts.map +0 -1
  948. package/dist/components/features/rich-text-editor/toolbar/strike-toolbar.d.ts.map +0 -1
  949. package/dist/components/features/rich-text-editor/toolbar/toolbar-button.d.ts.map +0 -1
  950. package/dist/components/features/rich-text-editor/toolbar/toolbar.d.ts.map +0 -1
  951. package/dist/components/features/rich-text-editor/toolbar/underline-toolbar.d.ts.map +0 -1
  952. package/dist/components/features/rich-text-editor/types.d.ts.map +0 -1
  953. package/dist/components/features/stepper/index.d.ts.map +0 -1
  954. package/dist/components/features/stepper/stepper.d.ts.map +0 -1
  955. package/dist/components/features/tag-input/index.d.ts.map +0 -1
  956. package/dist/components/features/tag-input/tag-input.d.ts.map +0 -1
  957. package/dist/components/features/task-queue/constants.d.ts.map +0 -1
  958. package/dist/components/features/task-queue/core/index.d.ts.map +0 -1
  959. package/dist/components/features/task-queue/core/task-panel-actions.d.ts.map +0 -1
  960. package/dist/components/features/task-queue/core/task-panel-counter.d.ts.map +0 -1
  961. package/dist/components/features/task-queue/core/task-panel-header.d.ts.map +0 -1
  962. package/dist/components/features/task-queue/core/task-panel-item.d.ts.map +0 -1
  963. package/dist/components/features/task-queue/core/task-panel.d.ts.map +0 -1
  964. package/dist/components/features/task-queue/core/task-queue-dropdown.d.ts.map +0 -1
  965. package/dist/components/features/task-queue/core/task-queue-trigger.d.ts.map +0 -1
  966. package/dist/components/features/task-queue/core/task-summary-dialog.d.ts.map +0 -1
  967. package/dist/components/features/task-queue/engine/executor.d.ts.map +0 -1
  968. package/dist/components/features/task-queue/engine/index.d.ts.map +0 -1
  969. package/dist/components/features/task-queue/engine/queue.d.ts.map +0 -1
  970. package/dist/components/features/task-queue/engine/storage/detect-storage.d.ts.map +0 -1
  971. package/dist/components/features/task-queue/engine/storage/index.d.ts.map +0 -1
  972. package/dist/components/features/task-queue/engine/storage/local-storage.d.ts.map +0 -1
  973. package/dist/components/features/task-queue/engine/storage/memory-storage.d.ts.map +0 -1
  974. package/dist/components/features/task-queue/engine/storage/redis-storage.d.ts.map +0 -1
  975. package/dist/components/features/task-queue/engine/storage/storage.d.ts.map +0 -1
  976. package/dist/components/features/task-queue/hooks/index.d.ts.map +0 -1
  977. package/dist/components/features/task-queue/hooks/use-task-queue.d.ts.map +0 -1
  978. package/dist/components/features/task-queue/hooks/use-task-scope.d.ts.map +0 -1
  979. package/dist/components/features/task-queue/index.d.ts.map +0 -1
  980. package/dist/components/features/task-queue/provider/index.d.ts.map +0 -1
  981. package/dist/components/features/task-queue/provider/task-queue-provider.d.ts.map +0 -1
  982. package/dist/components/features/task-queue/types.d.ts.map +0 -1
  983. package/dist/components/features/task-queue/utils/index.d.ts.map +0 -1
  984. package/dist/components/features/time-picker/index.d.ts.map +0 -1
  985. package/dist/components/features/time-picker/time-picker.d.ts.map +0 -1
  986. package/dist/components/features/time-picker/types.d.ts.map +0 -1
  987. package/dist/components/features/time-picker/use-time-slots.d.ts +0 -10
  988. package/dist/components/features/time-picker/use-time-slots.d.ts.map +0 -1
  989. package/dist/components/features/time-range-picker/components/absolute-range-panel.d.ts.map +0 -1
  990. package/dist/components/features/time-range-picker/components/index.d.ts.map +0 -1
  991. package/dist/components/features/time-range-picker/components/quick-ranges-panel.d.ts.map +0 -1
  992. package/dist/components/features/time-range-picker/components/timezone-selector.d.ts.map +0 -1
  993. package/dist/components/features/time-range-picker/index.d.ts.map +0 -1
  994. package/dist/components/features/time-range-picker/presets.d.ts.map +0 -1
  995. package/dist/components/features/time-range-picker/time-range-picker.d.ts.map +0 -1
  996. package/dist/components/features/time-range-picker/types.d.ts.map +0 -1
  997. package/dist/components/features/time-range-picker/utils/format-display.d.ts.map +0 -1
  998. package/dist/components/features/time-range-picker/utils/index.d.ts.map +0 -1
  999. package/dist/components/features/time-range-picker/utils/timezone.d.ts.map +0 -1
  1000. package/dist/components/features/time-range-picker/utils/to-api-format.d.ts.map +0 -1
  1001. package/dist/components/features/toast/headless-toast.d.ts.map +0 -1
  1002. package/dist/components/features/toast/index.d.ts.map +0 -1
  1003. package/dist/components/features/toast/toast.d.ts.map +0 -1
  1004. package/dist/components/features/toast/toaster.d.ts.map +0 -1
  1005. package/dist/components/features/toast/types.d.ts.map +0 -1
  1006. package/dist/components/features/toast/use-toast.d.ts.map +0 -1
  1007. package/dist/components/features/transfer/components/index.d.ts.map +0 -1
  1008. package/dist/components/features/transfer/components/transfer-group.d.ts.map +0 -1
  1009. package/dist/components/features/transfer/components/transfer-item.d.ts.map +0 -1
  1010. package/dist/components/features/transfer/components/transfer-panel.d.ts.map +0 -1
  1011. package/dist/components/features/transfer/components/transfer-search.d.ts.map +0 -1
  1012. package/dist/components/features/transfer/hooks/use-transfer-dnd.d.ts +0 -26
  1013. package/dist/components/features/transfer/hooks/use-transfer-dnd.d.ts.map +0 -1
  1014. package/dist/components/features/transfer/hooks/use-transfer-state.d.ts.map +0 -1
  1015. package/dist/components/features/transfer/index.d.ts.map +0 -1
  1016. package/dist/components/features/transfer/transfer.d.ts.map +0 -1
  1017. package/dist/components/features/transfer/types.d.ts.map +0 -1
  1018. package/dist/components/icons/close.icon.d.ts.map +0 -1
  1019. package/dist/components/icons/icon-wrapper.d.ts.map +0 -1
  1020. package/dist/components/icons/index.d.ts.map +0 -1
  1021. package/dist/components/icons/spinner.icon.d.ts.map +0 -1
  1022. package/dist/components/index.d.ts.map +0 -1
  1023. package/dist/components/themes/client-only.d.ts.map +0 -1
  1024. package/dist/components/themes/index.d.ts.map +0 -1
  1025. package/dist/components/themes/script.d.ts.map +0 -1
  1026. package/dist/components/themes/theme-script.d.ts.map +0 -1
  1027. package/dist/components/themes/theme.provider.d.ts.map +0 -1
  1028. package/dist/components/themes/types.d.ts.map +0 -1
  1029. package/dist/components/toast.d.ts.map +0 -1
  1030. package/dist/date-range-picker-CuU5mdxt.mjs +0 -77
  1031. package/dist/date-time-picker-BczLnnE6.mjs +0 -109
  1032. package/dist/date-time-range-picker-DHItep1U.mjs +0 -82
  1033. package/dist/default-footer-DzYzX_OT.mjs +0 -1037
  1034. package/dist/exports/map.d.ts.map +0 -1
  1035. package/dist/hooks/index.d.ts.map +0 -1
  1036. package/dist/hooks/use-breakpoint.d.ts.map +0 -1
  1037. package/dist/hooks/use-copy-to-clipboard.d.ts.map +0 -1
  1038. package/dist/hooks/use-debounce.d.ts.map +0 -1
  1039. package/dist/hooks/use-theme.d.ts.map +0 -1
  1040. package/dist/index.d.ts.map +0 -1
  1041. package/dist/multi-select-C9ocz07C.mjs +0 -235
  1042. package/dist/popover-CBXjbpUR.mjs +0 -34
  1043. package/dist/responsive-dropdown-Hxq7qwAW.mjs +0 -54
  1044. package/dist/responsive-popover-CVFh3i33.mjs +0 -61
  1045. package/dist/skeleton-CGU89HPB.mjs +0 -26
  1046. package/dist/switch-Doft2t6-.mjs +0 -29
  1047. package/dist/table-BR3mwU8X.mjs +0 -66
  1048. package/dist/tag-input-DZJUc1hL.mjs +0 -297
  1049. package/dist/time-input-DI8l2oeN.mjs +0 -196
  1050. package/dist/time-picker-Dm7jOOcX.mjs +0 -45
  1051. package/dist/timezone-indicator-B4GVkwmg.mjs +0 -27
  1052. package/dist/utils/cn.d.ts.map +0 -1
  1053. package/dist/utils/index.d.ts.map +0 -1
  1054. package/dist/utils/timezone.d.ts.map +0 -1
  1055. package/dist/{utils-BAytYO8b.mjs → utils-U06Eu2KT.mjs} +1 -1
@@ -0,0 +1,1945 @@
1
+ import { t as cn } from "./utils-Bu32wN-x.mjs";
2
+ import { t as Button } from "./button-A1qTjZ8U.mjs";
3
+ import { t as Button$1 } from "./button-CsdF61EI.mjs";
4
+ import { Calendar } from "./calendar/index.mjs";
5
+ import { t as useBreakpoint } from "./use-breakpoint-CwiUJSmk.mjs";
6
+ import { t as ResponsivePopover } from "./responsive-popover-DJZgXWIE.mjs";
7
+ import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u as SelectValue } from "./select-daE2Nn0Z.mjs";
8
+ import { n as OptionList, t as useOptionPicker } from "./use-option-picker-CV-9CyBV.mjs";
9
+ import { CalendarIcon, Clock, Globe, X } from "lucide-react";
10
+ import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from "react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { formatInTimeZone, fromZonedTime, toZonedTime } from "date-fns-tz";
13
+ import { addDays, differenceInCalendarDays, endOfDay, endOfMonth, endOfWeek, endOfYear, format, startOfDay, startOfMonth, startOfWeek, startOfYear, subDays, subHours, subMinutes } from "date-fns";
14
+ //#region src/components/features/_shared/timezone.ts
15
+ /**
16
+ * Start of the calendar day (00:00:00.000) for `date`, interpreted in
17
+ * `timezone`, returned as a real UTC instant.
18
+ *
19
+ * Shared canonical implementation — preset engines (picker + legacy
20
+ * time-range-picker) build tz-aware day boundaries on top of this.
21
+ */
22
+ function startOfDayInTz(date, timezone) {
23
+ const zoned = toZonedTime(date, timezone);
24
+ zoned.setHours(0, 0, 0, 0);
25
+ return fromZonedTime(zoned, timezone);
26
+ }
27
+ /**
28
+ * End of the calendar day (23:59:59.999) for `date`, interpreted in
29
+ * `timezone`, returned as a real UTC instant.
30
+ */
31
+ function endOfDayInTz(date, timezone) {
32
+ const zoned = toZonedTime(date, timezone);
33
+ zoned.setHours(23, 59, 59, 999);
34
+ return fromZonedTime(zoned, timezone);
35
+ }
36
+ //#endregion
37
+ //#region src/components/base/date-picker/use-date-constraints.ts
38
+ function useDateConstraints({ minDate, maxDate, disablePast, disableFuture }) {
39
+ const today = useMemo(() => /* @__PURE__ */ new Date(), []);
40
+ const effectiveMinDate = useMemo(() => {
41
+ let min = minDate;
42
+ if (disablePast) {
43
+ const todayStart = startOfDay(today);
44
+ min = min ? min > todayStart ? min : todayStart : todayStart;
45
+ }
46
+ return min;
47
+ }, [
48
+ minDate,
49
+ disablePast,
50
+ today
51
+ ]);
52
+ const effectiveMaxDate = useMemo(() => {
53
+ let max = maxDate;
54
+ if (disableFuture) {
55
+ const todayEnd = endOfDay(today);
56
+ max = max ? max < todayEnd ? max : todayEnd : todayEnd;
57
+ }
58
+ return max;
59
+ }, [
60
+ maxDate,
61
+ disableFuture,
62
+ today
63
+ ]);
64
+ return {
65
+ effectiveMinDate,
66
+ effectiveMaxDate,
67
+ isDateDisabled: useCallback((date) => {
68
+ if (effectiveMinDate && date < effectiveMinDate) return true;
69
+ if (effectiveMaxDate && date > effectiveMaxDate) return true;
70
+ return false;
71
+ }, [effectiveMinDate, effectiveMaxDate])
72
+ };
73
+ }
74
+ //#endregion
75
+ //#region src/components/features/picker/types.ts
76
+ const RANGE_MODES = [
77
+ "date-range",
78
+ "time-range",
79
+ "datetime-range",
80
+ "date-range-time"
81
+ ];
82
+ const TIME_BEARING_MODES = [
83
+ "time",
84
+ "time-range",
85
+ "datetime",
86
+ "datetime-range",
87
+ "date-range-time"
88
+ ];
89
+ const DATE_BEARING_MODES = [
90
+ "date",
91
+ "date-range",
92
+ "datetime",
93
+ "datetime-range",
94
+ "date-range-time"
95
+ ];
96
+ function isRangeMode(mode) {
97
+ return RANGE_MODES.includes(mode);
98
+ }
99
+ function isTimeBearingMode(mode) {
100
+ return TIME_BEARING_MODES.includes(mode);
101
+ }
102
+ function isDateBearingMode(mode) {
103
+ return DATE_BEARING_MODES.includes(mode);
104
+ }
105
+ const ALLOWED_STEPS = [
106
+ 1,
107
+ 5,
108
+ 10,
109
+ 15,
110
+ 30,
111
+ 60
112
+ ];
113
+ //#endregion
114
+ //#region src/components/features/picker/utils/timezone.ts
115
+ /** Browser-detected IANA timezone, falling back to UTC if unavailable. */
116
+ function getBrowserTimezone() {
117
+ try {
118
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
119
+ } catch {
120
+ return "UTC";
121
+ }
122
+ }
123
+ /**
124
+ * UTC offset for a timezone in `±HH:MM` format.
125
+ * Returns `+00:00` for UTC or any timezone the runtime cannot resolve.
126
+ */
127
+ function getTimezoneOffset(timezone) {
128
+ try {
129
+ const offsetPart = new Intl.DateTimeFormat("en-US", {
130
+ timeZone: timezone,
131
+ timeZoneName: "shortOffset"
132
+ }).formatToParts(/* @__PURE__ */ new Date()).find((p) => p.type === "timeZoneName");
133
+ if (!offsetPart) return "+00:00";
134
+ const match = /GMT([+-])(\d+)(?::(\d+))?/.exec(offsetPart.value);
135
+ if (match) return `${match[1]}${match[2].padStart(2, "0")}:${match[3]?.padStart(2, "0") ?? "00"}`;
136
+ if (offsetPart.value === "GMT") return "+00:00";
137
+ return "+00:00";
138
+ } catch {
139
+ return "+00:00";
140
+ }
141
+ }
142
+ /**
143
+ * Human-readable timezone label.
144
+ * Example: `'Asia/Jakarta'` → `'Asia/Jakarta (UTC+07:00)'`.
145
+ */
146
+ function formatTimezoneLabel(timezone) {
147
+ const offset = getTimezoneOffset(timezone);
148
+ return `${timezone.replace(/_/g, " ")} (UTC${offset})`;
149
+ }
150
+ /**
151
+ * Convert a UTC ISO string to a Date object whose wall-clock components
152
+ * (year/month/day/hours/minutes) reflect the value as seen in `timezone`.
153
+ *
154
+ * Use this to feed Calendar / time slot UI that reads `getHours()` etc.
155
+ *
156
+ * Round-trips exactly outside DST transition windows:
157
+ * `zonedDateToIso(isoToZonedDate(iso, tz), tz) === iso`. Inside a DST
158
+ * fall-back the wall-clock hour is ambiguous (it occurs twice), so the
159
+ * round-trip may shift the resulting instant by the DST offset. Callers that
160
+ * must survive the ambiguous hour should key off the original ISO, not the
161
+ * re-encoded one.
162
+ */
163
+ function isoToZonedDate(iso, timezone) {
164
+ return toZonedTime(new Date(iso), timezone);
165
+ }
166
+ /**
167
+ * Date-input variant of `isoToZonedDate`. Skips the ISO round-trip when the
168
+ * caller already has a Date instance (e.g. preset `getRange(tz)` results).
169
+ */
170
+ function dateToZoned(date, timezone) {
171
+ return toZonedTime(date, timezone);
172
+ }
173
+ /**
174
+ * Inverse of `isoToZonedDate`. Treat the Date's wall-clock components
175
+ * as `timezone`-local and convert back to a UTC ISO instant.
176
+ */
177
+ function zonedDateToIso(date, timezone) {
178
+ return fromZonedTime(date, timezone).toISOString();
179
+ }
180
+ /**
181
+ * Format a UTC ISO string in the given timezone using a date-fns format pattern.
182
+ * Returns empty string if the input is not a valid date.
183
+ */
184
+ function formatInTimezone(iso, timezone, pattern) {
185
+ try {
186
+ const d = new Date(iso);
187
+ if (Number.isNaN(d.getTime())) return "";
188
+ return formatInTimeZone(d, timezone, pattern);
189
+ } catch {
190
+ return "";
191
+ }
192
+ }
193
+ //#endregion
194
+ //#region src/components/features/picker/components/context.ts
195
+ const PickerContext = createContext(null);
196
+ /** Throws when used outside `<Picker.Root>` — enforces compound-component discipline. */
197
+ function usePickerContext() {
198
+ const ctx = useContext(PickerContext);
199
+ if (!ctx) throw new Error("Picker primitives must be rendered inside <Picker.Root>");
200
+ return ctx;
201
+ }
202
+ //#endregion
203
+ //#region src/components/features/picker/components/calendar.tsx
204
+ /**
205
+ * Override the base Calendar's default `w-fit` root so the calendar fills the
206
+ * mobile sheet width (cells flex via the underlying day-picker) and reverts to
207
+ * intrinsic width on `md` and above.
208
+ */
209
+ const CALENDAR_RESPONSIVE_CLASSNAMES = { root: "w-full md:w-fit" };
210
+ /**
211
+ * react-day-picker hands back the clicked day cell at midnight, discarding any
212
+ * time-of-day the user already chose via the time input. Re-apply the previous
213
+ * wall-clock time (read from the pending ISO in the display timezone) onto the
214
+ * newly clicked day so selecting a different date keeps the time (BUG-033).
215
+ */
216
+ function mergeTimeFromIso(day, prevIso, timezone) {
217
+ const merged = new Date(day);
218
+ if (typeof prevIso === "string") {
219
+ const prev = isoToZonedDate(prevIso, timezone);
220
+ if (!Number.isNaN(prev.getTime())) merged.setHours(prev.getHours(), prev.getMinutes(), prev.getSeconds(), prev.getMilliseconds());
221
+ }
222
+ return merged;
223
+ }
224
+ function PickerCalendar({ numberOfMonths = 1, className, minDate, maxDate, disablePast, disableFuture }) {
225
+ const { mode, timezone, state, actions } = usePickerContext();
226
+ const { effectiveMinDate, effectiveMaxDate, isDateDisabled } = useDateConstraints({
227
+ minDate,
228
+ maxDate,
229
+ disablePast,
230
+ disableFuture
231
+ });
232
+ if (!isDateBearingMode(mode)) return null;
233
+ const month = state.monthFrom ?? (() => {
234
+ if (mode === "date" && state.pendingValue instanceof Date) return state.pendingValue;
235
+ if (mode === "datetime" && typeof state.pendingValue === "string") return isoToZonedDate(state.pendingValue, timezone);
236
+ })();
237
+ if (mode === "date-range" || mode === "date-range-time" || mode === "datetime-range") {
238
+ const v = state.pendingValue;
239
+ return /* @__PURE__ */ jsx(Calendar, {
240
+ mode: "range",
241
+ selected: v ? mode === "date-range" ? {
242
+ from: v.from,
243
+ to: v.to
244
+ } : {
245
+ from: isoToZonedDate(v.from, timezone),
246
+ to: isoToZonedDate(v.to, timezone)
247
+ } : void 0,
248
+ onSelect: (range) => {
249
+ if (!range?.from || !range?.to) return;
250
+ if (mode === "date-range") actions.setRange({
251
+ from: range.from,
252
+ to: range.to
253
+ });
254
+ else {
255
+ const prev = v;
256
+ actions.setDatetimeRange({
257
+ from: zonedDateToIso(mergeTimeFromIso(range.from, prev?.from, timezone), timezone),
258
+ to: zonedDateToIso(mergeTimeFromIso(range.to, prev?.to, timezone), timezone)
259
+ });
260
+ }
261
+ },
262
+ defaultMonth: month,
263
+ month,
264
+ onMonthChange: actions.setMonthFrom,
265
+ numberOfMonths,
266
+ disabled: isDateDisabled,
267
+ startMonth: effectiveMinDate,
268
+ endMonth: effectiveMaxDate,
269
+ className,
270
+ classNames: CALENDAR_RESPONSIVE_CLASSNAMES
271
+ });
272
+ }
273
+ return /* @__PURE__ */ jsx(Calendar, {
274
+ mode: "single",
275
+ selected: state.pendingValue instanceof Date ? state.pendingValue : mode === "datetime" && typeof state.pendingValue === "string" ? isoToZonedDate(state.pendingValue, timezone) : void 0,
276
+ onSelect: (d) => {
277
+ if (!d) return;
278
+ if (mode === "date") actions.setSingleDate(d);
279
+ else if (mode === "datetime") {
280
+ const merged = mergeTimeFromIso(d, state.pendingValue, timezone);
281
+ actions.setSingleDatetime(zonedDateToIso(merged, timezone));
282
+ }
283
+ },
284
+ defaultMonth: month,
285
+ month,
286
+ onMonthChange: actions.setMonthFrom,
287
+ disabled: isDateDisabled,
288
+ startMonth: effectiveMinDate,
289
+ endMonth: effectiveMaxDate,
290
+ className,
291
+ classNames: CALENDAR_RESPONSIVE_CLASSNAMES
292
+ });
293
+ }
294
+ PickerCalendar.displayName = "Picker.Calendar";
295
+ //#endregion
296
+ //#region src/components/features/picker/components/content.tsx
297
+ function PickerContent({ trigger, sheetTitle, sheetDescription, footer, align = "start", side = "bottom", modal, contentClassName, children }) {
298
+ const { state, actions, effectiveCommit, responsive, breakpoint } = usePickerContext();
299
+ const isMobileSheet = responsive && breakpoint === "mobile";
300
+ const desktopFooter = !isMobileSheet && effectiveCommit === "apply" ? footer : null;
301
+ const sheetFooter = isMobileSheet ? footer : void 0;
302
+ return /* @__PURE__ */ jsx(ResponsivePopover, {
303
+ open: state.open,
304
+ onOpenChange: (open) => open ? actions.open() : actions.close(),
305
+ trigger,
306
+ sheetTitle,
307
+ sheetDescription,
308
+ sheetFooter,
309
+ align,
310
+ side,
311
+ modal,
312
+ responsive,
313
+ contentClassName: cn("w-auto", contentClassName),
314
+ children: /* @__PURE__ */ jsxs("div", {
315
+ className: "flex flex-col",
316
+ children: [/* @__PURE__ */ jsx("div", {
317
+ className: "flex flex-col",
318
+ children
319
+ }), desktopFooter && /* @__PURE__ */ jsx("div", {
320
+ className: "border-t p-3",
321
+ children: desktopFooter
322
+ })]
323
+ })
324
+ });
325
+ }
326
+ PickerContent.displayName = "Picker.Content";
327
+ //#endregion
328
+ //#region src/components/features/picker/components/footer.tsx
329
+ function PickerFooter({ children, className }) {
330
+ return /* @__PURE__ */ jsx("div", {
331
+ className: cn("flex items-center justify-end gap-2", className),
332
+ children
333
+ });
334
+ }
335
+ PickerFooter.displayName = "Picker.Footer";
336
+ function PickerApply({ children = "Apply" }) {
337
+ const { state, actions } = usePickerContext();
338
+ return /* @__PURE__ */ jsx(Button, {
339
+ type: "primary",
340
+ theme: "solid",
341
+ size: "xs",
342
+ disabled: state.pendingValue === null || state.pendingValue === void 0,
343
+ onClick: actions.apply,
344
+ children
345
+ });
346
+ }
347
+ PickerApply.displayName = "Picker.Apply";
348
+ function PickerReset({ children = "Reset" }) {
349
+ const { actions } = usePickerContext();
350
+ return /* @__PURE__ */ jsx(Button, {
351
+ type: "quaternary",
352
+ theme: "outline",
353
+ size: "xs",
354
+ onClick: actions.reset,
355
+ children
356
+ });
357
+ }
358
+ PickerReset.displayName = "Picker.Reset";
359
+ function PickerCancel({ children = "Cancel" }) {
360
+ const { actions } = usePickerContext();
361
+ return /* @__PURE__ */ jsx(Button, {
362
+ type: "quaternary",
363
+ theme: "borderless",
364
+ size: "xs",
365
+ onClick: actions.cancel,
366
+ children
367
+ });
368
+ }
369
+ PickerCancel.displayName = "Picker.Cancel";
370
+ function PickerClear({ children = "Clear" }) {
371
+ const { actions } = usePickerContext();
372
+ return /* @__PURE__ */ jsx(Button, {
373
+ type: "primary",
374
+ theme: "borderless",
375
+ size: "xs",
376
+ onClick: actions.clear,
377
+ children
378
+ });
379
+ }
380
+ PickerClear.displayName = "Picker.Clear";
381
+ //#endregion
382
+ //#region src/components/features/picker/components/presets.tsx
383
+ function PickerPresets({ className }) {
384
+ const { presets, state, actions, timezone } = usePickerContext();
385
+ if (presets.length === 0) return null;
386
+ return /* @__PURE__ */ jsx("div", {
387
+ className: cn("border-border hidden flex-col gap-1 border-r p-2 md:flex", className),
388
+ children: presets.map((preset) => {
389
+ return /* @__PURE__ */ jsxs(Button$1, {
390
+ type: "button",
391
+ variant: state.selectedPresetKey === preset.key ? "default" : "ghost",
392
+ size: "sm",
393
+ className: "justify-start font-normal",
394
+ onClick: () => {
395
+ const range = preset.getRange(timezone);
396
+ actions.selectPreset(range, preset.key);
397
+ },
398
+ children: [/* @__PURE__ */ jsx("span", { children: preset.label }), preset.shortcut && /* @__PURE__ */ jsx("kbd", {
399
+ className: "bg-muted ml-auto hidden rounded border px-1.5 font-mono text-[10px] sm:inline-flex",
400
+ children: preset.shortcut
401
+ })]
402
+ }, preset.key);
403
+ })
404
+ });
405
+ }
406
+ PickerPresets.displayName = "Picker.Presets";
407
+ //#endregion
408
+ //#region src/components/features/picker/hooks/use-keyboard-shortcuts.ts
409
+ /** True when the event target is a text-editable control we must not hijack. */
410
+ function isEditableTarget(target) {
411
+ if (!(target instanceof HTMLElement)) return false;
412
+ const tag = target.tagName;
413
+ return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT" || target.isContentEditable;
414
+ }
415
+ /**
416
+ * Bind preset keyboard shortcuts while the picker is open.
417
+ *
418
+ * The listener is attached to `document` rather than the picker root, because
419
+ * the popover content is portaled to `document.body` and is therefore outside
420
+ * the root's DOM subtree — a root-scoped listener never sees those keydowns
421
+ * once focus moves into the popover (BUG-078).
422
+ *
423
+ * To keep the legacy footgun fixed (presets firing while the user types in an
424
+ * input), keydowns originating from editable controls are ignored. Modifier
425
+ * keys (Ctrl, Meta, Alt) are also ignored to avoid colliding with browser/OS
426
+ * shortcuts.
427
+ */
428
+ function useKeyboardShortcuts({ presets, onSelect, enabled }) {
429
+ useEffect(() => {
430
+ if (!enabled) return;
431
+ function handler(e) {
432
+ if (e.ctrlKey || e.metaKey || e.altKey) return;
433
+ if (isEditableTarget(e.target)) return;
434
+ const matched = presets.find((p) => p.shortcut && p.shortcut.toLowerCase() === e.key.toLowerCase());
435
+ if (matched) {
436
+ e.preventDefault();
437
+ onSelect(matched);
438
+ }
439
+ }
440
+ document.addEventListener("keydown", handler);
441
+ return () => document.removeEventListener("keydown", handler);
442
+ }, [
443
+ presets,
444
+ onSelect,
445
+ enabled
446
+ ]);
447
+ }
448
+ //#endregion
449
+ //#region src/components/features/picker/utils/commit.ts
450
+ /**
451
+ * Resolves the effective commit semantics for a picker.
452
+ *
453
+ * - Date + time combined modes (`datetime` / `datetime-range` /
454
+ * `date-range-time`) **always** commit on Apply, regardless of the
455
+ * caller-supplied override. Picking a date alone shouldn't publish a
456
+ * value with an unconfirmed 00:00 time — the user needs to set the
457
+ * time too, then explicitly Apply. The wrappers don't expose a
458
+ * `commit` prop for these modes; primitive consumers can still pass
459
+ * one through `Picker.Root` but it's silently overridden here.
460
+ * - Range modes (`date-range`, `time-range`) default to `'apply'`.
461
+ * - Everything else defaults to `'immediate'`.
462
+ */
463
+ function resolveCommit(mode, commit) {
464
+ if (isDateBearingMode(mode) && isTimeBearingMode(mode)) return "apply";
465
+ return commit ?? (isRangeMode(mode) ? "apply" : "immediate");
466
+ }
467
+ //#endregion
468
+ //#region src/components/features/picker/utils/format.ts
469
+ /**
470
+ * Format a Date as YYYY-MM-DD using local-time components.
471
+ *
472
+ * Note: this is the consumer-friendly format for date-only modes.
473
+ * It does NOT round-trip through timezones; that's intentional —
474
+ * a calendar day has no timezone.
475
+ */
476
+ function dateToYYYYMMDD(d) {
477
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
478
+ }
479
+ /**
480
+ * Extract `"HH:mm"` from a Date using its wall-clock components.
481
+ *
482
+ * Caller is responsible for ensuring those components reflect the
483
+ * intended timezone (typically via `dateToZoned` / `isoToZonedDate`
484
+ * upstream). Pads single-digit hour/minute to two characters.
485
+ */
486
+ function dateToHHmm(d) {
487
+ return `${String(d.getHours()).padStart(2, "0")}:${String(d.getMinutes()).padStart(2, "0")}`;
488
+ }
489
+ const TIME_REGEX = /^(\d{2}):(\d{2})$/;
490
+ /**
491
+ * Strict HH:mm validation. Rejects single-digit components,
492
+ * out-of-range hours/minutes, and any non-numeric content.
493
+ */
494
+ function isValidTimeString(s) {
495
+ const match = TIME_REGEX.exec(s);
496
+ if (!match) return false;
497
+ const h = Number(match[1]);
498
+ const m = Number(match[2]);
499
+ return h >= 0 && h <= 23 && m >= 0 && m <= 59;
500
+ }
501
+ /**
502
+ * Parse a HH:mm string. Returns null for invalid input.
503
+ */
504
+ function parseTimeString(s) {
505
+ if (!isValidTimeString(s)) return null;
506
+ const match = TIME_REGEX.exec(s);
507
+ return {
508
+ h: Number(match[1]),
509
+ m: Number(match[2])
510
+ };
511
+ }
512
+ /**
513
+ * Format a HH:mm string for user display, respecting hour cycle.
514
+ *
515
+ * - `'24'`: returns the input as-is (`"14:30"`)
516
+ * - `'12'`: returns `"2:30 PM"` style with AM/PM and no leading zero on hour
517
+ *
518
+ * Returns empty string for invalid input — callers should validate first.
519
+ */
520
+ function formatTimeLabel(time, hourCycle) {
521
+ const parsed = parseTimeString(time);
522
+ if (!parsed) return "";
523
+ if (hourCycle === "24") return time;
524
+ const period = parsed.h >= 12 ? "PM" : "AM";
525
+ return `${parsed.h === 0 ? 12 : parsed.h > 12 ? parsed.h - 12 : parsed.h}:${String(parsed.m).padStart(2, "0")} ${period}`;
526
+ }
527
+ //#endregion
528
+ //#region src/components/features/picker/hooks/use-picker-state.ts
529
+ function reducer(state, action) {
530
+ switch (action.type) {
531
+ case "SET_SINGLE_DATE":
532
+ case "SET_SINGLE_TIME":
533
+ case "SET_SINGLE_DATETIME":
534
+ case "SET_RANGE":
535
+ case "SET_TIME_RANGE":
536
+ case "SET_DATETIME_RANGE": return {
537
+ ...state,
538
+ pendingValue: action.payload,
539
+ selectedPresetKey: void 0
540
+ };
541
+ case "SELECT_PRESET": return {
542
+ ...state,
543
+ pendingValue: action.payload.pendingValue,
544
+ selectedPresetKey: action.payload.key,
545
+ monthFrom: action.payload.monthFrom,
546
+ monthTo: action.payload.monthTo
547
+ };
548
+ case "SET_MONTH_FROM": return {
549
+ ...state,
550
+ monthFrom: action.payload
551
+ };
552
+ case "SET_MONTH_TO": return {
553
+ ...state,
554
+ monthTo: action.payload
555
+ };
556
+ case "OPEN": return {
557
+ ...state,
558
+ open: true
559
+ };
560
+ case "CLOSE": return {
561
+ ...state,
562
+ open: false
563
+ };
564
+ case "RESET_TO": return {
565
+ ...state,
566
+ pendingValue: action.payload,
567
+ selectedPresetKey: void 0
568
+ };
569
+ case "CLEAR_PRESET": return {
570
+ ...state,
571
+ selectedPresetKey: void 0
572
+ };
573
+ default: return state;
574
+ }
575
+ }
576
+ /**
577
+ * Convert a preset's `{ from: Date, to: Date }` (real UTC instants) into the
578
+ * value shape that the picker's `mode` actually emits.
579
+ *
580
+ * - `date-range`: pass through (Dates).
581
+ * - `datetime-range` / `date-range-time`: `.toISOString()` — instants already match.
582
+ * - `time-range`: extract wall-clock `HH:mm` in the active timezone.
583
+ * - single `date` / `datetime` / `time`: collapse the preset window to its
584
+ * end instant (`range.to`, typically "now") — a preset in single mode should
585
+ * set that instant, never wipe the value to `null`.
586
+ */
587
+ function presetValueForMode(mode, range, key, timezone) {
588
+ switch (mode) {
589
+ case "date-range": return {
590
+ from: range.from,
591
+ to: range.to,
592
+ preset: key
593
+ };
594
+ case "datetime-range":
595
+ case "date-range-time": return {
596
+ from: range.from.toISOString(),
597
+ to: range.to.toISOString(),
598
+ preset: key
599
+ };
600
+ case "time-range": return {
601
+ from: dateToHHmm(dateToZoned(range.from, timezone)),
602
+ to: dateToHHmm(dateToZoned(range.to, timezone)),
603
+ preset: key
604
+ };
605
+ case "date": return range.to;
606
+ case "datetime": return range.to.toISOString();
607
+ case "time": return dateToHHmm(dateToZoned(range.to, timezone));
608
+ default: return null;
609
+ }
610
+ }
611
+ /**
612
+ * Structural equality for picker value shapes (null, Date, `HH:mm` string,
613
+ * ISO string, or `{ from, to, preset? }`). Lets prop→pending sync compare by
614
+ * content rather than object identity.
615
+ */
616
+ function isSameValue(a, b) {
617
+ if (a === b) return true;
618
+ if (a == null || b == null) return a === b;
619
+ if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
620
+ if (typeof a === "object" && typeof b === "object") {
621
+ const av = a;
622
+ const bv = b;
623
+ return isSameValue(av.from, bv.from) && isSameValue(av.to, bv.to) && av.preset === bv.preset;
624
+ }
625
+ return false;
626
+ }
627
+ function usePickerState({ mode, value, onChange, commit, timezone }) {
628
+ const effectiveCommit = resolveCommit(mode, commit);
629
+ const [state, dispatch] = useReducer(reducer, void 0, () => ({
630
+ pendingValue: value,
631
+ open: false,
632
+ selectedPresetKey: void 0,
633
+ monthFrom: void 0,
634
+ monthTo: void 0
635
+ }));
636
+ const lastSyncedValueRef = useRef(value);
637
+ useEffect(() => {
638
+ if (isSameValue(lastSyncedValueRef.current, value)) return;
639
+ const hasUncommittedEdits = !isSameValue(state.pendingValue, lastSyncedValueRef.current);
640
+ if (state.open && hasUncommittedEdits) return;
641
+ lastSyncedValueRef.current = value;
642
+ dispatch({
643
+ type: "RESET_TO",
644
+ payload: value
645
+ });
646
+ }, [
647
+ value,
648
+ state.open,
649
+ state.pendingValue
650
+ ]);
651
+ const onChangeRef = useRef(onChange);
652
+ const valueRef = useRef(value);
653
+ const pendingValueRef = useRef(state.pendingValue);
654
+ const effectiveCommitRef = useRef(effectiveCommit);
655
+ const modeRef = useRef(mode);
656
+ const timezoneRef = useRef(timezone);
657
+ useEffect(() => {
658
+ onChangeRef.current = onChange;
659
+ valueRef.current = value;
660
+ pendingValueRef.current = state.pendingValue;
661
+ effectiveCommitRef.current = effectiveCommit;
662
+ modeRef.current = mode;
663
+ timezoneRef.current = timezone;
664
+ });
665
+ const commitValue = useCallback((next) => {
666
+ onChangeRef.current(next);
667
+ }, []);
668
+ const actions = useMemo(() => {
669
+ const setSingleValue = (action) => {
670
+ dispatch(action);
671
+ if (effectiveCommitRef.current === "immediate") {
672
+ commitValue(action.payload);
673
+ dispatch({ type: "CLOSE" });
674
+ }
675
+ };
676
+ return {
677
+ setSingleDate: (d) => setSingleValue({
678
+ type: "SET_SINGLE_DATE",
679
+ payload: d
680
+ }),
681
+ setSingleTime: (t) => setSingleValue({
682
+ type: "SET_SINGLE_TIME",
683
+ payload: t
684
+ }),
685
+ setSingleDatetime: (iso) => setSingleValue({
686
+ type: "SET_SINGLE_DATETIME",
687
+ payload: iso
688
+ }),
689
+ setRange: (r) => {
690
+ dispatch({
691
+ type: "SET_RANGE",
692
+ payload: r
693
+ });
694
+ if (effectiveCommitRef.current === "immediate" && r !== null && r.from.getTime() !== r.to.getTime()) {
695
+ commitValue(r);
696
+ dispatch({ type: "CLOSE" });
697
+ }
698
+ },
699
+ setTimeRange: (r) => {
700
+ dispatch({
701
+ type: "SET_TIME_RANGE",
702
+ payload: r
703
+ });
704
+ if (effectiveCommitRef.current === "immediate" && r !== null) {
705
+ commitValue(r);
706
+ dispatch({ type: "CLOSE" });
707
+ }
708
+ },
709
+ setDatetimeRange: (r) => {
710
+ dispatch({
711
+ type: "SET_DATETIME_RANGE",
712
+ payload: r
713
+ });
714
+ if (effectiveCommitRef.current === "immediate" && r !== null) {
715
+ commitValue(r);
716
+ dispatch({ type: "CLOSE" });
717
+ }
718
+ },
719
+ selectPreset: (range, key) => {
720
+ const pendingValue = presetValueForMode(modeRef.current, range, key, timezoneRef.current);
721
+ dispatch({
722
+ type: "SELECT_PRESET",
723
+ payload: {
724
+ pendingValue,
725
+ key,
726
+ monthFrom: range.from,
727
+ monthTo: range.to
728
+ }
729
+ });
730
+ commitValue(pendingValue);
731
+ dispatch({ type: "CLOSE" });
732
+ },
733
+ setMonthFrom: (d) => dispatch({
734
+ type: "SET_MONTH_FROM",
735
+ payload: d
736
+ }),
737
+ setMonthTo: (d) => dispatch({
738
+ type: "SET_MONTH_TO",
739
+ payload: d
740
+ }),
741
+ open: () => dispatch({ type: "OPEN" }),
742
+ close: () => dispatch({ type: "CLOSE" }),
743
+ apply: () => {
744
+ commitValue(pendingValueRef.current);
745
+ dispatch({ type: "CLOSE" });
746
+ },
747
+ reset: () => dispatch({
748
+ type: "RESET_TO",
749
+ payload: valueRef.current
750
+ }),
751
+ cancel: () => {
752
+ dispatch({
753
+ type: "RESET_TO",
754
+ payload: valueRef.current
755
+ });
756
+ dispatch({ type: "CLOSE" });
757
+ },
758
+ clear: () => {
759
+ dispatch({
760
+ type: "RESET_TO",
761
+ payload: null
762
+ });
763
+ commitValue(null);
764
+ }
765
+ };
766
+ }, [commitValue]);
767
+ return {
768
+ state: {
769
+ pendingValue: state.pendingValue,
770
+ open: state.open,
771
+ selectedPresetKey: state.selectedPresetKey,
772
+ monthFrom: state.monthFrom,
773
+ monthTo: state.monthTo
774
+ },
775
+ actions
776
+ };
777
+ }
778
+ //#endregion
779
+ //#region src/components/features/picker/presets/defaults.ts
780
+ /**
781
+ * Compute a `{ from, to }` window in `tz` wall-clock space using date-fns
782
+ * boundary helpers, then project both ends back to real UTC instants. Keeps
783
+ * calendar-unit presets (week/month/year) timezone-aware, matching the
784
+ * day-granularity presets.
785
+ */
786
+ function zonedWindow(tz, start, end) {
787
+ const zonedNow = toZonedTime(/* @__PURE__ */ new Date(), tz);
788
+ return {
789
+ from: fromZonedTime(start(zonedNow), tz),
790
+ to: fromZonedTime(end(zonedNow), tz)
791
+ };
792
+ }
793
+ /**
794
+ * Date-bearing presets. Operate on calendar days; ignore time-of-day.
795
+ */
796
+ const DATE_PRESETS = [
797
+ {
798
+ key: "today",
799
+ label: "Today",
800
+ shortcut: "D",
801
+ getRange: (tz) => ({
802
+ from: startOfDayInTz(/* @__PURE__ */ new Date(), tz),
803
+ to: endOfDayInTz(/* @__PURE__ */ new Date(), tz)
804
+ })
805
+ },
806
+ {
807
+ key: "yesterday",
808
+ label: "Yesterday",
809
+ shortcut: "Y",
810
+ getRange: (tz) => {
811
+ const y = subDays(/* @__PURE__ */ new Date(), 1);
812
+ return {
813
+ from: startOfDayInTz(y, tz),
814
+ to: endOfDayInTz(y, tz)
815
+ };
816
+ }
817
+ },
818
+ {
819
+ key: "this-week",
820
+ label: "This Week",
821
+ getRange: (tz) => zonedWindow(tz, (d) => startOfWeek(d, { weekStartsOn: 1 }), (d) => endOfWeek(d, { weekStartsOn: 1 }))
822
+ },
823
+ {
824
+ key: "last-7-days",
825
+ label: "Last 7 Days",
826
+ shortcut: "W",
827
+ getRange: (tz) => ({
828
+ from: startOfDayInTz(subDays(/* @__PURE__ */ new Date(), 6), tz),
829
+ to: endOfDayInTz(/* @__PURE__ */ new Date(), tz)
830
+ })
831
+ },
832
+ {
833
+ key: "this-month",
834
+ label: "This Month",
835
+ getRange: (tz) => zonedWindow(tz, startOfMonth, endOfMonth)
836
+ },
837
+ {
838
+ key: "last-30-days",
839
+ label: "Last 30 Days",
840
+ shortcut: "M",
841
+ getRange: (tz) => ({
842
+ from: startOfDayInTz(subDays(/* @__PURE__ */ new Date(), 29), tz),
843
+ to: endOfDayInTz(/* @__PURE__ */ new Date(), tz)
844
+ })
845
+ },
846
+ {
847
+ key: "this-year",
848
+ label: "This Year",
849
+ getRange: (tz) => zonedWindow(tz, startOfYear, endOfYear)
850
+ }
851
+ ];
852
+ /**
853
+ * Datetime-bearing presets. Use "now" as the upper bound for past windows
854
+ * (so the picker doesn't propose future timestamps).
855
+ */
856
+ const DATETIME_PRESETS = [
857
+ {
858
+ key: "last-15m",
859
+ label: "Last 15 minutes",
860
+ shortcut: "1",
861
+ getRange: () => {
862
+ const now = /* @__PURE__ */ new Date();
863
+ return {
864
+ from: subMinutes(now, 15),
865
+ to: now
866
+ };
867
+ }
868
+ },
869
+ {
870
+ key: "last-1h",
871
+ label: "Last hour",
872
+ shortcut: "H",
873
+ getRange: () => {
874
+ const now = /* @__PURE__ */ new Date();
875
+ return {
876
+ from: subHours(now, 1),
877
+ to: now
878
+ };
879
+ }
880
+ },
881
+ {
882
+ key: "last-24h",
883
+ label: "Last 24 hours",
884
+ getRange: () => {
885
+ const now = /* @__PURE__ */ new Date();
886
+ return {
887
+ from: subHours(now, 24),
888
+ to: now
889
+ };
890
+ }
891
+ },
892
+ {
893
+ key: "today",
894
+ label: "Today",
895
+ shortcut: "D",
896
+ getRange: (tz) => ({
897
+ from: startOfDayInTz(/* @__PURE__ */ new Date(), tz),
898
+ to: /* @__PURE__ */ new Date()
899
+ })
900
+ },
901
+ {
902
+ key: "last-7-days",
903
+ label: "Last 7 days",
904
+ shortcut: "W",
905
+ getRange: () => {
906
+ const now = /* @__PURE__ */ new Date();
907
+ return {
908
+ from: subDays(now, 7),
909
+ to: now
910
+ };
911
+ }
912
+ },
913
+ {
914
+ key: "last-30-days",
915
+ label: "Last 30 days",
916
+ shortcut: "M",
917
+ getRange: () => {
918
+ const now = /* @__PURE__ */ new Date();
919
+ return {
920
+ from: subDays(now, 30),
921
+ to: now
922
+ };
923
+ }
924
+ }
925
+ ];
926
+ const EMPTY = [];
927
+ /**
928
+ * Default preset set for a given mode. Time-only modes return empty —
929
+ * presets rarely make sense for picking a wall-clock time.
930
+ */
931
+ function getDefaultPresets(mode) {
932
+ switch (mode) {
933
+ case "date":
934
+ case "date-range": return DATE_PRESETS;
935
+ case "datetime":
936
+ case "datetime-range":
937
+ case "date-range-time": return DATETIME_PRESETS;
938
+ default: return EMPTY;
939
+ }
940
+ }
941
+ //#endregion
942
+ //#region src/components/features/picker/hooks/use-presets.ts
943
+ /**
944
+ * Resolve the effective list of presets for a picker.
945
+ *
946
+ * Resolution order:
947
+ * 1. If `custom` is provided, use it as-is (no exclusion, no constraint check).
948
+ * 2. Otherwise: defaults for `mode`, minus `excludeKeys`, minus presets
949
+ * whose `getRange(timezone).from` or `.to` is rejected by `isDateDisabled`.
950
+ *
951
+ * Returns a memoized array; identity-stable when inputs haven't changed.
952
+ */
953
+ function usePresets({ mode, timezone, custom, excludeKeys, isDateDisabled }) {
954
+ return useMemo(() => {
955
+ if (custom) return custom;
956
+ const base = getDefaultPresets(mode);
957
+ const excludeSet = new Set(excludeKeys ?? []);
958
+ return base.filter((preset) => {
959
+ if (excludeSet.has(preset.key)) return false;
960
+ const range = preset.getRange(timezone);
961
+ if (isDateDisabled(range.from)) return false;
962
+ if (isDateDisabled(range.to)) return false;
963
+ return true;
964
+ });
965
+ }, [
966
+ mode,
967
+ timezone,
968
+ custom,
969
+ excludeKeys,
970
+ isDateDisabled
971
+ ]);
972
+ }
973
+ //#endregion
974
+ //#region src/components/features/picker/components/root.tsx
975
+ function detectHourCycle() {
976
+ try {
977
+ const opts = new Intl.DateTimeFormat(void 0, { hour: "numeric" }).resolvedOptions();
978
+ if (opts.hourCycle === "h23" || opts.hourCycle === "h24") return "24";
979
+ return "12";
980
+ } catch {
981
+ return "24";
982
+ }
983
+ }
984
+ function PickerRoot({ mode, value, onChange, commit, timezone: timezoneProp, step = 15, hourCycle: hourCycleProp, hideTimezone = false, responsive = true, presets: customPresets, excludePresets, minDate, maxDate, disablePast, disableFuture, children }) {
985
+ const rootRef = useRef(null);
986
+ const breakpoint = useBreakpoint();
987
+ const timezone = timezoneProp ?? getBrowserTimezone();
988
+ const hourCycle = hourCycleProp ?? detectHourCycle();
989
+ const { isDateDisabled } = useDateConstraints({
990
+ minDate,
991
+ maxDate,
992
+ disablePast,
993
+ disableFuture
994
+ });
995
+ const presets = usePresets({
996
+ mode,
997
+ timezone,
998
+ custom: customPresets,
999
+ excludeKeys: excludePresets,
1000
+ isDateDisabled
1001
+ });
1002
+ const { state, actions } = usePickerState({
1003
+ mode,
1004
+ value,
1005
+ onChange,
1006
+ commit,
1007
+ timezone
1008
+ });
1009
+ const effectiveCommit = resolveCommit(mode, commit);
1010
+ useKeyboardShortcuts({
1011
+ rootRef,
1012
+ presets,
1013
+ onSelect: useCallback((preset) => {
1014
+ const range = preset.getRange(timezone);
1015
+ actions.selectPreset(range, preset.key);
1016
+ }, [timezone, actions]),
1017
+ enabled: state.open
1018
+ });
1019
+ const ctx = useMemo(() => ({
1020
+ mode,
1021
+ timezone,
1022
+ effectiveCommit,
1023
+ hourCycle,
1024
+ step,
1025
+ hideTimezone,
1026
+ responsive,
1027
+ presets,
1028
+ rootRef,
1029
+ breakpoint,
1030
+ state,
1031
+ actions
1032
+ }), [
1033
+ mode,
1034
+ timezone,
1035
+ effectiveCommit,
1036
+ hourCycle,
1037
+ step,
1038
+ hideTimezone,
1039
+ responsive,
1040
+ presets,
1041
+ breakpoint,
1042
+ state,
1043
+ actions
1044
+ ]);
1045
+ return /* @__PURE__ */ jsx(PickerContext.Provider, {
1046
+ value: ctx,
1047
+ children: /* @__PURE__ */ jsx("div", {
1048
+ ref: rootRef,
1049
+ children
1050
+ })
1051
+ });
1052
+ }
1053
+ PickerRoot.displayName = "Picker.Root";
1054
+ /**
1055
+ * Public namespace export. Subsequent tasks add Trigger, Content, etc.
1056
+ */
1057
+ const Picker$1 = { Root: PickerRoot };
1058
+ //#endregion
1059
+ //#region src/components/features/picker/hooks/use-time-slots.ts
1060
+ function timeToMinutes(t) {
1061
+ const parsed = parseTimeString(t);
1062
+ return parsed ? parsed.h * 60 + parsed.m : null;
1063
+ }
1064
+ function minutesToTime(total) {
1065
+ const h = Math.floor(total / 60);
1066
+ const m = total % 60;
1067
+ return `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
1068
+ }
1069
+ /**
1070
+ * Generate an `OptionPickerOption[]` of HH:mm slots for the slot-dropdown UI.
1071
+ *
1072
+ * Slots are produced in pure minute arithmetic — DST is not considered (slots
1073
+ * are wall-clock times of day, independent of any specific calendar date).
1074
+ */
1075
+ function useTimeSlots({ min, max, step = 15, hourCycle = "24" }) {
1076
+ return useMemo(() => {
1077
+ const minMinutes = min ? timeToMinutes(min) ?? 0 : 0;
1078
+ const maxMinutes = max ? timeToMinutes(max) ?? 1439 : 1439;
1079
+ const slots = [];
1080
+ for (let m = minMinutes; m <= maxMinutes; m += step) {
1081
+ if (m >= 1440) break;
1082
+ const value = minutesToTime(m);
1083
+ slots.push({
1084
+ value,
1085
+ label: formatTimeLabel(value, hourCycle)
1086
+ });
1087
+ }
1088
+ return slots;
1089
+ }, [
1090
+ min,
1091
+ max,
1092
+ step,
1093
+ hourCycle
1094
+ ]);
1095
+ }
1096
+ //#endregion
1097
+ //#region src/components/features/picker/components/time-input.tsx
1098
+ function combineDateAndTime(dateIso, time, timezone) {
1099
+ const d = isoToZonedDate(dateIso, timezone);
1100
+ const parsed = parseTimeString(time);
1101
+ if (!parsed) return dateIso;
1102
+ d.setHours(parsed.h, parsed.m, 0, 0);
1103
+ return zonedDateToIso(d, timezone);
1104
+ }
1105
+ function PickerTimeInput({ target, min, max, className }) {
1106
+ const { mode, timezone, hourCycle, step, state, actions } = usePickerContext();
1107
+ let effectiveMin = min;
1108
+ if (target === "range-to" && mode === "time-range") {
1109
+ const fromValue = state.pendingValue?.from;
1110
+ if (fromValue) effectiveMin = min && min > fromValue ? min : fromValue;
1111
+ }
1112
+ const slots = useTimeSlots({
1113
+ min: effectiveMin,
1114
+ max,
1115
+ step,
1116
+ hourCycle
1117
+ });
1118
+ let currentValue;
1119
+ let embeddedDisabled = false;
1120
+ if (target === "single" && mode === "time") currentValue = state.pendingValue ?? void 0;
1121
+ else if ((target === "range-from" || target === "range-to") && mode === "time-range") {
1122
+ const v = state.pendingValue;
1123
+ currentValue = target === "range-from" ? v?.from : v?.to;
1124
+ } else if (target === "embedded-from" || target === "embedded-to") {
1125
+ if (mode === "datetime-range" || mode === "date-range-time") {
1126
+ const v = state.pendingValue;
1127
+ const iso = target === "embedded-from" ? v?.from : v?.to;
1128
+ currentValue = iso ? dateToHHmm(isoToZonedDate(iso, timezone)) : void 0;
1129
+ embeddedDisabled = v === null;
1130
+ } else if (mode === "datetime") {
1131
+ const iso = state.pendingValue;
1132
+ currentValue = iso ? dateToHHmm(isoToZonedDate(iso, timezone)) : void 0;
1133
+ embeddedDisabled = iso === null;
1134
+ }
1135
+ }
1136
+ const handleSelect = (newTime) => {
1137
+ if (target === "single" && mode === "time") {
1138
+ actions.setSingleTime(newTime);
1139
+ return;
1140
+ }
1141
+ if (mode === "time-range") {
1142
+ const v = state.pendingValue ?? {
1143
+ from: "00:00",
1144
+ to: "23:59"
1145
+ };
1146
+ const next = target === "range-from" ? {
1147
+ from: newTime,
1148
+ to: v.to
1149
+ } : {
1150
+ from: v.from,
1151
+ to: newTime
1152
+ };
1153
+ actions.setTimeRange(next);
1154
+ return;
1155
+ }
1156
+ if (mode === "datetime-range" || mode === "date-range-time") {
1157
+ const v = state.pendingValue;
1158
+ if (!v) return;
1159
+ const next = target === "embedded-from" ? {
1160
+ from: combineDateAndTime(v.from, newTime, timezone),
1161
+ to: v.to
1162
+ } : {
1163
+ from: v.from,
1164
+ to: combineDateAndTime(v.to, newTime, timezone)
1165
+ };
1166
+ actions.setDatetimeRange(next);
1167
+ return;
1168
+ }
1169
+ if (mode === "datetime" && (target === "embedded-from" || target === "embedded-to")) {
1170
+ const v = state.pendingValue;
1171
+ if (!v) return;
1172
+ actions.setSingleDatetime(combineDateAndTime(v, newTime, timezone));
1173
+ }
1174
+ };
1175
+ if (target === "single" || target === "range-from" || target === "range-to") return /* @__PURE__ */ jsx(InlineSlotList, {
1176
+ slots,
1177
+ value: currentValue,
1178
+ onSelect: handleSelect,
1179
+ className
1180
+ });
1181
+ return /* @__PURE__ */ jsx(EmbeddedSlotInput, {
1182
+ label: currentValue ? formatTimeLabel(currentValue, hourCycle) : "— : —",
1183
+ slots,
1184
+ value: currentValue,
1185
+ onSelect: handleSelect,
1186
+ disabled: embeddedDisabled,
1187
+ className
1188
+ });
1189
+ }
1190
+ PickerTimeInput.displayName = "Picker.TimeInput";
1191
+ function InlineSlotList({ slots, value, onSelect, className }) {
1192
+ const [open, setOpen] = useState(true);
1193
+ return /* @__PURE__ */ jsx(OptionList, {
1194
+ picker: useOptionPicker({
1195
+ multiple: false,
1196
+ options: slots,
1197
+ value,
1198
+ onValueChange: (next) => {
1199
+ if (typeof next === "string") onSelect(next);
1200
+ },
1201
+ open,
1202
+ onOpenChange: setOpen
1203
+ }),
1204
+ disableSearch: slots.length <= 48,
1205
+ searchPlaceholder: "Search time...",
1206
+ listClassName: cn("max-h-[240px]", className)
1207
+ });
1208
+ }
1209
+ function EmbeddedSlotInput({ label, slots, value, onSelect, disabled = false, className }) {
1210
+ const [open, setOpen] = useState(false);
1211
+ const picker = useOptionPicker({
1212
+ multiple: false,
1213
+ options: slots,
1214
+ value,
1215
+ onValueChange: (next) => {
1216
+ if (typeof next === "string") {
1217
+ onSelect(next);
1218
+ setOpen(false);
1219
+ }
1220
+ },
1221
+ open,
1222
+ onOpenChange: disabled ? () => {} : setOpen
1223
+ });
1224
+ return /* @__PURE__ */ jsx(ResponsivePopover, {
1225
+ open,
1226
+ onOpenChange: disabled ? () => {} : setOpen,
1227
+ sheetTitle: "Select time",
1228
+ trigger: /* @__PURE__ */ jsxs(Button$1, {
1229
+ type: "button",
1230
+ variant: "outline",
1231
+ disabled,
1232
+ className: cn("h-8 gap-1.5 px-2 text-xs font-normal", className),
1233
+ children: [/* @__PURE__ */ jsx(Clock, { className: "size-3.5 opacity-60" }), /* @__PURE__ */ jsx("span", { children: label })]
1234
+ }),
1235
+ align: "start",
1236
+ contentClassName: "w-[200px]",
1237
+ children: /* @__PURE__ */ jsx(OptionList, {
1238
+ picker,
1239
+ disableSearch: slots.length <= 48,
1240
+ searchPlaceholder: "Search time...",
1241
+ listClassName: "max-h-[240px]"
1242
+ })
1243
+ });
1244
+ }
1245
+ //#endregion
1246
+ //#region src/components/features/picker/components/timezone-indicator.tsx
1247
+ function PickerTimezoneIndicator({ className, variant = "full" }) {
1248
+ const { mode, timezone, hideTimezone } = usePickerContext();
1249
+ if (hideTimezone) return null;
1250
+ if (!isTimeBearingMode(mode)) return null;
1251
+ if (variant === "compact") return /* @__PURE__ */ jsx("span", {
1252
+ "data-slot": "picker-tz-indicator",
1253
+ className: cn("text-muted-foreground text-xs", className),
1254
+ children: timezone
1255
+ });
1256
+ return /* @__PURE__ */ jsxs("div", {
1257
+ "data-slot": "picker-tz-indicator",
1258
+ className: cn("text-muted-foreground bg-muted/30 flex items-center gap-2 px-3 py-2 text-xs", className),
1259
+ children: [/* @__PURE__ */ jsx(Globe, { className: "size-3.5" }), /* @__PURE__ */ jsxs("span", { children: [
1260
+ "Times shown in",
1261
+ " ",
1262
+ formatTimezoneLabel(timezone)
1263
+ ] })]
1264
+ });
1265
+ }
1266
+ PickerTimezoneIndicator.displayName = "Picker.TimezoneIndicator";
1267
+ //#endregion
1268
+ //#region src/components/features/picker/components/timezone-select.tsx
1269
+ function PickerTimezoneSelect({ options, onChange, className, placeholder = "Select timezone" }) {
1270
+ const { mode, timezone } = usePickerContext();
1271
+ if (!isTimeBearingMode(mode)) return null;
1272
+ return /* @__PURE__ */ jsxs("div", {
1273
+ "data-slot": "picker-tz-select",
1274
+ className: cn("flex items-center gap-2 px-3 py-2", className),
1275
+ children: [/* @__PURE__ */ jsx(Globe, { className: "text-muted-foreground size-4 shrink-0" }), /* @__PURE__ */ jsxs(Select, {
1276
+ value: timezone,
1277
+ onValueChange: onChange,
1278
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
1279
+ className: "hover:bg-accent h-8 min-w-[180px] border-0 bg-transparent px-2 text-xs shadow-none",
1280
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
1281
+ }), /* @__PURE__ */ jsx(SelectContent, { children: options.map((opt) => /* @__PURE__ */ jsx(SelectItem, {
1282
+ value: opt.value,
1283
+ className: "text-xs",
1284
+ children: opt.label
1285
+ }, opt.value)) })]
1286
+ })]
1287
+ });
1288
+ }
1289
+ PickerTimezoneSelect.displayName = "Picker.TimezoneSelect";
1290
+ //#endregion
1291
+ //#region src/components/features/picker/components/trigger.tsx
1292
+ const DEFAULT_ICON = /* @__PURE__ */ jsx(CalendarIcon, { className: "text-muted-foreground size-4 shrink-0" });
1293
+ function PickerTrigger({ placeholder = "Pick a date", clearable = false, disabled = false, children, className, triggerClassName, id, icon, onClick, ...slotProps }) {
1294
+ const { state, actions } = usePickerContext();
1295
+ const hasValue = state.pendingValue !== null && state.pendingValue !== void 0;
1296
+ const renderedIcon = icon === false ? null : icon ?? DEFAULT_ICON;
1297
+ return /* @__PURE__ */ jsxs(Button$1, {
1298
+ id,
1299
+ type: "button",
1300
+ variant: "outline",
1301
+ role: "combobox",
1302
+ "aria-label": hasValue ? void 0 : placeholder,
1303
+ "aria-expanded": state.open,
1304
+ disabled,
1305
+ onClick: (e) => {
1306
+ onClick?.(e);
1307
+ if (state.open) actions.close();
1308
+ else actions.open();
1309
+ },
1310
+ className: cn("w-full justify-between gap-2 font-normal", triggerClassName, className),
1311
+ ...slotProps,
1312
+ children: [/* @__PURE__ */ jsxs("span", {
1313
+ className: "flex flex-1 items-center gap-2 truncate",
1314
+ children: [renderedIcon, /* @__PURE__ */ jsx("span", {
1315
+ className: cn("truncate", !hasValue && "text-muted-foreground"),
1316
+ children: hasValue ? children ? children(state.pendingValue) : String(state.pendingValue) : placeholder
1317
+ })]
1318
+ }), clearable && hasValue && /* @__PURE__ */ jsx("button", {
1319
+ type: "button",
1320
+ "aria-label": "Clear",
1321
+ onClick: (e) => {
1322
+ e.stopPropagation();
1323
+ actions.clear();
1324
+ },
1325
+ className: "text-muted-foreground hover:text-destructive shrink-0 rounded-sm p-0.5 transition-colors",
1326
+ children: /* @__PURE__ */ jsx(X, { className: "size-3.5" })
1327
+ })]
1328
+ });
1329
+ }
1330
+ PickerTrigger.displayName = "Picker.Trigger";
1331
+ //#endregion
1332
+ //#region src/components/features/picker/components/index.ts
1333
+ const Picker = Object.assign(Picker$1, {
1334
+ Trigger: PickerTrigger,
1335
+ Content: PickerContent,
1336
+ Calendar: PickerCalendar,
1337
+ TimeInput: PickerTimeInput,
1338
+ Presets: PickerPresets,
1339
+ Footer: PickerFooter,
1340
+ Apply: PickerApply,
1341
+ Reset: PickerReset,
1342
+ Cancel: PickerCancel,
1343
+ Clear: PickerClear,
1344
+ TimezoneIndicator: PickerTimezoneIndicator,
1345
+ TimezoneSelect: PickerTimezoneSelect
1346
+ });
1347
+ //#endregion
1348
+ //#region src/components/features/picker/utils/compare.ts
1349
+ /** Strict equality of two nullable Date references by millisecond value. */
1350
+ function isSameDate(a, b) {
1351
+ if (a === b) return true;
1352
+ if (a === null || b === null) return false;
1353
+ return a.getTime() === b.getTime();
1354
+ }
1355
+ /** Equality of two nullable date ranges. Compares from, to (by ms), and preset. */
1356
+ function isSameDateRange(a, b) {
1357
+ if (a === b) return true;
1358
+ if (a === null || b === null) return false;
1359
+ return a.from.getTime() === b.from.getTime() && a.to.getTime() === b.to.getTime() && a.preset === b.preset;
1360
+ }
1361
+ /**
1362
+ * Equality of two nullable string ranges. Used for time-of-day, time-range,
1363
+ * and datetime-range value shapes (all structurally identical).
1364
+ * Compares from, to, and optional preset.
1365
+ */
1366
+ function isSameStringRange(a, b) {
1367
+ if (a === b) return true;
1368
+ if (a === null || b === null) return false;
1369
+ return a.from === b.from && a.to === b.to && a.preset === b.preset;
1370
+ }
1371
+ //#endregion
1372
+ //#region src/components/features/picker/utils/format-value.ts
1373
+ const DATE_OPTS = {
1374
+ year: "numeric",
1375
+ month: "short",
1376
+ day: "2-digit"
1377
+ };
1378
+ function safeDate(input) {
1379
+ if (input instanceof Date && !Number.isNaN(input.getTime())) return input;
1380
+ return null;
1381
+ }
1382
+ function safeIso(input, timezone) {
1383
+ if (typeof input !== "string") return null;
1384
+ try {
1385
+ const d = isoToZonedDate(input, timezone);
1386
+ return Number.isNaN(d.getTime()) ? null : d;
1387
+ } catch {
1388
+ return null;
1389
+ }
1390
+ }
1391
+ /**
1392
+ * Deterministic equivalent of `DATE_OPTS` rendered via date-fns (which pins
1393
+ * its own default locale). Used when no explicit `locale` is supplied so that
1394
+ * SSR and client produce identical text (no `toLocaleDateString(undefined)`
1395
+ * hydration mismatch).
1396
+ */
1397
+ const DEFAULT_DATE_FORMAT = "MMM dd, yyyy";
1398
+ function formatDate(d, locale, dateFormat) {
1399
+ if (dateFormat) return format(d, dateFormat);
1400
+ if (locale) return d.toLocaleDateString(locale, DATE_OPTS);
1401
+ return format(d, DEFAULT_DATE_FORMAT);
1402
+ }
1403
+ /** Renders `HH:mm` from a Date whose wall-clock fields are already in the target timezone. */
1404
+ function formatZonedTimeOfDay$1(d, hourCycle, timeFormat) {
1405
+ if (timeFormat) return format(d, timeFormat);
1406
+ return formatTimeLabel(dateToHHmm(d), hourCycle);
1407
+ }
1408
+ /**
1409
+ * Renders a `"HH:mm"` time-of-day string. Honors `timeFormat` (date-fns pattern)
1410
+ * by lifting the value into a Date and formatting; falls back to `formatTimeLabel`
1411
+ * (hourCycle-aware) otherwise.
1412
+ */
1413
+ function formatTimeOfDayString(value, hourCycle, timeFormat) {
1414
+ if (!timeFormat) return formatTimeLabel(value, hourCycle);
1415
+ const parsed = parseTimeString(value);
1416
+ if (!parsed) return "";
1417
+ const d = /* @__PURE__ */ new Date();
1418
+ d.setHours(parsed.h, parsed.m, 0, 0);
1419
+ return format(d, timeFormat);
1420
+ }
1421
+ function isSameZonedDay(a, b) {
1422
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
1423
+ }
1424
+ /**
1425
+ * Renders a human-readable trigger label for any picker mode.
1426
+ * Returns the empty string when the value is null/undefined or unparseable.
1427
+ */
1428
+ function formatPickerValue(value, mode, opts = {}) {
1429
+ if (value === null || value === void 0) return "";
1430
+ const timezone = opts.timezone ?? getBrowserTimezone();
1431
+ const hourCycle = opts.hourCycle ?? "24";
1432
+ const locale = opts.locale;
1433
+ const dateFormat = opts.dateFormat;
1434
+ const timeFormat = opts.timeFormat;
1435
+ if (mode === "date") {
1436
+ const d = safeDate(value);
1437
+ return d ? formatDate(d, locale, dateFormat) : "";
1438
+ }
1439
+ if (mode === "date-range") {
1440
+ const v = value;
1441
+ const from = safeDate(v?.from);
1442
+ const to = safeDate(v?.to);
1443
+ if (!from || !to) return "";
1444
+ return `${formatDate(from, locale, dateFormat)} - ${formatDate(to, locale, dateFormat)}`;
1445
+ }
1446
+ if (mode === "time") return typeof value === "string" ? formatTimeOfDayString(value, hourCycle, timeFormat) : "";
1447
+ if (mode === "time-range") {
1448
+ const v = value;
1449
+ if (typeof v?.from !== "string" || typeof v?.to !== "string") return "";
1450
+ return `${formatTimeOfDayString(v.from, hourCycle, timeFormat)} - ${formatTimeOfDayString(v.to, hourCycle, timeFormat)}`;
1451
+ }
1452
+ if (mode === "datetime") {
1453
+ const d = safeIso(value, timezone);
1454
+ return d ? `${formatDate(d, locale, dateFormat)} ${formatZonedTimeOfDay$1(d, hourCycle, timeFormat)}` : "";
1455
+ }
1456
+ if (mode === "datetime-range") {
1457
+ const v = value;
1458
+ const from = safeIso(v?.from, timezone);
1459
+ const to = safeIso(v?.to, timezone);
1460
+ if (!from || !to) return "";
1461
+ if (isSameZonedDay(from, to)) return `${formatDate(from, locale, dateFormat)} ${formatZonedTimeOfDay$1(from, hourCycle, timeFormat)} - ${formatZonedTimeOfDay$1(to, hourCycle, timeFormat)}`;
1462
+ return `${formatDate(from, locale, dateFormat)} ${formatZonedTimeOfDay$1(from, hourCycle, timeFormat)} - ${formatDate(to, locale, dateFormat)} ${formatZonedTimeOfDay$1(to, hourCycle, timeFormat)}`;
1463
+ }
1464
+ if (mode === "date-range-time") {
1465
+ const v = value;
1466
+ const from = safeIso(v?.from, timezone);
1467
+ const to = safeIso(v?.to, timezone);
1468
+ if (!from || !to) return "";
1469
+ return `${formatDate(from, locale, dateFormat)} - ${formatDate(to, locale, dateFormat)} (${formatZonedTimeOfDay$1(from, hourCycle, timeFormat)})`;
1470
+ }
1471
+ return "";
1472
+ }
1473
+ //#endregion
1474
+ //#region src/components/features/picker/utils/range.ts
1475
+ /**
1476
+ * Number of calendar days between two dates. Always non-negative.
1477
+ *
1478
+ * Uses calendar-day boundaries (not 24-hour windows), so a range from
1479
+ * 23:59 today to 00:00 tomorrow counts as 1 day, not 0.
1480
+ */
1481
+ function getDaysDifference(from, to) {
1482
+ return Math.abs(differenceInCalendarDays(to, from));
1483
+ }
1484
+ /**
1485
+ * Validate a range against a maximum span (inclusive).
1486
+ *
1487
+ * - Returns `true` when `maxRange` is undefined.
1488
+ * - Returns `true` when the range spans at most `maxRange` days.
1489
+ */
1490
+ function isRangeValid(from, to, maxRange) {
1491
+ if (maxRange === void 0) return true;
1492
+ return getDaysDifference(from, to) <= maxRange;
1493
+ }
1494
+ /**
1495
+ * Clamp a range to fit within `maxRange` days.
1496
+ *
1497
+ * If the range already fits, returns the original `{from, to}`.
1498
+ * Otherwise, holds `from` and clamps `to` forward to exactly `maxRange`
1499
+ * days after `from`.
1500
+ */
1501
+ function clampRange(from, to, maxRange) {
1502
+ if (isRangeValid(from, to, maxRange)) return {
1503
+ from,
1504
+ to
1505
+ };
1506
+ return {
1507
+ from,
1508
+ to: addDays(from, maxRange)
1509
+ };
1510
+ }
1511
+ //#endregion
1512
+ //#region src/components/features/picker/wrappers/internal/default-footer.tsx
1513
+ /**
1514
+ * The standard Cancel / Reset / Apply footer used by every wrapper.
1515
+ * `Picker.Content` decides whether to render it - desktop popover renders
1516
+ * it only when `commit === 'apply'`; mobile sheet always renders it.
1517
+ */
1518
+ function DefaultFooter() {
1519
+ return /* @__PURE__ */ jsxs(PickerFooter, { children: [
1520
+ /* @__PURE__ */ jsx(PickerCancel, {}),
1521
+ /* @__PURE__ */ jsx(PickerReset, {}),
1522
+ /* @__PURE__ */ jsx(PickerApply, {})
1523
+ ] });
1524
+ }
1525
+ //#endregion
1526
+ //#region src/components/features/picker/wrappers/date-picker.tsx
1527
+ function DatePicker({ value, onChange, placeholder = "Pick a date", clearable = true, responsive = true, sheetTitle = "Pick a date", numberOfMonths = 1, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit, disablePast, disableFuture, minDate, maxDate, dateFormat }) {
1528
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1529
+ mode: "date",
1530
+ value,
1531
+ onChange,
1532
+ commit,
1533
+ responsive,
1534
+ presets: [],
1535
+ disablePast,
1536
+ disableFuture,
1537
+ minDate,
1538
+ maxDate,
1539
+ children: /* @__PURE__ */ jsx(PickerContent, {
1540
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1541
+ placeholder,
1542
+ clearable,
1543
+ disabled,
1544
+ className,
1545
+ triggerClassName,
1546
+ id,
1547
+ icon,
1548
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "date", { dateFormat })
1549
+ }),
1550
+ sheetTitle,
1551
+ sheetDescription,
1552
+ modal,
1553
+ contentClassName: popoverClassName,
1554
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1555
+ children: /* @__PURE__ */ jsx(PickerCalendar, {
1556
+ numberOfMonths,
1557
+ minDate,
1558
+ maxDate,
1559
+ disablePast,
1560
+ disableFuture
1561
+ })
1562
+ })
1563
+ });
1564
+ }
1565
+ DatePicker.displayName = "DatePicker";
1566
+ //#endregion
1567
+ //#region src/components/features/picker/wrappers/date-range-picker.tsx
1568
+ function DateRangePicker({ value, onChange, placeholder = "Pick a date range", clearable = true, responsive = true, sheetTitle = "Pick a date range", numberOfMonths = 2, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat }) {
1569
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1570
+ mode: "date-range",
1571
+ value,
1572
+ onChange,
1573
+ commit,
1574
+ responsive,
1575
+ presets,
1576
+ excludePresets,
1577
+ disablePast,
1578
+ disableFuture,
1579
+ minDate,
1580
+ maxDate,
1581
+ children: /* @__PURE__ */ jsx(PickerContent, {
1582
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1583
+ placeholder,
1584
+ clearable,
1585
+ disabled,
1586
+ className,
1587
+ triggerClassName,
1588
+ id,
1589
+ icon,
1590
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "date-range", { dateFormat })
1591
+ }),
1592
+ sheetTitle,
1593
+ sheetDescription,
1594
+ modal,
1595
+ contentClassName: popoverClassName,
1596
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1597
+ children: /* @__PURE__ */ jsxs("div", {
1598
+ className: "flex flex-col md:flex-row",
1599
+ children: [/* @__PURE__ */ jsx(PickerPresets, {}), /* @__PURE__ */ jsx(PickerCalendar, {
1600
+ numberOfMonths,
1601
+ minDate,
1602
+ maxDate,
1603
+ disablePast,
1604
+ disableFuture
1605
+ })]
1606
+ })
1607
+ })
1608
+ });
1609
+ }
1610
+ DateRangePicker.displayName = "DateRangePicker";
1611
+ //#endregion
1612
+ //#region src/components/features/picker/wrappers/date-range-time-picker.tsx
1613
+ function DateRangeTimePicker({ value, onChange, placeholder = "Pick a date range with time", clearable = true, responsive = true, sheetTitle = "Pick a date range with time", timezone, step = 15, hourCycle, numberOfMonths = 2, hideTimezone = false, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat, timeFormat }) {
1614
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1615
+ mode: "date-range-time",
1616
+ value,
1617
+ onChange,
1618
+ responsive,
1619
+ timezone,
1620
+ step,
1621
+ hourCycle,
1622
+ hideTimezone,
1623
+ presets,
1624
+ excludePresets,
1625
+ disablePast,
1626
+ disableFuture,
1627
+ minDate,
1628
+ maxDate,
1629
+ children: /* @__PURE__ */ jsx(PickerContent, {
1630
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1631
+ placeholder,
1632
+ clearable,
1633
+ disabled,
1634
+ className,
1635
+ triggerClassName,
1636
+ id,
1637
+ icon,
1638
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "date-range-time", {
1639
+ timezone,
1640
+ hourCycle,
1641
+ dateFormat,
1642
+ timeFormat
1643
+ })
1644
+ }),
1645
+ sheetTitle,
1646
+ sheetDescription,
1647
+ modal,
1648
+ contentClassName: popoverClassName,
1649
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1650
+ children: /* @__PURE__ */ jsxs("div", {
1651
+ className: "flex flex-col md:flex-row",
1652
+ children: [/* @__PURE__ */ jsx(PickerPresets, {}), /* @__PURE__ */ jsxs("div", {
1653
+ className: "flex flex-col",
1654
+ children: [
1655
+ /* @__PURE__ */ jsx(PickerCalendar, {
1656
+ numberOfMonths,
1657
+ minDate,
1658
+ maxDate,
1659
+ disablePast,
1660
+ disableFuture
1661
+ }),
1662
+ /* @__PURE__ */ jsxs("div", {
1663
+ className: "border-t p-3",
1664
+ children: [/* @__PURE__ */ jsx("div", {
1665
+ className: "text-muted-foreground mb-1 text-xs",
1666
+ children: "Time of day"
1667
+ }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "embedded-from" })]
1668
+ }),
1669
+ /* @__PURE__ */ jsx(PickerTimezoneIndicator, {})
1670
+ ]
1671
+ })]
1672
+ })
1673
+ })
1674
+ });
1675
+ }
1676
+ DateRangeTimePicker.displayName = "DateRangeTimePicker";
1677
+ //#endregion
1678
+ //#region src/components/features/picker/components/time-input-field.tsx
1679
+ function formatZonedTimeOfDay(iso, tz) {
1680
+ try {
1681
+ const d = isoToZonedDate(iso, tz);
1682
+ if (Number.isNaN(d.getTime())) return "";
1683
+ return `${String(d.getHours()).padStart(2, "0")}:${String(d.getMinutes()).padStart(2, "0")}`;
1684
+ } catch {
1685
+ return "";
1686
+ }
1687
+ }
1688
+ function PickerTimeInputField({ className, ariaLabel = "Select time", id }) {
1689
+ const { mode, timezone, state, actions } = usePickerContext();
1690
+ const isoValue = mode === "datetime" ? state.pendingValue : null;
1691
+ const externalTimeValue = isoValue ? formatZonedTimeOfDay(isoValue, timezone) : "";
1692
+ const [localValue, setLocalValue] = useState(externalTimeValue);
1693
+ useEffect(() => {
1694
+ setLocalValue(externalTimeValue);
1695
+ }, [externalTimeValue]);
1696
+ if (mode !== "datetime") return null;
1697
+ const disabled = isoValue === null;
1698
+ const handleChange = (e) => {
1699
+ const next = e.target.value;
1700
+ setLocalValue(next);
1701
+ if (!isoValue) return;
1702
+ const parsed = parseTimeString(next);
1703
+ if (!parsed) return;
1704
+ const d = isoToZonedDate(isoValue, timezone);
1705
+ d.setHours(parsed.h, parsed.m, 0, 0);
1706
+ actions.setSingleDatetime(zonedDateToIso(d, timezone));
1707
+ };
1708
+ return /* @__PURE__ */ jsx("input", {
1709
+ type: "text",
1710
+ id,
1711
+ "aria-label": ariaLabel,
1712
+ value: localValue,
1713
+ onChange: handleChange,
1714
+ disabled,
1715
+ className: cn("border-input-border bg-input-background/50 h-10 w-full rounded-lg border px-3 text-sm", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:cursor-not-allowed disabled:opacity-50", className)
1716
+ });
1717
+ }
1718
+ PickerTimeInputField.displayName = "Picker.TimeInputField";
1719
+ //#endregion
1720
+ //#region src/components/features/picker/wrappers/date-time-picker.tsx
1721
+ function DateTimePicker({ value, onChange, placeholder = "Pick a date & time", clearable = true, responsive = true, sheetTitle = "Pick a date & time", timezone, step = 15, hourCycle, numberOfMonths = 1, hideTimezone = false, timeInputMode = "slot", timezoneIndicatorVariant = "full", triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, dateFormat, timeFormat }) {
1722
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1723
+ mode: "datetime",
1724
+ value,
1725
+ onChange,
1726
+ responsive,
1727
+ timezone,
1728
+ step,
1729
+ hourCycle,
1730
+ hideTimezone,
1731
+ presets: [],
1732
+ disablePast,
1733
+ disableFuture,
1734
+ minDate,
1735
+ maxDate,
1736
+ children: /* @__PURE__ */ jsx(PickerContent, {
1737
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1738
+ placeholder,
1739
+ clearable,
1740
+ disabled,
1741
+ className,
1742
+ triggerClassName,
1743
+ id,
1744
+ icon,
1745
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "datetime", {
1746
+ timezone,
1747
+ hourCycle,
1748
+ dateFormat,
1749
+ timeFormat
1750
+ })
1751
+ }),
1752
+ sheetTitle,
1753
+ sheetDescription,
1754
+ modal,
1755
+ contentClassName: popoverClassName,
1756
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1757
+ children: /* @__PURE__ */ jsxs("div", {
1758
+ className: "flex flex-col",
1759
+ children: [
1760
+ /* @__PURE__ */ jsx(PickerCalendar, {
1761
+ numberOfMonths,
1762
+ minDate,
1763
+ maxDate,
1764
+ disablePast,
1765
+ disableFuture
1766
+ }),
1767
+ /* @__PURE__ */ jsx("div", {
1768
+ className: "border-t p-3",
1769
+ children: timeInputMode === "input" ? /* @__PURE__ */ jsx(PickerTimeInputField, {}) : /* @__PURE__ */ jsx(PickerTimeInput, { target: "embedded-from" })
1770
+ }),
1771
+ /* @__PURE__ */ jsx(PickerTimezoneIndicator, { variant: timezoneIndicatorVariant })
1772
+ ]
1773
+ })
1774
+ })
1775
+ });
1776
+ }
1777
+ DateTimePicker.displayName = "DateTimePicker";
1778
+ //#endregion
1779
+ //#region src/components/features/picker/wrappers/date-time-range-picker.tsx
1780
+ function DateTimeRangePicker({ value, onChange, placeholder = "Pick a date & time range", clearable = true, responsive = true, sheetTitle = "Pick a date & time range", timezone, step = 15, hourCycle, numberOfMonths = 2, hideTimezone = false, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat, timeFormat }) {
1781
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1782
+ mode: "datetime-range",
1783
+ value,
1784
+ onChange,
1785
+ responsive,
1786
+ timezone,
1787
+ step,
1788
+ hourCycle,
1789
+ hideTimezone,
1790
+ presets,
1791
+ excludePresets,
1792
+ disablePast,
1793
+ disableFuture,
1794
+ minDate,
1795
+ maxDate,
1796
+ children: /* @__PURE__ */ jsx(PickerContent, {
1797
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1798
+ placeholder,
1799
+ clearable,
1800
+ disabled,
1801
+ className,
1802
+ triggerClassName,
1803
+ id,
1804
+ icon,
1805
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "datetime-range", {
1806
+ timezone,
1807
+ hourCycle,
1808
+ dateFormat,
1809
+ timeFormat
1810
+ })
1811
+ }),
1812
+ sheetTitle,
1813
+ sheetDescription,
1814
+ modal,
1815
+ contentClassName: popoverClassName,
1816
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1817
+ children: /* @__PURE__ */ jsxs("div", {
1818
+ className: "flex flex-col md:flex-row",
1819
+ children: [/* @__PURE__ */ jsx(PickerPresets, {}), /* @__PURE__ */ jsxs("div", {
1820
+ className: "flex flex-col",
1821
+ children: [
1822
+ /* @__PURE__ */ jsx(PickerCalendar, {
1823
+ numberOfMonths,
1824
+ minDate,
1825
+ maxDate,
1826
+ disablePast,
1827
+ disableFuture
1828
+ }),
1829
+ /* @__PURE__ */ jsxs("div", {
1830
+ className: "flex gap-2 border-t p-3",
1831
+ children: [/* @__PURE__ */ jsxs("div", {
1832
+ className: "flex-1",
1833
+ children: [/* @__PURE__ */ jsx("div", {
1834
+ className: "text-muted-foreground mb-1 text-xs",
1835
+ children: "From"
1836
+ }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "embedded-from" })]
1837
+ }), /* @__PURE__ */ jsxs("div", {
1838
+ className: "flex-1",
1839
+ children: [/* @__PURE__ */ jsx("div", {
1840
+ className: "text-muted-foreground mb-1 text-xs",
1841
+ children: "To"
1842
+ }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "embedded-to" })]
1843
+ })]
1844
+ }),
1845
+ /* @__PURE__ */ jsx(PickerTimezoneIndicator, {})
1846
+ ]
1847
+ })]
1848
+ })
1849
+ })
1850
+ });
1851
+ }
1852
+ DateTimeRangePicker.displayName = "DateTimeRangePicker";
1853
+ //#endregion
1854
+ //#region src/components/features/picker/wrappers/time-picker.tsx
1855
+ const DEFAULT_TIME_ICON$1 = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
1856
+ function TimePicker({ value, onChange, placeholder = "Pick a time", clearable = true, responsive = true, sheetTitle = "Pick a time", step = 15, hourCycle, minTime, maxTime, timeFormat, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit }) {
1857
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1858
+ mode: "time",
1859
+ value,
1860
+ onChange,
1861
+ commit,
1862
+ responsive,
1863
+ step,
1864
+ hourCycle,
1865
+ children: /* @__PURE__ */ jsx(PickerContent, {
1866
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1867
+ placeholder,
1868
+ clearable,
1869
+ disabled,
1870
+ className,
1871
+ triggerClassName,
1872
+ id,
1873
+ icon: icon ?? DEFAULT_TIME_ICON$1,
1874
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "time", {
1875
+ hourCycle,
1876
+ timeFormat
1877
+ })
1878
+ }),
1879
+ sheetTitle,
1880
+ sheetDescription,
1881
+ modal,
1882
+ contentClassName: popoverClassName,
1883
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1884
+ children: /* @__PURE__ */ jsx(PickerTimeInput, {
1885
+ target: "single",
1886
+ min: minTime,
1887
+ max: maxTime
1888
+ })
1889
+ })
1890
+ });
1891
+ }
1892
+ TimePicker.displayName = "TimePicker";
1893
+ //#endregion
1894
+ //#region src/components/features/picker/wrappers/time-range-picker.tsx
1895
+ const DEFAULT_TIME_ICON = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
1896
+ function TimeRangePicker({ value, onChange, placeholder = "Pick a time range", clearable = true, responsive = true, sheetTitle = "Pick a time range", step = 15, hourCycle, timeFormat, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit }) {
1897
+ return /* @__PURE__ */ jsx(Picker$1.Root, {
1898
+ mode: "time-range",
1899
+ value,
1900
+ onChange,
1901
+ commit,
1902
+ responsive,
1903
+ step,
1904
+ hourCycle,
1905
+ children: /* @__PURE__ */ jsx(PickerContent, {
1906
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1907
+ placeholder,
1908
+ clearable,
1909
+ disabled,
1910
+ className,
1911
+ triggerClassName,
1912
+ id,
1913
+ icon: icon ?? DEFAULT_TIME_ICON,
1914
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "time-range", {
1915
+ hourCycle,
1916
+ timeFormat
1917
+ })
1918
+ }),
1919
+ sheetTitle,
1920
+ sheetDescription,
1921
+ modal,
1922
+ contentClassName: popoverClassName,
1923
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1924
+ children: /* @__PURE__ */ jsxs("div", {
1925
+ className: "flex gap-2 p-3",
1926
+ children: [/* @__PURE__ */ jsxs("div", {
1927
+ className: "flex-1",
1928
+ children: [/* @__PURE__ */ jsx("div", {
1929
+ className: "text-muted-foreground mb-1 text-xs",
1930
+ children: "From"
1931
+ }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "range-from" })]
1932
+ }), /* @__PURE__ */ jsxs("div", {
1933
+ className: "flex-1",
1934
+ children: [/* @__PURE__ */ jsx("div", {
1935
+ className: "text-muted-foreground mb-1 text-xs",
1936
+ children: "To"
1937
+ }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "range-to" })]
1938
+ })]
1939
+ })
1940
+ })
1941
+ });
1942
+ }
1943
+ TimeRangePicker.displayName = "TimeRangePicker";
1944
+ //#endregion
1945
+ export { isRangeMode as $, resolveCommit as A, PickerContext as B, DATE_PRESETS as C, formatTimeLabel as D, dateToYYYYMMDD as E, PickerClear as F, getTimezoneOffset as G, formatInTimezone as H, PickerFooter as I, ALLOWED_STEPS as J, isoToZonedDate as K, PickerReset as L, PickerPresets as M, PickerApply as N, isValidTimeString as O, PickerCancel as P, isDateBearingMode as Q, PickerContent as R, DATETIME_PRESETS as S, usePickerState as T, formatTimezoneLabel as U, usePickerContext as V, getBrowserTimezone as W, RANGE_MODES as X, DATE_BEARING_MODES as Y, TIME_BEARING_MODES as Z, PickerTimezoneSelect as _, DateRangeTimePicker as a, useTimeSlots as b, clampRange as c, formatPickerValue as d, isTimeBearingMode as et, isSameDate as f, PickerTrigger as g, Picker as h, DateTimePicker as i, useKeyboardShortcuts as j, parseTimeString as k, getDaysDifference as l, isSameStringRange as m, TimePicker as n, startOfDayInTz as nt, DateRangePicker as o, isSameDateRange as p, zonedDateToIso as q, DateTimeRangePicker as r, DatePicker as s, TimeRangePicker as t, endOfDayInTz as tt, isRangeValid as u, PickerTimezoneIndicator as v, getDefaultPresets as w, usePresets as x, PickerTimeInput as y, PickerCalendar as z };