@godxjp/ui 6.2.0 → 6.3.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 (72) hide show
  1. package/dist/app/index.js +4 -4
  2. package/dist/{checkbox-CoHDi3ao.d.ts → checkbox-CNP1MnPn.d.ts} +1 -1
  3. package/dist/{chunk-GV2YQLH2.js → chunk-5DRKN2HI.js} +1 -1
  4. package/dist/{chunk-7OTWYSVX.js → chunk-6BJ2X7PA.js} +32 -10
  5. package/dist/{chunk-IGOP3HFF.js → chunk-7W3CHMLL.js} +1 -1
  6. package/dist/{chunk-32UNYHGY.js → chunk-EYLUVDHJ.js} +1 -1
  7. package/dist/{chunk-FRFUSXBH.js → chunk-FKAXA6OI.js} +1 -1
  8. package/dist/{chunk-FBGBDFNL.js → chunk-FNZQTYAG.js} +2 -2
  9. package/dist/{chunk-R5QIUFML.js → chunk-J6ZZVN6T.js} +58 -29
  10. package/dist/{chunk-ZOBDO3KZ.js → chunk-LFLHBTDK.js} +1 -1
  11. package/dist/{chunk-JVAOKBRC.js → chunk-MIVDO3Z3.js} +2 -2
  12. package/dist/chunk-PPXBEAAM.js +106 -0
  13. package/dist/{chunk-GVKKQ6MU.js → chunk-PUY25RRT.js} +1 -1
  14. package/dist/{chunk-2D72MDPB.js → chunk-QDAASTWZ.js} +2 -2
  15. package/dist/{chunk-XAFIIWZU.js → chunk-R2B7XJ6A.js} +2 -2
  16. package/dist/{chunk-BXIE57HV.js → chunk-RGSH6FQN.js} +1 -1
  17. package/dist/{chunk-66KBGNJT.js → chunk-TDTNDXWK.js} +4 -4
  18. package/dist/chunk-UCF25X5E.js +123 -0
  19. package/dist/{chunk-2476DOOA.js → chunk-UGQ3HQD5.js} +2 -2
  20. package/dist/{chunk-JZCFDGIB.js → chunk-WUXFOY6M.js} +2 -2
  21. package/dist/components/admin/index.d.ts +2 -2
  22. package/dist/components/admin/index.js +17 -17
  23. package/dist/components/data-display/index.js +5 -5
  24. package/dist/components/data-entry/autocomplete.d.ts +1 -1
  25. package/dist/components/data-entry/autocomplete.js +4 -4
  26. package/dist/components/data-entry/calendar.d.ts +1 -1
  27. package/dist/components/data-entry/calendar.js +2 -2
  28. package/dist/components/data-entry/cascader.d.ts +1 -1
  29. package/dist/components/data-entry/cascader.js +5 -5
  30. package/dist/components/data-entry/checkbox.d.ts +2 -2
  31. package/dist/components/data-entry/color-picker.d.ts +1 -1
  32. package/dist/components/data-entry/color-picker.js +3 -3
  33. package/dist/components/data-entry/date-picker.d.ts +8 -2
  34. package/dist/components/data-entry/date-picker.js +6 -5
  35. package/dist/components/data-entry/date-range-picker.d.ts +7 -2
  36. package/dist/components/data-entry/date-range-picker.js +6 -5
  37. package/dist/components/data-entry/index.d.ts +4 -4
  38. package/dist/components/data-entry/index.js +17 -17
  39. package/dist/components/data-entry/radio.d.ts +1 -1
  40. package/dist/components/data-entry/slider.d.ts +1 -1
  41. package/dist/components/data-entry/switch.d.ts +1 -1
  42. package/dist/components/data-entry/time-picker.d.ts +7 -2
  43. package/dist/components/data-entry/time-picker.js +3 -3
  44. package/dist/components/data-entry/transfer.d.ts +2 -2
  45. package/dist/components/data-entry/transfer.js +3 -3
  46. package/dist/components/data-entry/tree-select.d.ts +1 -1
  47. package/dist/components/data-entry/tree-select.js +5 -5
  48. package/dist/components/data-entry/upload.d.ts +2 -2
  49. package/dist/components/data-entry/upload.js +6 -6
  50. package/dist/components/feedback/alert.js +4 -4
  51. package/dist/components/feedback/dialog.js +3 -3
  52. package/dist/components/feedback/index.js +6 -6
  53. package/dist/components/feedback/sheet.d.ts +1 -1
  54. package/dist/components/navigation/index.js +5 -5
  55. package/dist/components/navigation/pagination.js +4 -4
  56. package/dist/components/query/index.js +5 -5
  57. package/dist/components/ui/index.d.ts +2 -2
  58. package/dist/components/ui/index.js +16 -16
  59. package/dist/{data-entry.prop-CRbHLb39.d.ts → data-entry.prop-I3mgmdGm.d.ts} +6 -0
  60. package/dist/i18n/index.d.ts +8 -3
  61. package/dist/i18n/index.js +2 -2
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.js +17 -17
  64. package/dist/lib/datetime/index.d.ts +3 -1
  65. package/dist/lib/datetime/index.js +1 -1
  66. package/dist/props/components/index.d.ts +1 -1
  67. package/dist/props/index.d.ts +1 -1
  68. package/dist/{search-input-PzXHa8KZ.d.ts → search-input-JWJMFVqC.d.ts} +1 -1
  69. package/package.json +2 -1
  70. package/dist/chunk-ACNKID6V.js +0 -70
  71. package/dist/chunk-HNH4PJSV.js +0 -66
  72. package/dist/{chunk-IK7I3ABN.js → chunk-I2V4Y2VF.js} +1 -1
