@datum-cloud/datum-ui 0.8.1 → 0.9.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 (224) hide show
  1. package/dist/{adapter-context-NyGTDZYq.mjs → adapter-context-DemTWhel.mjs} +3 -3
  2. package/dist/alert/index.mjs +1 -1
  3. package/dist/{alert-BDj6od5I.mjs → alert-Cz56SqdN.mjs} +2 -2
  4. package/dist/app-navigation/index.mjs +2 -2
  5. package/dist/{app-navigation-rSOfo1KV.mjs → app-navigation-CnGkJvwF.mjs} +1 -1
  6. package/dist/autocomplete/index.mjs +1 -1
  7. package/dist/{autocomplete-DdbTQe6u.mjs → autocomplete-ChuPNldi.mjs} +6 -6
  8. package/dist/autosearch/index.mjs +12 -12
  9. package/dist/avatar-stack/index.mjs +1 -1
  10. package/dist/{avatar-stack-CDhlA1Nm.mjs → avatar-stack-WqoQ3l06.mjs} +1 -1
  11. package/dist/{button-D3RrsMfQ.mjs → button-Rw1xI-k9.mjs} +2 -2
  12. package/dist/calendar/index.mjs +1 -1
  13. package/dist/calendar-D_DriVHT.mjs +77 -0
  14. package/dist/{calendar-C-Hbf74r.mjs → calendar-Dwvq3Vu_.mjs} +6 -6
  15. package/dist/calendar-date-picker-CchHKodM.mjs +52 -0
  16. package/dist/chart/index.mjs +1 -1
  17. package/dist/{chart-CUa21ynK.mjs → chart-DgcOwkOh.mjs} +5 -5
  18. package/dist/code-editor/index.mjs +1 -1
  19. package/dist/{col-DISdGlqY.mjs → col-Q6yazFwL.mjs} +2 -1
  20. package/dist/components/base/button/button.d.ts.map +1 -1
  21. package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts +6 -5
  22. package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts.map +1 -1
  23. package/dist/components/features/calendar-date-picker/types.d.ts +19 -0
  24. package/dist/components/features/calendar-date-picker/types.d.ts.map +1 -1
  25. package/dist/components/features/code-editor/code-editor.d.ts +1 -1
  26. package/dist/components/features/code-editor/code-editor.d.ts.map +1 -1
  27. package/dist/components/features/code-editor/index.d.ts +1 -1
  28. package/dist/components/features/code-editor/index.d.ts.map +1 -1
  29. package/dist/components/features/code-editor/types.d.ts +25 -2
  30. package/dist/components/features/code-editor/types.d.ts.map +1 -1
  31. package/dist/components/features/data-table/core/client-provider.d.ts.map +1 -1
  32. package/dist/components/features/date-time-picker/date-time-picker.d.ts +12 -4
  33. package/dist/components/features/date-time-picker/date-time-picker.d.ts.map +1 -1
  34. package/dist/components/features/date-time-picker/types.d.ts +9 -0
  35. package/dist/components/features/date-time-picker/types.d.ts.map +1 -1
  36. package/dist/components/features/grid/components/col.d.ts +1 -1
  37. package/dist/components/features/grid/components/col.d.ts.map +1 -1
  38. package/dist/components/features/grid/components/row.d.ts +1 -1
  39. package/dist/components/features/grid/components/row.d.ts.map +1 -1
  40. package/dist/components/features/picker/components/calendar.d.ts +14 -0
  41. package/dist/components/features/picker/components/calendar.d.ts.map +1 -0
  42. package/dist/components/features/picker/components/content.d.ts +18 -0
  43. package/dist/components/features/picker/components/content.d.ts.map +1 -0
  44. package/dist/components/features/picker/components/context.d.ts +57 -0
  45. package/dist/components/features/picker/components/context.d.ts.map +1 -0
  46. package/dist/components/features/picker/components/footer.d.ts +35 -0
  47. package/dist/components/features/picker/components/footer.d.ts.map +1 -0
  48. package/dist/components/features/picker/components/index.d.ts +36 -0
  49. package/dist/components/features/picker/components/index.d.ts.map +1 -0
  50. package/dist/components/features/picker/components/presets.d.ts +9 -0
  51. package/dist/components/features/picker/components/presets.d.ts.map +1 -0
  52. package/dist/components/features/picker/components/root.d.ts +40 -0
  53. package/dist/components/features/picker/components/root.d.ts.map +1 -0
  54. package/dist/components/features/picker/components/time-input-field.d.ts +13 -0
  55. package/dist/components/features/picker/components/time-input-field.d.ts.map +1 -0
  56. package/dist/components/features/picker/components/time-input.d.ts +13 -0
  57. package/dist/components/features/picker/components/time-input.d.ts.map +1 -0
  58. package/dist/components/features/picker/components/timezone-indicator.d.ts +14 -0
  59. package/dist/components/features/picker/components/timezone-indicator.d.ts.map +1 -0
  60. package/dist/components/features/picker/components/timezone-select.d.ts +16 -0
  61. package/dist/components/features/picker/components/timezone-select.d.ts.map +1 -0
  62. package/dist/components/features/picker/components/trigger.d.ts +23 -0
  63. package/dist/components/features/picker/components/trigger.d.ts.map +1 -0
  64. package/dist/components/features/picker/hooks/index.d.ts +5 -0
  65. package/dist/components/features/picker/hooks/index.d.ts.map +1 -0
  66. package/dist/components/features/picker/hooks/use-keyboard-shortcuts.d.ts +25 -0
  67. package/dist/components/features/picker/hooks/use-keyboard-shortcuts.d.ts.map +1 -0
  68. package/dist/components/features/picker/hooks/use-picker-state.d.ts +51 -0
  69. package/dist/components/features/picker/hooks/use-picker-state.d.ts.map +1 -0
  70. package/dist/components/features/picker/hooks/use-presets.d.ts +24 -0
  71. package/dist/components/features/picker/hooks/use-presets.d.ts.map +1 -0
  72. package/dist/components/features/picker/hooks/use-time-slots.d.ts +21 -0
  73. package/dist/components/features/picker/hooks/use-time-slots.d.ts.map +1 -0
  74. package/dist/components/features/picker/index.d.ts +8 -0
  75. package/dist/components/features/picker/index.d.ts.map +1 -0
  76. package/dist/components/features/picker/internal/use-deprecation-warning.d.ts +9 -0
  77. package/dist/components/features/picker/internal/use-deprecation-warning.d.ts.map +1 -0
  78. package/dist/components/features/picker/presets/defaults.d.ts +16 -0
  79. package/dist/components/features/picker/presets/defaults.d.ts.map +1 -0
  80. package/dist/components/features/picker/presets/index.d.ts +2 -0
  81. package/dist/components/features/picker/presets/index.d.ts.map +1 -0
  82. package/dist/components/features/picker/types.d.ts +70 -0
  83. package/dist/components/features/picker/types.d.ts.map +1 -0
  84. package/dist/components/features/picker/utils/commit.d.ts +16 -0
  85. package/dist/components/features/picker/utils/commit.d.ts.map +1 -0
  86. package/dist/components/features/picker/utils/compare.d.ts +12 -0
  87. package/dist/components/features/picker/utils/compare.d.ts.map +1 -0
  88. package/dist/components/features/picker/utils/format-value.d.ts +25 -0
  89. package/dist/components/features/picker/utils/format-value.d.ts.map +1 -0
  90. package/dist/components/features/picker/utils/format.d.ts +38 -0
  91. package/dist/components/features/picker/utils/format.d.ts.map +1 -0
  92. package/dist/components/features/picker/utils/index.d.ts +7 -0
  93. package/dist/components/features/picker/utils/index.d.ts.map +1 -0
  94. package/dist/components/features/picker/utils/range.d.ts +26 -0
  95. package/dist/components/features/picker/utils/range.d.ts.map +1 -0
  96. package/dist/components/features/picker/utils/timezone.d.ts +38 -0
  97. package/dist/components/features/picker/utils/timezone.d.ts.map +1 -0
  98. package/dist/components/features/picker/wrappers/date-picker.d.ts +10 -0
  99. package/dist/components/features/picker/wrappers/date-picker.d.ts.map +1 -0
  100. package/dist/components/features/picker/wrappers/date-range-picker.d.ts +16 -0
  101. package/dist/components/features/picker/wrappers/date-range-picker.d.ts.map +1 -0
  102. package/dist/components/features/picker/wrappers/date-range-time-picker.d.ts +16 -0
  103. package/dist/components/features/picker/wrappers/date-range-time-picker.d.ts.map +1 -0
  104. package/dist/components/features/picker/wrappers/date-time-picker.d.ts +20 -0
  105. package/dist/components/features/picker/wrappers/date-time-picker.d.ts.map +1 -0
  106. package/dist/components/features/picker/wrappers/date-time-range-picker.d.ts +16 -0
  107. package/dist/components/features/picker/wrappers/date-time-range-picker.d.ts.map +1 -0
  108. package/dist/components/features/picker/wrappers/index.d.ts +16 -0
  109. package/dist/components/features/picker/wrappers/index.d.ts.map +1 -0
  110. package/dist/components/features/picker/wrappers/internal/default-footer.d.ts +7 -0
  111. package/dist/components/features/picker/wrappers/internal/default-footer.d.ts.map +1 -0
  112. package/dist/components/features/picker/wrappers/time-picker.d.ts +14 -0
  113. package/dist/components/features/picker/wrappers/time-picker.d.ts.map +1 -0
  114. package/dist/components/features/picker/wrappers/time-range-picker.d.ts +16 -0
  115. package/dist/components/features/picker/wrappers/time-range-picker.d.ts.map +1 -0
  116. package/dist/components/features/picker/wrappers/types.d.ts +118 -0
  117. package/dist/components/features/picker/wrappers/types.d.ts.map +1 -0
  118. package/dist/components/features/tag-input/tag-input.d.ts +1 -1
  119. package/dist/components/features/tag-input/tag-input.d.ts.map +1 -1
  120. package/dist/components/features/time-picker/time-picker.d.ts +5 -0
  121. package/dist/components/features/time-picker/time-picker.d.ts.map +1 -1
  122. package/dist/components/features/time-picker/types.d.ts +5 -0
  123. package/dist/components/features/time-picker/types.d.ts.map +1 -1
  124. package/dist/components/features/time-range-picker/index.d.ts +5 -0
  125. package/dist/components/features/time-range-picker/index.d.ts.map +1 -1
  126. package/dist/components/features/time-range-picker/time-range-picker.d.ts +19 -14
  127. package/dist/components/features/time-range-picker/time-range-picker.d.ts.map +1 -1
  128. package/dist/components/features/time-range-picker/types.d.ts +20 -0
  129. package/dist/components/features/time-range-picker/types.d.ts.map +1 -1
  130. package/dist/data-table/index.mjs +22 -15
  131. package/dist/date-picker/index.mjs +2 -2
  132. package/dist/date-range-picker-DNZh06zo.mjs +77 -0
  133. package/dist/date-time-picker/index.mjs +1 -1
  134. package/dist/date-time-picker-BiobghTJ.mjs +43 -0
  135. package/dist/date-time-picker-C0fF7s_e.mjs +109 -0
  136. package/dist/date-time-range-picker-cW4rbuFn.mjs +82 -0
  137. package/dist/default-footer-DbpemJVl.mjs +1037 -0
  138. package/dist/dropzone/index.mjs +1 -1
  139. package/dist/{dropzone-Bt0plEuw.mjs → dropzone-DXH0xHso.mjs} +1 -1
  140. package/dist/empty-content/index.mjs +1 -1
  141. package/dist/form/adapters/conform/index.mjs +19 -19
  142. package/dist/form/adapters/rhf/index.mjs +18 -18
  143. package/dist/form/index.mjs +2 -2
  144. package/dist/form/stepper/index.mjs +23 -23
  145. package/dist/{form-CCNN9VtJ.mjs → form-DvgKb4s4.mjs} +49 -42
  146. package/dist/{form-context-CeKyvO-A.mjs → form-context-0usxTumz.mjs} +3 -3
  147. package/dist/grid/index.mjs +1 -1
  148. package/dist/hooks/index.mjs +2 -2
  149. package/dist/index.mjs +41 -41
  150. package/dist/input-group/index.mjs +1 -1
  151. package/dist/{input-group-DDtz-RT7.mjs → input-group-CeMsDhOk.mjs} +1 -1
  152. package/dist/input-number/index.mjs +1 -1
  153. package/dist/{input-number-Diu-C6d5.mjs → input-number-BU4nno8J.mjs} +1 -1
  154. package/dist/loader-overlay/index.mjs +1 -1
  155. package/dist/map/index.mjs +1 -1
  156. package/dist/{map-qo7bY_g_.mjs → map-l7iwhEwM.mjs} +24 -27
  157. package/dist/more-actions/index.mjs +2 -2
  158. package/dist/{more-actions-Ca5qqd0H.mjs → more-actions-Baqor0yr.mjs} +2 -2
  159. package/dist/multi-select/index.mjs +1 -1
  160. package/dist/{multi-select-DM_dxnSV.mjs → multi-select-BHmtkQIi.mjs} +6 -6
  161. package/dist/page-title/index.mjs +1 -1
  162. package/dist/picker/index.mjs +273 -0
  163. package/dist/rich-text-editor/index.mjs +1 -1
  164. package/dist/{rich-text-editor-CQH_U4T5.mjs → rich-text-editor-aWuLRaj9.mjs} +1 -1
  165. package/dist/select/index.mjs +1 -1
  166. package/dist/select-By1ZqPgr.mjs +94 -0
  167. package/dist/select-Ck0szhAH.mjs +73 -0
  168. package/dist/sidebar/index.mjs +1 -1
  169. package/dist/{sidebar-B8LQJiNI.mjs → sidebar-CUnFkH7o.mjs} +32 -32
  170. package/dist/skeleton/index.mjs +1 -1
  171. package/dist/{skeleton-D4HOEiOZ.mjs → skeleton-CxAhQT6T.mjs} +1 -1
  172. package/dist/stepper/index.mjs +1 -1
  173. package/dist/{stepper-Beb-zbdL.mjs → stepper-adDdiJMx.mjs} +7 -7
  174. package/dist/styles/root.css +4 -2
  175. package/dist/styles/shadcn/shadcn.css +212 -213
  176. package/dist/switch/index.mjs +1 -1
  177. package/dist/table/index.mjs +1 -1
  178. package/dist/tag-input/index.mjs +1 -1
  179. package/dist/{tag-input-Bf4GMptp.mjs → tag-input-D3NYy9-_.mjs} +1 -1
  180. package/dist/task-queue/index.mjs +1 -1
  181. package/dist/{task-queue-dropdown-D-LncEWm.mjs → task-queue-dropdown-t9KKIL6j.mjs} +3 -3
  182. package/dist/textarea/index.mjs +1 -1
  183. package/dist/theme/index.mjs +1 -1
  184. package/dist/{themes-CAiN4b6G.mjs → themes-08-znmBI.mjs} +16 -16
  185. package/dist/time-input-9LdNL0Us.mjs +196 -0
  186. package/dist/time-picker/index.mjs +1 -1
  187. package/dist/time-picker-B-vpUClR.mjs +45 -0
  188. package/dist/time-picker-C840fLl6.mjs +49 -0
  189. package/dist/timezone-indicator-COoeMKKs.mjs +27 -0
  190. package/dist/{to-api-format-CgKcC9SK.mjs → to-api-format-CNqrcrz7.mjs} +58 -243
  191. package/dist/toast/index.mjs +2 -2
  192. package/dist/{toast-DDdLgY53.mjs → toast-Bd5Kk7BB.mjs} +1 -1
  193. package/dist/tooltip/index.mjs +1 -1
  194. package/dist/transfer/index.mjs +1 -1
  195. package/dist/{transfer-CoGPwOc6.mjs → transfer-CuJGL420.mjs} +6 -6
  196. package/dist/{types-CKIe2WlV.mjs → types-DvMIxilw.mjs} +9 -3
  197. package/dist/typography/index.mjs +1 -1
  198. package/dist/{typography-TRKP_CLT.mjs → typography-CBwfg-vz.mjs} +5 -5
  199. package/dist/{use-copy-to-clipboard-D7KyLIAt.mjs → use-copy-to-clipboard-ZHDvfV3W.mjs} +1 -1
  200. package/dist/use-deprecation-warning-Dy_DOyLu.mjs +20 -0
  201. package/dist/{use-display-touched-C-afz17j.mjs → use-display-touched-DpX3fsOl.mjs} +5 -5
  202. package/dist/{use-option-picker-BXQOfyrK.mjs → use-option-picker-DV5O68eV.mjs} +1 -1
  203. package/dist/utils/index.mjs +1 -1
  204. package/dist/visually-hidden/index.mjs +1 -1
  205. package/package.json +28 -23
  206. package/dist/calendar-date-picker-BaykEs6j.mjs +0 -749
  207. package/dist/date-time-picker-DKOxrhmc.mjs +0 -193
  208. package/dist/select-zxwykvQn.mjs +0 -163
  209. package/dist/time-picker-BZF5jbF6.mjs +0 -99
  210. package/dist/use-date-constraints-R3H4lIoT.mjs +0 -41
  211. /package/dist/{action-row-DnhBhMtt.mjs → action-row-ZaMsJ8cP.mjs} +0 -0
  212. /package/dist/{empty-content-CBh5bbtJ.mjs → empty-content-DTk_lwnh.mjs} +0 -0
  213. /package/dist/{hooks-DQXVwbrs.mjs → hooks-CnphNpwz.mjs} +0 -0
  214. /package/dist/{loader-overlay-C2WDla6V.mjs → loader-overlay-B3YEoOFJ.mjs} +0 -0
  215. /package/dist/{map-leaflet-imports-yWwH4CHB.mjs → map-leaflet-imports-Ix8F7E8j.mjs} +0 -0
  216. /package/dist/{page-title-ChLiv6gB.mjs → page-title-D5JhOpxV.mjs} +0 -0
  217. /package/dist/{skeleton-D2xuJdE1.mjs → skeleton-B1NOdZGM.mjs} +0 -0
  218. /package/dist/{switch-DcSF42Kc.mjs → switch-BcQaR1Bp.mjs} +0 -0
  219. /package/dist/{table-DWGT4cqh.mjs → table-ouGk4Vxe.mjs} +0 -0
  220. /package/dist/{textarea-BoChBcFz.mjs → textarea-q-k7DYwi.mjs} +0 -0
  221. /package/dist/{toast-D5XD7goD.mjs → toast-BWol1pyV.mjs} +0 -0
  222. /package/dist/{tooltip-a7NTDCWw.mjs → tooltip-CHuzXR_O.mjs} +0 -0
  223. /package/dist/{utils-BwB1mIdZ.mjs → utils-bUueJ2r9.mjs} +0 -0
  224. /package/dist/{visuallyhidden-BHOPczmW.mjs → visuallyhidden-CoIJOJ9z.mjs} +0 -0
