@godxjp/ui 13.6.0 → 13.8.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 (106) hide show
  1. package/dist/app/index.js +4 -4
  2. package/dist/{checkbox-DAIwpMHO.d.ts → checkbox-BpnDa6_M.d.ts} +1 -1
  3. package/dist/{chunk-2JW2QLUU.js → chunk-2MRAHKOD.js} +3 -3
  4. package/dist/{chunk-6MZMMMHV.js → chunk-3VFNWVR7.js} +5 -5
  5. package/dist/{chunk-IRPZJKLU.js → chunk-4FGE5XVC.js} +10 -0
  6. package/dist/{chunk-J254ZX3A.js → chunk-4SSJ54R2.js} +4 -4
  7. package/dist/{chunk-C7W5BO7R.js → chunk-5732TWQF.js} +22 -1
  8. package/dist/chunk-57VDEN64.js +881 -0
  9. package/dist/{chunk-UKTVFPRV.js → chunk-65RWSIZF.js} +4 -4
  10. package/dist/{chunk-5XFFEW2P.js → chunk-A3J2G2ZA.js} +2 -2
  11. package/dist/{chunk-QTEPKNQE.js → chunk-B6S6LTWT.js} +1 -1
  12. package/dist/{chunk-PKSHDFKP.js → chunk-BJTNKNMY.js} +36 -10
  13. package/dist/{chunk-W2RYT6NT.js → chunk-D4JX6O2W.js} +3 -3
  14. package/dist/{chunk-KNI7QI4J.js → chunk-FLY23H4G.js} +2 -2
  15. package/dist/{chunk-ZYJRZLMZ.js → chunk-HIEGUYPP.js} +1 -1
  16. package/dist/{chunk-UVGI2RPC.js → chunk-HRW7JDUJ.js} +4 -4
  17. package/dist/{chunk-UDMFKYZG.js → chunk-I5D4QYZI.js} +3 -3
  18. package/dist/{chunk-76S3TQFH.js → chunk-IAJOP2Z3.js} +31 -13
  19. package/dist/{chunk-LFO5BJ4H.js → chunk-ION2KFXK.js} +2 -2
  20. package/dist/{chunk-6AIYMYSG.js → chunk-K24AQV4R.js} +1 -1
  21. package/dist/{chunk-6VUW6EKH.js → chunk-L6NMIUKC.js} +2 -2
  22. package/dist/{chunk-RBXVCWXL.js → chunk-LVLPNKJP.js} +2 -2
  23. package/dist/{chunk-HS73G2C3.js → chunk-NU2SOVTU.js} +9 -3
  24. package/dist/{chunk-B7R7DHZF.js → chunk-NZBAFFWP.js} +1 -1
  25. package/dist/{chunk-LTKHPOE3.js → chunk-PL4NEIVO.js} +1 -1
  26. package/dist/{chunk-ZOMIELKI.js → chunk-Q3KUZG4P.js} +1 -1
  27. package/dist/{chunk-DVV6UYVS.js → chunk-QE4IYHJU.js} +3 -3
  28. package/dist/{chunk-3JQDPNTA.js → chunk-R2TXLS7S.js} +1 -1
  29. package/dist/{chunk-2FJ5TMQU.js → chunk-X6AJ5HEI.js} +1 -1
  30. package/dist/{chunk-XZH3URGD.js → chunk-XBFUROAY.js} +6 -3
  31. package/dist/{chunk-I472SSN2.js → chunk-YLRCDJMR.js} +1 -1
  32. package/dist/chunk-YXVJFYQE.js +191 -0
  33. package/dist/components/admin/index.d.ts +2 -2
  34. package/dist/components/admin/index.js +23 -23
  35. package/dist/components/data-display/badge.js +3 -3
  36. package/dist/components/data-display/card.d.ts +2 -2
  37. package/dist/components/data-display/carousel.js +3 -3
  38. package/dist/components/data-display/index.js +7 -7
  39. package/dist/components/data-entry/calendar.d.ts +1 -1
  40. package/dist/components/data-entry/calendar.js +4 -4
  41. package/dist/components/data-entry/cascader.d.ts +1 -1
  42. package/dist/components/data-entry/cascader.js +4 -4
  43. package/dist/components/data-entry/checkbox.d.ts +2 -2
  44. package/dist/components/data-entry/color-picker.d.ts +1 -1
  45. package/dist/components/data-entry/color-picker.js +4 -4
  46. package/dist/components/data-entry/date-picker.d.ts +1 -1
  47. package/dist/components/data-entry/date-picker.js +6 -6
  48. package/dist/components/data-entry/date-range-picker.d.ts +6 -4
  49. package/dist/components/data-entry/date-range-picker.js +5 -6
  50. package/dist/components/data-entry/index.d.ts +24 -6
  51. package/dist/components/data-entry/index.js +21 -21
  52. package/dist/components/data-entry/input.js +3 -3
  53. package/dist/components/data-entry/radio.d.ts +1 -1
  54. package/dist/components/data-entry/select.d.ts +1 -1
  55. package/dist/components/data-entry/select.js +5 -5
  56. package/dist/components/data-entry/slider.d.ts +1 -1
  57. package/dist/components/data-entry/switch.d.ts +1 -1
  58. package/dist/components/data-entry/textarea.js +3 -3
  59. package/dist/components/data-entry/time-input.js +2 -2
  60. package/dist/components/data-entry/time-picker.d.ts +1 -1
  61. package/dist/components/data-entry/time-picker.js +5 -5
  62. package/dist/components/data-entry/transfer.d.ts +2 -2
  63. package/dist/components/data-entry/transfer.js +6 -6
  64. package/dist/components/data-entry/tree-select.d.ts +1 -1
  65. package/dist/components/data-entry/tree-select.js +4 -4
  66. package/dist/components/data-entry/upload.d.ts +2 -2
  67. package/dist/components/data-entry/upload.js +7 -7
  68. package/dist/components/data-grid/index.js +6 -6
  69. package/dist/components/feedback/alert.js +5 -5
  70. package/dist/components/feedback/dialog.js +5 -5
  71. package/dist/components/feedback/index.js +7 -7
  72. package/dist/components/general/button.d.ts +3 -1
  73. package/dist/components/general/button.js +3 -3
  74. package/dist/components/general/index.d.ts +1 -1
  75. package/dist/components/general/index.js +3 -3
  76. package/dist/components/layout/index.js +3 -3
  77. package/dist/components/navigation/index.js +9 -9
  78. package/dist/components/navigation/pagination.js +6 -6
  79. package/dist/components/navigation/steps.js +3 -3
  80. package/dist/components/query/index.d.ts +2 -2
  81. package/dist/components/query/index.js +5 -5
  82. package/dist/components/ui/index.d.ts +3 -3
  83. package/dist/components/ui/index.js +22 -22
  84. package/dist/{data-entry.prop-vn5VGnwY.d.ts → data-entry.prop-C9QWj5Kl.d.ts} +61 -2
  85. package/dist/form/index.js +1 -1
  86. package/dist/{general.prop-CzcLDzMw.d.ts → general.prop-CzlQin6v.d.ts} +11 -1
  87. package/dist/i18n/index.d.ts +6 -0
  88. package/dist/i18n/index.js +2 -2
  89. package/dist/index.d.ts +2 -2
  90. package/dist/index.js +31 -31
  91. package/dist/lib/datetime/index.js +1 -1
  92. package/dist/props/components/index.d.ts +3 -3
  93. package/dist/props/index.d.ts +3 -3
  94. package/dist/props/index.js +1 -1
  95. package/dist/props/registry.d.ts +10 -0
  96. package/dist/props/registry.js +1 -1
  97. package/dist/{query.prop-DAILZ0x5.d.ts → query.prop-CT2gFtr4.d.ts} +1 -1
  98. package/dist/{search-input-Oxwpv_s9.d.ts → search-input-d1g8eW9z.d.ts} +1 -1
  99. package/dist/styles/form-layout.css +5 -5
  100. package/dist/styles/layout.css +2 -2
  101. package/dist/tokens/base.css +1 -0
  102. package/dist/tokens/components/form.css +11 -0
  103. package/dist/tokens/semantic/layout.css +11 -0
  104. package/package.json +4 -2
  105. package/dist/chunk-GFDKJY63.js +0 -467
  106. package/dist/chunk-OIAT773P.js +0 -183