package/dist/app/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { useAppContext } from '../chunk-32UNYHGY.js';
2
- export { APP_LOCALES, APP_REQUEST_HEADER_LOCALE, APP_REQUEST_HEADER_TIMEZONE, APP_TIMEZONE_OPTIONS, APP_TIMEZONE_PRESET, APP_TIME_FORMAT_OPTIONS, AppProvider, DEFAULT_STORAGE_KEY, TIMEZONE_ALIASES, formatTimezoneDisplayLabel, getAllIanaTimezones, getAppRequestHeaders, getBrowserTimezone, getTimeFormatLabel, getTimezoneCityName, getTimezoneLabel, getTimezoneOffsetLabel, isKnownAppTimezone, isValidIanaTimezone, readStoredPreferences, resetAppRequestHeaders, resetIanaTimezoneCacheForTests, resolveDefaultTimeFormat, resolveDefaultTimezone, resolveTimezoneForIntl, resolveTimezonePickerOptions, syncAppRequestHeaders, useAppContext, useAppDateFormat, useAppLocale, useAppTimeFormat, useAppTimezone, useOptionalAppContext, usePickerLocales, useTranslation, writeStoredPreferences } from '../chunk-32UNYHGY.js';
3
- import { formatDate } from '../chunk-7OTWYSVX.js';
4
- export { APP_DATE_FORMATS, APP_DATE_FORMAT_OPTIONS, APP_LOCALE_CONFIG, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, APP_TIME_FORMATS, detectFormatDateKind, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDateFnsLocale, getDateFormatLabel, getDatePattern, getDateTimePattern, getDatetimeContext, getDayPickerLocale, getTimePattern, isAppDateFormat, isAppLocale, isAppTimeFormat, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resolveDefaultDateFormat, syncDatetimeContext } from '../chunk-7OTWYSVX.js';
1
+ import { useAppContext } from '../chunk-EYLUVDHJ.js';
2
+ export { APP_LOCALES, APP_REQUEST_HEADER_LOCALE, APP_REQUEST_HEADER_TIMEZONE, APP_TIMEZONE_OPTIONS, APP_TIMEZONE_PRESET, APP_TIME_FORMAT_OPTIONS, AppProvider, DEFAULT_STORAGE_KEY, TIMEZONE_ALIASES, formatTimezoneDisplayLabel, getAllIanaTimezones, getAppRequestHeaders, getBrowserTimezone, getTimeFormatLabel, getTimezoneCityName, getTimezoneLabel, getTimezoneOffsetLabel, isKnownAppTimezone, isValidIanaTimezone, readStoredPreferences, resetAppRequestHeaders, resetIanaTimezoneCacheForTests, resolveDefaultTimeFormat, resolveDefaultTimezone, resolveTimezoneForIntl, resolveTimezonePickerOptions, syncAppRequestHeaders, useAppContext, useAppDateFormat, useAppLocale, useAppTimeFormat, useAppTimezone, useOptionalAppContext, usePickerLocales, useTranslation, writeStoredPreferences } from '../chunk-EYLUVDHJ.js';
3
+ import { formatDate } from '../chunk-6BJ2X7PA.js';
4
+ export { APP_DATE_FORMATS, APP_DATE_FORMAT_OPTIONS, APP_LOCALE_CONFIG, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, APP_TIME_FORMATS, detectFormatDateKind, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDateFnsLocale, getDateFormatLabel, getDatePattern, getDateTimePattern, getDatetimeContext, getDayPickerLocale, getTimePattern, isAppDateFormat, isAppLocale, isAppTimeFormat, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resolveDefaultDateFormat, syncDatetimeContext } from '../chunk-6BJ2X7PA.js';
5
5
  import { useMemo } from 'react';
6
6
 
