@godxjp/ui 8.2.0 → 8.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 (82) hide show
  1. package/dist/{chunk-V45EK6S7.js → chunk-56NYZNVY.js} +1 -1
  2. package/dist/{chunk-C5H655GK.js → chunk-6PA2YHRE.js} +129 -30
  3. package/dist/{chunk-Q7AU6WDX.js → chunk-6YK3IJXW.js} +1 -1
  4. package/dist/chunk-B73NA66T.js +122 -0
  5. package/dist/{chunk-3EMDVI7X.js → chunk-CAEL2ZD2.js} +1 -1
  6. package/dist/{chunk-MISVV4IT.js → chunk-GKXPALFT.js} +1 -1
  7. package/dist/{chunk-N43OKOFT.js → chunk-GLEEJYGQ.js} +1 -1
  8. package/dist/chunk-HCM4JAC2.js +134 -0
  9. package/dist/chunk-HL3G4SVG.js +131 -0
  10. package/dist/{chunk-3FUXNL5A.js → chunk-INSF6K3Y.js} +4 -40
  11. package/dist/chunk-JKHWLPM5.js +101 -0
  12. package/dist/chunk-LFW37FGG.js +68 -0
  13. package/dist/{chunk-67HEX3OS.js → chunk-LJLGABFV.js} +2 -2
  14. package/dist/{chunk-IAKROVSG.js → chunk-N3JPLJ3B.js} +2 -2
  15. package/dist/chunk-QLMXEJSY.js +114 -0
  16. package/dist/{chunk-SEG2YBXF.js → chunk-QTUJSRDH.js} +9 -1
  17. package/dist/chunk-W4REF4TD.js +42 -0
  18. package/dist/chunk-WGWI7EGL.js +83 -0
  19. package/dist/{chunk-TMDGV4CN.js → chunk-ZRRLOOBX.js} +1 -10
  20. package/dist/{chunk-PZ4LO723.js → chunk-ZY5NUG4B.js} +2 -7
  21. package/dist/components/admin/index.d.ts +3 -16
  22. package/dist/components/admin/index.js +24 -19
  23. package/dist/components/data-display/card.d.ts +2 -2
  24. package/dist/components/data-display/carousel.d.ts +25 -0
  25. package/dist/components/data-display/carousel.js +2 -0
  26. package/dist/components/data-display/index.d.ts +2 -0
  27. package/dist/components/data-display/index.js +4 -3
  28. package/dist/components/data-entry/autocomplete.js +4 -4
  29. package/dist/components/data-entry/calendar.js +2 -2
  30. package/dist/components/data-entry/cascader.js +2 -2
  31. package/dist/components/data-entry/combobox.d.ts +22 -0
  32. package/dist/components/data-entry/combobox.js +6 -0
  33. package/dist/components/data-entry/date-picker.js +3 -3
  34. package/dist/components/data-entry/date-range-picker.js +3 -3
  35. package/dist/components/data-entry/index.d.ts +2 -0
  36. package/dist/components/data-entry/index.js +19 -16
  37. package/dist/components/data-entry/select.js +4 -4
  38. package/dist/components/data-entry/time-input.d.ts +12 -0
  39. package/dist/components/data-entry/time-input.js +3 -0
  40. package/dist/components/data-entry/time-picker.js +2 -2
  41. package/dist/components/data-entry/transfer.js +4 -3
  42. package/dist/components/data-entry/tree-select.js +2 -2
  43. package/dist/components/data-entry/upload.js +2 -2
  44. package/dist/components/feedback/alert.js +1 -1
  45. package/dist/components/feedback/index.js +2 -2
  46. package/dist/components/layout/index.d.ts +2 -0
  47. package/dist/components/layout/index.js +2 -1
  48. package/dist/components/layout/resizable.d.ts +18 -0
  49. package/dist/components/layout/resizable.js +2 -0
  50. package/dist/components/navigation/context-menu.d.ts +25 -0
  51. package/dist/components/navigation/context-menu.js +2 -0
  52. package/dist/components/navigation/index.d.ts +8 -1
  53. package/dist/components/navigation/index.js +10 -7
  54. package/dist/components/navigation/menubar.d.ts +29 -0
  55. package/dist/components/navigation/menubar.js +2 -0
  56. package/dist/components/navigation/navigation-menu.d.ts +13 -0
  57. package/dist/components/navigation/navigation-menu.js +2 -0
  58. package/dist/components/navigation/pagination.js +5 -5
  59. package/dist/components/query/index.js +2 -2
  60. package/dist/components/ui/index.d.ts +13 -0
  61. package/dist/components/ui/index.js +23 -16
  62. package/dist/{filter-bar-DvVXm_d1.d.ts → filter-bar-WjnQOs2C.d.ts} +1 -1
  63. package/dist/index.d.ts +3 -2
  64. package/dist/index.js +33 -26
  65. package/dist/lib/hooks.d.ts +17 -0
  66. package/dist/lib/hooks.js +1 -0
  67. package/dist/props/index.js +1 -1
  68. package/dist/props/registry.js +1 -1
  69. package/dist/styles/data-display-layout.css +55 -0
  70. package/dist/styles/data-entry-layout.css +93 -0
  71. package/dist/styles/index.css +2 -0
  72. package/dist/styles/layout.css +35 -3
  73. package/dist/styles/navigation-layout.css +271 -0
  74. package/package.json +38 -1
  75. package/dist/{chunk-TV7WEENM.js → chunk-6J7GRCDA.js} +1 -1
  76. package/dist/{chunk-RGPF3HU6.js → chunk-6YBYAEXD.js} +1 -1
  77. package/dist/{chunk-YXJ3FS6O.js → chunk-CLU46QR2.js} +0 -0
  78. package/dist/{chunk-PKGPNZA4.js → chunk-HB2OHB5X.js} +1 -1
  79. package/dist/{chunk-7577VIAC.js → chunk-IOGU3ZWF.js} +1 -1
  80. package/dist/{chunk-N5SDFNSJ.js → chunk-JBHXILI4.js} +1 -1
  81. package/dist/{chunk-WY4RSEYC.js → chunk-KDBGFJJI.js} +2 -2
  82. package/dist/{chunk-NGT3I6OG.js → chunk-PIQXAOWS.js} +1 -1
