@datum-cloud/datum-ui 0.6.0-alpha.a49f238 → 0.6.0-alpha.a9a8815

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 (103) hide show
  1. package/README.md +3 -0
  2. package/dist/combobox/index.mjs +2 -0
  3. package/dist/combobox-cKTFK4uN.mjs +96 -0
  4. package/dist/components/features/combobox/combobox.d.ts +27 -0
  5. package/dist/components/features/combobox/combobox.d.ts.map +1 -0
  6. package/dist/components/features/combobox/index.d.ts +3 -0
  7. package/dist/components/features/combobox/index.d.ts.map +1 -0
  8. package/dist/components/features/combobox/types.d.ts +78 -0
  9. package/dist/components/features/combobox/types.d.ts.map +1 -0
  10. package/dist/components/features/date-time-picker/date-time-picker.d.ts +9 -0
  11. package/dist/components/features/date-time-picker/date-time-picker.d.ts.map +1 -0
  12. package/dist/components/features/date-time-picker/index.d.ts +3 -0
  13. package/dist/components/features/date-time-picker/index.d.ts.map +1 -0
  14. package/dist/components/features/date-time-picker/types.d.ts +53 -0
  15. package/dist/components/features/date-time-picker/types.d.ts.map +1 -0
  16. package/dist/components/features/date-time-picker/utils/format.d.ts +13 -0
  17. package/dist/components/features/date-time-picker/utils/format.d.ts.map +1 -0
  18. package/dist/components/features/date-time-picker/utils/index.d.ts +3 -0
  19. package/dist/components/features/date-time-picker/utils/index.d.ts.map +1 -0
  20. package/dist/components/features/date-time-picker/utils/timezone.d.ts +23 -0
  21. package/dist/components/features/date-time-picker/utils/timezone.d.ts.map +1 -0
  22. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts.map +1 -1
  23. package/dist/components/features/form/components/form-autosearch.d.ts +25 -0
  24. package/dist/components/features/form/components/form-autosearch.d.ts.map +1 -0
  25. package/dist/components/features/form/components/form-combobox.d.ts +76 -0
  26. package/dist/components/features/form/components/form-combobox.d.ts.map +1 -0
  27. package/dist/components/features/form/components/form-date-picker.d.ts +38 -0
  28. package/dist/components/features/form/components/form-date-picker.d.ts.map +1 -0
  29. package/dist/components/features/form/components/form-date-time-picker.d.ts +37 -0
  30. package/dist/components/features/form/components/form-date-time-picker.d.ts.map +1 -0
  31. package/dist/components/features/form/components/form-time-picker.d.ts +21 -0
  32. package/dist/components/features/form/components/form-time-picker.d.ts.map +1 -0
  33. package/dist/components/features/form/components/form-transfer.d.ts +37 -0
  34. package/dist/components/features/form/components/form-transfer.d.ts.map +1 -0
  35. package/dist/components/features/form/components/index.d.ts +6 -0
  36. package/dist/components/features/form/components/index.d.ts.map +1 -1
  37. package/dist/components/features/form/index.d.ts +8 -2
  38. package/dist/components/features/form/index.d.ts.map +1 -1
  39. package/dist/components/features/form/utils/get-field-constraints.d.ts +33 -1
  40. package/dist/components/features/form/utils/get-field-constraints.d.ts.map +1 -1
  41. package/dist/components/features/time-picker/index.d.ts +3 -0
  42. package/dist/components/features/time-picker/index.d.ts.map +1 -0
  43. package/dist/components/features/time-picker/time-picker.d.ts +22 -0
  44. package/dist/components/features/time-picker/time-picker.d.ts.map +1 -0
  45. package/dist/components/features/time-picker/types.d.ts +31 -0
  46. package/dist/components/features/time-picker/types.d.ts.map +1 -0
  47. package/dist/components/features/transfer/components/index.d.ts +9 -0
  48. package/dist/components/features/transfer/components/index.d.ts.map +1 -0
  49. package/dist/components/features/transfer/components/transfer-group.d.ts +7 -0
  50. package/dist/components/features/transfer/components/transfer-group.d.ts.map +1 -0
  51. package/dist/components/features/transfer/components/transfer-item.d.ts +10 -0
  52. package/dist/components/features/transfer/components/transfer-item.d.ts.map +1 -0
  53. package/dist/components/features/transfer/components/transfer-panel.d.ts +18 -0
  54. package/dist/components/features/transfer/components/transfer-panel.d.ts.map +1 -0
  55. package/dist/components/features/transfer/components/transfer-search.d.ts +9 -0
  56. package/dist/components/features/transfer/components/transfer-search.d.ts.map +1 -0
  57. package/dist/components/features/transfer/hooks/use-transfer-dnd.d.ts +26 -0
  58. package/dist/components/features/transfer/hooks/use-transfer-dnd.d.ts.map +1 -0
  59. package/dist/components/features/transfer/hooks/use-transfer-state.d.ts +20 -0
  60. package/dist/components/features/transfer/hooks/use-transfer-state.d.ts.map +1 -0
  61. package/dist/components/features/transfer/index.d.ts +3 -0
  62. package/dist/components/features/transfer/index.d.ts.map +1 -0
  63. package/dist/components/features/transfer/transfer.d.ts +6 -0
  64. package/dist/components/features/transfer/transfer.d.ts.map +1 -0
  65. package/dist/components/features/transfer/types.d.ts +69 -0
  66. package/dist/components/features/transfer/types.d.ts.map +1 -0
  67. package/dist/date-picker/index.mjs +1 -1
  68. package/dist/date-time-picker/index.mjs +2 -0
  69. package/dist/date-time-picker-Bx_n4nEJ.mjs +177 -0
  70. package/dist/form/adapters/conform/index.mjs +8 -2
  71. package/dist/form/adapters/rhf/index.mjs +2 -2
  72. package/dist/form/index.mjs +3 -3
  73. package/dist/form/stepper/index.mjs +2 -2
  74. package/dist/{form-C6AOB2f4.mjs → form-zf5QOnAk.mjs} +217 -3
  75. package/dist/{get-field-constraints-D4xnXJEg.mjs → get-field-constraints-CxfZ753o.mjs} +1 -0
  76. package/dist/grid/index.mjs +1 -1
  77. package/dist/hooks/index.mjs +2 -2
  78. package/dist/index.mjs +14 -14
  79. package/dist/input-number/index.mjs +1 -1
  80. package/dist/map/index.mjs +1 -1
  81. package/dist/{map-BqpteT_8.mjs → map-CWIQ-eql.mjs} +1 -1
  82. package/dist/more-actions/index.mjs +1 -1
  83. package/dist/page-title/index.mjs +1 -1
  84. package/dist/stepper/index.mjs +1 -1
  85. package/dist/tag-input/index.mjs +1 -1
  86. package/dist/task-queue/index.mjs +1 -1
  87. package/dist/time-picker/index.mjs +2 -0
  88. package/dist/time-picker-BoF7pZZ2.mjs +43 -0
  89. package/dist/transfer/index.mjs +2 -0
  90. package/dist/transfer-C55XfEXy.mjs +243 -0
  91. package/package.json +32 -1
  92. /package/dist/{adapter-context-BFqfq4Io.mjs → adapter-context-rWveHhDd.mjs} +0 -0
  93. /package/dist/{col-CiSpQPUT.mjs → col-1T0Q3SlH.mjs} +0 -0
  94. /package/dist/{hooks-DNjmSsJT.mjs → hooks-D8r2M2U6.mjs} +0 -0
  95. /package/dist/{input-number-BTQdHqVZ.mjs → input-number-a7uydAsw.mjs} +0 -0
  96. /package/dist/{map-leaflet-imports-CT4SpoDi.mjs → map-leaflet-imports-CRSKA79m.mjs} +0 -0
  97. /package/dist/{more-actions-CucrYUnA.mjs → more-actions-ILnEZq_E.mjs} +0 -0
  98. /package/dist/{page-title-CmsIi_A3.mjs → page-title-ChsnpBiH.mjs} +0 -0
  99. /package/dist/{stepper-C92Ib8Iy.mjs → stepper-DvIOp0hh.mjs} +0 -0
  100. /package/dist/{tag-input-B91C2wdr.mjs → tag-input-T9cUX9-G.mjs} +0 -0
  101. /package/dist/{task-queue-dropdown-OOFuJcHb.mjs → task-queue-dropdown-Wcbj-f0V.mjs} +0 -0
  102. /package/dist/{to-api-format-P0gmlqe8.mjs → to-api-format-Bh3c01gr.mjs} +0 -0
  103. /package/dist/{use-copy-to-clipboard-C2IEmhDn.mjs → use-copy-to-clipboard-uNeeVHC4.mjs} +0 -0