7
7
  function useFormatting() {
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { c as CheckboxGroupProp } from './data-entry.prop-CRbHLb39.js';
4
+ import { c as CheckboxGroupProp } from './data-entry.prop-I3mgmdGm.js';
5
5
 
6
6
  declare function CheckboxGroup({ value: controlledValue, defaultValue, onChange, options, orientation, disabled, name, className, children, }: CheckboxGroupProp): react_jsx_runtime.JSX.Element;
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from './chunk-V6UWJKZF.js';
2
2
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
3
3
  import { Button } from './chunk-HJEBRCXL.js';
4
- import { useTranslation } from './chunk-32UNYHGY.js';
4
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import * as React from 'react';
7
7
  import { ChevronsUpDown, Check } from 'lucide-react';
@@ -69,16 +69,21 @@ var en_default = {
69
69
  },
70
70
  dataEntry: {
71
71
  datePicker: {
72
- placeholder: "Select date"
72
+ placeholder: "Select date",
73
+ openCalendar: "Open calendar"
73
74
  },
74
75
  dateRangePicker: {
75
- placeholder: "Select date range"
76
+ placeholder: "Select date range",
77
+ from: "From",
78
+ to: "To",
79
+ openCalendar: "Open calendar"
76
80
  },
77
81
  timePicker: {
78
82
  placeholder: "Select time",
79
83
  hour: "Hour",
80
84
  minute: "Minute",
81
- typeLabel: "Type time HH:mm"
85
+ typeLabel: "Type time HH:mm",
86
+ openPicker: "Open time picker"
82
87
  },
83
88
  searchInput: {
84
89
  placeholder: "Search\u2026"
@@ -242,16 +247,21 @@ var ja_default = {
242
247
  },
243
248
  dataEntry: {
244
249
  datePicker: {
245
- placeholder: "\u65E5\u4ED8\u3092\u9078\u629E"
250
+ placeholder: "\u65E5\u4ED8\u3092\u9078\u629E",
251
+ openCalendar: "\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u958B\u304F"
246
252
  },
247
253
  dateRangePicker: {
248
- placeholder: "\u671F\u9593\u3092\u9078\u629E"
254
+ placeholder: "\u671F\u9593\u3092\u9078\u629E",
255
+ from: "\u958B\u59CB",
256
+ to: "\u7D42\u4E86",
257
+ openCalendar: "\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u958B\u304F"
249
258
  },
250
259
  timePicker: {
251
260
  placeholder: "\u6642\u523B\u3092\u9078\u629E",
252
261
  hour: "\u6642",
253
262
  minute: "\u5206",
254
- typeLabel: "HH:mm \u3092\u5165\u529B"
263
+ typeLabel: "HH:mm \u3092\u5165\u529B",
264
+ openPicker: "\u6642\u523B\u3092\u9078\u629E"
255
265
  },
256
266
  searchInput: {
257
267
  placeholder: "\u691C\u7D22\u2026"
@@ -415,16 +425,21 @@ var vi_default = {
415
425
  },
416
426
  dataEntry: {
417
427
  datePicker: {
418
- placeholder: "Ch\u1ECDn ng\xE0y"
428
+ placeholder: "Ch\u1ECDn ng\xE0y",
429
+ openCalendar: "M\u1EDF l\u1ECBch"
419
430
  },
420
431
  dateRangePicker: {
421
- placeholder: "Ch\u1ECDn kho\u1EA3ng ng\xE0y"
432
+ placeholder: "Ch\u1ECDn kho\u1EA3ng ng\xE0y",
433
+ from: "T\u1EEB",
434
+ to: "\u0110\u1EBFn",
435
+ openCalendar: "M\u1EDF l\u1ECBch"
422
436
  },
423
437
  timePicker: {
424
438
  placeholder: "Ch\u1ECDn gi\u1EDD",
425
439
  hour: "Gi\u1EDD",
426
440
  minute: "Ph\xFAt",
427
- typeLabel: "Nh\u1EADp gi\u1EDD HH:mm"
441
+ typeLabel: "Nh\u1EADp gi\u1EDD HH:mm",
442
+ openPicker: "M\u1EDF ch\u1ECDn gi\u1EDD"
428
443
  },
429
444
  searchInput: {
430
445
  placeholder: "T\xECm ki\u1EBFm\u2026"
@@ -679,6 +694,13 @@ function isDateOnlyString(value) {
679
694
  }
680
695
 
681
696
  // src/lib/datetime/parse.ts
697
+ function toIsoDate(value) {
698
+ if (value == null || Number.isNaN(value.getTime())) return "";
699
+ const year = String(value.getFullYear()).padStart(4, "0");
700
+ const month = String(value.getMonth() + 1).padStart(2, "0");
701
+ const day = String(value.getDate()).padStart(2, "0");
702
+ return `${year}-${month}-${day}`;
703
+ }
682
704
  function parseDateInput(value) {
683
705
  if (value == null) return null;
684
706
  if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;
@@ -854,4 +876,4 @@ function isFormatDateValue(value) {
854
876
  return parseDateInput(trimmed) != null;
855
877
  }
856
878
 
857
- export { APP_DATE_FORMATS, APP_DATE_FORMAT_OPTIONS, APP_LOCALE_CONFIG, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, APP_TIME_FORMATS, MESSAGE_CATALOG, calendarDateToTZDate, detectFormatDateKind, disableLiveRelativeFormatting, enableLiveRelativeFormatting, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDateFnsLocale, getDateFormatLabel, getDatePattern, getDateTimePattern, getDatetimeContext, getDayPickerLocale, getTimePattern, hhmmToTZDate, isAppDateFormat, isAppLocale, isAppTimeFormat, isDateOnlyString, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resetDatetimeContextForTests, resetI18nLocale, resolveDefaultDateFormat, syncDatetimeContext, syncI18nLocale, translate, translateCurrent };
879
+ export { APP_DATE_FORMATS, APP_DATE_FORMAT_OPTIONS, APP_LOCALE_CONFIG, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, APP_TIME_FORMATS, MESSAGE_CATALOG, calendarDateToTZDate, detectFormatDateKind, disableLiveRelativeFormatting, enableLiveRelativeFormatting, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDateFnsLocale, getDateFormatLabel, getDatePattern, getDateTimePattern, getDatetimeContext, getDayPickerLocale, getTimePattern, hhmmToTZDate, isAppDateFormat, isAppLocale, isAppTimeFormat, isDateOnlyString, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resetDatetimeContextForTests, resetI18nLocale, resolveDefaultDateFormat, syncDatetimeContext, syncI18nLocale, toIsoDate, translate, translateCurrent };
@@ -1,4 +1,4 @@
1
- import { formatDate, translateCurrent } from './chunk-7OTWYSVX.js';
1
+ import { formatDate, translateCurrent } from './chunk-6BJ2X7PA.js';
2
2
 
3
3
  // src/lib/format.ts
4
4
  function formatDateTime(value, options) {
@@ -1,4 +1,4 @@
1
- import { APP_TIME_FORMATS, isAppDateFormat, isAppTimeFormat, isAppLocale, translate, getDateFnsLocale, syncI18nLocale, syncDatetimeContext, disableLiveRelativeFormatting, enableLiveRelativeFormatting, getDayPickerLocale, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, resolveDefaultDateFormat } from './chunk-7OTWYSVX.js';
1
+ import { APP_TIME_FORMATS, isAppDateFormat, isAppTimeFormat, isAppLocale, translate, getDateFnsLocale, syncI18nLocale, syncDatetimeContext, disableLiveRelativeFormatting, enableLiveRelativeFormatting, getDayPickerLocale, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, resolveDefaultDateFormat } from './chunk-6BJ2X7PA.js';
2
2
  import * as React from 'react';
3
3
  import { useMemo } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,7 +1,7 @@
1
1
  import { Input } from './chunk-VOHTRR5X.js';
2
2
  import { buttonVariants, Button } from './chunk-HJEBRCXL.js';
3
3
  import { Label } from './chunk-7PWBC4BY.js';
4
- import { useTranslation } from './chunk-32UNYHGY.js';
4
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import * as React from 'react';
7
7
  import * as DialogPrimitive from '@radix-ui/react-dialog';
@@ -1,7 +1,7 @@
1
- import { humanError } from './chunk-IGOP3HFF.js';
1
+ import { humanError } from './chunk-7W3CHMLL.js';
2
2
  import { Inline } from './chunk-S66TJXJU.js';
3
3
  import { Button } from './chunk-HJEBRCXL.js';
4
- import { useTranslation } from './chunk-32UNYHGY.js';
4
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import * as React from 'react';
7
7
  import { CheckCircle2, TriangleAlert, AlertCircle, Info, X, RefreshCw } from 'lucide-react';
@@ -1,8 +1,8 @@
1
1
  import { Input } from './chunk-VOHTRR5X.js';
2
2
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
3
3
  import { Button } from './chunk-HJEBRCXL.js';
4
- import { useTranslation } from './chunk-32UNYHGY.js';
5
- import { isValidHhmm, formatTimeOfDay, normalizeHhmm } from './chunk-7OTWYSVX.js';
4
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
5
+ import { normalizeHhmm, isValidHhmm } from './chunk-6BJ2X7PA.js';
6
6
  import { cn } from './chunk-U7N2A7A3.js';
7
7
  import * as React from 'react';
8
8
  import { Clock } from 'lucide-react';
@@ -138,6 +138,7 @@ function TimePicker({
138
138
  disabled,
139
139
  className,
140
140
  id,
141
+ name,
141
142
  minuteStep = 5
142
143
  }) {
143
144
  const { t } = useTranslation();
@@ -145,42 +146,70 @@ function TimePicker({
145
146
  const [internal, setInternal] = React.useState(defaultValue ?? "");
146
147
  const isControlled = controlledValue !== void 0;
147
148
  const value = isControlled ? controlledValue : internal;
148
- const resolvedPlaceholder = placeholder ?? t("dataEntry.timePicker.placeholder");
149
+ const resolvedPlaceholder = placeholder ?? t("dataEntry.timePicker.placeholder") ?? "hh:mm";
150
+ const [text, setText] = React.useState(value);
151
+ React.useEffect(() => {
152
+ setText(value);
153
+ }, [value]);
149
154
  const setValue = (next) => {
150
155
  if (!isControlled) setInternal(next);
151
156
  onChange?.(next);
152
157
  };
153
- const display = value && isValidHhmm(value) ? formatTimeOfDay(value) : value || null;
154
- return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
155
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
156
- Button,
158
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), children: [
159
+ /* @__PURE__ */ jsx(
160
+ Input,
157
161
  {
158
162
  id,
159
- type: "button",
160
- variant: "outline",
163
+ name,
164
+ value: text,
161
165
  disabled,
162
- className: cn(
163
- "w-full justify-start text-left font-normal tabular-nums",
164
- !display && "text-muted-foreground",
165
- className
166
- ),
167
- children: [
168
- /* @__PURE__ */ jsx(Clock, { className: "mr-2 size-4 shrink-0", "aria-hidden": "true" }),
169
- display ?? resolvedPlaceholder
170
- ]
171
- }
172
- ) }),
173
- /* @__PURE__ */ jsx(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsx(
174
- TimePickerPanel,
175
- {
176
- value: value || "09:00",
177
- minuteStep,
178
- onChange: setValue,
179
- onDone: () => {
180
- setOpen(false);
166
+ placeholder: resolvedPlaceholder,
167
+ inputMode: "numeric",
168
+ autoComplete: "off",
169
+ role: "combobox",
170
+ "aria-expanded": open,
171
+ "aria-haspopup": "dialog",
172
+ className: "pr-10 tabular-nums",
173
+ onChange: (event) => {
174
+ setText(event.target.value);
175
+ const normalized = normalizeHhmm(event.target.value);
176
+ if (normalized) setValue(normalized);
177
+ },
178
+ onBlur: (event) => {
179
+ const normalized = normalizeHhmm(event.target.value);
180
+ setText(normalized ?? (isValidHhmm(value) ? value : ""));
181
181
  }
182
182
  }
183
- ) })
183
+ ),
184
+ /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
185
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
186
+ Button,
187
+ {
188
+ type: "button",
189
+ variant: "ghost",
190
+ size: "icon",
191
+ disabled,
192
+ tabIndex: -1,
193
+ "aria-label": t("dataEntry.timePicker.openPicker") ?? "Open time picker",
194
+ className: "text-muted-foreground absolute inset-y-0 right-0 h-full px-2 hover:bg-transparent",
195
+ children: /* @__PURE__ */ jsx(Clock, { className: "size-4 shrink-0", "aria-hidden": "true" })
196
+ }
197
+ ) }),
198
+ /* @__PURE__ */ jsx(PopoverContent, { className: "w-auto p-0", align: "end", children: /* @__PURE__ */ jsx(
199
+ TimePickerPanel,
200
+ {
201
+ value: value || "09:00",
202
+ minuteStep,
203
+ onChange: (next) => {
204
+ setValue(next);
205
+ setText(next);
206
+ },
207
+ onDone: () => {
208
+ setOpen(false);
209
+ }
210
+ }
211
+ ) })
212
+ ] })
184
213
  ] });