@@ -1,52 +1,16 @@
1
- import { Input } from './chunk-VOHTRR5X.js';
2
1
  import { reactNodeText } from './chunk-SMLKNECP.js';
3
2
  import { Checkbox } from './chunk-O24Z3ULJ.js';
4
- import { ScrollArea } from './chunk-3KPEZ5CF.js';
3
+ import { Input } from './chunk-VOHTRR5X.js';
5
4
  import { Button } from './chunk-M4PZNAMV.js';
5
+ import { ScrollArea } from './chunk-3KPEZ5CF.js';
6
6
  import { Label } from './chunk-7PWBC4BY.js';
7
7
  import { useTranslation } from './chunk-RLGHEV4A.js';
8
+ import { useDebouncedValue } from './chunk-LFW37FGG.js';
8
9
  import { cn } from './chunk-U7N2A7A3.js';
9
10
  import * as React from 'react';
10
- import { useState, useEffect } from 'react';
11
11
  import { Search, X, ChevronRight, ChevronLeft } from 'lucide-react';
12
12
  import { jsxs, jsx } from 'react/jsx-runtime';
13
13
 
14
- function useDebouncedValue(value, delay = 250) {
15
- const [debounced, setDebounced] = useState(value);
16
- useEffect(() => {
17
- const t = setTimeout(() => {
18
- setDebounced(value);
19
- }, delay);
20
- return () => {
21
- clearTimeout(t);
22
- };
23
- }, [value, delay]);
24
- return debounced;
25
- }
26
- function useTimeoutFlag(signal, ms = 2e3) {
27
- const [active, setActive] = useState(false);
28
- useEffect(() => {
29
- if (!signal) {
30
- const id = window.setTimeout(() => {
31
- setActive(false);
32
- }, 0);
33
- return () => {
34
- clearTimeout(id);
35
- };
36
- }
37
- const showId = window.setTimeout(() => {
38
- setActive(true);
39
- }, 0);
40
- const hideId = window.setTimeout(() => {
41
- setActive(false);
42
- }, ms);
43
- return () => {
44
- clearTimeout(showId);
45
- clearTimeout(hideId);
46
- };
47
- }, [signal, ms]);
48
- return Boolean(signal) && active;
49
- }
50
14
  function SearchInput({
51
15
  value: controlledValue,
52
16
  defaultValue = "",
@@ -296,4 +260,4 @@ function Transfer({
296
260
  ] });
297
261
  }
298
262
 