@@ -1,5 +1,5 @@
1
- import { t as FormAdapterProvider } from "../../../adapter-context-BFqfq4Io.mjs";
2
- import { t as getFieldConstraints } from "../../../get-field-constraints-D4xnXJEg.mjs";
1
+ import { t as FormAdapterProvider } from "../../../adapter-context-rWveHhDd.mjs";
2
+ import { t as getFieldConstraints } from "../../../get-field-constraints-CxfZ753o.mjs";
3
3
  import * as React$1 from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { FormProvider, getFormProps, getInputProps, useForm, useFormMetadata, useInputControl } from "@conform-to/react";
@@ -42,11 +42,17 @@ function convertFromString(value) {
42
42
  if (value === void 0) return void 0;
43
43
  if (Array.isArray(value)) return value[0];
44
44
  if (value === "on") return true;
45
+ if (value.startsWith("[") && value.endsWith("]")) try {
46
+ return JSON.parse(value);
47
+ } catch {
48
+ return value;
49
+ }
45
50
  return value;
46
51
  }
47
52
  function convertToString(value) {
48
53
  if (typeof value === "boolean") return value ? "on" : "";
49
54
  if (value === null || value === void 0) return "";
55
+ if (Array.isArray(value)) return JSON.stringify(value);
50
56
  return String(value);
51
57
  }
52
58
  /** Create a Conform form instance and normalize it to the adapter interface. */
@@ -1,5 +1,5 @@
1
- import { t as FormAdapterProvider } from "../../../adapter-context-BFqfq4Io.mjs";
2
- import { t as getFieldConstraints } from "../../../get-field-constraints-D4xnXJEg.mjs";
1
+ import { t as FormAdapterProvider } from "../../../adapter-context-rWveHhDd.mjs";
2
+ import { t as getFieldConstraints } from "../../../get-field-constraints-CxfZ753o.mjs";
3
3
  import * as React$1 from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { zodResolver } from "@hookform/resolvers/zod";
@@ -1,3 +1,3 @@
1
- import { C as FormCustom, D as FormAutocomplete, E as FormButton, S as FormDescription, T as FormCheckbox, _ as FormInput, a as useField, b as FormError, c as useWatchAll, d as FormSubmit, f as FormSelect, g as FormRadioItem, h as FormRadioGroup, i as useFieldContext, l as FormTextarea, m as FormRoot, n as useFormState, o as FormWhen, p as FormSelectItem, r as useFormContext, s as useWatch, t as Form, u as FormSwitch, v as FormFieldArray, w as FormCopyBox, x as FormDialog, y as FormField } from "../form-C6AOB2f4.mjs";
2
- import { n as useAdapter, t as FormAdapterProvider } from "../adapter-context-BFqfq4Io.mjs";
3
- export { Form, FormAdapterProvider, FormAutocomplete, FormButton, FormCheckbox, FormCopyBox, FormCustom, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormWhen, useAdapter, useField, useFieldContext, useFormContext, useFormState, useWatch, useWatchAll };
1
+ import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "../form-zf5QOnAk.mjs";
2
+ import { n as useAdapter, t as FormAdapterProvider } from "../adapter-context-rWveHhDd.mjs";
3
+ export { Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, useAdapter, useField, useFieldContext, useFormContext, useFormState, useWatch, useWatchAll };
@@ -1,8 +1,8 @@
1
1
  import { t as cn } from "../../cn-D2KYQ917.mjs";
2
2
  import { t as Button } from "../../button-BllvE9Lm.mjs";
3
3
  import { n as useFormContext, t as FormProvider } from "../../form-context-Ccxm-wqL.mjs";