185
214
  }
186
215
 
@@ -4,7 +4,7 @@ import { Input } from './chunk-VOHTRR5X.js';
4
4
  import { ScrollArea } from './chunk-3KPEZ5CF.js';
5
5
  import { Button } from './chunk-HJEBRCXL.js';
6
6
  import { Label } from './chunk-7PWBC4BY.js';
7
- import { useTranslation } from './chunk-32UNYHGY.js';
7
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
8
8
  import { cn } from './chunk-U7N2A7A3.js';
9
9
  import * as React from 'react';
10
10
  import { useState, useEffect } from 'react';
@@ -1,7 +1,7 @@
1
1
  import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-UX634MYF.js';
2
2
  import { Button } from './chunk-HJEBRCXL.js';
3
- import { useTranslation, useOptionalAppContext, APP_LOCALES, resolveTimezonePickerOptions, getTimezoneLabel, APP_TIME_FORMAT_OPTIONS, getTimeFormatLabel } from './chunk-32UNYHGY.js';
4
- import { APP_DATE_FORMAT_OPTIONS, getDateFormatLabel } from './chunk-7OTWYSVX.js';
3
+ import { useTranslation, useOptionalAppContext, APP_LOCALES, resolveTimezonePickerOptions, getTimezoneLabel, APP_TIME_FORMAT_OPTIONS, getTimeFormatLabel } from './chunk-EYLUVDHJ.js';
4
+ import { APP_DATE_FORMAT_OPTIONS, getDateFormatLabel } from './chunk-6BJ2X7PA.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import { X, ChevronRight, Languages, Globe, Clock, CalendarDays } from 'lucide-react';
7
7
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -0,0 +1,106 @@
1
+ import { Calendar } from './chunk-I2V4Y2VF.js';
2
+ import { Input } from './chunk-VOHTRR5X.js';
3
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
4
+ import { Button } from './chunk-HJEBRCXL.js';
5
+ import { useTranslation, usePickerLocales } from './chunk-EYLUVDHJ.js';
6
+ import { toIsoDate, parseDateInput } from './chunk-6BJ2X7PA.js';
7
+ import { cn } from './chunk-U7N2A7A3.js';
8
+ import * as React from 'react';
9
+ import { CalendarIcon } from 'lucide-react';
10
+ import { jsxs, jsx } from 'react/jsx-runtime';
11
+
12
+ var ISO_HINT = "yyyy-mm-dd";
13
+ function DatePicker({
14
+ value,
15
+ onChange,
16
+ placeholder,
17
+ disabled,
18
+ className,
19
+ id,
20
+ name,
21
+ locale: localeProp,
22
+ fromDate,
23
+ toDate
24
+ }) {
25
+ const { t } = useTranslation();
26
+ const { dayPickerLocale } = usePickerLocales(localeProp);
27
+ const [open, setOpen] = React.useState(false);
28
+ const [text, setText] = React.useState(() => toIsoDate(value));
29
+ React.useEffect(() => {
30
+ setText(toIsoDate(value));
31
+ }, [value]);
32
+ const resolvedPlaceholder = placeholder ?? t("dataEntry.datePicker.placeholder") ?? ISO_HINT;
33
+ const commit = (raw) => {
34
+ const trimmed = raw.trim();
35
+ if (trimmed === "") {
36
+ onChange?.(void 0);
37
+ return;
38
+ }
39
+ const parsed = parseDateInput(trimmed);
40
+ if (parsed) {
41
+ onChange?.(parsed);
42
+ }
43
+ };
44
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), children: [
45
+ /* @__PURE__ */ jsx(
46
+ Input,
47
+ {
48
+ id,
49
+ name,
50
+ value: text,
51
+ disabled,
52
+ placeholder: resolvedPlaceholder,
53
+ inputMode: "numeric",
54
+ autoComplete: "off",
55
+ role: "combobox",
56
+ "aria-expanded": open,
57
+ "aria-haspopup": "dialog",
58
+ className: "pr-10",
59
+ onChange: (event) => {
60
+ setText(event.target.value);
61
+ commit(event.target.value);
62
+ },
63
+ onBlur: (event) => {
64
+ const parsed = parseDateInput(event.target.value.trim());
65
+ setText(parsed ? toIsoDate(parsed) : toIsoDate(value));
66
+ }
67
+ }
68
+ ),
69
+ /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
70
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
71
+ Button,
72
+ {
73
+ type: "button",
74
+ variant: "ghost",
75
+ size: "icon",
76
+ disabled,
77
+ tabIndex: -1,
78
+ "aria-label": t("dataEntry.datePicker.openCalendar") ?? "Open calendar",
79
+ className: "text-muted-foreground absolute inset-y-0 right-0 h-full px-2 hover:bg-transparent",
80
+ children: /* @__PURE__ */ jsx(CalendarIcon, { className: "size-4 shrink-0", "aria-hidden": "true" })
81
+ }
82
+ ) }),
83
+ /* @__PURE__ */ jsx(PopoverContent, { className: "w-auto p-0", align: "end", children: /* @__PURE__ */ jsx(
84
+ Calendar,
85
+ {
86
+ mode: "single",
87
+ selected: value,
88
+ onSelect: (date) => {
89
+ onChange?.(date);
90
+ setText(toIsoDate(date));
91
+ setOpen(false);
92
+ },
93
+ locale: dayPickerLocale,
94
+ disabled: [
95
+ ...fromDate ? [{ before: fromDate }] : [],
96
+ ...toDate ? [{ after: toDate }] : []
97
+ ],
98
+ startMonth: fromDate,
99
+ endMonth: toDate
100
+ }
101
+ ) })
102
+ ] })
103
+ ] });
104
+ }
105
+
106
+ export { DatePicker };
@@ -1,6 +1,6 @@
1
1
  import { Input } from './chunk-VOHTRR5X.js';