299
- export { SearchInput, Transfer, useDebouncedValue, useTimeoutFlag };
263
+ export { SearchInput, Transfer };
@@ -0,0 +1,101 @@
1
+ import { Command, CommandInput, CommandList, CommandEmpty, CommandItem } from './chunk-HTEL5DQI.js';
2
+ import { Button } from './chunk-M4PZNAMV.js';
3
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
4
+ import * as React from 'react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var Combobox = ({
8
+ options,
9
+ value: controlledValue,
10
+ defaultValue = "",
11
+ onValueChange,
12
+ placeholder,
13
+ searchPlaceholder,
14
+ emptyText = "No result",
15
+ disabled = false,
16
+ name,
17
+ id,
18
+ className
19
+ }) => {
20
+ const [open, setOpen] = React.useState(false);
21
+ const [search, setSearch] = React.useState("");
22
+ const [internalValue, setInternalValue] = React.useState(defaultValue);
23
+ const isControlled = controlledValue !== void 0;
24
+ const value = isControlled ? controlledValue : internalValue;
25
+ const selectedLabel = options.find((option) => option.value === value)?.label ?? placeholder ?? "Select";
26
+ const resolvedSearch = search.trim().toLowerCase();
27
+ const filtered = resolvedSearch ? options.filter((option) => {
28
+ const haystack = `${option.label} ${option.value}`.toLowerCase();
29
+ return haystack.includes(resolvedSearch);
30
+ }) : options;
31
+ const setValue = (next) => {
32
+ if (!isControlled) setInternalValue(next);
33
+ onValueChange?.(next);
34
+ setOpen(false);
35
+ };
36
+ return /* @__PURE__ */ jsxs(
37
+ Popover,
38
+ {
39
+ open,
40
+ onOpenChange: (next) => {
41
+ setOpen(next);
42
+ if (!next) setSearch("");
43
+ },
44
+ children: [
45
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
46
+ Button,
47
+ {
48
+ id,
49
+ type: "button",
50
+ "data-slot": "combobox-trigger",
51
+ variant: "outline",
52
+ role: "combobox",
53
+ "aria-expanded": open,
54
+ disabled,
55
+ className,
56
+ children: [
57
+ /* @__PURE__ */ jsx("span", { className: value ? void 0 : "text-muted-foreground", children: value ? selectedLabel : placeholder ?? "Select" }),
58
+ /* @__PURE__ */ jsx("span", { className: "ui-combobox-caret", "aria-hidden": "true" })
59
+ ]
60
+ }
61
+ ) }),
62
+ name ? /* @__PURE__ */ jsx("input", { type: "hidden", name, value }) : null,
63
+ /* @__PURE__ */ jsx(
64
+ PopoverContent,
65
+ {
66
+ className: "ui-combobox-content",
67
+ align: "start",
68
+ sideOffset: 4,
69
+ collisionPadding: 12,
70
+ children: /* @__PURE__ */ jsxs(Command, { shouldFilter: false, className: "ui-combobox-command", children: [
71
+ /* @__PURE__ */ jsx(
72
+ CommandInput,
73
+ {
74
+ className: "ui-combobox-search",
75
+ value: search,
76
+ onValueChange: setSearch,
77
+ placeholder: searchPlaceholder ?? "Search..."
78
+ }
79
+ ),
80
+ /* @__PURE__ */ jsx(CommandList, { className: "ui-combobox-list", children: filtered.length === 0 ? /* @__PURE__ */ jsx(CommandEmpty, { children: /* @__PURE__ */ jsx("span", { className: "ui-combobox-empty", children: emptyText }) }) : filtered.map((option) => /* @__PURE__ */ jsx(
81
+ CommandItem,
82
+ {
83
+ value: option.value,
84
+ className: "ui-combobox-item",
85
+ "data-selected": value === option.value || void 0,
86
+ onSelect: () => {
87
+ setValue(option.value);
88
+ },
89
+ children: option.label
90
+ },
91
+ option.value
92
+ )) })
93
+ ] })
94
+ }
95
+ )
96
+ ]
97
+ }
98
+ );
99
+ };
100
+
101
+ export { Combobox };
@@ -0,0 +1,68 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ // src/lib/hooks.ts
4
+ function useDebouncedValue(value, delay = 250) {
5
+ const [debounced, setDebounced] = useState(value);
6
+ useEffect(() => {
7
+ const t = setTimeout(() => {
8
+ setDebounced(value);
9
+ }, delay);
10
+ return () => {
11
+ clearTimeout(t);
12
+ };
13
+ }, [value, delay]);
14
+ return debounced;
15
+ }
16
+ function useTimeoutFlag(signal, ms = 2e3) {
17
+ const [active, setActive] = useState(false);
18
+ useEffect(() => {
19
+ if (!signal) {
20
+ const id = window.setTimeout(() => {
21
+ setActive(false);
22
+ }, 0);
23
+ return () => {
24
+ clearTimeout(id);
25
+ };
26
+ }
27
+ const showId = window.setTimeout(() => {
28
+ setActive(true);
29
+ }, 0);
30
+ const hideId = window.setTimeout(() => {
31
+ setActive(false);
32
+ }, ms);
33
+ return () => {
34
+ clearTimeout(showId);
35
+ clearTimeout(hideId);
36
+ };
37
+ }, [signal, ms]);
38
+ return Boolean(signal) && active;
39
+ }
40
+ function useMediaQuery(query) {
41
+ const isBrowser = typeof window !== "undefined";
42
+ const getMatch = () => isBrowser ? window.matchMedia(query).matches : false;
43
+ const [matches, setMatches] = useState(getMatch());
44
+ useEffect(() => {
45
+ if (!isBrowser) return void 0;
46
+ const mediaQuery = window.matchMedia(query);
47
+ const updateMatch = () => {
48
+ setMatches(mediaQuery.matches);
49
+ };
50
+ updateMatch();
51
+ if (typeof mediaQuery.addEventListener === "function") {
52
+ mediaQuery.addEventListener("change", updateMatch);
53
+ return () => {
54
+ mediaQuery.removeEventListener("change", updateMatch);
55
+ };
56
+ }
57
+ mediaQuery.addListener(updateMatch);
58
+ return () => {
59
+ mediaQuery.removeListener(updateMatch);
60
+ };
61
+ }, [isBrowser, query]);
62
+ return matches;
63
+ }
64
+ function useIsMobile() {
65
+ return useMediaQuery("(max-width: 767px)");
66
+ }
67
+
68
+ export { useDebouncedValue, useIsMobile, useMediaQuery, useTimeoutFlag };
@@ -1,7 +1,7 @@
1
- import { Calendar } from './chunk-7577VIAC.js';
1
+ import { Calendar } from './chunk-IOGU3ZWF.js';
2
2
  import { Input } from './chunk-VOHTRR5X.js';