@@ -1,8 +1,8 @@
1
- import { Input } from './chunk-6AIYMYSG.js';
2
- import { Button } from './chunk-XZH3URGD.js';
1
+ import { Input } from './chunk-K24AQV4R.js';
2
+ import { Button } from './chunk-XBFUROAY.js';
3
3
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
4
- import { useTranslation, usePickerLocales } from './chunk-QTEPKNQE.js';
5
- import { normalizeHhmm, isValidHhmm } from './chunk-C7W5BO7R.js';
4
+ import { useTranslation, usePickerLocales } from './chunk-B6S6LTWT.js';
5
+ import { normalizeHhmm, isValidHhmm } from './chunk-5732TWQF.js';
6
6
  import { cn } from './chunk-U7N2A7A3.js';
7
7
  import * as React from 'react';
8
8
  import { X, Clock } from 'lucide-react';
@@ -1,11 +1,11 @@
1
1
  import { normalizeTreeOptions, collectAllExpandableKeys, filterVisibleTree, flattenVisibleTree, findNodeByValue, reactNodeText, getDescendantValues } from './chunk-SMLKNECP.js';
2
2
  import { Command, CommandInput } from './chunk-3R3QVJCB.js';
3
3
  import { Checkbox } from './chunk-BE6GJGKJ.js';