2
2
  import { controlIconClass } from './chunk-ICM6XBST.js';
3
- import { useTranslation } from './chunk-32UNYHGY.js';
3
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
4
4
  import { cn } from './chunk-U7N2A7A3.js';
5
5
  import * as React from 'react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,10 +1,10 @@
1
1
  import { normalizeTreeOptions, formatPathLabels, getNodeByPath, filterTreeOptions, pathsEqual, pathKey } from './chunk-SMLKNECP.js';
2
2
  import { Checkbox } from './chunk-E76QIYSY.js';
3
+ import { ScrollArea, ScrollBar } from './chunk-3KPEZ5CF.js';
3
4
  import { Command, CommandInput } from './chunk-V6UWJKZF.js';
4
5
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
5
- import { ScrollArea, ScrollBar } from './chunk-3KPEZ5CF.js';
6
6
  import { Button } from './chunk-HJEBRCXL.js';
7
- import { useTranslation } from './chunk-32UNYHGY.js';
7
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
8
8
  import { cn } from './chunk-U7N2A7A3.js';
9
9
  import * as React from 'react';
10
10
  import { X, ChevronsUpDown, Check, ChevronRight } from 'lucide-react';
@@ -1,8 +1,8 @@
1
1
  import { Inline, densityClass } from './chunk-S66TJXJU.js';