3
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
4
3
  import { Button } from './chunk-M4PZNAMV.js';
4
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
5
5
  import { useTranslation, usePickerLocales } from './chunk-RLGHEV4A.js';
6
6
  import { toIsoDate, parseDateInput } from './chunk-FXFJF4YA.js';
7
7
  import { cn } from './chunk-U7N2A7A3.js';
@@ -1,7 +1,7 @@
1
- import { Calendar } from './chunk-7577VIAC.js';
1
+ import { Calendar } from './chunk-IOGU3ZWF.js';
2
2
  import { Input } from './chunk-VOHTRR5X.js';
3
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
4
3
  import { Button } from './chunk-M4PZNAMV.js';
4
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
5
5
  import { useTranslation, usePickerLocales } from './chunk-RLGHEV4A.js';
6
6
  import { toIsoDate, parseDateInput } from './chunk-FXFJF4YA.js';
7
7
  import { cn } from './chunk-U7N2A7A3.js';
@@ -0,0 +1,114 @@
1
+ import { normalizeHhmm, isValidHhmm } from './chunk-FXFJF4YA.js';
2
+ import { cn } from './chunk-U7N2A7A3.js';
3
+ import * as React from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function clampStep(step) {
7
+ if (!step || Number.isNaN(step)) return 1;
8
+ const parsed = Math.max(1, Math.floor(step));
9
+ if (!Number.isFinite(parsed)) return 1;
10
+ return Math.min(59, parsed);
11
+ }
12
+ function applyStep(value, step) {
13
+ const normalized = normalizeHhmm(value);
14
+ if (!normalized) return value;
15
+ const [hourText, minuteText] = normalized.split(":");
16
+ const hour = Number(hourText);
17
+ const minute = Number(minuteText);
18
+ const floored = Math.floor(minute / step) * step;
19
+ const safeMinute = Math.min(59, Math.max(0, floored));
20
+ return `${String(hour).padStart(2, "0")}:${String(safeMinute).padStart(2, "0")}`;
21
+ }
22
+ function maskTime(raw) {
23
+ const digits = raw.replace(/\D/g, "").slice(0, 4);
24
+ if (digits.length <= 2) return digits;
25
+ return `${digits.slice(0, 2)}:${digits.slice(2)}`;
26
+ }
27
+ function TimeInput({
28
+ value: controlledValue,
29
+ defaultValue = "",
30
+ onValueChange,
31
+ placeholder,
32
+ step = 1,
33
+ className,
34
+ name,
35
+ id,
36
+ ...props
37
+ }) {
38
+ const safeStep = clampStep(step);
39
+ const [internal, setInternal] = React.useState(defaultValue);
40
+ const [displayValue, setDisplayValue] = React.useState(controlledValue ?? defaultValue);
41
+ const isControlled = controlledValue !== void 0;
42
+ const value = isControlled ? controlledValue ?? "" : internal;
43
+ React.useEffect(() => {
44
+ if (!isControlled) return;
45
+ setDisplayValue(controlledValue ?? "");
46
+ }, [controlledValue, isControlled]);
47
+ React.useEffect(() => {
48
+ if (isControlled) return;
49
+ setDisplayValue(internal);
50
+ }, [internal, isControlled]);
51
+ const commit = React.useCallback(
52
+ (next, fromBlur = false) => {
53
+ const normalized = normalizeHhmm(next);
54
+ if (!normalized) return;
55
+ const snapped = applyStep(normalized, safeStep);
56
+ if (!isControlled) {
57
+ setInternal(snapped);
58
+ }
59
+ if (isValidHhmm(snapped)) {
60
+ onValueChange?.(snapped);
61
+ setDisplayValue(snapped);
62
+ }
63
+ if (fromBlur && value !== snapped) {
64
+ onValueChange?.(snapped);
65
+ }
66
+ },
67
+ [isControlled, onValueChange, safeStep, value]
68
+ );
69
+ return /* @__PURE__ */ jsx(
70
+ "input",
71
+ {
72
+ id,
73
+ name,
74
+ value: displayValue,
75
+ "data-slot": "time-input",
76
+ className: cn("ui-time-input", className),
77
+ "aria-invalid": displayValue !== "" && !isValidHhmm(displayValue) ? "true" : void 0,
78
+ placeholder: placeholder ?? "HH:mm",
79
+ inputMode: "numeric",
80
+ autoComplete: "off",
81
+ ...props,
82
+ onChange: (event) => {
83
+ const masked = maskTime(event.target.value);
84
+ setDisplayValue(masked);
85
+ const normalized = normalizeHhmm(masked);
86
+ if (normalized) {
87
+ const snapped = applyStep(normalized, safeStep);
88
+ if (!isControlled) {
89
+ setInternal(snapped);
90
+ }
91
+ onValueChange?.(snapped);
92
+ setDisplayValue(snapped);
93
+ }
94
+ props.onChange?.(event);
95
+ },
96
+ onBlur: (event) => {
97
+ commit(event.target.value, true);
98
+ const normalized = normalizeHhmm(event.target.value);
99
+ if (!normalized) {
100
+ setDisplayValue(value);
101
+ }
102
+ props.onBlur?.(event);
103
+ },
104
+ onKeyDown: (event) => {
105
+ if (event.key === "Enter") {
106
+ commit(event.currentTarget.value, true);
107
+ }
108
+ props.onKeyDown?.(event);
109
+ }
110
+ }
111
+ );
112
+ }
113
+
114
+ export { TimeInput };
@@ -3,7 +3,15 @@ import * as React from 'react';
3
3
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
6
- var Avatar = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, { ref, "data-slot": "avatar", className: cn("ui-avatar", className), ...props }));
6
+ var Avatar = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ AvatarPrimitive.Root,
8
+ {
9
+ ref,
10
+ "data-slot": "avatar",
11
+ className: cn("ui-avatar", className),
12
+ ...props
13
+ }
14
+ ));
7
15
  Avatar.displayName = AvatarPrimitive.Root.displayName;