4
- import { Button } from './chunk-XZH3URGD.js';
4
+ import { Button } from './chunk-XBFUROAY.js';
5
5
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
6
6
  import { ScrollArea } from './chunk-3KPEZ5CF.js';
7
7
  import { controlOpenRingClass } from './chunk-B4K4BXEF.js';
8
- import { useTranslation } from './chunk-QTEPKNQE.js';
8
+ import { useTranslation } from './chunk-B6S6LTWT.js';
9
9
  import { cn } from './chunk-U7N2A7A3.js';
10
10
  import * as React from 'react';
11
11
  import { X, ChevronsUpDown, ChevronDown, ChevronRight } from 'lucide-react';
@@ -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-C7W5BO7R.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-5732TWQF.js';
2
2
  import * as React from 'react';
3
3
  import { useMemo } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,14 +1,14 @@
1
1
  import { Command, CommandList, CommandItem, CommandGroup } from './chunk-3R3QVJCB.js';
2
- import { Input } from './chunk-6AIYMYSG.js';
3
- import { Button } from './chunk-XZH3URGD.js';
2
+ import { Input } from './chunk-K24AQV4R.js';
3
+ import { Button } from './chunk-XBFUROAY.js';
4
4
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
5
5
  import { controlTriggerClass, controlOpenRingClass } from './chunk-B4K4BXEF.js';
6
- import { useTranslation } from './chunk-QTEPKNQE.js';
6
+ import { useTranslation } from './chunk-B6S6LTWT.js';
7
7
  import { cn } from './chunk-U7N2A7A3.js';
8
8
  import * as React from 'react';
9
9
  import * as SelectPrimitive from '@radix-ui/react-select';
10
10
  import { ChevronDown, ChevronUp, Loader2, X, ChevronsUpDown } from 'lucide-react';
11
- import { jsxs, jsx } from 'react/jsx-runtime';
11
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
12
12
 
13
13
  var DEBOUNCE_MS = 250;