2
2
  import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-ZS6DTAM2.js';
3
- import { tableCellPaddingClass, tableRowHeightClass, controlIconSmClass, toneNeutralClass, toneInfoClass, toneDestructiveClass, toneWarningClass, toneSuccessClass } from './chunk-ICM6XBST.js';
4
3
  import { Button } from './chunk-HJEBRCXL.js';
5
- import { useTranslation } from './chunk-32UNYHGY.js';
4
+ import { tableCellPaddingClass, tableRowHeightClass, controlIconSmClass, toneNeutralClass, toneInfoClass, toneDestructiveClass, toneWarningClass, toneSuccessClass } from './chunk-ICM6XBST.js';
5
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
6
6
  import { cn } from './chunk-U7N2A7A3.js';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
8
8
  import { Layers, Layers2, ArrowUp, ArrowDown, ChevronsUpDown, MoreHorizontal, XCircle, Pause, CheckCircle2, Circle, Trash2, AlertCircle, Clock, Play } from 'lucide-react';
@@ -1,6 +1,6 @@
1
1
  import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-UX634MYF.js';
2
2
  import { Button } from './chunk-HJEBRCXL.js';
3
- import { useTranslation } from './chunk-32UNYHGY.js';
3
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
4
4
  import { cn } from './chunk-U7N2A7A3.js';