@@ -1,9 +1,9 @@
1
- import * as React$1 from "react";
1
+ import * as React from "react";
2
2
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
3
3
  //#region src/components/themes/client-only.tsx
4
4
  function ClientOnly({ children, fallback = null }) {
5
- const [hasMounted, setHasMounted] = React$1.useState(false);
6
- React$1.useEffect(() => {
5
+ const [hasMounted, setHasMounted] = React.useState(false);
6
+ React.useEffect(() => {
7
7
  setHasMounted(true);
8
8
  }, []);
9
9
  if (!hasMounted) return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
@@ -40,7 +40,7 @@ function script(attribute, storageKey, defaultTheme, forcedTheme, themes, value,
40
40
  }
41
41
  //#endregion
42
42
  //#region src/components/themes/theme-script.tsx
43
- const ThemeScript = React$1.memo(({ forcedTheme, storageKey = "theme", attribute = "data-theme", enableSystem = true, enableColorScheme = true, defaultTheme = "system", value, themes = ["light", "dark"], nonce, scriptProps }) => {
43
+ const ThemeScript = React.memo(({ forcedTheme, storageKey = "theme", attribute = "data-theme", enableSystem = true, enableColorScheme = true, defaultTheme = "system", value, themes = ["light", "dark"], nonce, scriptProps }) => {
44
44
  const scriptArgs = JSON.stringify([
45
45
  attribute,
46
46
  storageKey,
@@ -63,7 +63,7 @@ const ThemeScript = React$1.memo(({ forcedTheme, storageKey = "theme", attribute
63
63
  const colorSchemes = ["light", "dark"];
64
64
  const MEDIA = "(prefers-color-scheme: dark)";
65
65
  const isServer = typeof window === "undefined";
66
- const ThemeContext = React$1.createContext(void 0);
66
+ const ThemeContext = React.createContext(void 0);
67
67
  const defaultContext = {
68
68
  setTheme: (_) => {},
69
69
  themes: []
@@ -73,20 +73,20 @@ function saveToLS(storageKey, value) {
73
73
  localStorage.setItem(storageKey, value);
74
74
  } catch {}
75
75
  }
76
- const useTheme = () => React$1.use(ThemeContext) ?? defaultContext;
76
+ const useTheme = () => React.use(ThemeContext) ?? defaultContext;
77
77
  function ThemeProvider(props) {
78
- if (React$1.use(ThemeContext)) return /* @__PURE__ */ jsx(Fragment$1, { children: props.children });
78
+ if (React.use(ThemeContext)) return /* @__PURE__ */ jsx(Fragment$1, { children: props.children });
79
79
  return /* @__PURE__ */ jsx(ThemeImpl, { ...props });
80
80
  }
81
81
  const defaultThemes = ["light", "dark"];
82
82
  function ThemeImpl({ forcedTheme, disableTransitionOnChange = false, enableSystem = true, enableColorScheme = true, storageKey = "theme", themes = defaultThemes, defaultTheme = enableSystem ? "system" : "light", attribute = "data-theme", value, children, nonce, scriptProps: _scriptProps }) {
83
- const [theme, setThemeState] = React$1.useState(() => isServer ? defaultTheme : getTheme(storageKey, defaultTheme));
84
- const [resolvedTheme, setResolvedTheme] = React$1.useState(() => {
83
+ const [theme, setThemeState] = React.useState(() => isServer ? defaultTheme : getTheme(storageKey, defaultTheme));
84
+ const [resolvedTheme, setResolvedTheme] = React.useState(() => {
85
85
  if (isServer) return defaultTheme === "dark" ? "dark" : "light";
86
86
  return theme === "system" ? getSystemTheme() : theme;
87
87
  });
88
88
  const attrs = !value ? themes : Object.values(value);
89
- const applyTheme = React$1.useCallback((theme) => {
89
+ const applyTheme = React.useCallback((theme) => {
90
90
  let resolved = theme;
91
91
  if (!resolved) return;
92
92
  if (theme === "system" && enableSystem) resolved = getSystemTheme();
@@ -109,7 +109,7 @@ function ThemeImpl({ forcedTheme, disableTransitionOnChange = false, enableSyste
109
109
  }
110
110
  enable?.();
111
111
  }, [nonce]);
112
- const setTheme = React$1.useCallback((value) => {
112
+ const setTheme = React.useCallback((value) => {
113
113
  if (typeof value === "function") setThemeState((prevTheme) => {
114
114
  const newTheme = value(prevTheme);
115
115
  saveToLS(storageKey, newTheme);
@@ -120,18 +120,18 @@ function ThemeImpl({ forcedTheme, disableTransitionOnChange = false, enableSyste
120
120
  saveToLS(storageKey, value);
121
121
  }
122
122
  }, []);
123
- const handleMediaQuery = React$1.useCallback((e) => {
123
+ const handleMediaQuery = React.useCallback((e) => {
124
124
  setResolvedTheme(getSystemTheme(e));
125
125
  if (theme === "system" && enableSystem && !forcedTheme) applyTheme("system");
126
126
  }, [theme, forcedTheme]);
127
- React$1.useEffect(() => {
127
+ React.useEffect(() => {
128
128
  if (typeof window === "undefined") return;
129
129
  const media = window.matchMedia(MEDIA);
130
130
  media.addListener(handleMediaQuery);
131
131
  handleMediaQuery(media);
132
132
  return () => media.removeListener(handleMediaQuery);
133
133
  }, [handleMediaQuery]);
134
- React$1.useEffect(() => {
134
+ React.useEffect(() => {
135
135
  if (typeof window === "undefined") return;
136
136
  const handleStorage = (e) => {
137
137
  if (e.key !== storageKey) return;
@@ -141,11 +141,11 @@ function ThemeImpl({ forcedTheme, disableTransitionOnChange = false, enableSyste
141
141
  window.addEventListener("storage", handleStorage);
142
142
  return () => window.removeEventListener("storage", handleStorage);
143
143
  }, [setTheme]);
144
- React$1.useEffect(() => {
144
+ React.useEffect(() => {
145
145
  if (typeof window !== "undefined") applyTheme(forcedTheme ?? theme);
146
146
  }, [forcedTheme, theme]);
147
147
  return /* @__PURE__ */ jsx(ThemeContext, {
148
- value: React$1.useMemo(() => ({
148
+ value: React.useMemo(() => ({
149
149
  theme,
150
150
  setTheme,
151
151
  forcedTheme,
@@ -0,0 +1,196 @@
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { t as Button } from "./button-Rw1xI-k9.mjs";
3
+ import { t as ResponsivePopover } from "./responsive-popover-D-t9bxSN.mjs";
4
+ import { n as OptionList, t as useOptionPicker } from "./use-option-picker-DV5O68eV.mjs";
5
+ import { A as zonedDateToIso, _ as formatTimeLabel, h as dateToHHmm, k as isoToZonedDate, w as usePickerContext, y as parseTimeString } from "./default-footer-DbpemJVl.mjs";
6
+ import { Clock } from "lucide-react";
7
+ import { useMemo, useState } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ //#region src/components/features/picker/hooks/use-time-slots.ts
10
+ function timeToMinutes(t) {
11
+ const parsed = parseTimeString(t);
12
+ return parsed ? parsed.h * 60 + parsed.m : null;
13
+ }
14
+ function minutesToTime(total) {
15
+ const h = Math.floor(total / 60);
16
+ const m = total % 60;
17
+ return `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
18
+ }
19
+ /**
20
+ * Generate an `OptionPickerOption[]` of HH:mm slots for the slot-dropdown UI.
21
+ *
22
+ * Slots are produced in pure minute arithmetic — DST is not considered (slots
23
+ * are wall-clock times of day, independent of any specific calendar date).
24
+ */
25
+ function useTimeSlots({ min, max, step = 15, hourCycle = "24" }) {
26
+ return useMemo(() => {
27
+ const minMinutes = min ? timeToMinutes(min) ?? 0 : 0;
28
+ const maxMinutes = max ? timeToMinutes(max) ?? 1439 : 1439;
29
+ const slots = [];
30
+ for (let m = minMinutes; m <= maxMinutes; m += step) {
31
+ if (m >= 1440) break;
32
+ const value = minutesToTime(m);
33
+ slots.push({
34
+ value,
35
+ label: formatTimeLabel(value, hourCycle)
36
+ });
37
+ }
38
+ return slots;
39
+ }, [
40
+ min,
41
+ max,
42
+ step,
43
+ hourCycle
44
+ ]);
45
+ }
46
+ //#endregion
47
+ //#region src/components/features/picker/components/time-input.tsx
48
+ function combineDateAndTime(dateIso, time, timezone) {
49
+ const d = isoToZonedDate(dateIso, timezone);
50
+ const parsed = parseTimeString(time);
51
+ if (!parsed) return dateIso;
52
+ d.setHours(parsed.h, parsed.m, 0, 0);
53
+ return zonedDateToIso(d, timezone);
54
+ }
55
+ function PickerTimeInput({ target, min, max, className }) {
56
+ const { mode, timezone, hourCycle, step, state, actions } = usePickerContext();
57
+ let effectiveMin = min;
58
+ if (target === "range-to" && mode === "time-range") {
59
+ const fromValue = state.pendingValue?.from;
60
+ if (fromValue) effectiveMin = min && min > fromValue ? min : fromValue;
61
+ }
62
+ const slots = useTimeSlots({
63
+ min: effectiveMin,
64
+ max,
65
+ step,
66
+ hourCycle
67
+ });
68
+ let currentValue;
69
+ let embeddedDisabled = false;
70
+ if (target === "single" && mode === "time") currentValue = state.pendingValue ?? void 0;
71
+ else if ((target === "range-from" || target === "range-to") && mode === "time-range") {
72
+ const v = state.pendingValue;
73
+ currentValue = target === "range-from" ? v?.from : v?.to;
74
+ } else if (target === "embedded-from" || target === "embedded-to") {
75
+ if (mode === "datetime-range" || mode === "date-range-time") {
76
+ const v = state.pendingValue;
77
+ const iso = target === "embedded-from" ? v?.from : v?.to;
78
+ currentValue = iso ? dateToHHmm(isoToZonedDate(iso, timezone)) : void 0;
79
+ embeddedDisabled = v === null;
80
+ } else if (mode === "datetime") {
81
+ const iso = state.pendingValue;
82
+ currentValue = iso ? dateToHHmm(isoToZonedDate(iso, timezone)) : void 0;
83
+ embeddedDisabled = iso === null;
84
+ }
85
+ }
86
+ const handleSelect = (newTime) => {
87
+ if (target === "single" && mode === "time") {
88
+ actions.setSingleTime(newTime);
89
+ return;
90
+ }
91
+ if (mode === "time-range") {
92
+ const v = state.pendingValue ?? {
93
+ from: "00:00",
94
+ to: "23:59"
95
+ };
96
+ const next = target === "range-from" ? {
97
+ from: newTime,
98
+ to: v.to
99
+ } : {
100
+ from: v.from,
101
+ to: newTime
102
+ };
103
+ actions.setTimeRange(next);
104
+ return;
105
+ }
106
+ if (mode === "datetime-range" || mode === "date-range-time") {
107
+ const v = state.pendingValue;
108
+ if (!v) return;
109
+ const next = target === "embedded-from" ? {
110
+ from: combineDateAndTime(v.from, newTime, timezone),
111
+ to: v.to
112
+ } : {
113
+ from: v.from,
114
+ to: combineDateAndTime(v.to, newTime, timezone)
115
+ };
116
+ actions.setDatetimeRange(next);
117
+ return;
118
+ }
119
+ if (mode === "datetime" && (target === "embedded-from" || target === "embedded-to")) {
120
+ const v = state.pendingValue;
121
+ if (!v) return;
122
+ actions.setSingleDatetime(combineDateAndTime(v, newTime, timezone));
123
+ }
124
+ };
125
+ if (target === "single" || target === "range-from" || target === "range-to") return /* @__PURE__ */ jsx(InlineSlotList, {
126
+ slots,
127
+ value: currentValue,
128
+ onSelect: handleSelect,
129
+ className
130
+ });
131
+ return /* @__PURE__ */ jsx(EmbeddedSlotInput, {
132
+ label: currentValue ? formatTimeLabel(currentValue, hourCycle) : "— : —",
133
+ slots,
134
+ value: currentValue,
135
+ onSelect: handleSelect,
136
+ disabled: embeddedDisabled,
137
+ className
138
+ });
139
+ }
140
+ PickerTimeInput.displayName = "Picker.TimeInput";
141
+ function InlineSlotList({ slots, value, onSelect, className }) {
142
+ const [open, setOpen] = useState(true);
143
+ return /* @__PURE__ */ jsx(OptionList, {
144
+ picker: useOptionPicker({
145
+ multiple: false,
146
+ options: slots,
147
+ value,
148
+ onValueChange: (next) => {
149
+ if (typeof next === "string") onSelect(next);
150
+ },
151
+ open,
152
+ onOpenChange: setOpen
153
+ }),
154
+ disableSearch: slots.length <= 48,
155
+ searchPlaceholder: "Search time...",
156
+ listClassName: cn("max-h-[240px]", className)
157
+ });
158
+ }
159
+ function EmbeddedSlotInput({ label, slots, value, onSelect, disabled = false, className }) {
160
+ const [open, setOpen] = useState(false);
161
+ const picker = useOptionPicker({
162
+ multiple: false,
163
+ options: slots,
164
+ value,
165
+ onValueChange: (next) => {
166
+ if (typeof next === "string") {
167
+ onSelect(next);
168
+ setOpen(false);
169
+ }
170
+ },
171
+ open,
172
+ onOpenChange: disabled ? () => {} : setOpen
173
+ });
174
+ return /* @__PURE__ */ jsx(ResponsivePopover, {
175
+ open,
176
+ onOpenChange: disabled ? () => {} : setOpen,
177
+ sheetTitle: "Select time",
178
+ trigger: /* @__PURE__ */ jsxs(Button, {
179
+ type: "button",
180
+ variant: "outline",
181
+ disabled,
182
+ className: cn("h-8 gap-1.5 px-2 text-xs font-normal", className),
183
+ children: [/* @__PURE__ */ jsx(Clock, { className: "size-3.5 opacity-60" }), /* @__PURE__ */ jsx("span", { children: label })]
184
+ }),
185
+ align: "start",
186
+ contentClassName: "w-[200px]",
187
+ children: /* @__PURE__ */ jsx(OptionList, {
188
+ picker,
189
+ disableSearch: slots.length <= 48,
190
+ searchPlaceholder: "Search time...",
191
+ listClassName: "max-h-[240px]"
192
+ })
193
+ });
194
+ }
195
+ //#endregion
196
+ export { useTimeSlots as n, PickerTimeInput as t };
@@ -1,2 +1,2 @@
1
- import { t as TimePicker } from "../time-picker-BZF5jbF6.mjs";
1
+ import { t as TimePicker } from "../time-picker-C840fLl6.mjs";
2
2
  export { TimePicker };
@@ -0,0 +1,45 @@
1
+ import { S as PickerContent, c as PickerTrigger, l as Picker, s as formatPickerValue, t as DefaultFooter } from "./default-footer-DbpemJVl.mjs";
2
+ import { t as PickerTimeInput } from "./time-input-9LdNL0Us.mjs";
3
+ import { Clock } from "lucide-react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/features/picker/wrappers/time-picker.tsx
6
+ const DEFAULT_TIME_ICON = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
7
+ 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 }) {
8
+ return /* @__PURE__ */ jsx(Picker.Root, {
9
+ mode: "time",
10
+ value,
11
+ onChange,
12
+ commit,
13
+ responsive,
14
+ step,
15
+ hourCycle,
16
+ children: /* @__PURE__ */ jsx(PickerContent, {
17
+ trigger: /* @__PURE__ */ jsx(PickerTrigger, {
18
+ placeholder,
19
+ clearable,
20
+ disabled,
21
+ className,
22
+ triggerClassName,
23
+ id,
24
+ icon: icon ?? DEFAULT_TIME_ICON,
25
+ children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "time", {
26
+ hourCycle,
27
+ timeFormat
28
+ })
29
+ }),
30
+ sheetTitle,
31
+ sheetDescription,
32
+ modal,
33
+ contentClassName: popoverClassName,
34
+ footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
35
+ children: /* @__PURE__ */ jsx(PickerTimeInput, {
36
+ target: "single",
37
+ min: minTime,
38
+ max: maxTime
39
+ })
40
+ })
41
+ });
42
+ }
43
+ TimePicker.displayName = "TimePicker";
44
+ //#endregion
45
+ export { TimePicker as t };
@@ -0,0 +1,49 @@
1
+ import { t as useDeprecationWarning } from "./use-deprecation-warning-Dy_DOyLu.mjs";
2
+ import { t as TimePicker$1 } from "./time-picker-B-vpUClR.mjs";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/components/features/time-picker/time-picker.tsx
5
+ const STEP_VALUES = [
6
+ 1,
7
+ 5,
8
+ 10,
9
+ 15,
10
+ 30,
11
+ 60
12
+ ];
13
+ function normalizeStep(step) {
14
+ if (step === void 0) return 15;
15
+ return STEP_VALUES.includes(step) ? step : 15;
16
+ }
17
+ /**
18
+ * @deprecated Use `TimePicker` from `@datum-cloud/datum-ui/picker` instead.
19
+ * This adapter shim ships through 0.10.x and is removed in 1.0.0. See
20
+ * `picker-migration.mdx`.
21
+ */
22
+ function TimePicker({ value, onChange, min, max, step, placeholder, disabled, className, id, name, responsive = true, sheetTitle }) {
23
+ useDeprecationWarning("TimePicker (legacy)", "TimePicker");
24
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(TimePicker$1, {
25
+ value: value ?? null,
26
+ onChange: (next) => {
27
+ onChange?.(next ?? "");
28
+ },
29
+ placeholder: placeholder ?? "Select time",
30
+ sheetTitle: sheetTitle ?? placeholder ?? "Select time",
31
+ responsive,
32
+ disabled,
33
+ className,
34
+ triggerClassName: className,
35
+ id,
36
+ step: normalizeStep(step),
37
+ hourCycle: "12",
38
+ minTime: min,
39
+ maxTime: max
40
+ }), name && /* @__PURE__ */ jsx("input", {
41
+ type: "hidden",
42
+ name,
43
+ value: value ?? "",
44
+ readOnly: true
45
+ })] });
46
+ }
47
+ TimePicker.displayName = "TimePicker";
48
+ //#endregion
49
+ export { TimePicker as t };
@@ -0,0 +1,27 @@
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { E as formatTimezoneLabel, L as isTimeBearingMode, w as usePickerContext } from "./default-footer-DbpemJVl.mjs";
3
+ import { Globe } from "lucide-react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/features/picker/components/timezone-indicator.tsx
6
+ function PickerTimezoneIndicator({ className, variant = "full" }) {
7
+ const { mode, timezone, hideTimezone } = usePickerContext();
8
+ if (hideTimezone) return null;
9
+ if (!isTimeBearingMode(mode)) return null;
10
+ if (variant === "compact") return /* @__PURE__ */ jsx("span", {
11
+ "data-slot": "picker-tz-indicator",
12
+ className: cn("text-muted-foreground text-xs", className),
13
+ children: timezone
14
+ });
15
+ return /* @__PURE__ */ jsxs("div", {
16
+ "data-slot": "picker-tz-indicator",
17
+ className: cn("text-muted-foreground bg-muted/30 flex items-center gap-2 px-3 py-2 text-xs", className),
18
+ children: [/* @__PURE__ */ jsx(Globe, { className: "size-3.5" }), /* @__PURE__ */ jsxs("span", { children: [
19
+ "Times shown in",
20
+ " ",
21
+ formatTimezoneLabel(timezone)
22
+ ] })]
23
+ });
24
+ }
25
+ PickerTimezoneIndicator.displayName = "Picker.TimezoneIndicator";
26
+ //#endregion
27
+ export { PickerTimezoneIndicator as t };