4
- import { n as useAdapter } from "../../adapter-context-BFqfq4Io.mjs";
5
- import { t as defineStepper } from "../../stepper-C92Ib8Iy.mjs";
4
+ import { n as useAdapter } from "../../adapter-context-rWveHhDd.mjs";
5
+ import { t as defineStepper } from "../../stepper-DvIOp0hh.mjs";
6
6
  import { CheckIcon } from "lucide-react";
7
7
  import * as React$1 from "react";
8
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -11,10 +11,15 @@ import { t as Tooltip } from "./tooltip-Cruvl5F6.mjs";
11
11
  import { t as Switch } from "./switch-DQJQhPIQ.mjs";
12
12
  import { t as Textarea } from "./textarea-BwD-MmTV.mjs";
13
13
  import { t as Autocomplete } from "./autocomplete-V5-qslzS.mjs";
14
+ import { t as CalendarDatePicker } from "./calendar-date-picker-DWK94_DC.mjs";
14
15
  import { t as toast } from "./toast-BWnN5fax.mjs";
15
16
  import { n as useFormContext$1, t as FormProvider } from "./form-context-Ccxm-wqL.mjs";
16
- import { t as useCopyToClipboard } from "./use-copy-to-clipboard-C2IEmhDn.mjs";
17
- import { n as useAdapter } from "./adapter-context-BFqfq4Io.mjs";
17
+ import { t as Combobox } from "./combobox-cKTFK4uN.mjs";
18
+ import { t as useCopyToClipboard } from "./use-copy-to-clipboard-uNeeVHC4.mjs";
19
+ import { t as DateTimePicker } from "./date-time-picker-Bx_n4nEJ.mjs";
20
+ import { n as useAdapter } from "./adapter-context-rWveHhDd.mjs";
21
+ import { t as TimePicker } from "./time-picker-BoF7pZZ2.mjs";
22
+ import { t as Transfer } from "./transfer-C55XfEXy.mjs";
18
23
  import { InputWithAddons } from "./input-with-addons/index.mjs";
19
24
  import { CheckIcon, CircleHelp, CopyIcon } from "lucide-react";
20
25
  import * as React$1 from "react";
@@ -97,6 +102,28 @@ function FormAutocomplete({ disabled, className, ...props }) {
97
102
  }
98
103
  FormAutocomplete.displayName = "Form.Autocomplete";
99
104
  //#endregion
105
+ //#region src/components/features/form/components/form-autosearch.tsx
106
+ /**
107
+ * Form.Autosearch - Alias to Form.Autocomplete with search-first focus
108
+ *
109
+ * This is a convenience wrapper around Form.Autocomplete that emphasizes
110
+ * the search functionality. It's functionally identical to Form.Autocomplete.
111
+ *
112
+ * @example Basic usage
113
+ * ```tsx
114
+ * <Form.Field name="search" label="Search">
115
+ * <Form.Autosearch
116
+ * options={options}
117
+ * placeholder="Type to search..."
118
+ * />
119
+ * </Form.Field>
120
+ * ```
121
+ */
122
+ function FormAutosearch(props) {
123
+ return /* @__PURE__ */ jsx(FormAutocomplete, { ...props });
124
+ }
125
+ FormAutosearch.displayName = "Form.Autosearch";
126
+ //#endregion
100
127
  //#region src/components/features/form/components/form-button.tsx
101
128
  /**
102
129
  * Form.Button - A button for non-submit actions within a form
@@ -166,6 +193,34 @@ function FormCheckbox({ label, disabled, className }) {
166
193
  }
167
194
  FormCheckbox.displayName = "Form.Checkbox";
168
195
  //#endregion
196
+ //#region src/components/features/form/components/form-combobox.tsx
197
+ function FormCombobox({ options, placeholder, searchPlaceholder, emptyMessage, disabled, className, triggerClassName, contentClassName, searchable = true, showDropdownArrow = true, clearable = false, "data-testid": testId }) {
198
+ const { id, errors, disabled: fieldDisabled, fieldState } = useFieldContext$1();
199
+ const isDisabled = disabled ?? fieldDisabled;
200
+ const hasErrors = errors && errors.length > 0;
201
+ const handleChange = React$1.useCallback((value) => {
202
+ fieldState?.change(value ?? "");
203
+ }, [fieldState]);
204
+ return /* @__PURE__ */ jsx(Combobox, {
205
+ id,
206
+ options,
207
+ value: fieldState?.value ?? "",
208
+ onChange: handleChange,
209
+ placeholder,
210
+ searchPlaceholder,
211
+ emptyMessage,
212
+ disabled: isDisabled,
213
+ searchable,
214
+ showDropdownArrow,
215
+ clearable,
216
+ className,
217
+ triggerClassName: cn(hasErrors && "border-destructive", triggerClassName),
218
+ contentClassName,
219
+ "data-testid": testId
220
+ });
221
+ }
222
+ FormCombobox.displayName = "FormCombobox";
223
+ //#endregion
169
224
  //#region src/components/features/form/components/form-copy-box.tsx