5
5
  import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,9 +1,9 @@
1
- import { formatBytes } from './chunk-IGOP3HFF.js';
2
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './chunk-FRFUSXBH.js';
1
+ import { formatBytes } from './chunk-7W3CHMLL.js';
2
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './chunk-FKAXA6OI.js';
3
3
  import { Slider } from './chunk-CRERCLIZ.js';
4
- import { controlIconClass } from './chunk-ICM6XBST.js';
5
4
  import { Button } from './chunk-HJEBRCXL.js';
6
- import { useTranslation } from './chunk-32UNYHGY.js';
5
+ import { controlIconClass } from './chunk-ICM6XBST.js';
6
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
7
7
  import { cn } from './chunk-U7N2A7A3.js';
8
8
  import * as React2 from 'react';
9
9
  import { Upload as Upload$1, ImagePlus, Camera, Trash2, RotateCcw, X } from 'lucide-react';
@@ -0,0 +1,123 @@
1
+ import { Calendar } from './chunk-I2V4Y2VF.js';
2
+ import { Input } from './chunk-VOHTRR5X.js';
3
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
4
+ import { Button } from './chunk-HJEBRCXL.js';
5
+ import { useTranslation, usePickerLocales } from './chunk-EYLUVDHJ.js';
6
+ import { toIsoDate, parseDateInput } from './chunk-6BJ2X7PA.js';
7
+ import { cn } from './chunk-U7N2A7A3.js';
8
+ import * as React from 'react';
9
+ import { CalendarIcon } from 'lucide-react';
10
+ import { jsxs, jsx } from 'react/jsx-runtime';
11
+
12
+ var ISO_HINT = "yyyy-mm-dd";
13
+ function DateRangePicker({
14
+ value,
15
+ onChange,
16
+ placeholder,
17
+ disabled,
18
+ className,
19
+ id,
20
+ name,
21
+ locale: localeProp,
22
+ fromDate,
23
+ toDate
24
+ }) {
25
+ const { t } = useTranslation();
26
+ const { dayPickerLocale } = usePickerLocales(localeProp);
27
+ const [open, setOpen] = React.useState(false);
28
+ const [fromText, setFromText] = React.useState(() => toIsoDate(value?.from));
29
+ const [toText, setToText] = React.useState(() => toIsoDate(value?.to));
30
+ React.useEffect(() => {
31
+ setFromText(toIsoDate(value?.from));
32
+ setToText(toIsoDate(value?.to));
33
+ }, [value?.from, value?.to]);
34
+ const resolvedPlaceholder = placeholder ?? t("dataEntry.dateRangePicker.placeholder") ?? ISO_HINT;
35
+ const emit = (next) => onChange?.(next);
36
+ const commitEdge = (edge, raw) => {
37
+ const parsed = raw.trim() === "" ? void 0 : parseDateInput(raw.trim()) ?? void 0;
38
+ const next = { from: value?.from, to: value?.to, [edge]: parsed };
39
+ emit(next.from || next.to ? next : void 0);
40
+ };
41
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1", className), children: [
42
+ /* @__PURE__ */ jsx(
43
+ Input,
44
+ {
45
+ id,
46
+ name: name ? `${name}_from` : void 0,
47
+ value: fromText,
48
+ disabled,
49
+ placeholder: resolvedPlaceholder,
50
+ inputMode: "numeric",
51
+ autoComplete: "off",
52
+ "aria-label": t("dataEntry.dateRangePicker.from") ?? "From",
53
+ className: "tabular-nums",
54
+ onChange: (event) => {
55
+ setFromText(event.target.value);
56
+ commitEdge("from", event.target.value);
57
+ },
58
+ onBlur: (event) => {
59
+ const parsed = parseDateInput(event.target.value.trim());
60
+ setFromText(parsed ? toIsoDate(parsed) : toIsoDate(value?.from));
61
+ }
62
+ }
63
+ ),
64
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground shrink-0", "aria-hidden": "true", children: "\u2013" }),
65
+ /* @__PURE__ */ jsx(
66
+ Input,
67
+ {
68
+ name: name ? `${name}_to` : void 0,
69
+ value: toText,
70
+ disabled,
71
+ placeholder: resolvedPlaceholder,
72
+ inputMode: "numeric",
73
+ autoComplete: "off",
74
+ "aria-label": t("dataEntry.dateRangePicker.to") ?? "To",
75
+ className: "tabular-nums",
76
+ onChange: (event) => {
77
+ setToText(event.target.value);
78
+ commitEdge("to", event.target.value);
79
+ },
80
+ onBlur: (event) => {
81
+ const parsed = parseDateInput(event.target.value.trim());
82
+ setToText(parsed ? toIsoDate(parsed) : toIsoDate(value?.to));
83
+ }
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
87
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
88
+ Button,
89
+ {
90
+ type: "button",
91
+ variant: "ghost",
92
+ size: "icon",
93
+ disabled,
94
+ tabIndex: -1,
95
+ "aria-label": t("dataEntry.dateRangePicker.openCalendar") ?? "Open calendar",
96
+ className: "text-muted-foreground shrink-0 hover:bg-transparent",
97
+ children: /* @__PURE__ */ jsx(CalendarIcon, { className: "size-4 shrink-0", "aria-hidden": "true" })
98
+ }
99
+ ) }),
100
+ /* @__PURE__ */ jsx(PopoverContent, { className: "w-auto p-0", align: "end", children: /* @__PURE__ */ jsx(
101
+ Calendar,
102
+ {
103
+ mode: "range",
104
+ selected: value,
105
+ onSelect: (range) => {
106
+ emit(range);
107
+ setFromText(toIsoDate(range?.from));
108
+ setToText(toIsoDate(range?.to));
109
+ },
110
+ locale: dayPickerLocale,
111
+ disabled: [
112
+ ...fromDate ? [{ before: fromDate }] : [],
113
+ ...toDate ? [{ after: toDate }] : []
114
+ ],
115
+ startMonth: fromDate,
116
+ endMonth: toDate
117
+ }
118
+ ) })
119
+ ] })
120
+ ] });
121
+ }
122
+
123
+ export { DateRangePicker };
@@ -1,10 +1,10 @@
1
1
  import { normalizeTreeOptions, collectAllExpandableKeys, filterVisibleTree, flattenVisibleTree, findNodeByValue, reactNodeText, getDescendantValues } from './chunk-SMLKNECP.js';