8
16
  var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
9
17
  AvatarPrimitive.Image,
@@ -0,0 +1,42 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import * as ResizablePrimitive from 'react-resizable-panels';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var ResizablePanelGroup = ({
6
+ className,
7
+ ...props
8
+ }) => /* @__PURE__ */ jsx(
9
+ ResizablePrimitive.Group,
10
+ {
11
+ "data-slot": "resizable-panel-group",
12
+ className: cn("ui-resizable-panel-group", className),
13
+ ...props
14
+ }
15
+ );
16
+ ResizablePanelGroup.displayName = "ResizablePanelGroup";
17
+ var ResizablePanel = ({
18
+ className,
19
+ ...props
20
+ }) => /* @__PURE__ */ jsx(
21
+ ResizablePrimitive.Panel,
22
+ {
23
+ "data-slot": "resizable-panel",
24
+ className: cn("ui-resizable-panel", className),
25
+ ...props
26
+ }
27
+ );
28
+ ResizablePanel.displayName = "ResizablePanel";
29
+ var ResizableHandle = ({
30
+ className,
31
+ ...props
32
+ }) => /* @__PURE__ */ jsx(
33
+ ResizablePrimitive.Separator,
34
+ {
35
+ "data-slot": "resizable-handle",
36
+ className: cn("ui-resizable-handle", className),
37
+ ...props
38
+ }
39
+ );
40
+ ResizableHandle.displayName = "ResizableHandle";
41
+
42
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
@@ -0,0 +1,83 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import * as React from 'react';
3
+ import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
4
+ import { ChevronDown } from 'lucide-react';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ var NavigationMenu = NavigationMenuPrimitive.Root;
8
+ var NavigationMenuList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
9
+ NavigationMenuPrimitive.List,
10
+ {
11
+ ref,
12
+ "data-slot": "navigation-menu-list",
13
+ className: cn("ui-navigation-menu-list", className),
14
+ ...props
15
+ }
16
+ ));
17
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
18
+ var NavigationMenuItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
19
+ NavigationMenuPrimitive.Item,
20
+ {
21
+ ref,
22
+ "data-slot": "navigation-menu-item",
23
+ className: cn("ui-navigation-menu-item", className),
24
+ ...props
25
+ }
26
+ ));
27
+ NavigationMenuItem.displayName = NavigationMenuPrimitive.Item.displayName;
28
+ var NavigationMenuTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
29
+ NavigationMenuPrimitive.Trigger,
30
+ {
31
+ ref,
32
+ "data-slot": "navigation-menu-trigger",
33
+ className: cn("ui-navigation-menu-trigger", className),
34
+ ...props,
35
+ children: [
36
+ children,
37
+ /* @__PURE__ */ jsx(ChevronDown, { className: "ui-navigation-menu-trigger-icon", "aria-hidden": "true" })
38
+ ]
39
+ }
40
+ ));
41
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
42
+ var NavigationMenuContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
43
+ NavigationMenuPrimitive.Content,
44
+ {
45
+ ref,
46
+ "data-slot": "navigation-menu-content",
47
+ className: cn("ui-navigation-menu-content", className),
48
+ ...props
49
+ }
50
+ ));
51
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
52
+ var NavigationMenuLink = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
53
+ NavigationMenuPrimitive.Link,
54
+ {
55
+ ref,
56
+ "data-slot": "navigation-menu-link",
57
+ className: cn("ui-navigation-menu-link", className),
58
+ ...props
59
+ }
60
+ ));
61
+ NavigationMenuLink.displayName = NavigationMenuPrimitive.Link.displayName;
62
+ var NavigationMenuIndicator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
63
+ NavigationMenuPrimitive.Indicator,
64
+ {
65
+ ref,
66
+ "data-slot": "navigation-menu-indicator",
67
+ className: cn("ui-navigation-menu-indicator", className),
68
+ ...props
69
+ }
70
+ ));
71
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
72
+ var NavigationMenuViewport = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
73
+ NavigationMenuPrimitive.Viewport,
74
+ {
75
+ ref,
76
+ "data-slot": "navigation-menu-viewport",
77
+ className: cn("ui-navigation-menu-viewport", className),
78
+ ...props
79
+ }
80
+ ));
81
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
82
+
83
+ export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport };
@@ -56,16 +56,7 @@ AlertBase.displayName = "Alert";
56
56
  var AlertTitle = React.forwardRef(
57
57
  ({ className, ...props }, ref) => {
58
58
  const tone = React.useContext(AlertContext);
59
- return /* @__PURE__ */ jsx(
60
- "p",
61
- {
62
- ref,
63
- "data-slot": "alert-title",
64
- "data-tone": tone,
65
- className,
66
- ...props
67
- }
68
- );
59
+ return /* @__PURE__ */ jsx("p", { ref, "data-slot": "alert-title", "data-tone": tone, className, ...props });
69
60
  }
70
61
  );