14
14
  function SearchSelect({
@@ -18,7 +18,9 @@ function SearchSelect({
18
18
  options: staticOptions,
19
19
  loadOptions,
20
20
  renderOption,
21
+ labelRender,
21
22
  selectedLabel,
23
+ selectedIcon,
22
24
  placeholder,
23
25
  searchPlaceholder,
24
26
  emptyMessage,
@@ -110,6 +112,7 @@ function SearchSelect({
110
112
  const resolvedPlaceholder = placeholder ?? t("dataEntry.searchSelect.placeholder");
111
113
  const selectedOption = value ? [picked, ...staticOptions ?? [], ...loaded].find((option) => option?.value === value) ?? null : null;
112
114
  const currentLabel = value ? selectedOption?.label ?? selectedLabel ?? value : resolvedPlaceholder;
115
+ const currentIcon = value ? selectedOption?.icon ?? selectedIcon : null;
113
116
  const select = (option) => {
114
117
  if (option.disabled) return;
115
118
  setPicked(option);
@@ -174,7 +177,19 @@ function SearchSelect({
174
177
  // Reserve trailing room for the clear + chevron overlay rendered below.
175
178
  showClear ? "pe-14" : "pe-9"
176
179
  ),
177
- children: /* @__PURE__ */ jsx("span", { className: cn("truncate text-start", !value && "text-muted-foreground"), children: currentLabel })
180
+ children: /* @__PURE__ */ jsx(
181
+ "span",
182
+ {
183
+ className: cn(
184
+ "flex min-w-0 items-center gap-2 text-start",
185
+ !value && "text-muted-foreground"
186
+ ),
187
+ children: value && labelRender ? labelRender({ value, label: currentLabel, option: selectedOption ?? void 0 }) : /* @__PURE__ */ jsxs(Fragment, { children: [
188
+ currentIcon ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center", "aria-hidden": "true", children: currentIcon }) : null,
189
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: currentLabel })
190
+ ] })
191
+ }
192
+ )
178
193
  }
179
194
  ) }),
180
195
  name ? /* @__PURE__ */ jsx("input", { type: "hidden", name, value }) : null,
@@ -226,9 +241,12 @@ function SearchSelect({
226
241
  ),
227
242
  onMouseEnter: () => setActiveIndex(index),
228
243
  onSelect: () => select(option),
229
- children: renderOption ? /* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: renderOption(option) }) : /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
230
- /* @__PURE__ */ jsx("span", { className: "truncate text-sm", children: option.label }),
231
- option.sublabel ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground truncate text-xs", children: option.sublabel }) : null
244
+ children: renderOption ? /* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: renderOption(option) }) : /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
245
+ option.icon ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center", "aria-hidden": "true", children: option.icon }) : null,
246
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col", children: [
247
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm", children: option.label }),
248
+ option.sublabel ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground truncate text-xs", children: option.sublabel }) : null
249
+ ] })
232
250
  ] })
233
251
  },
234
252
  option.value
@@ -406,7 +424,9 @@ function DataSelect({
406
424
  defaultValue,
407
425
  onValueChange,
408
426
  renderOption,
427
+ labelRender,
409
428
  selectedLabel,
429
+ selectedIcon,
410
430
  placeholder,
411
431
  searchPlaceholder,
412
432
  emptyMessage,
@@ -417,8 +437,12 @@ function DataSelect({
417
437
  name,
418
438
  id,
419
439
  className,
420
- "data-testid": dataTestId
440
+ "data-testid": dataTestId,
441
+ ...rest
421
442
  }) {
443
+ const ariaProps = Object.fromEntries(
444
+ Object.entries(rest).filter(([key]) => key.startsWith("aria-"))
445
+ );
422
446
  const searchable = showSearch ?? Boolean(loadOptions);
423
447
  if (searchable) {
424
448
  return /* @__PURE__ */ jsx(
@@ -430,7 +454,9 @@ function DataSelect({
430
454
  options,
431
455
  loadOptions,
432
456
  renderOption,
457
+ labelRender,
433
458
  selectedLabel,
459
+ selectedIcon,
434
460
  placeholder,
435
461
  searchPlaceholder,
436
462
  emptyMessage,
@@ -469,7 +495,7 @@ function DataSelect({
469
495
  disabled,
470
496
  name,
471
497
  children: [
472
- /* @__PURE__ */ jsx(SelectTrigger, { id, "data-testid": dataTestId, className, children: /* @__PURE__ */ jsx(SelectValue, { placeholder }) }),
498
+ /* @__PURE__ */ jsx(SelectTrigger, { id, "data-testid": dataTestId, className, ...ariaProps, children: /* @__PURE__ */ jsx(SelectValue, { placeholder }) }),
473
499
  /* @__PURE__ */ jsx(SelectContent, { children: groupDataOptions(options).map(
474
500
  (group) => group.heading ? /* @__PURE__ */ jsxs(SelectGroup, { children: [
475
501
  /* @__PURE__ */ jsx(SelectLabel, { children: group.heading }),
@@ -1,7 +1,7 @@
1
- import { humanError } from './chunk-2FJ5TMQU.js';
1
+ import { humanError } from './chunk-X6AJ5HEI.js';
2
2
  import { Flex } from './chunk-INIIF7F7.js';
3
- import { Button } from './chunk-XZH3URGD.js';
4
- import { useTranslation } from './chunk-QTEPKNQE.js';
3
+ import { Button } from './chunk-XBFUROAY.js';
4
+ import { useTranslation } from './chunk-B6S6LTWT.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import * as React from 'react';
7
7
  import { Info, CheckCircle2, TriangleAlert, AlertCircle, X, RefreshCw } from 'lucide-react';
@@ -1,10 +1,10 @@
1
1
  import { EmptyState } from './chunk-YD7V2HGZ.js';
2
2
  import { Flex, densityClass } from './chunk-INIIF7F7.js';
3
3
  import { Checkbox } from './chunk-BE6GJGKJ.js';
4
- import { Button } from './chunk-XZH3URGD.js';
4
+ import { Button } from './chunk-XBFUROAY.js';
5
5
  import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-IJ5ALJGA.js';
6
6
  import { tableCellPaddingClass, tableRowHeightClass, controlIconSmClass } from './chunk-B4K4BXEF.js';
7
- import { useTranslation } from './chunk-QTEPKNQE.js';
7
+ import { useTranslation } from './chunk-B6S6LTWT.js';
8
8
  import { cn } from './chunk-U7N2A7A3.js';
9
9
  import { jsx, jsxs } from 'react/jsx-runtime';
10
10
  import * as React from 'react';
@@ -1,5 +1,5 @@
1
1
  import { toneNeutralClass, toneMutedClass, toneInfoClass, toneDestructiveClass, toneWarningClass, toneSuccessClass } from './chunk-B4K4BXEF.js';
2
- import { useTranslation } from './chunk-QTEPKNQE.js';
2
+ import { useTranslation } from './chunk-B6S6LTWT.js';
3
3
  import { cn } from './chunk-U7N2A7A3.js';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { XCircle, Pause, CheckCircle2, Circle, Trash2, AlertCircle, Clock, Play } from 'lucide-react';
@@ -1,7 +1,7 @@
1
- import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-PKSHDFKP.js';
2
- import { Button } from './chunk-XZH3URGD.js';
3
- import { useOptionalAppContext, useTranslation, APP_TIME_FORMAT_OPTIONS, getTimeFormatLabel, resolveTimezonePickerOptions, getTimezoneLabel, APP_LOCALES } from './chunk-QTEPKNQE.js';
4
- import { APP_DATE_FORMAT_OPTIONS, getDateFormatLabel } from './chunk-C7W5BO7R.js';
1
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-BJTNKNMY.js';
2
+ import { Button } from './chunk-XBFUROAY.js';
3
+ import { useOptionalAppContext, useTranslation, APP_TIME_FORMAT_OPTIONS, getTimeFormatLabel, resolveTimezonePickerOptions, getTimezoneLabel, APP_LOCALES } from './chunk-B6S6LTWT.js';
4
+ import { APP_DATE_FORMAT_OPTIONS, getDateFormatLabel } from './chunk-5732TWQF.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import * as React from 'react';
7
7
  import { useId } from 'react';
@@ -1,8 +1,8 @@
1
1
  import { overlayHeaderToneClass } from './chunk-VU4GFGDG.js';
2
- import { Input } from './chunk-6AIYMYSG.js';
3
- import { buttonVariants, Button } from './chunk-XZH3URGD.js';
2
+ import { Input } from './chunk-K24AQV4R.js';
3
+ import { buttonVariants, Button } from './chunk-XBFUROAY.js';
4
4
  import { Label } from './chunk-7PWBC4BY.js';
5
- import { useTranslation } from './chunk-QTEPKNQE.js';
5
+ import { useTranslation } from './chunk-B6S6LTWT.js';
6
6
  import { cn } from './chunk-U7N2A7A3.js';
7
7
  import * as React from 'react';
8
8
  import * as DialogPrimitive from '@radix-ui/react-dialog';
@@ -1,14 +1,14 @@
1
1
  import { ResponsiveGrid } from './chunk-C3PKEV6S.js';
2
2
  import { Label } from './chunk-7PWBC4BY.js';
3
3
  import { cn } from './chunk-U7N2A7A3.js';
4
- import * as React from 'react';
4
+ import * as React2 from 'react';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
7
- var FormLayoutContext = React.createContext(null);
7
+ var FormLayoutContext = React2.createContext(null);
8
8
  function useFormLayout() {
9
- return React.useContext(FormLayoutContext);
9
+ return React2.useContext(FormLayoutContext);
10
10
  }
11
- var Form = React.forwardRef(function Form2({
11
+ var Form = React2.forwardRef(function Form2({
12
12
  layout = "vertical",
13
13
  labelWidth,
14
14
  controlWidth,
@@ -20,7 +20,7 @@ var Form = React.forwardRef(function Form2({
20
20
  children,
21
21
  ...props
22
22
  }, ref) {
23
- const ctx = React.useMemo(
23
+ const ctx = React2.useMemo(
24
24
  () => ({ layout, labelWidth, controlWidth, labelAlign, collapseBelow }),
25
25
  [layout, labelWidth, controlWidth, labelAlign, collapseBelow]
26
26
  );
@@ -58,14 +58,23 @@ function FormField({
58
58
  const controlWidth = controlWidthProp ?? form?.controlWidth;
59
59
  const labelAlign = form?.labelAlign ?? "end";
60
60
  const collapseBelow = form?.collapseBelow ?? "md";
61
- const helperId = helper ? `${id}-helper` : void 0;
62
- const errorId = error ? `${id}-error` : void 0;
63
- if (typeof process !== "undefined" && process.env?.NODE_ENV !== "production" && !React.isValidElement(children)) {
61
+ const autoId = React2.useId();
62
+ const resolvedId = id ?? autoId;
63
+ const labelId = `${resolvedId}-label`;
64
+ const helperId = helper ? `${resolvedId}-helper` : void 0;
65
+ const errorId = error ? `${resolvedId}-error` : void 0;
66
+ if (typeof process !== "undefined" && process.env?.NODE_ENV !== "production" && !React2.isValidElement(children)) {
64
67
  console.warn(
65
68
  "FormField expects a single React element child to receive aria-describedby/aria-errormessage; the helper text and error message will not be associated with the control."
66
69
  );
67
70
  }
68
- const childWithA11y = React.isValidElement(children) ? React.cloneElement(children, {
71
+ const childProps = React2.isValidElement(children) ? children.props : void 0;
72
+ const childWithA11y = React2.isValidElement(children) ? React2.cloneElement(children, {
73
+ // The label is associated via aria-labelledby (not <label for>): composite
74
+ // controls (Radio.Group, checkbox lists, range pairs) have no labelable root,
75
+ // and a dangling `for` triggers Chrome's "Incorrect use of <label>" issue.
76
+ id: childProps?.id ?? resolvedId,
77
+ "aria-labelledby": childProps?.["aria-labelledby"] ?? labelId,
69
78
  // Helper and error can coexist: helper stays on aria-describedby, the error on
70
79
  // aria-errormessage (surfaced when aria-invalid is true).
71
80
  "aria-describedby": helperId,
@@ -90,10 +99,19 @@ function FormField({
90
99
  className: cn("ui-form-field", className),
91
100
  children: [
92
101
  /* @__PURE__ */ jsxs("div", { "data-slot": "form-field-label", className: "ui-form-field-label", children: [
93
- /* @__PURE__ */ jsxs(Label, { htmlFor: id, className: "ui-inline-xs", children: [
94
- /* @__PURE__ */ jsx("span", { children: label }),
95
- required && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })
96
- ] }),
102
+ /* @__PURE__ */ jsx(Label, { asChild: true, id: labelId, className: "ui-inline-xs", children: /* @__PURE__ */ jsxs(
103
+ "span",
104
+ {
105
+ onClick: () => {
106
+ const el = document.getElementById(resolvedId);
107
+ if (el && el instanceof HTMLElement) el.focus();
108
+ },
109
+ children: [
110
+ /* @__PURE__ */ jsx("span", { children: label }),
111
+ required && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })
112
+ ]
113
+ }
114
+ ) }),
97
115
  labelAddon
98
116
  ] }),
99
117
  /* @__PURE__ */ jsxs("div", { "data-slot": "form-field-control", className: "ui-form-field-control", children: [
@@ -1,6 +1,6 @@
1
- import { Input } from './chunk-6AIYMYSG.js';
1
+ import { Input } from './chunk-K24AQV4R.js';
2
2
  import { controlIconClass } from './chunk-B4K4BXEF.js';
3
- import { useTranslation } from './chunk-QTEPKNQE.js';
3
+ import { useTranslation } from './chunk-B6S6LTWT.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,4 +1,4 @@
1
- import { useTranslation } from './chunk-QTEPKNQE.js';
1
+ import { useTranslation } from './chunk-B6S6LTWT.js';
2
2
  import { cn } from './chunk-U7N2A7A3.js';
3
3
  import * as React from 'react';
4
4
  import { X } from 'lucide-react';
@@ -1,10 +1,10 @@
1
1
  import { normalizeTreeOptions, formatPathLabels, getNodeByPath, filterTreeOptions, pathsEqual, pathKey } from './chunk-SMLKNECP.js';
2
2
  import { Command, CommandInput } from './chunk-3R3QVJCB.js';
3
- import { Button } from './chunk-XZH3URGD.js';
3
+ import { Button } from './chunk-XBFUROAY.js';
4
4
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
5
5
  import { ScrollArea, ScrollBar } from './chunk-3KPEZ5CF.js';
6
6
  import { controlOpenRingClass } from './chunk-B4K4BXEF.js';
7
- import { useTranslation } from './chunk-QTEPKNQE.js';
7
+ import { useTranslation } from './chunk-B6S6LTWT.js';
8
8
  import { cn } from './chunk-U7N2A7A3.js';
9
9
  import * as React from 'react';
10
10
  import { Check, X, ChevronsUpDown, ChevronRight, Minus } from 'lucide-react';
@@ -1,6 +1,6 @@
1
- import { Input } from './chunk-6AIYMYSG.js';
1
+ import { Input } from './chunk-K24AQV4R.js';
2
2
  import { Label } from './chunk-7PWBC4BY.js';
3
- import { useTranslation } from './chunk-QTEPKNQE.js';
3
+ import { useTranslation } from './chunk-B6S6LTWT.js';
4
4
  import { useDebouncedValue } from './chunk-LFW37FGG.js';
5
5
  import { cn } from './chunk-U7N2A7A3.js';
6
6
  import * as React from 'react';
@@ -1,4 +1,4 @@
1
- import { buttonVariants } from './chunk-XZH3URGD.js';
1
+ import { buttonVariants } from './chunk-XBFUROAY.js';
2
2
  import { controlIconSmClass } from './chunk-B4K4BXEF.js';
3
3
  import { cn } from './chunk-U7N2A7A3.js';
4
4
  import { ChevronLeft, ChevronRight } from 'lucide-react';
@@ -16,7 +16,7 @@ function Calendar({
16
16
  DayPicker,
17
17
  {
18
18
  showOutsideDays,
19
- className: cn("w-fit p-3", className),
19
+ className: cn("relative w-fit p-3", className),
20
20
  classNames: {
21
21
  months: cn("flex flex-col gap-4 sm:flex-row", classNames?.months),
22
22
  month: cn("relative flex flex-col gap-4", classNames?.month),
@@ -25,7 +25,13 @@ function Calendar({
25
25
  classNames?.month_caption
26
26
  ),
27
27
  caption_label: cn("text-sm font-medium", classNames?.caption_label),
28
- nav: cn("absolute inset-x-0 top-3 flex items-center justify-between px-1", classNames?.nav),
28
+ // z-10 is load-bearing: `month` below is position:relative and later in the DOM, so
29
+ // without a z-index it paints OVER these buttons — they render but never receive the
30
+ // click (the month caption swallows it) and the calendar looks frozen.
31
+ nav: cn(
32
+ "absolute inset-x-0 top-3 z-10 flex items-center justify-between px-1",
33
+ classNames?.nav
34
+ ),
29
35
  button_previous: cn(
30
36
  buttonVariants({ variant: "outline" }),
31
37
  controlIconSmClass,
@@ -1,4 +1,4 @@
1
- import { useTranslation } from './chunk-QTEPKNQE.js';
1
+ import { useTranslation } from './chunk-B6S6LTWT.js';
2
2
  import { cn } from './chunk-U7N2A7A3.js';
3
3
  import * as React from 'react';
4
4
  import useEmblaCarousel from 'embla-carousel-react';
@@ -1,5 +1,5 @@
1
1
  import { controlIconClass } from './chunk-B4K4BXEF.js';
2
- import { useTranslation } from './chunk-QTEPKNQE.js';
2
+ import { useTranslation } from './chunk-B6S6LTWT.js';
3
3
  import { cn } from './chunk-U7N2A7A3.js';
4
4
  import { Check, Loader2, X, Circle } from 'lucide-react';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { controlMultilineClass } from './chunk-B4K4BXEF.js';
2
- import { useTranslation } from './chunk-QTEPKNQE.js';
2
+ import { useTranslation } from './chunk-B6S6LTWT.js';
3
3
  import { cn } from './chunk-U7N2A7A3.js';
4
4
  import * as React from 'react';
5
5
  import { X } from 'lucide-react';
@@ -1,9 +1,9 @@
1
- import { SearchInput } from './chunk-RBXVCWXL.js';
1
+ import { SearchInput } from './chunk-LVLPNKJP.js';
2
2
  import { reactNodeText } from './chunk-SMLKNECP.js';
3
3
  import { Checkbox } from './chunk-BE6GJGKJ.js';
4
- import { Button } from './chunk-XZH3URGD.js';
4
+ import { Button } from './chunk-XBFUROAY.js';
5
5
  import { ScrollArea } from './chunk-3KPEZ5CF.js';
6
- import { useTranslation } from './chunk-QTEPKNQE.js';
6
+ import { useTranslation } from './chunk-B6S6LTWT.js';
7
7
  import { cn } from './chunk-U7N2A7A3.js';
8
8
  import * as React from 'react';
9
9
  import { ChevronRight, ChevronLeft } from 'lucide-react';
@@ -1,4 +1,4 @@
1
- import { normalizeHhmm, isValidHhmm } from './chunk-C7W5BO7R.js';
1
+ import { normalizeHhmm, isValidHhmm } from './chunk-5732TWQF.js';
2
2
  import { cn } from './chunk-U7N2A7A3.js';
3
3
  import * as React from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { getSyncedLocale, translateCurrent } from './chunk-C7W5BO7R.js';
1
+ import { getSyncedLocale, translateCurrent } from './chunk-5732TWQF.js';
2
2
 
3
3
  // src/lib/format.ts
4
4
  function formatBytes(n, locale = getSyncedLocale()) {
@@ -1,4 +1,4 @@
1
- import { useTranslation } from './chunk-QTEPKNQE.js';
1
+ import { useTranslation } from './chunk-B6S6LTWT.js';
2
2
  import { cn } from './chunk-U7N2A7A3.js';
3
3
  import * as React from 'react';
4
4
  import { Slot } from '@radix-ui/react-slot';
@@ -57,6 +57,8 @@ var Button = React.forwardRef(
57
57
  loading = false,
58
58
  loadingText,
59
59
  count,
60
+ overflowCount = 99,
61
+ showZero = true,
60
62
  disabled,
61
63
  children,
62
64
  ...props
@@ -68,7 +70,8 @@ var Button = React.forwardRef(
68
70
  /* @__PURE__ */ jsx(Loader2, { className: "animate-spin", "aria-hidden": "true" }),
69
71
  loadingText ?? children
70
72
  ] }) : children;
71
- const showCount = !asChild && count != null;
73
+ const showCount = !asChild && count != null && (count !== 0 || showZero);
74
+ const countLabel = showCount && count != null && count > overflowCount ? `${new Intl.NumberFormat(locale).format(overflowCount)}+` : count != null ? new Intl.NumberFormat(locale).format(count) : "";
72
75
  const countNode = showCount ? /* @__PURE__ */ jsx(
73
76
  "span",
74
77
  {
@@ -77,7 +80,7 @@ var Button = React.forwardRef(
77
80
  "inline-flex min-w-4 items-center justify-center rounded-[var(--radius-pill)] px-1 text-xs leading-none tabular-nums",
78
81
  buttonCountClass[variant ?? "default"]
79
82
  ),
80
- children: new Intl.NumberFormat(locale).format(count)
83
+ children: countLabel
81
84
  }
82
85
  ) : null;
83
86
  return /* @__PURE__ */ jsx(
@@ -3,7 +3,7 @@ import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-32WO3YLB.js';
3
3
  import { Collapsible, CollapsibleTrigger, CollapsibleContent } from './chunk-DV52WNXO.js';
4
4
  import { densityClass, pageContainerVariantClass } from './chunk-INIIF7F7.js';
5
5
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
6
- import { useTranslation } from './chunk-QTEPKNQE.js';
6
+ import { useTranslation } from './chunk-B6S6LTWT.js';
7
7
  import { cn } from './chunk-U7N2A7A3.js';
8
8
  import { ChevronRight, ChevronDown, PanelLeftOpen, PanelLeftClose, Search, Bell, SlidersHorizontal } from 'lucide-react';
9
9
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';