2
2
  import { Checkbox } from './chunk-E76QIYSY.js';
3
+ import { ScrollArea } from './chunk-3KPEZ5CF.js';
3
4
  import { Command, CommandInput } from './chunk-V6UWJKZF.js';
4
5
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
5
- import { ScrollArea } from './chunk-3KPEZ5CF.js';
6
6
  import { Button } from './chunk-HJEBRCXL.js';
7
- import { useTranslation } from './chunk-32UNYHGY.js';
7
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
8
8
  import { cn } from './chunk-U7N2A7A3.js';
9
9
  import * as React from 'react';
10
10
  import { X, ChevronsUpDown, ChevronDown, ChevronRight } from 'lucide-react';
@@ -1,6 +1,6 @@
1
- import { AlertQueryError } from './chunk-FBGBDFNL.js';
1
+ import { AlertQueryError } from './chunk-FNZQTYAG.js';
2
2
  import { Button } from './chunk-HJEBRCXL.js';
3
- import { useTranslation } from './chunk-32UNYHGY.js';
3
+ import { useTranslation } from './chunk-EYLUVDHJ.js';
4
4
  import * as React from 'react';
5
5
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
6
6
  import { RefreshCw } from 'lucide-react';
@@ -3,7 +3,7 @@ export { I as InlineProp, P as PageContainerProp, P as PageContainerProps, a as
3
3
  export { F as FilterBar, a as FilterGroup, P as PageHeader } from '../../filter-bar-XpspcQdZ.js';
4
4
  export { I as Inline, P as PageContainer, S as Stack } from '../../inline-C5u6ptJV.js';
5
5
  export { C as ColumnDef, D as DataTable, a as Density, E as EmptyState, K as KeyValueGrid, S as StatusBadge } from '../../data-table-Pd62B4WQ.js';
6
- export { F as FormField, S as SearchInput } from '../../search-input-PzXHa8KZ.js';
6
+ export { F as FormField, S as SearchInput } from '../../search-input-JWJMFVqC.js';
7
7
  export { L as LegacyToastOptions, S as SkeletonCard, a as SkeletonDetail, b as SkeletonRows, c as SkeletonTable, t as toast, u as useToast } from '../../use-toast-Dol5bdY3.js';
8
8
  export { DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages } from '../query/index.js';
9
9
  export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../feedback/alert.js';
@@ -19,7 +19,7 @@ export { Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter,
19
19
  export { Toaster } from '../feedback/sonner.js';
20
20
  import { b as FormatDatetimeOptions, a as FormatDateOptions } from '../../format-date-ByyZoqI5.js';
21
21
  export { j as formatDate } from '../../format-date-ByyZoqI5.js';
22
- export { B as collectUploadCommitActions, E as createUploadItem } from '../../data-entry.prop-CRbHLb39.js';
22
+ export { B as collectUploadCommitActions, E as createUploadItem } from '../../data-entry.prop-I3mgmdGm.js';
23
23
  import '../../shared.prop-BNRJc9K0.js';
24
24
  import 'react';
25
25
  import '../../content.prop-D1Dd3TAc.js';