71
62
  AlertTitle.displayName = "AlertTitle";
@@ -1,4 +1,4 @@
1
- import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-3EMDVI7X.js';
1
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-CAEL2ZD2.js';
2
2
  import { Button } from './chunk-M4PZNAMV.js';
3
3
  import { useTranslation, useOptionalAppContext, APP_LOCALES, resolveTimezonePickerOptions, getTimezoneLabel, APP_TIME_FORMAT_OPTIONS, getTimeFormatLabel } from './chunk-RLGHEV4A.js';
4
4
  import { APP_DATE_FORMAT_OPTIONS, getDateFormatLabel } from './chunk-FXFJF4YA.js';
@@ -8,12 +8,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
8
8
  import { Link } from 'react-router-dom';
9
9
  import * as React from 'react';
10
10
 
11
- function Toolbar({
12
- onClear,
13
- hasActiveFilters = true,
14
- className,
15
- children
16
- }) {
11
+ function Toolbar({ onClear, hasActiveFilters = true, className, children }) {
17
12
  const { t } = useTranslation();
18
13
  return /* @__PURE__ */ jsxs("div", { className: cn("ui-toolbar", className), children: [
19
14
  children,
@@ -1,6 +1,6 @@
1
1
  export { B as BreadcrumbItem } from '../../navigation.prop-BKlxd-j7.js';
2
2
  export { c as FlexProp, I as InlineProp, P as PageContainerProp, P as PageContainerProps, d as PageHeaderProp, i as StackProp } from '../../layout.prop-Baq9muDN.js';
3
- export { F as FilterBar, a as FilterGroup, P as PageHeader, T as Toolbar, b as ToolbarGroup } from '../../filter-bar-DvVXm_d1.js';
3
+ export { F as FilterBar, a as FilterGroup, P as PageHeader, T as Toolbar, b as ToolbarGroup } from '../../filter-bar-WjnQOs2C.js';
4
4
  export { F as Flex, I as Inline, P as PageContainer, S as Stack } from '../../inline-DqfYlGKj.js';
5
5
  export { C as ColumnDef, D as DataTable, a as Density, b as Descriptions, E as EmptyState } from '../../data-table-B_q7j992.js';
6
6
  export { Badge } from '../data-display/badge.js';
@@ -18,6 +18,7 @@ export { Steps } from '../navigation/steps.js';
18
18
  export { AlertDialog, Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../feedback/dialog.js';
19
19
  export { Toaster } from '../feedback/sonner.js';
20
20
  export { L as LegacyToastOptions, t as toast, u as useToast } from '../../use-toast-Dsw3yE2S.js';
21
+ export { useDebouncedValue, useTimeoutFlag } from '../../lib/hooks.js';
21
22
  import { b as FormatDatetimeOptions, a as FormatDateOptions } from '../../format-date-ByyZoqI5.js';
22
23
  export { j as formatDate } from '../../format-date-ByyZoqI5.js';
23
24
  export { L as collectUploadCommitActions, M as createUploadItem } from '../../data-entry.prop-CDkOajPj.js';
@@ -49,20 +50,6 @@ import 'sonner';
49
50
  import 'date-fns';
50
51
  import '../../types-mvzYGrma.js';
51
52
 
52
- /**
53
- * Returns a debounced view of `value`, updated only after `delay` ms of no
54
- * change. Use for search inputs to avoid querying on every keystroke.
55
- *
56
- * setState runs only inside setTimeout (async) — compliant with
57
- * react-hooks/set-state-in-effect.
58
- */
59
- declare function useDebouncedValue<T>(value: T, delay?: number): T;
60
- /**
61
- * Returns true while `ms` haven't elapsed since `signal` last flipped truthy.
62
- * setState is scheduled asynchronously (setTimeout 0 / ms) — Rules of React safe.
63
- */
64
- declare function useTimeoutFlag(signal: unknown, ms?: number): boolean;
65
-
66
53
  type FormatOptions = FormatDatetimeOptions & FormatDateOptions;
67
54
  /** @deprecated Prefer `formatDate(value, { kind: "datetime" })`. */
68
55
  declare function formatDateTime(value: string | Date | null | undefined, options?: FormatOptions): string;
@@ -80,4 +67,4 @@ declare function shortId(id: string | null | undefined): string;
80
67
  * to a generic message for non-Error objects (avoids dumping stack traces). */
81
68
  declare function humanError(err: unknown): string;
82
69
 
83
- export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId, useDebouncedValue, useTimeoutFlag };
70
+ export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId };
@@ -1,42 +1,47 @@
1
1
  import '../../chunk-HKD6ERY7.js';
2
- export { PageContainer, Stack } from '../../chunk-YXJ3FS6O.js';
3
- import '../../chunk-FRU44GA2.js';
4
- export { FilterBar, FilterGroup, PageHeader, Toolbar, ToolbarGroup } from '../../chunk-PZ4LO723.js';
5
- import '../../chunk-TO33OY4L.js';
6
- export { Pagination } from '../../chunk-V45EK6S7.js';
2
+ export { FilterBar, FilterGroup, PageHeader, Toolbar, ToolbarGroup } from '../../chunk-ZY5NUG4B.js';
3
+ import '../../chunk-HL3G4SVG.js';
4
+ import '../../chunk-B73NA66T.js';
5
+ import '../../chunk-WGWI7EGL.js';
6
+ export { Pagination } from '../../chunk-56NYZNVY.js';
7
7
  export { Steps } from '../../chunk-OJZ6C2HM.js';
8
8
  export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
9
- export { AlertMutationFeedback, ButtonRefetch, DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages } from '../../chunk-N43OKOFT.js';
10
- export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-NGT3I6OG.js';
11
- import '../../chunk-3EMDVI7X.js';
9
+ export { PageContainer, Stack } from '../../chunk-CLU46QR2.js';
10
+ import '../../chunk-FRU44GA2.js';
11
+ import '../../chunk-TO33OY4L.js';
12
+ import '../../chunk-W4REF4TD.js';
13
+ export { AlertMutationFeedback, ButtonRefetch, DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages } from '../../chunk-GLEEJYGQ.js';
14
+ export { SearchInput, Transfer } from '../../chunk-INSF6K3Y.js';
15
+ export { TreeSelect } from '../../chunk-6J7GRCDA.js';
16
+ export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-PIQXAOWS.js';
17
+ import '../../chunk-CAEL2ZD2.js';
12
18
  import '../../chunk-CRERCLIZ.js';
13
- export { SearchInput, Transfer, useDebouncedValue, useTimeoutFlag } from '../../chunk-3FUXNL5A.js';
14
- export { TreeSelect } from '../../chunk-TV7WEENM.js';
19
+ export { Cascader } from '../../chunk-HB2OHB5X.js';
20
+ import '../../chunk-SMLKNECP.js';
21
+ import '../../chunk-O24Z3ULJ.js';
22
+ export { ChoiceField, Field } from '../../chunk-26CPAKUP.js';
15
23
  export { toast, useToast } from '../../chunk-B3WX53JQ.js';
16
24
  export { SkeletonCard, SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from '../../chunk-AINW5WYN.js';
17
25
  import '../../chunk-32WO3YLB.js';
18
- export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-TMDGV4CN.js';
26
+ export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-ZRRLOOBX.js';
19
27
  export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId } from '../../chunk-4R7QL3MW.js';
20
28
  export { AlertDialog, Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../../chunk-P4HFJQID.js';
21
29
  export { Toaster } from '../../chunk-TO7URV7U.js';
22
- import '../../chunk-WY4RSEYC.js';
23
- import '../../chunk-VOHTRR5X.js';
24
- export { Cascader } from '../../chunk-PKGPNZA4.js';
25
- import '../../chunk-SMLKNECP.js';
26
- import '../../chunk-O24Z3ULJ.js';
27
- export { ChoiceField, Field } from '../../chunk-26CPAKUP.js';
30
+ import '../../chunk-KDBGFJJI.js';
28
31
  import '../../chunk-HTEL5DQI.js';
29
- export { DataTable, Descriptions, EmptyState } from '../../chunk-N5SDFNSJ.js';
32
+ import '../../chunk-VOHTRR5X.js';
33
+ export { DataTable, Descriptions, EmptyState } from '../../chunk-JBHXILI4.js';
30
34
  import '../../chunk-DV52WNXO.js';
31
35
  export { Flex, Inline } from '../../chunk-TILFZBTE.js';
36
+ import '../../chunk-M4PZNAMV.js';
32
37
  export { Badge } from '../../chunk-UIYEAUWA.js';
33
38
  import '../../chunk-DY5C44UP.js';
34
39
  import '../../chunk-3KPEZ5CF.js';
35
40
  import '../../chunk-4MMIMZMK.js';
36
41
  import '../../chunk-IBK5D2Q6.js';
37
- import '../../chunk-M4PZNAMV.js';
38
42
  export { FormField } from '../../chunk-F7PG4OEV.js';
39
43
  import '../../chunk-7PWBC4BY.js';
40
44
  import '../../chunk-RLGHEV4A.js';
41
45
  export { formatDate } from '../../chunk-FXFJF4YA.js';
46
+ export { useDebouncedValue, useTimeoutFlag } from '../../chunk-LFW37FGG.js';
42
47
  import '../../chunk-U7N2A7A3.js';