170
225
  /**
171
226
  * Form.CopyBox - Read-only field with copy-to-clipboard functionality
@@ -272,6 +327,97 @@ function FormCustom({ children }) {
272
327
  }
273
328
  FormCustom.displayName = "Form.Custom";
274
329
  //#endregion
330
+ //#region src/components/features/form/components/form-date-picker.tsx
331
+ function FormDatePicker({ placeholder, disabled, className, triggerClassName, numberOfMonths = 1, minDate: minDateProp, maxDate: maxDateProp, disableFuture, disablePast }) {
332
+ const { id, errors, disabled: fieldDisabled, fieldState } = useFieldContext$1();
333
+ const isDisabled = disabled ?? fieldDisabled;
334
+ const hasErrors = errors && errors.length > 0;
335
+ const currentValue = React$1.useMemo(() => {
336
+ const val = fieldState?.value;
337
+ if (!val) return {
338
+ from: void 0,
339
+ to: void 0
340
+ };
341
+ if (val instanceof Date) return {
342
+ from: val,
343
+ to: val
344
+ };
345
+ if (typeof val === "string") {
346
+ const date = new Date(val);
347
+ return {
348
+ from: date,
349
+ to: date
350
+ };
351
+ }
352
+ if (typeof val === "object" && "from" in val) return val;
353
+ return {
354
+ from: void 0,
355
+ to: void 0
356
+ };
357
+ }, [fieldState?.value]);
358
+ const minDate = minDateProp;
359
+ const maxDate = maxDateProp;
360
+ return /* @__PURE__ */ jsx(CalendarDatePicker, {
361
+ id,
362
+ date: currentValue,
363
+ onDateSelect: React$1.useCallback((range) => {
364
+ if (!range) {
365
+ fieldState?.change(void 0);
366
+ return;
367
+ }
368
+ if (numberOfMonths === 1) fieldState?.change(range.from.toISOString());
369
+ else fieldState?.change({
370
+ from: range.from.toISOString(),
371
+ to: range.to.toISOString()
372
+ });
373
+ }, [fieldState, numberOfMonths]),
374
+ numberOfMonths,
375
+ placeholder,
376
+ disabled: isDisabled,
377
+ minDate,
378
+ maxDate,
379
+ disableFuture,
380
+ disablePast,
381
+ variant: "outline",
382
+ className: cn(className),
383
+ triggerClassName: cn(triggerClassName),
384
+ "aria-invalid": hasErrors || void 0,
385
+ "aria-describedby": hasErrors ? `${id}-error` : void 0
386
+ });
387
+ }
388
+ FormDatePicker.displayName = "Form.DatePicker";
389
+ //#endregion
390
+ //#region src/components/features/form/components/form-date-time-picker.tsx
391
+ function FormDateTimePicker({ minDate: minDateProp, maxDate: maxDateProp, disabledDates, timezone, showTimezoneIndicator, placeholder, disabled, className }) {
392
+ const { id, errors, disabled: fieldDisabled, fieldState } = useFieldContext$1();
393
+ const isDisabled = disabled ?? fieldDisabled;
394
+ const hasErrors = errors && errors.length > 0;
395
+ const currentValue = React$1.useMemo(() => {
396
+ const val = fieldState?.value;
397
+ if (!val) return void 0;
398
+ if (typeof val === "string") return val;
399
+ }, [fieldState?.value]);
400
+ const minDate = minDateProp;
401
+ const maxDate = maxDateProp;
402
+ return /* @__PURE__ */ jsx(DateTimePicker, {
403
+ value: currentValue,
404
+ onChange: React$1.useCallback((value) => {
405
+ fieldState?.change(value);
406
+ }, [fieldState]),
407
+ minDate,
408
+ maxDate,
409
+ disabledDates,
410
+ timezone,
411
+ showTimezoneIndicator,
412
+ placeholder,
413
+ disabled: isDisabled,
414
+ className: cn(className),
415
+ "aria-invalid": hasErrors || void 0,
416
+ "aria-describedby": hasErrors ? `${id}-error` : void 0
417
+ });
418
+ }
419
+ FormDateTimePicker.displayName = "Form.DateTimePicker";
420
+ //#endregion
275
421
  //#region src/components/features/form/components/form-description.tsx
276
422
  /**
277
423
  * Form.Description - Display field description/helper text
@@ -1016,6 +1162,68 @@ function FormTextarea({ ref, className, disabled, rows = 3, ...props }) {
1016
1162
  }
1017
1163
  FormTextarea.displayName = "Form.Textarea";
1018
1164
  //#endregion
1165
+ //#region src/components/features/form/components/form-time-picker.tsx
1166
+ function FormTimePicker({ min, max, step, placeholder, disabled, className }) {
1167
+ const { id, errors, disabled: fieldDisabled, fieldState } = useFieldContext$1();
1168
+ const isDisabled = disabled ?? fieldDisabled;
1169
+ const hasErrors = errors && errors.length > 0;
1170
+ return /* @__PURE__ */ jsx(TimePicker, {
1171
+ id,
1172
+ value: fieldState?.value ?? "",
1173
+ onChange: React$1.useCallback((value) => {
1174
+ fieldState?.change(value || void 0);
1175
+ }, [fieldState]),
1176
+ min,
1177
+ max,
1178
+ step,
1179
+ placeholder,
1180
+ disabled: isDisabled,
1181
+ className: cn(className),
1182
+ "aria-invalid": hasErrors || void 0,
1183
+ "aria-describedby": hasErrors ? `${id}-error` : void 0
1184
+ });
1185
+ }
1186
+ FormTimePicker.displayName = "Form.TimePicker";
1187
+ //#endregion
1188
+ //#region src/components/features/form/components/form-transfer.tsx
1189
+ /**
1190
+ * Form.Transfer - Transfer list component for selecting multiple items
1191
+ *
1192
+ * Automatically wired to the parent Form.Field context.
1193
+ * Displays minItems/maxItems constraints when provided.
1194
+ *
1195
+ * @example
1196
+ * ```tsx
1197
+ * <Form.Field name="teams" label="Select Teams">
1198
+ * <Form.Transfer
1199
+ * items={teams}
1200
+ * itemKey="id"
1201
+ * itemLabel="name"
1202
+ * minItems={2}
1203
+ * maxItems={5}
1204
+ * />
1205
+ * </Form.Field>
1206
+ * ```
1207
+ */
1208
+ function FormTransfer({ disabled, minItems, maxItems, ...props }) {
1209
+ const { disabled: fieldDisabled, fieldState } = useFieldContext$1();
1210
+ const isDisabled = disabled ?? fieldDisabled;
1211
+ const value = Array.isArray(fieldState?.value) ? fieldState.value : [];
1212
+ const handleChange = (newValue) => {
1213
+ fieldState?.change(newValue);
1214
+ };
1215
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Transfer, {
1216
+ ...props,
1217
+ value,
1218
+ onChange: handleChange,
1219
+ disabled: isDisabled
1220
+ }), (minItems != null || maxItems != null) && /* @__PURE__ */ jsx("p", {
1221
+ className: "text-sm text-muted-foreground mt-2",
1222
+ children: minItems != null && maxItems != null ? `Select between ${minItems} and ${maxItems} items (minimum: ${minItems}, maximum: ${maxItems})` : minItems != null ? `Select at least ${minItems} items (minimum: ${minItems})` : `Select up to ${maxItems} items (maximum: ${maxItems})`
1223
+ })] });
1224
+ }
1225
+ FormTransfer.displayName = "Form.Transfer";
1226
+ //#endregion
1019
1227
  //#region src/components/features/form/hooks/use-watch.ts
1020
1228
  /**
1021
1229
  * Hook to watch a field's value reactively.
@@ -1381,7 +1589,13 @@ const Form = {
1381
1589
  RadioItem: FormRadioItem,
1382
1590
  CopyBox: FormCopyBox,
1383
1591
  Autocomplete: FormAutocomplete,
1592
+ Autosearch: FormAutosearch,
1593
+ Combobox: FormCombobox,
1384
1594
  InputGroup: FormInputGroup,
1595
+ DatePicker: FormDatePicker,
1596
+ DateTimePicker: FormDateTimePicker,
1597
+ TimePicker: FormTimePicker,
1598
+ Transfer: FormTransfer,
1385
1599
  When: FormWhen,
1386
1600
  FieldArray: FormFieldArray,
1387
1601
  Custom: FormCustom,
@@ -1394,4 +1608,4 @@ const Form = {
1394
1608
  useWatchAll
1395
1609
  };
1396
1610
  //#endregion
1397
- export { FormCustom as C, FormAutocomplete as D, FormButton as E, FormDescription as S, FormCheckbox as T, FormInput as _, useField as a, FormError as b, useWatchAll as c, FormSubmit as d, FormSelect as f, FormRadioItem as g, FormRadioGroup as h, useFieldContext as i, FormTextarea as l, FormRoot as m, useFormState as n, FormWhen as o, FormSelectItem as p, useFormContext as r, useWatch as s, Form as t, FormSwitch as u, FormFieldArray as v, FormCopyBox as w, FormDialog as x, FormField as y };
1611
+ export { FormCheckbox as A, FormDialog as C, FormCustom as D, FormDatePicker as E, FormAutosearch as M, FormAutocomplete as N, FormCopyBox as O, FormError as S, FormDateTimePicker as T, FormRadioGroup as _, useField as a, FormFieldArray as b, useWatchAll as c, FormTextarea as d, FormSwitch as f, FormRoot as g, FormSelectItem as h, useFieldContext as i, FormButton as j, FormCombobox as k, FormTransfer as l, FormSelect as m, useFormState as n, FormWhen as o, FormSubmit as p, useFormContext as r, useWatch as s, Form as t, FormTimePicker as u, FormRadioItem as v, FormDescription as w, FormField as x, FormInput as y };
@@ -1,3 +1,4 @@
1
+ import "zod";
1
2
  //#region src/components/features/form/utils/get-field-constraints.ts
2
3
  /**
3
4
  * Extract field-level constraints from a Zod schema.
@@ -1,2 +1,2 @@
1
- import { a as getResponsiveValue, c as GRID_COLUMNS, d as RESPONSIVE_MAP, i as getGutter, l as GRID_PREFIX, n as Row, o as registerMediaQuery, r as RowContext, s as GRID_BREAKPOINTS, t as Col, u as RESPONSIVE_ARRAY } from "../col-CiSpQPUT.mjs";
1
+ import { a as getResponsiveValue, c as GRID_COLUMNS, d as RESPONSIVE_MAP, i as getGutter, l as GRID_PREFIX, n as Row, o as registerMediaQuery, r as RowContext, s as GRID_BREAKPOINTS, t as Col, u as RESPONSIVE_ARRAY } from "../col-1T0Q3SlH.mjs";
2
2
  export { Col, GRID_BREAKPOINTS, GRID_COLUMNS, GRID_PREFIX, RESPONSIVE_ARRAY, RESPONSIVE_MAP, Row, RowContext, getGutter, getResponsiveValue, registerMediaQuery };
@@ -1,3 +1,3 @@
1
- import { t as useCopyToClipboard } from "../use-copy-to-clipboard-C2IEmhDn.mjs";
2
- import { t as useDebounce } from "../hooks-DNjmSsJT.mjs";
1
+ import { t as useCopyToClipboard } from "../use-copy-to-clipboard-uNeeVHC4.mjs";
2
+ import { t as useDebounce } from "../hooks-D8r2M2U6.mjs";
3
3
  export { useCopyToClipboard, useDebounce };
package/dist/index.mjs CHANGED
@@ -21,7 +21,7 @@ import { n as HoverCardContent, r as HoverCardTrigger, t as HoverCard } from "./
21
21
  import { t as Input } from "./input-FKGqZypx.mjs";
22
22
  import { a as InputGroupText, i as InputGroupInput, n as InputGroupAddon, o as InputGroupTextarea, r as InputGroupButton, t as InputGroup } from "./input-group-DDtz-RT7.mjs";
23
23
  import { t as Label } from "./label-cnAhY-ej.mjs";
24
- import { A as useLeaflet, C as MapPolyline, D as MapTileLayer, E as MapSearchControl, O as MapTooltip, S as MapPolygon, T as MapRectangle, _ as MapLayers, a as MapDrawCircle, b as MapMarker, c as MapDrawEdit, d as MapDrawPolyline, f as MapDrawRectangle, g as MapLayerGroup, h as MapFullscreenControl, i as MapControlContainer, j as PlaceAutocomplete, k as MapZoomControl, l as MapDrawMarker, m as MapFeatureGroup, n as MapCircle, o as MapDrawControl, p as MapDrawUndo, r as MapCircleMarker, s as MapDrawDelete, t as Map, u as MapDrawPolygon, v as MapLayersControl, w as MapPopup, x as MapMarkerClusterGroup, y as MapLocateControl } from "./map-BqpteT_8.mjs";
24
+ import { A as useLeaflet, C as MapPolyline, D as MapTileLayer, E as MapSearchControl, O as MapTooltip, S as MapPolygon, T as MapRectangle, _ as MapLayers, a as MapDrawCircle, b as MapMarker, c as MapDrawEdit, d as MapDrawPolyline, f as MapDrawRectangle, g as MapLayerGroup, h as MapFullscreenControl, i as MapControlContainer, j as PlaceAutocomplete, k as MapZoomControl, l as MapDrawMarker, m as MapFeatureGroup, n as MapCircle, o as MapDrawControl, p as MapDrawUndo, r as MapCircleMarker, s as MapDrawDelete, t as Map, u as MapDrawPolygon, v as MapLayersControl, w as MapPopup, x as MapMarkerClusterGroup, y as MapLocateControl } from "./map-CWIQ-eql.mjs";
25
25
  import { t as Spinner } from "./spinner-OyOf9-Yu.mjs";
26
26
  import { i as PopoverTrigger, n as PopoverAnchor, r as PopoverContent, t as Popover } from "./popover-FJAcbYoH.mjs";
27
27
  import { n as RadioGroupItem, t as RadioGroup } from "./radio-group-CiITR0LO.mjs";
@@ -49,19 +49,19 @@ import { n as Toaster, t as useToast } from "./toast-DpxlFNNx.mjs";
49
49
  import { a as DropdownMenuItem, c as DropdownMenuRadioGroup, d as DropdownMenuShortcut, f as DropdownMenuSub, h as DropdownMenuTrigger, i as DropdownMenuGroup, l as DropdownMenuRadioItem, m as DropdownMenuSubTrigger, n as DropdownMenuCheckboxItem, o as DropdownMenuLabel, p as DropdownMenuSubContent, r as DropdownMenuContent, s as DropdownMenuPortal, t as DropdownMenu, u as DropdownMenuSeparator } from "./dropdown-DZiAt-jS.mjs";
50
50
  import { i as FileInputButton, n as DropzoneContent, r as DropzoneEmptyState, t as Dropzone } from "./dropzone-ogtpQ4fy.mjs";
51
51
  import { t as EmptyContent } from "./empty-content-C63GPJ5d.mjs";
52
- import { C as FormCustom, D as FormAutocomplete, E as FormButton, S as FormDescription, T as FormCheckbox, _ as FormInput, a as useField, b as FormError, c as useWatchAll, d as FormSubmit, f as FormSelect, g as FormRadioItem, h as FormRadioGroup, i as useFieldContext, l as FormTextarea, m as FormRoot, n as useFormState, o as FormWhen, p as FormSelectItem, r as useFormContext, s as useWatch, t as Form, u as FormSwitch, v as FormFieldArray, w as FormCopyBox, x as FormDialog, y as FormField } from "./form-C6AOB2f4.mjs";
53
- import { t as useCopyToClipboard } from "./use-copy-to-clipboard-C2IEmhDn.mjs";
54
- import { n as useAdapter, t as FormAdapterProvider } from "./adapter-context-BFqfq4Io.mjs";
52
+ import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "./form-zf5QOnAk.mjs";
53
+ import { t as useCopyToClipboard } from "./use-copy-to-clipboard-uNeeVHC4.mjs";
54
+ import { n as useAdapter, t as FormAdapterProvider } from "./adapter-context-rWveHhDd.mjs";
55
55
  import { InputWithAddons } from "./input-with-addons/index.mjs";
56
- import { a as getResponsiveValue, c as GRID_COLUMNS, d as RESPONSIVE_MAP, i as getGutter, l as GRID_PREFIX, n as Row, o as registerMediaQuery, r as RowContext, s as GRID_BREAKPOINTS, t as Col, u as RESPONSIVE_ARRAY } from "./col-CiSpQPUT.mjs";
57
- import { t as InputNumber } from "./input-number-BTQdHqVZ.mjs";
58
- import { t as MoreActions } from "./more-actions-CucrYUnA.mjs";
56
+ import { a as getResponsiveValue, c as GRID_COLUMNS, d as RESPONSIVE_MAP, i as getGutter, l as GRID_PREFIX, n as Row, o as registerMediaQuery, r as RowContext, s as GRID_BREAKPOINTS, t as Col, u as RESPONSIVE_ARRAY } from "./col-1T0Q3SlH.mjs";
57
+ import { t as InputNumber } from "./input-number-a7uydAsw.mjs";
58
+ import { t as MoreActions } from "./more-actions-ILnEZq_E.mjs";
59
59
  import { configureProgress, startProgress, stopProgress } from "./nprogress/index.mjs";
60
- import { t as PageTitle } from "./page-title-CmsIi_A3.mjs";
61
- import { t as defineStepper } from "./stepper-C92Ib8Iy.mjs";
62
- import { t as TagsInput } from "./tag-input-B91C2wdr.mjs";
63
- import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "./task-queue-dropdown-OOFuJcHb.mjs";
64
- import { C as utcToLocalInputString, S as utcStringToZonedDate, _ as getBrowserTimezone, a as formatTimeRangeDisplay, b as getTimezoneOffset, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as formatUtcForDisplay, h as formatTimezoneLabel, i as formatSingleTimeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as TimeRangePicker, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatDateForInput, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as getDefaultTimezoneOptions, w as zonedDateToUtcString, x as localInputStringToUtc, y as getShortTimezoneDisplay } from "./to-api-format-P0gmlqe8.mjs";
65
- import { t as useDebounce } from "./hooks-DNjmSsJT.mjs";
60
+ import { t as PageTitle } from "./page-title-ChsnpBiH.mjs";
61
+ import { t as defineStepper } from "./stepper-DvIOp0hh.mjs";
62
+ import { t as TagsInput } from "./tag-input-T9cUX9-G.mjs";
63
+ import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "./task-queue-dropdown-Wcbj-f0V.mjs";
64
+ import { C as utcToLocalInputString, S as utcStringToZonedDate, _ as getBrowserTimezone, a as formatTimeRangeDisplay, b as getTimezoneOffset, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as formatUtcForDisplay, h as formatTimezoneLabel, i as formatSingleTimeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as TimeRangePicker, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatDateForInput, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as getDefaultTimezoneOptions, w as zonedDateToUtcString, x as localInputStringToUtc, y as getShortTimezoneDisplay } from "./to-api-format-Bh3c01gr.mjs";
65
+ import { t as useDebounce } from "./hooks-D8r2M2U6.mjs";
66
66
  import "./utils/index.mjs";
67
- export { CustomRangePanel as AbsoluteRangePanel, CustomRangePanel, Alert, AlertDescription, AlertTitle, AppNavigation, Autocomplete, Avatar, AvatarFallback, AvatarImage, AvatarStack, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDatePicker, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, ClientOnly, CloseIcon, Code, CodeEditor, CodeEditorTabs, Col, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_PRESETS, Dialog, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, EmptyContent, FileInputButton, Form, FormAdapterProvider, FormAutocomplete, FormButton, FormCheckbox, FormCopyBox, FormCustom, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormWhen, GRID_BREAKPOINTS, GRID_COLUMNS, GRID_PREFIX, HoverCard, HoverCardContent, HoverCardTrigger, Icon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumber, InputWithAddons, Label, Link, LinkButton, List, ListItem, LoaderOverlay, LocalTaskStorage, Map, MapCircle, MapCircleMarker, MapControlContainer, MapDrawCircle, MapDrawControl, MapDrawDelete, MapDrawEdit, MapDrawMarker, MapDrawPolygon, MapDrawPolyline, MapDrawRectangle, MapDrawUndo, MapFeatureGroup, MapFullscreenControl, MapLayerGroup, MapLayers, MapLayersControl, MapLocateControl, MapMarker, MapMarkerClusterGroup, MapPolygon, MapPolyline, MapPopup, MapRectangle, MapSearchControl, MapTileLayer, MapTooltip, MapZoomControl, MoreActions, NavMenu, PageTitle, Paragraph, PlaceAutocomplete, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, QuickRangesPanel, RESPONSIVE_ARRAY, RESPONSIVE_MAP, RadioGroup, RadioGroupItem, RedisTaskStorage, Row, RowContext, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, SpinnerIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLinkTrigger, TabsList, TabsTrigger, TagsInput, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, Text, Textarea, ThemeProvider, ThemeScript, TimeRangePicker, TimezoneSelector, Title, Toaster, Tooltip, VisuallyHidden, avatarStackVariants, badgeVariants, buttonGroupVariants, buttonVariants, cn, configureProgress, createCodeEditorSchema, createOrgMetadata, createProjectMetadata, createTimezoneOption, createUserMetadata, defineStepper, detectStorage, formatDateForInput, formatJson, formatSingleTimeDisplay, formatTimeRangeDisplay, formatTimezoneLabel, formatUtcForDisplay, formatYaml, getBrowserTimezone, getContextLabel, getDefaultPreset, getDefaultTimezoneOptions, getGutter, getPresetByKey, getPresetByShortcut, getPresetRange, getResponsiveValue, getShortTimezoneDisplay, getTimezoneOffset, isValidJson, isValidYaml, jsonSchema, jsonToYaml, localInputStringToUtc, matchesCurrentScope, paragraphVariants, registerMediaQuery, startProgress, stopProgress, textVariants, titleVariants, toApiTimeRange, toast, useAdapter, useCopyToClipboard, useCurrentScope, useDebounce, useField, useFieldContext, useFormContext, useFormState, useLeaflet, useSidebar, useTaskQueue, useTasksWithLabels, useTheme, useToast, useWatch, useWatchAll, utcStringToZonedDate, utcToLocalInputString, yamlSchema, yamlToJson, zonedDateToUtcString };
67
+ export { CustomRangePanel as AbsoluteRangePanel, CustomRangePanel, Alert, AlertDescription, AlertTitle, AppNavigation, Autocomplete, Avatar, AvatarFallback, AvatarImage, AvatarStack, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDatePicker, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, ClientOnly, CloseIcon, Code, CodeEditor, CodeEditorTabs, Col, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_PRESETS, Dialog, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, EmptyContent, FileInputButton, Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, GRID_BREAKPOINTS, GRID_COLUMNS, GRID_PREFIX, HoverCard, HoverCardContent, HoverCardTrigger, Icon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumber, InputWithAddons, Label, Link, LinkButton, List, ListItem, LoaderOverlay, LocalTaskStorage, Map, MapCircle, MapCircleMarker, MapControlContainer, MapDrawCircle, MapDrawControl, MapDrawDelete, MapDrawEdit, MapDrawMarker, MapDrawPolygon, MapDrawPolyline, MapDrawRectangle, MapDrawUndo, MapFeatureGroup, MapFullscreenControl, MapLayerGroup, MapLayers, MapLayersControl, MapLocateControl, MapMarker, MapMarkerClusterGroup, MapPolygon, MapPolyline, MapPopup, MapRectangle, MapSearchControl, MapTileLayer, MapTooltip, MapZoomControl, MoreActions, NavMenu, PageTitle, Paragraph, PlaceAutocomplete, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, QuickRangesPanel, RESPONSIVE_ARRAY, RESPONSIVE_MAP, RadioGroup, RadioGroupItem, RedisTaskStorage, Row, RowContext, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, SpinnerIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLinkTrigger, TabsList, TabsTrigger, TagsInput, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, Text, Textarea, ThemeProvider, ThemeScript, TimeRangePicker, TimezoneSelector, Title, Toaster, Tooltip, VisuallyHidden, avatarStackVariants, badgeVariants, buttonGroupVariants, buttonVariants, cn, configureProgress, createCodeEditorSchema, createOrgMetadata, createProjectMetadata, createTimezoneOption, createUserMetadata, defineStepper, detectStorage, formatDateForInput, formatJson, formatSingleTimeDisplay, formatTimeRangeDisplay, formatTimezoneLabel, formatUtcForDisplay, formatYaml, getBrowserTimezone, getContextLabel, getDefaultPreset, getDefaultTimezoneOptions, getGutter, getPresetByKey, getPresetByShortcut, getPresetRange, getResponsiveValue, getShortTimezoneDisplay, getTimezoneOffset, isValidJson, isValidYaml, jsonSchema, jsonToYaml, localInputStringToUtc, matchesCurrentScope, paragraphVariants, registerMediaQuery, startProgress, stopProgress, textVariants, titleVariants, toApiTimeRange, toast, useAdapter, useCopyToClipboard, useCurrentScope, useDebounce, useField, useFieldContext, useFormContext, useFormState, useLeaflet, useSidebar, useTaskQueue, useTasksWithLabels, useTheme, useToast, useWatch, useWatchAll, utcStringToZonedDate, utcToLocalInputString, yamlSchema, yamlToJson, zonedDateToUtcString };
@@ -1,2 +1,2 @@
1
- import { t as InputNumber } from "../input-number-BTQdHqVZ.mjs";
1
+ import { t as InputNumber } from "../input-number-a7uydAsw.mjs";
2
2
  export { InputNumber };
@@ -1,2 +1,2 @@
1
- import { A as useLeaflet, C as MapPolyline, D as MapTileLayer, E as MapSearchControl, O as MapTooltip, S as MapPolygon, T as MapRectangle, _ as MapLayers, a as MapDrawCircle, b as MapMarker, c as MapDrawEdit, d as MapDrawPolyline, f as MapDrawRectangle, g as MapLayerGroup, h as MapFullscreenControl, i as MapControlContainer, j as PlaceAutocomplete, k as MapZoomControl, l as MapDrawMarker, m as MapFeatureGroup, n as MapCircle, o as MapDrawControl, p as MapDrawUndo, r as MapCircleMarker, s as MapDrawDelete, t as Map, u as MapDrawPolygon, v as MapLayersControl, w as MapPopup, x as MapMarkerClusterGroup, y as MapLocateControl } from "../map-BqpteT_8.mjs";
1
+ import { A as useLeaflet, C as MapPolyline, D as MapTileLayer, E as MapSearchControl, O as MapTooltip, S as MapPolygon, T as MapRectangle, _ as MapLayers, a as MapDrawCircle, b as MapMarker, c as MapDrawEdit, d as MapDrawPolyline, f as MapDrawRectangle, g as MapLayerGroup, h as MapFullscreenControl, i as MapControlContainer, j as PlaceAutocomplete, k as MapZoomControl, l as MapDrawMarker, m as MapFeatureGroup, n as MapCircle, o as MapDrawControl, p as MapDrawUndo, r as MapCircleMarker, s as MapDrawDelete, t as Map, u as MapDrawPolygon, v as MapLayersControl, w as MapPopup, x as MapMarkerClusterGroup, y as MapLocateControl } from "../map-CWIQ-eql.mjs";
2
2
  export { Map, MapCircle, MapCircleMarker, MapControlContainer, MapDrawCircle, MapDrawControl, MapDrawDelete, MapDrawEdit, MapDrawMarker, MapDrawPolygon, MapDrawPolyline, MapDrawRectangle, MapDrawUndo, MapFeatureGroup, MapFullscreenControl, MapLayerGroup, MapLayers, MapLayersControl, MapLocateControl, MapMarker, MapMarkerClusterGroup, MapPolygon, MapPolyline, MapPopup, MapRectangle, MapSearchControl, MapTileLayer, MapTooltip, MapZoomControl, PlaceAutocomplete, useLeaflet };
@@ -225,7 +225,7 @@ function PlaceAutocomplete({ debounceMs = 300, lang, limit = 5, bbox, lat, lon,
225
225
  //#region ../shadcn/ui/map.tsx
226
226
  let _useMap;
227
227
  let _useMapEvents;
228
- if (typeof window !== "undefined") import("./map-leaflet-imports-CT4SpoDi.mjs").then((mod) => {
228
+ if (typeof window !== "undefined") import("./map-leaflet-imports-CRSKA79m.mjs").then((mod) => {
229
229
  _useMap = mod.useMap;
230
230
  _useMapEvents = mod.useMapEvents;
231
231
  });
@@ -1,2 +1,2 @@
1
- import { t as MoreActions } from "../more-actions-CucrYUnA.mjs";
1
+ import { t as MoreActions } from "../more-actions-ILnEZq_E.mjs";
2
2
  export { MoreActions };
@@ -1,2 +1,2 @@
1
- import { t as PageTitle } from "../page-title-CmsIi_A3.mjs";
1
+ import { t as PageTitle } from "../page-title-ChsnpBiH.mjs";
2
2
  export { PageTitle };
@@ -1,2 +1,2 @@
1
- import { t as defineStepper } from "../stepper-C92Ib8Iy.mjs";
1
+ import { t as defineStepper } from "../stepper-DvIOp0hh.mjs";
2
2
  export { defineStepper };
@@ -1,2 +1,2 @@
1
- import { t as TagsInput } from "../tag-input-B91C2wdr.mjs";
1
+ import { t as TagsInput } from "../tag-input-T9cUX9-G.mjs";
2
2
  export { TagsInput };
@@ -1,2 +1,2 @@
1
- import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "../task-queue-dropdown-OOFuJcHb.mjs";
1
+ import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "../task-queue-dropdown-Wcbj-f0V.mjs";
2
2
  export { LocalTaskStorage, RedisTaskStorage, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, createOrgMetadata, createProjectMetadata, createUserMetadata, detectStorage, getContextLabel, matchesCurrentScope, useCurrentScope, useTaskQueue, useTasksWithLabels };
@@ -0,0 +1,2 @@
1
+ import { t as TimePicker } from "../time-picker-BoF7pZZ2.mjs";
2
+ export { TimePicker };
@@ -0,0 +1,43 @@
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { t as Input } from "./input-FKGqZypx.mjs";
3
+ import * as React$1 from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/features/time-picker/time-picker.tsx
6
+ /**
7
+ * TimePicker - Simple time input component
8
+ *
9
+ * Provides a native HTML time input for selecting hours and minutes.
10
+ * Value format: "HH:mm" (e.g., "14:30")
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <TimePicker
15
+ * value="14:30"
16
+ * onChange={(time) => console.log(time)}
17
+ * min="09:00"
18
+ * max="17:00"
19
+ * />
20
+ * ```
21
+ */
22
+ function TimePicker({ value, onChange, min, max, step, placeholder, disabled, className, id, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedBy }) {
23
+ const handleChange = React$1.useCallback((e) => {
24
+ onChange?.(e.target.value);
25
+ }, [onChange]);
26
+ return /* @__PURE__ */ jsx(Input, {
27
+ id,
28
+ type: "time",
29
+ value: value || "",
30
+ onChange: handleChange,
31
+ min,
32
+ max,
33
+ step,
34
+ placeholder,
35
+ disabled,
36
+ className: cn(className),
37
+ "aria-invalid": ariaInvalid,
38
+ "aria-describedby": ariaDescribedBy
39
+ });
40
+ }
41
+ TimePicker.displayName = "TimePicker";
42
+ //#endregion
43
+ export { TimePicker as t };
@@ -0,0 +1,2 @@
1
+ import { t as Transfer } from "../transfer-C55XfEXy.mjs";
2
+ export { Transfer };