@luxfi/ui 7.3.2 → 7.4.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.
- package/dist/alert.cjs +2 -2
- package/dist/alert.js +1 -1
- package/dist/badge.cjs +6 -6
- package/dist/badge.js +1 -1
- package/dist/bank.cjs +13 -13
- package/dist/bank.d.cts +30 -23
- package/dist/bank.d.ts +30 -23
- package/dist/bank.js +1 -1
- package/dist/button.cjs +3 -3
- package/dist/button.js +1 -1
- package/dist/close-button.cjs +2 -2
- package/dist/close-button.js +1 -1
- package/dist/dialog.cjs +13 -14
- package/dist/dialog.d.cts +58 -5
- package/dist/dialog.d.ts +58 -5
- package/dist/dialog.js +1 -2
- package/dist/drawer.cjs +2 -2
- package/dist/drawer.js +1 -1
- package/dist/icon-button.cjs +2 -2
- package/dist/icon-button.js +1 -1
- package/dist/index.cjs +402 -327
- package/dist/index.d.cts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +360 -290
- package/dist/input.cjs +10 -2
- package/dist/input.d.cts +8 -0
- package/dist/input.d.ts +8 -0
- package/dist/input.js +10 -2
- package/dist/lux.config.cjs +56 -0
- package/dist/lux.config.d.cts +415 -0
- package/dist/lux.config.d.ts +415 -0
- package/dist/lux.config.js +48 -0
- package/dist/popover.cjs +8 -9
- package/dist/popover.js +1 -2
- package/dist/provider.cjs +68 -6
- package/dist/provider.d.cts +3 -2
- package/dist/provider.d.ts +3 -2
- package/dist/provider.js +64 -6
- package/dist/tag.cjs +7 -8
- package/dist/tag.js +1 -2
- package/dist/textarea.cjs +10 -2
- package/dist/textarea.d.cts +2 -0
- package/dist/textarea.d.ts +2 -0
- package/dist/textarea.js +10 -2
- package/dist/tooltip.cjs +6 -6
- package/dist/tooltip.js +1 -1
- package/package.json +24 -12
- package/src/bank.tsx +2 -2
- package/src/button.tsx +1 -1
- package/src/close-button.tsx +1 -1
- package/src/dialog.tsx +1 -1
- package/src/icon-button.tsx +1 -1
- package/src/index.ts +6 -0
- package/src/input.tsx +17 -1
- package/src/lux.config.ts +81 -0
- package/src/popover.tsx +1 -1
- package/src/provider.tsx +51 -12
- package/src/textarea.tsx +11 -1
- package/src/tooltip.tsx +2 -2
package/dist/index.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { createGui, styled, View, Text } from '@
|
|
2
|
+
import { createGui, styled, View, TooltipGroup, Tooltip as Tooltip$1, Dialog, Popover, Text, GuiProvider } from '@hanzo/gui';
|
|
3
3
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
4
|
+
import * as React30 from 'react';
|
|
5
|
+
import React30__default from 'react';
|
|
6
|
+
import { defaultConfig } from '@hanzogui/config/v5';
|
|
4
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
8
|
import { clsx } from 'clsx';
|
|
6
9
|
import { twMerge } from 'tailwind-merge';
|
|
7
10
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
8
|
-
import * as React29 from 'react';
|
|
9
|
-
import React29__default from 'react';
|
|
10
11
|
import * as RadixAvatar from '@radix-ui/react-avatar';
|
|
11
|
-
import { TooltipGroup, Tooltip as Tooltip$1 } from '@hanzogui/tooltip';
|
|
12
12
|
import { useClickAway, useDebounce } from '@uidotdev/usehooks';
|
|
13
13
|
import * as RadixCheckbox from '@radix-ui/react-checkbox';
|
|
14
14
|
import * as Collapsible from '@radix-ui/react-collapsible';
|
|
15
|
-
import { Dialog } from '@hanzogui/dialog';
|
|
16
15
|
import * as RadixDialog from '@radix-ui/react-dialog';
|
|
17
16
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
18
17
|
import { debounce, throttle } from 'es-toolkit';
|
|
19
18
|
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
|
|
20
19
|
import { LuCheck, LuChevronRight } from 'react-icons/lu';
|
|
21
|
-
import { Popover } from '@hanzogui/popover';
|
|
22
20
|
import * as RadixProgress from '@radix-ui/react-progress';
|
|
23
21
|
import * as RadixRadioGroup from '@radix-ui/react-radio-group';
|
|
24
22
|
import * as RadixSelect from '@radix-ui/react-select';
|
|
@@ -28,20 +26,76 @@ import * as RadixTabs from '@radix-ui/react-tabs';
|
|
|
28
26
|
import { toast, Toaster as Toaster$1 } from 'sonner';
|
|
29
27
|
|
|
30
28
|
// src/provider.tsx
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
var LUX_BRAND = {
|
|
30
|
+
lux: "#7000FF",
|
|
31
|
+
zoo: "#6C5EFB",
|
|
32
|
+
hanzo: "#EA580C",
|
|
33
|
+
pars: "#1C3879"
|
|
34
|
+
};
|
|
35
|
+
var PARS_GOLD = "#C8A45C";
|
|
36
|
+
var TRUE_BLACK = "#000000";
|
|
37
|
+
var darkBase = {
|
|
38
|
+
...defaultConfig.themes.dark,
|
|
39
|
+
background: TRUE_BLACK,
|
|
40
|
+
backgroundHover: "#0A0A0A",
|
|
41
|
+
backgroundPress: "#141414",
|
|
42
|
+
backgroundFocus: "#0A0A0A"
|
|
43
|
+
};
|
|
44
|
+
var brandTheme = (accent, extra = {}) => ({
|
|
45
|
+
...darkBase,
|
|
46
|
+
accentBackground: accent,
|
|
47
|
+
accentColor: "#FFFFFF",
|
|
48
|
+
borderColorHover: accent,
|
|
49
|
+
colorHover: accent,
|
|
50
|
+
...extra
|
|
51
|
+
});
|
|
52
|
+
var luxThemes = {
|
|
53
|
+
dark: darkBase,
|
|
54
|
+
dark_lux: brandTheme(LUX_BRAND.lux),
|
|
55
|
+
dark_zoo: brandTheme(LUX_BRAND.zoo),
|
|
56
|
+
dark_hanzo: brandTheme(LUX_BRAND.hanzo),
|
|
57
|
+
dark_pars: brandTheme(LUX_BRAND.pars, { accentColor: PARS_GOLD })
|
|
58
|
+
};
|
|
59
|
+
var config = createGui({
|
|
60
|
+
...defaultConfig,
|
|
61
|
+
settings: {
|
|
62
|
+
...defaultConfig.settings,
|
|
63
|
+
onlyAllowShorthands: false
|
|
64
|
+
},
|
|
65
|
+
themes: {
|
|
66
|
+
...defaultConfig.themes,
|
|
67
|
+
...luxThemes
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
var lux_config_default = config;
|
|
34
71
|
var defaultQueryClient = new QueryClient({
|
|
35
72
|
defaultOptions: { queries: { refetchOnWindowFocus: false, retry: 1, staleTime: 3e4 } }
|
|
36
73
|
});
|
|
37
|
-
var
|
|
38
|
-
|
|
74
|
+
var FONT_BODY_RESET_ID = "lux-ui-font-body-reset";
|
|
75
|
+
var FONT_BODY_RESET_CSS = "body .font_body{line-height:1.5}";
|
|
76
|
+
var useFontBodyReset = () => {
|
|
77
|
+
React30__default.useInsertionEffect(() => {
|
|
78
|
+
if (typeof document === "undefined") return;
|
|
79
|
+
if (document.getElementById(FONT_BODY_RESET_ID)) return;
|
|
80
|
+
const style = document.createElement("style");
|
|
81
|
+
style.id = FONT_BODY_RESET_ID;
|
|
82
|
+
style.textContent = FONT_BODY_RESET_CSS;
|
|
83
|
+
document.head.appendChild(style);
|
|
84
|
+
}, []);
|
|
85
|
+
};
|
|
86
|
+
var AppProvider = ({
|
|
87
|
+
children,
|
|
88
|
+
queryClient,
|
|
89
|
+
defaultTheme = "dark_lux"
|
|
90
|
+
}) => {
|
|
91
|
+
useFontBodyReset();
|
|
92
|
+
return /* @__PURE__ */ jsx(GuiProvider, { config: lux_config_default, defaultTheme, children: /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient ?? defaultQueryClient, children }) });
|
|
39
93
|
};
|
|
40
94
|
function cn(...inputs) {
|
|
41
95
|
return twMerge(clsx(inputs));
|
|
42
96
|
}
|
|
43
97
|
var IndicatorIcon = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M7.5 15L12.5 10L7.5 5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
44
|
-
var AccordionRoot =
|
|
98
|
+
var AccordionRoot = React30.forwardRef(
|
|
45
99
|
function AccordionRoot2(props, ref) {
|
|
46
100
|
const {
|
|
47
101
|
multiple: _multiple,
|
|
@@ -60,7 +114,7 @@ var AccordionRoot = React29.forwardRef(
|
|
|
60
114
|
borderRadius: _borderRadius,
|
|
61
115
|
...rest
|
|
62
116
|
} = props;
|
|
63
|
-
const handleValueChange =
|
|
117
|
+
const handleValueChange = React30.useCallback(
|
|
64
118
|
(next) => {
|
|
65
119
|
onValueChange?.({ value: next });
|
|
66
120
|
},
|
|
@@ -88,7 +142,7 @@ var AccordionRoot = React29.forwardRef(
|
|
|
88
142
|
);
|
|
89
143
|
}
|
|
90
144
|
);
|
|
91
|
-
var AccordionItem =
|
|
145
|
+
var AccordionItem = React30.forwardRef(
|
|
92
146
|
function AccordionItem2(props, ref) {
|
|
93
147
|
const { className, as: _as, _first, _last, display: _display, ...rest } = props;
|
|
94
148
|
return /* @__PURE__ */ jsx(
|
|
@@ -104,7 +158,7 @@ var AccordionItem = React29.forwardRef(
|
|
|
104
158
|
);
|
|
105
159
|
}
|
|
106
160
|
);
|
|
107
|
-
var AccordionItemTrigger =
|
|
161
|
+
var AccordionItemTrigger = React30.forwardRef(function AccordionItemTrigger2(props, ref) {
|
|
108
162
|
const {
|
|
109
163
|
children,
|
|
110
164
|
indicatorPlacement: indicatorPlacementProp,
|
|
@@ -169,7 +223,7 @@ var AccordionItemTrigger = React29.forwardRef(function AccordionItemTrigger2(pro
|
|
|
169
223
|
}
|
|
170
224
|
) }) });
|
|
171
225
|
});
|
|
172
|
-
var AccordionItemContent =
|
|
226
|
+
var AccordionItemContent = React30.forwardRef(function AccordionItemContent2(props, ref) {
|
|
173
227
|
const { className, children, pb: _pb, pr: _pr, pl: _pl, w: _w, display: _display, flexDir: _flexDir, rowGap: _rowGap, ...rest } = props;
|
|
174
228
|
return /* @__PURE__ */ jsx(
|
|
175
229
|
AccordionPrimitive.Content,
|
|
@@ -187,11 +241,11 @@ var AccordionItemContent = React29.forwardRef(function AccordionItemContent2(pro
|
|
|
187
241
|
);
|
|
188
242
|
});
|
|
189
243
|
function useAccordion(items) {
|
|
190
|
-
const [value, setValue] =
|
|
191
|
-
const onValueChange =
|
|
244
|
+
const [value, setValue] = React30.useState([]);
|
|
245
|
+
const onValueChange = React30.useCallback(({ value: value2 }) => {
|
|
192
246
|
setValue(value2);
|
|
193
247
|
}, []);
|
|
194
|
-
const scrollToItemFromUrl =
|
|
248
|
+
const scrollToItemFromUrl = React30.useCallback(() => {
|
|
195
249
|
const hash = window.location.hash.replace("#", "");
|
|
196
250
|
if (!hash) {
|
|
197
251
|
return;
|
|
@@ -205,7 +259,7 @@ function useAccordion(items) {
|
|
|
205
259
|
setValue([itemToScroll.id]);
|
|
206
260
|
}
|
|
207
261
|
}, [items]);
|
|
208
|
-
return
|
|
262
|
+
return React30.useMemo(() => {
|
|
209
263
|
return {
|
|
210
264
|
value,
|
|
211
265
|
onValueChange,
|
|
@@ -248,7 +302,7 @@ var CLOSE_BUTTON_CLASSES = [
|
|
|
248
302
|
"hover:text-[var(--hover-color,currentColor)]",
|
|
249
303
|
"disabled:opacity-40"
|
|
250
304
|
].join(" ");
|
|
251
|
-
var CloseButton =
|
|
305
|
+
var CloseButton = React30.forwardRef(function CloseButton2(props, ref) {
|
|
252
306
|
const { variant: _variant, size: _size, className, children, ...rest } = props;
|
|
253
307
|
return /* @__PURE__ */ jsx(
|
|
254
308
|
CloseButtonFrame,
|
|
@@ -395,7 +449,7 @@ var SKELETON_CLASSES = [
|
|
|
395
449
|
"bg-[length:200%_100%]"
|
|
396
450
|
].join(" ");
|
|
397
451
|
var HIDE_BELOW_MAP = { lg: "lg:hidden", md: "md:hidden", sm: "sm:hidden" };
|
|
398
|
-
var Skeleton =
|
|
452
|
+
var Skeleton = React30.forwardRef(
|
|
399
453
|
function Skeleton2(props, ref) {
|
|
400
454
|
const { loading = false, asChild, className, children, style: styleProp, as: Component = "div", ...allRest } = props;
|
|
401
455
|
const shimStyle = shimToStyle(props);
|
|
@@ -404,10 +458,10 @@ var Skeleton = React29.forwardRef(
|
|
|
404
458
|
const cls = hideBelowClass ? cn(className, hideBelowClass) : className;
|
|
405
459
|
const htmlRest = stripShims(allRest);
|
|
406
460
|
if (!loading) {
|
|
407
|
-
if (asChild &&
|
|
461
|
+
if (asChild && React30.isValidElement(children)) return children;
|
|
408
462
|
return /* @__PURE__ */ jsx(Component, { ref, className: cls, style: mergedStyle, ...htmlRest, children });
|
|
409
463
|
}
|
|
410
|
-
if (asChild &&
|
|
464
|
+
if (asChild && React30.isValidElement(children)) {
|
|
411
465
|
return /* @__PURE__ */ jsx(
|
|
412
466
|
Component,
|
|
413
467
|
{
|
|
@@ -433,7 +487,7 @@ var Skeleton = React29.forwardRef(
|
|
|
433
487
|
);
|
|
434
488
|
}
|
|
435
489
|
);
|
|
436
|
-
var SkeletonCircle =
|
|
490
|
+
var SkeletonCircle = React30.forwardRef(
|
|
437
491
|
function SkeletonCircle2(props, ref) {
|
|
438
492
|
const { size = 40, loading = true, className, ...rest } = props;
|
|
439
493
|
const dimension = typeof size === "number" ? `${size}px` : size;
|
|
@@ -449,7 +503,7 @@ var SkeletonCircle = React29.forwardRef(
|
|
|
449
503
|
);
|
|
450
504
|
}
|
|
451
505
|
);
|
|
452
|
-
var SkeletonText =
|
|
506
|
+
var SkeletonText = React30.forwardRef(
|
|
453
507
|
function SkeletonText2(props, ref) {
|
|
454
508
|
const { noOfLines = 3, loading = true, className, ...rest } = props;
|
|
455
509
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("flex w-full flex-col gap-2", className), ...rest, children: Array.from({ length: noOfLines }).map((_, index) => /* @__PURE__ */ jsx(
|
|
@@ -479,7 +533,7 @@ var INDICATOR_SIZE_CLASSES = {
|
|
|
479
533
|
sm: "w-5 h-5 my-0",
|
|
480
534
|
md: "w-5 h-5 my-[2px]"
|
|
481
535
|
};
|
|
482
|
-
var Alert =
|
|
536
|
+
var Alert = React30.forwardRef(
|
|
483
537
|
function Alert2(props, ref) {
|
|
484
538
|
const {
|
|
485
539
|
title,
|
|
@@ -504,7 +558,7 @@ var Alert = React29.forwardRef(
|
|
|
504
558
|
if (_mb !== void 0) shimStyle.marginBottom = typeof _mb === "number" ? `${_mb * 4}px` : _mb;
|
|
505
559
|
if (_mt !== void 0) shimStyle.marginTop = typeof _mt === "number" ? `${_mt * 4}px` : _mt;
|
|
506
560
|
const alertStyle = Object.keys(shimStyle).length > 0 ? shimStyle : void 0;
|
|
507
|
-
const [isOpen, setIsOpen] =
|
|
561
|
+
const [isOpen, setIsOpen] = React30.useState(true);
|
|
508
562
|
const resolvedSize = size ?? "md";
|
|
509
563
|
const defaultIcon = /* @__PURE__ */ jsx(IndicatorIcon2, { className: "w-5 h-5" });
|
|
510
564
|
const iconElement = (() => {
|
|
@@ -519,7 +573,7 @@ var Alert = React29.forwardRef(
|
|
|
519
573
|
INDICATOR_SIZE_CLASSES[resolvedSize]
|
|
520
574
|
), children: icon || defaultIcon });
|
|
521
575
|
})();
|
|
522
|
-
const handleClose =
|
|
576
|
+
const handleClose = React30.useCallback(() => {
|
|
523
577
|
setIsOpen(false);
|
|
524
578
|
onClose?.();
|
|
525
579
|
}, [onClose]);
|
|
@@ -595,11 +649,11 @@ var VARIANT_CLASSES = {
|
|
|
595
649
|
};
|
|
596
650
|
var DEFAULT_SIZE = "md";
|
|
597
651
|
var DEFAULT_VARIANT = "subtle";
|
|
598
|
-
var AvatarGroupContext =
|
|
652
|
+
var AvatarGroupContext = React30.createContext({});
|
|
599
653
|
function useAvatarGroupContext() {
|
|
600
|
-
return
|
|
654
|
+
return React30.useContext(AvatarGroupContext);
|
|
601
655
|
}
|
|
602
|
-
var Avatar =
|
|
656
|
+
var Avatar = React30.forwardRef(
|
|
603
657
|
function Avatar2(props, ref) {
|
|
604
658
|
const group = useAvatarGroupContext();
|
|
605
659
|
const {
|
|
@@ -649,7 +703,7 @@ var Avatar = React29.forwardRef(
|
|
|
649
703
|
);
|
|
650
704
|
}
|
|
651
705
|
);
|
|
652
|
-
var AvatarFallback =
|
|
706
|
+
var AvatarFallback = React30.forwardRef(
|
|
653
707
|
function AvatarFallback2(props, ref) {
|
|
654
708
|
const { name, icon, children, className, ...rest } = props;
|
|
655
709
|
return /* @__PURE__ */ jsxs(
|
|
@@ -676,10 +730,10 @@ function getInitials(name) {
|
|
|
676
730
|
const lastName = names.length > 1 ? names[names.length - 1] : "";
|
|
677
731
|
return firstName && lastName ? `${firstName.charAt(0)}${lastName.charAt(0)}` : firstName.charAt(0);
|
|
678
732
|
}
|
|
679
|
-
var AvatarGroup =
|
|
733
|
+
var AvatarGroup = React30.forwardRef(
|
|
680
734
|
function AvatarGroup2(props, ref) {
|
|
681
735
|
const { size, variant, borderless, className, ...rest } = props;
|
|
682
|
-
const contextValue =
|
|
736
|
+
const contextValue = React30.useMemo(
|
|
683
737
|
() => ({ size, variant, borderless }),
|
|
684
738
|
[size, variant, borderless]
|
|
685
739
|
);
|
|
@@ -695,11 +749,11 @@ var AvatarGroup = React29.forwardRef(
|
|
|
695
749
|
);
|
|
696
750
|
var LG_BREAKPOINT = 1024;
|
|
697
751
|
function useIsMobile() {
|
|
698
|
-
const [isMobile, setIsMobile] =
|
|
752
|
+
const [isMobile, setIsMobile] = React30.useState(() => {
|
|
699
753
|
if (typeof window === "undefined") return false;
|
|
700
754
|
return window.innerWidth < LG_BREAKPOINT;
|
|
701
755
|
});
|
|
702
|
-
|
|
756
|
+
React30.useEffect(() => {
|
|
703
757
|
const mql = window.matchMedia(`(max-width: ${LG_BREAKPOINT - 1}px)`);
|
|
704
758
|
const handler = (e) => setIsMobile(e.matches);
|
|
705
759
|
setIsMobile(mql.matches);
|
|
@@ -712,7 +766,7 @@ function mapPlacement(p) {
|
|
|
712
766
|
if (!p) return void 0;
|
|
713
767
|
return p;
|
|
714
768
|
}
|
|
715
|
-
var Tooltip =
|
|
769
|
+
var Tooltip = React30.forwardRef(
|
|
716
770
|
function Tooltip2(props, ref) {
|
|
717
771
|
const {
|
|
718
772
|
showArrow: showArrowProp,
|
|
@@ -731,28 +785,28 @@ var Tooltip = React29.forwardRef(
|
|
|
731
785
|
interactive,
|
|
732
786
|
positioning
|
|
733
787
|
} = props;
|
|
734
|
-
const [open, setOpen] =
|
|
735
|
-
const timeoutRef =
|
|
788
|
+
const [open, setOpen] = React30.useState(defaultOpen);
|
|
789
|
+
const timeoutRef = React30.useRef(null);
|
|
736
790
|
const isMobile = useIsMobile();
|
|
737
|
-
const handleOpenChange =
|
|
791
|
+
const handleOpenChange = React30.useCallback((nextOpen) => {
|
|
738
792
|
setOpen(nextOpen);
|
|
739
793
|
onOpenChange?.({ open: nextOpen });
|
|
740
794
|
}, [onOpenChange]);
|
|
741
|
-
const handleOpenChangeManual =
|
|
795
|
+
const handleOpenChangeManual = React30.useCallback((nextOpen) => {
|
|
742
796
|
timeoutRef.current && window.clearTimeout(timeoutRef.current);
|
|
743
797
|
timeoutRef.current = window.setTimeout(() => {
|
|
744
798
|
setOpen(nextOpen);
|
|
745
799
|
onOpenChange?.({ open: nextOpen });
|
|
746
800
|
}, nextOpen ? openDelay : closeDelay);
|
|
747
801
|
}, [closeDelay, openDelay, onOpenChange]);
|
|
748
|
-
const handleClickAway =
|
|
802
|
+
const handleClickAway = React30.useCallback(() => {
|
|
749
803
|
handleOpenChangeManual(false);
|
|
750
804
|
}, [handleOpenChangeManual]);
|
|
751
805
|
const triggerRef = useClickAway(handleClickAway);
|
|
752
|
-
const handleTriggerClick =
|
|
806
|
+
const handleTriggerClick = React30.useCallback(() => {
|
|
753
807
|
handleOpenChangeManual(!open);
|
|
754
808
|
}, [handleOpenChangeManual, open]);
|
|
755
|
-
const handleContentClick =
|
|
809
|
+
const handleContentClick = React30.useCallback((event) => {
|
|
756
810
|
event.stopPropagation();
|
|
757
811
|
if (interactive) {
|
|
758
812
|
const closestLink = event.target?.closest("a");
|
|
@@ -761,7 +815,7 @@ var Tooltip = React29.forwardRef(
|
|
|
761
815
|
}
|
|
762
816
|
}
|
|
763
817
|
}, [interactive, handleOpenChangeManual]);
|
|
764
|
-
|
|
818
|
+
React30.useEffect(() => {
|
|
765
819
|
return () => {
|
|
766
820
|
if (timeoutRef.current) {
|
|
767
821
|
clearTimeout(timeoutRef.current);
|
|
@@ -863,7 +917,7 @@ var COLOR_PALETTE_CLASSES = {
|
|
|
863
917
|
bright_pink: "bg-badge-bright-pink-bg text-badge-bright-pink-fg"
|
|
864
918
|
};
|
|
865
919
|
var S2 = 4;
|
|
866
|
-
var Badge =
|
|
920
|
+
var Badge = React30__default.forwardRef(
|
|
867
921
|
function Badge2(props, ref) {
|
|
868
922
|
const {
|
|
869
923
|
loading,
|
|
@@ -1112,7 +1166,7 @@ function buildShimStyle(props) {
|
|
|
1112
1166
|
if (props.borderTopRightRadius !== void 0) s.borderTopRightRadius = typeof props.borderTopRightRadius === "number" ? `${props.borderTopRightRadius}px` : props.borderTopRightRadius;
|
|
1113
1167
|
return Object.keys(s).length > 0 ? s : void 0;
|
|
1114
1168
|
}
|
|
1115
|
-
var Button =
|
|
1169
|
+
var Button = React30.forwardRef(
|
|
1116
1170
|
function Button2(props, ref) {
|
|
1117
1171
|
const {
|
|
1118
1172
|
className,
|
|
@@ -1214,7 +1268,7 @@ function buttonVariants(opts) {
|
|
|
1214
1268
|
const s = opts?.size ?? "md";
|
|
1215
1269
|
return [BASE_CLASSES2, VARIANT_CLASSES2[v] ?? "", SIZE_CLASSES4[s] ?? ""].filter(Boolean).join(" ");
|
|
1216
1270
|
}
|
|
1217
|
-
var ButtonGroup =
|
|
1271
|
+
var ButtonGroup = React30.forwardRef(
|
|
1218
1272
|
function ButtonGroup2(props, ref) {
|
|
1219
1273
|
const { className, ...rest } = props;
|
|
1220
1274
|
return /* @__PURE__ */ jsx(
|
|
@@ -1228,7 +1282,7 @@ var ButtonGroup = React29.forwardRef(
|
|
|
1228
1282
|
);
|
|
1229
1283
|
}
|
|
1230
1284
|
);
|
|
1231
|
-
var ButtonGroupRadio =
|
|
1285
|
+
var ButtonGroupRadio = React30.forwardRef(
|
|
1232
1286
|
function ButtonGroupRadio2(props, ref) {
|
|
1233
1287
|
const {
|
|
1234
1288
|
children,
|
|
@@ -1240,24 +1294,24 @@ var ButtonGroupRadio = React29.forwardRef(
|
|
|
1240
1294
|
className,
|
|
1241
1295
|
...rest
|
|
1242
1296
|
} = props;
|
|
1243
|
-
const firstChildValue =
|
|
1297
|
+
const firstChildValue = React30.useMemo(() => {
|
|
1244
1298
|
const firstChild = Array.isArray(children) ? children[0] : void 0;
|
|
1245
1299
|
return typeof firstChild?.props.value === "string" ? firstChild.props.value : void 0;
|
|
1246
1300
|
}, [children]);
|
|
1247
|
-
const [value, setValue] =
|
|
1248
|
-
const handleItemClick =
|
|
1301
|
+
const [value, setValue] = React30.useState(defaultValue ?? firstChildValue);
|
|
1302
|
+
const handleItemClick = React30.useCallback((event) => {
|
|
1249
1303
|
const v = event.currentTarget.value;
|
|
1250
1304
|
setValue(v);
|
|
1251
1305
|
onChange?.(v);
|
|
1252
1306
|
}, [onChange]);
|
|
1253
|
-
const clonedChildren =
|
|
1254
|
-
return
|
|
1307
|
+
const clonedChildren = React30.Children.map(children, (child) => {
|
|
1308
|
+
return React30.cloneElement(child, {
|
|
1255
1309
|
onClick: handleItemClick,
|
|
1256
1310
|
selected: value === child.props.value,
|
|
1257
1311
|
variant
|
|
1258
1312
|
});
|
|
1259
1313
|
});
|
|
1260
|
-
const childrenLength =
|
|
1314
|
+
const childrenLength = React30.Children.count(children);
|
|
1261
1315
|
return /* @__PURE__ */ jsx(Skeleton, { loading, children: /* @__PURE__ */ jsx(
|
|
1262
1316
|
"div",
|
|
1263
1317
|
{
|
|
@@ -1277,11 +1331,11 @@ var ButtonGroupRadio = React29.forwardRef(
|
|
|
1277
1331
|
);
|
|
1278
1332
|
var NOOP = () => {
|
|
1279
1333
|
};
|
|
1280
|
-
var CheckboxGroupContext =
|
|
1334
|
+
var CheckboxGroupContext = React30.createContext(null);
|
|
1281
1335
|
function useCheckboxGroupContext() {
|
|
1282
|
-
return
|
|
1336
|
+
return React30.useContext(CheckboxGroupContext);
|
|
1283
1337
|
}
|
|
1284
|
-
var CheckboxGroupBase =
|
|
1338
|
+
var CheckboxGroupBase = React30.forwardRef(
|
|
1285
1339
|
function CheckboxGroup(props, ref) {
|
|
1286
1340
|
const {
|
|
1287
1341
|
children,
|
|
@@ -1293,10 +1347,10 @@ var CheckboxGroupBase = React29.forwardRef(
|
|
|
1293
1347
|
className,
|
|
1294
1348
|
...rest
|
|
1295
1349
|
} = props;
|
|
1296
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
1350
|
+
const [uncontrolledValue, setUncontrolledValue] = React30.useState(defaultValue ?? []);
|
|
1297
1351
|
const isControlled = controlledValue !== void 0;
|
|
1298
1352
|
const value = isControlled ? controlledValue : uncontrolledValue;
|
|
1299
|
-
const toggle =
|
|
1353
|
+
const toggle = React30.useCallback(
|
|
1300
1354
|
(itemValue) => {
|
|
1301
1355
|
const next = value.includes(itemValue) ? value.filter((v) => v !== itemValue) : [...value, itemValue];
|
|
1302
1356
|
if (!isControlled) {
|
|
@@ -1306,12 +1360,12 @@ var CheckboxGroupBase = React29.forwardRef(
|
|
|
1306
1360
|
},
|
|
1307
1361
|
[value, isControlled, onValueChange]
|
|
1308
1362
|
);
|
|
1309
|
-
|
|
1363
|
+
React30.useEffect(() => {
|
|
1310
1364
|
if (isControlled) {
|
|
1311
1365
|
setUncontrolledValue(controlledValue);
|
|
1312
1366
|
}
|
|
1313
1367
|
}, [isControlled, controlledValue]);
|
|
1314
|
-
const ctx =
|
|
1368
|
+
const ctx = React30.useMemo(() => ({ value, toggle }), [value, toggle]);
|
|
1315
1369
|
return /* @__PURE__ */ jsx(CheckboxGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
|
|
1316
1370
|
"div",
|
|
1317
1371
|
{
|
|
@@ -1369,7 +1423,7 @@ var IndeterminateIcon = ({ className }) => /* @__PURE__ */ jsx(
|
|
|
1369
1423
|
children: /* @__PURE__ */ jsx("path", { d: "M0 0H12V2H0V0Z", fill: "currentColor" })
|
|
1370
1424
|
}
|
|
1371
1425
|
);
|
|
1372
|
-
var CheckboxBase =
|
|
1426
|
+
var CheckboxBase = React30.forwardRef(
|
|
1373
1427
|
function Checkbox(props, ref) {
|
|
1374
1428
|
const {
|
|
1375
1429
|
icon,
|
|
@@ -1390,8 +1444,8 @@ var CheckboxBase = React29.forwardRef(
|
|
|
1390
1444
|
...rest
|
|
1391
1445
|
} = props;
|
|
1392
1446
|
const group = useCheckboxGroupContext();
|
|
1393
|
-
const hiddenInputRef =
|
|
1394
|
-
const setHiddenInputRef =
|
|
1447
|
+
const hiddenInputRef = React30.useRef(null);
|
|
1448
|
+
const setHiddenInputRef = React30.useCallback(
|
|
1395
1449
|
(node) => {
|
|
1396
1450
|
hiddenInputRef.current = node;
|
|
1397
1451
|
if (typeof ref === "function") {
|
|
@@ -1404,7 +1458,7 @@ var CheckboxBase = React29.forwardRef(
|
|
|
1404
1458
|
);
|
|
1405
1459
|
const isInGroup = group !== null && value !== void 0;
|
|
1406
1460
|
const groupChecked = isInGroup ? group.value.includes(value) : void 0;
|
|
1407
|
-
const [internalChecked, setInternalChecked] =
|
|
1461
|
+
const [internalChecked, setInternalChecked] = React30.useState(
|
|
1408
1462
|
defaultChecked ?? false
|
|
1409
1463
|
);
|
|
1410
1464
|
const isControlled = checkedProp !== void 0 || isInGroup;
|
|
@@ -1416,7 +1470,7 @@ var CheckboxBase = React29.forwardRef(
|
|
|
1416
1470
|
} else {
|
|
1417
1471
|
checkedState = internalChecked;
|
|
1418
1472
|
}
|
|
1419
|
-
const handleCheckedChange =
|
|
1473
|
+
const handleCheckedChange = React30.useCallback(
|
|
1420
1474
|
(nextChecked) => {
|
|
1421
1475
|
if (readOnly) return;
|
|
1422
1476
|
if (!isControlled) {
|
|
@@ -1580,7 +1634,7 @@ function resolveSpacing(v) {
|
|
|
1580
1634
|
}
|
|
1581
1635
|
return void 0;
|
|
1582
1636
|
}
|
|
1583
|
-
var Link =
|
|
1637
|
+
var Link = React30__default.forwardRef(
|
|
1584
1638
|
function Link2(props, ref) {
|
|
1585
1639
|
const {
|
|
1586
1640
|
external,
|
|
@@ -1669,7 +1723,7 @@ var Link = React29__default.forwardRef(
|
|
|
1669
1723
|
) });
|
|
1670
1724
|
}
|
|
1671
1725
|
);
|
|
1672
|
-
var LinkBox =
|
|
1726
|
+
var LinkBox = React30__default.forwardRef(
|
|
1673
1727
|
function LinkBox2(props, ref) {
|
|
1674
1728
|
const { className, ...rest } = props;
|
|
1675
1729
|
return /* @__PURE__ */ jsx(
|
|
@@ -1682,7 +1736,7 @@ var LinkBox = React29__default.forwardRef(
|
|
|
1682
1736
|
);
|
|
1683
1737
|
}
|
|
1684
1738
|
);
|
|
1685
|
-
var LinkOverlay =
|
|
1739
|
+
var LinkOverlay = React30__default.forwardRef(
|
|
1686
1740
|
function LinkOverlay2(props, ref) {
|
|
1687
1741
|
const {
|
|
1688
1742
|
children,
|
|
@@ -1763,8 +1817,8 @@ var LinkOverlay = React29__default.forwardRef(
|
|
|
1763
1817
|
}
|
|
1764
1818
|
);
|
|
1765
1819
|
function useUpdateEffect(effect, deps) {
|
|
1766
|
-
const isFirstMount =
|
|
1767
|
-
|
|
1820
|
+
const isFirstMount = React30__default.useRef(true);
|
|
1821
|
+
React30__default.useEffect(() => {
|
|
1768
1822
|
if (isFirstMount.current) {
|
|
1769
1823
|
isFirstMount.current = false;
|
|
1770
1824
|
return;
|
|
@@ -1781,8 +1835,8 @@ function scrollToElement(id) {
|
|
|
1781
1835
|
var CUT_ID = "CollapsibleDetails";
|
|
1782
1836
|
var CollapsibleDetails = (props) => {
|
|
1783
1837
|
const { children, id = CUT_ID, onClick, isExpanded: isExpandedProp = false, text: textProp, loading, noScroll, ...rest } = props;
|
|
1784
|
-
const [isExpanded, setIsExpanded] =
|
|
1785
|
-
const handleClick =
|
|
1838
|
+
const [isExpanded, setIsExpanded] = React30__default.useState(isExpandedProp);
|
|
1839
|
+
const handleClick = React30__default.useCallback((event) => {
|
|
1786
1840
|
setIsExpanded((flag) => !flag);
|
|
1787
1841
|
if (!noScroll) {
|
|
1788
1842
|
scrollToElement(id);
|
|
@@ -1813,11 +1867,11 @@ var CollapsibleDetails = (props) => {
|
|
|
1813
1867
|
var CollapsibleList = (props) => {
|
|
1814
1868
|
const CUT_LENGTH = 3;
|
|
1815
1869
|
const { items, renderItem, triggerProps, cutLength = CUT_LENGTH, text: textProp, defaultExpanded = false, className, ...rest } = props;
|
|
1816
|
-
const [isExpanded, setIsExpanded] =
|
|
1817
|
-
|
|
1870
|
+
const [isExpanded, setIsExpanded] = React30__default.useState(defaultExpanded);
|
|
1871
|
+
React30__default.useEffect(() => {
|
|
1818
1872
|
setIsExpanded(defaultExpanded);
|
|
1819
1873
|
}, [defaultExpanded]);
|
|
1820
|
-
const handleToggle =
|
|
1874
|
+
const handleToggle = React30__default.useCallback(() => {
|
|
1821
1875
|
setIsExpanded((flag) => !flag);
|
|
1822
1876
|
}, []);
|
|
1823
1877
|
const text = isExpanded ? textProp?.[1] ?? "Hide" : textProp?.[0] ?? "Show all";
|
|
@@ -1834,10 +1888,10 @@ var CollapsibleList = (props) => {
|
|
|
1834
1888
|
) })
|
|
1835
1889
|
] }) });
|
|
1836
1890
|
};
|
|
1837
|
-
var ColorModeContext =
|
|
1891
|
+
var ColorModeContext = React30.createContext(void 0);
|
|
1838
1892
|
function ColorModeProvider(props) {
|
|
1839
1893
|
const { children, defaultTheme = "light", value: controlledValue, onValueChange } = props;
|
|
1840
|
-
const [internalMode, setInternalMode] =
|
|
1894
|
+
const [internalMode, setInternalMode] = React30.useState(() => {
|
|
1841
1895
|
if (controlledValue === "dark" || controlledValue === "light") {
|
|
1842
1896
|
return controlledValue;
|
|
1843
1897
|
}
|
|
@@ -1847,7 +1901,7 @@ function ColorModeProvider(props) {
|
|
|
1847
1901
|
return defaultTheme === "dark" ? "dark" : "light";
|
|
1848
1902
|
});
|
|
1849
1903
|
const colorMode = controlledValue === "dark" || controlledValue === "light" ? controlledValue : internalMode;
|
|
1850
|
-
const setColorMode =
|
|
1904
|
+
const setColorMode = React30.useCallback((mode) => {
|
|
1851
1905
|
const resolved = mode === "dark" ? "dark" : "light";
|
|
1852
1906
|
setInternalMode(resolved);
|
|
1853
1907
|
onValueChange?.(resolved);
|
|
@@ -1856,19 +1910,19 @@ function ColorModeProvider(props) {
|
|
|
1856
1910
|
document.documentElement.classList.toggle("light", resolved === "light");
|
|
1857
1911
|
}
|
|
1858
1912
|
}, [onValueChange]);
|
|
1859
|
-
const toggleColorMode =
|
|
1913
|
+
const toggleColorMode = React30.useCallback(() => {
|
|
1860
1914
|
setColorMode(colorMode === "dark" ? "light" : "dark");
|
|
1861
1915
|
}, [colorMode, setColorMode]);
|
|
1862
|
-
const ctx =
|
|
1916
|
+
const ctx = React30.useMemo(
|
|
1863
1917
|
() => ({ colorMode, setColorMode, toggleColorMode }),
|
|
1864
1918
|
[colorMode, setColorMode, toggleColorMode]
|
|
1865
1919
|
);
|
|
1866
1920
|
return /* @__PURE__ */ jsx(ColorModeContext.Provider, { value: ctx, children });
|
|
1867
1921
|
}
|
|
1868
1922
|
function useColorMode() {
|
|
1869
|
-
const ctx =
|
|
1923
|
+
const ctx = React30.useContext(ColorModeContext);
|
|
1870
1924
|
if (!ctx) {
|
|
1871
|
-
const [mode, setMode] =
|
|
1925
|
+
const [mode, setMode] = React30.useState(() => {
|
|
1872
1926
|
if (typeof document !== "undefined" && document.documentElement.classList.contains("dark")) {
|
|
1873
1927
|
return "dark";
|
|
1874
1928
|
}
|
|
@@ -1912,9 +1966,9 @@ function BackToButton({ onClick }) {
|
|
|
1912
1966
|
}
|
|
1913
1967
|
);
|
|
1914
1968
|
}
|
|
1915
|
-
var DialogSizeContext =
|
|
1969
|
+
var DialogSizeContext = React30.createContext({ size: "md" });
|
|
1916
1970
|
function useDialogSizeContext() {
|
|
1917
|
-
return
|
|
1971
|
+
return React30.useContext(DialogSizeContext);
|
|
1918
1972
|
}
|
|
1919
1973
|
var CONTENT_SIZE_MAP = {
|
|
1920
1974
|
sm: "max-w-[400px]",
|
|
@@ -1946,13 +2000,13 @@ var DialogRoot = ({
|
|
|
1946
2000
|
modal = true
|
|
1947
2001
|
// motionPreset is intentionally unused -- kept for API compat
|
|
1948
2002
|
}) => {
|
|
1949
|
-
const handleOpenChange =
|
|
2003
|
+
const handleOpenChange = React30.useCallback(
|
|
1950
2004
|
(nextOpen) => {
|
|
1951
2005
|
onOpenChange?.({ open: nextOpen });
|
|
1952
2006
|
},
|
|
1953
2007
|
[onOpenChange]
|
|
1954
2008
|
);
|
|
1955
|
-
const ctx =
|
|
2009
|
+
const ctx = React30.useMemo(() => ({ size }), [size]);
|
|
1956
2010
|
return /* @__PURE__ */ jsx(DialogSizeContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
|
|
1957
2011
|
Dialog,
|
|
1958
2012
|
{
|
|
@@ -1964,7 +2018,7 @@ var DialogRoot = ({
|
|
|
1964
2018
|
}
|
|
1965
2019
|
) });
|
|
1966
2020
|
};
|
|
1967
|
-
var DialogContent =
|
|
2021
|
+
var DialogContent = React30.forwardRef(function DialogContent2(props, ref) {
|
|
1968
2022
|
const {
|
|
1969
2023
|
children,
|
|
1970
2024
|
portalled: _portalled = true,
|
|
@@ -2021,11 +2075,11 @@ var DialogContent = React29.forwardRef(function DialogContent2(props, ref) {
|
|
|
2021
2075
|
)
|
|
2022
2076
|
] });
|
|
2023
2077
|
});
|
|
2024
|
-
var DialogCloseTrigger =
|
|
2078
|
+
var DialogCloseTrigger = React30.forwardRef(function DialogCloseTrigger2(props, ref) {
|
|
2025
2079
|
const { className, ...rest } = props;
|
|
2026
2080
|
return /* @__PURE__ */ jsx(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(CloseButton, { ref, className, ...rest, children: props.children }) });
|
|
2027
2081
|
});
|
|
2028
|
-
var DialogHeader =
|
|
2082
|
+
var DialogHeader = React30.forwardRef(function DialogHeader2(props, ref) {
|
|
2029
2083
|
const { startElement: startElementProp, onBackToClick, className, children, ...rest } = props;
|
|
2030
2084
|
const startElement = startElementProp ?? (onBackToClick ? /* @__PURE__ */ jsx(BackToButton, { onClick: onBackToClick }) : void 0);
|
|
2031
2085
|
return /* @__PURE__ */ jsxs(
|
|
@@ -2055,7 +2109,7 @@ var DialogHeader = React29.forwardRef(function DialogHeader2(props, ref) {
|
|
|
2055
2109
|
}
|
|
2056
2110
|
);
|
|
2057
2111
|
});
|
|
2058
|
-
var DialogBody =
|
|
2112
|
+
var DialogBody = React30.forwardRef(function DialogBody2({ className, pt, display, flexDir, style: styleProp, ...props }, ref) {
|
|
2059
2113
|
const bodyStyle = {
|
|
2060
2114
|
...styleProp,
|
|
2061
2115
|
...pt !== void 0 ? { paddingTop: typeof pt === "number" ? `${pt * 4}px` : pt } : {},
|
|
@@ -2072,7 +2126,7 @@ var DialogBody = React29.forwardRef(function DialogBody2({ className, pt, displa
|
|
|
2072
2126
|
}
|
|
2073
2127
|
);
|
|
2074
2128
|
});
|
|
2075
|
-
var DialogFooter =
|
|
2129
|
+
var DialogFooter = React30.forwardRef(function DialogFooter2({ className, ...props }, ref) {
|
|
2076
2130
|
return /* @__PURE__ */ jsx(
|
|
2077
2131
|
"div",
|
|
2078
2132
|
{
|
|
@@ -2087,8 +2141,8 @@ var DialogTitle = Dialog.Title;
|
|
|
2087
2141
|
var DialogDescription = Dialog.Description;
|
|
2088
2142
|
var DialogTrigger = Dialog.Trigger;
|
|
2089
2143
|
var DialogActionTrigger = Dialog.Close;
|
|
2090
|
-
var DrawerPlacementContext =
|
|
2091
|
-
var DrawerSizeContext =
|
|
2144
|
+
var DrawerPlacementContext = React30.createContext("right");
|
|
2145
|
+
var DrawerSizeContext = React30.createContext("md");
|
|
2092
2146
|
var DrawerRoot = (props) => {
|
|
2093
2147
|
const {
|
|
2094
2148
|
children,
|
|
@@ -2099,7 +2153,7 @@ var DrawerRoot = (props) => {
|
|
|
2099
2153
|
modal = true,
|
|
2100
2154
|
size = "md"
|
|
2101
2155
|
} = props;
|
|
2102
|
-
const handleOpenChange =
|
|
2156
|
+
const handleOpenChange = React30.useCallback((nextOpen) => {
|
|
2103
2157
|
onOpenChange?.({ open: nextOpen });
|
|
2104
2158
|
}, [onOpenChange]);
|
|
2105
2159
|
return /* @__PURE__ */ jsx(DrawerPlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsx(DrawerSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(
|
|
@@ -2141,11 +2195,11 @@ var SIZE_CLASSES6 = {
|
|
|
2141
2195
|
top: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" },
|
|
2142
2196
|
bottom: { xs: "h-40", sm: "h-60", md: "h-80", lg: "h-96", xl: "h-[480px]", full: "h-screen" }
|
|
2143
2197
|
};
|
|
2144
|
-
var DrawerContent =
|
|
2198
|
+
var DrawerContent = React30.forwardRef(
|
|
2145
2199
|
function DrawerContent2(props, ref) {
|
|
2146
2200
|
const { children, portalled = true, portalRef, offset: _offset, backdrop = true, className, ...rest } = props;
|
|
2147
|
-
const placement =
|
|
2148
|
-
const size =
|
|
2201
|
+
const placement = React30.useContext(DrawerPlacementContext);
|
|
2202
|
+
const size = React30.useContext(DrawerSizeContext);
|
|
2149
2203
|
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2150
2204
|
backdrop && /* @__PURE__ */ jsx(
|
|
2151
2205
|
RadixDialog.Overlay,
|
|
@@ -2178,7 +2232,7 @@ var DrawerContent = React29.forwardRef(
|
|
|
2178
2232
|
return content;
|
|
2179
2233
|
}
|
|
2180
2234
|
);
|
|
2181
|
-
var DrawerCloseTrigger =
|
|
2235
|
+
var DrawerCloseTrigger = React30.forwardRef(function DrawerCloseTrigger2(props, ref) {
|
|
2182
2236
|
return /* @__PURE__ */ jsx(RadixDialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2183
2237
|
CloseButton,
|
|
2184
2238
|
{
|
|
@@ -2192,17 +2246,17 @@ var DrawerTrigger = (props) => {
|
|
|
2192
2246
|
const { asChild = true, ...rest } = props;
|
|
2193
2247
|
return /* @__PURE__ */ jsx(RadixDialog.Trigger, { asChild, ...rest });
|
|
2194
2248
|
};
|
|
2195
|
-
var DrawerHeader =
|
|
2249
|
+
var DrawerHeader = React30.forwardRef(
|
|
2196
2250
|
function DrawerHeader2({ className, ...props }, ref) {
|
|
2197
2251
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col gap-1.5 p-6 pb-0", className), ...props });
|
|
2198
2252
|
}
|
|
2199
2253
|
);
|
|
2200
|
-
var DrawerBody =
|
|
2254
|
+
var DrawerBody = React30.forwardRef(
|
|
2201
2255
|
function DrawerBody2({ className, ...props }, ref) {
|
|
2202
2256
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("flex-1 overflow-auto p-6", className), ...props });
|
|
2203
2257
|
}
|
|
2204
2258
|
);
|
|
2205
|
-
var DrawerFooter =
|
|
2259
|
+
var DrawerFooter = React30.forwardRef(
|
|
2206
2260
|
function DrawerFooter2({ className, ...props }, ref) {
|
|
2207
2261
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center justify-end gap-2 p-6 pt-0", className), ...props });
|
|
2208
2262
|
}
|
|
@@ -2215,7 +2269,7 @@ function upperFirst(str) {
|
|
|
2215
2269
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
2216
2270
|
}
|
|
2217
2271
|
var ICONS = {};
|
|
2218
|
-
var EmptyState =
|
|
2272
|
+
var EmptyState = React30.forwardRef(
|
|
2219
2273
|
function EmptyState2(props, ref) {
|
|
2220
2274
|
const { title, description, term, type = "query", icon, children, className, ...rest } = props;
|
|
2221
2275
|
const titleContent = (() => {
|
|
@@ -2275,7 +2329,7 @@ function getComponentDisplayName(type) {
|
|
|
2275
2329
|
if ("displayName" in type) return type.displayName;
|
|
2276
2330
|
return void 0;
|
|
2277
2331
|
}
|
|
2278
|
-
var Field =
|
|
2332
|
+
var Field = React30.forwardRef(
|
|
2279
2333
|
function Field2(props, ref) {
|
|
2280
2334
|
const {
|
|
2281
2335
|
label,
|
|
@@ -2327,14 +2381,14 @@ var Field = React29.forwardRef(
|
|
|
2327
2381
|
}
|
|
2328
2382
|
);
|
|
2329
2383
|
const helperTextElement = helperText ? /* @__PURE__ */ jsx("p", { className: "mt-1.5 text-xs text-[var(--color-text-secondary,theme(colors.gray.400))]", children: helperText }) : null;
|
|
2330
|
-
const child2 =
|
|
2384
|
+
const child2 = React30.Children.only(children);
|
|
2331
2385
|
const isInputGroup = getComponentDisplayName(child2.type) === "InputGroup";
|
|
2332
2386
|
if (isInputGroup) {
|
|
2333
|
-
const inputElement2 =
|
|
2334
|
-
|
|
2387
|
+
const inputElement2 = React30.cloneElement(
|
|
2388
|
+
React30.Children.only(child2.props.children),
|
|
2335
2389
|
injectedProps2
|
|
2336
2390
|
);
|
|
2337
|
-
const groupInputElement =
|
|
2391
|
+
const groupInputElement = React30.cloneElement(
|
|
2338
2392
|
child2,
|
|
2339
2393
|
{},
|
|
2340
2394
|
inputElement2,
|
|
@@ -2357,7 +2411,7 @@ var Field = React29.forwardRef(
|
|
|
2357
2411
|
}
|
|
2358
2412
|
);
|
|
2359
2413
|
}
|
|
2360
|
-
const inputElement =
|
|
2414
|
+
const inputElement = React30.cloneElement(child2, injectedProps2);
|
|
2361
2415
|
return /* @__PURE__ */ jsxs(
|
|
2362
2416
|
"div",
|
|
2363
2417
|
{
|
|
@@ -2379,8 +2433,8 @@ var Field = React29.forwardRef(
|
|
|
2379
2433
|
const injectedProps = {
|
|
2380
2434
|
size
|
|
2381
2435
|
};
|
|
2382
|
-
const child =
|
|
2383
|
-
const clonedChild =
|
|
2436
|
+
const child = React30.Children.only(children);
|
|
2437
|
+
const clonedChild = React30.cloneElement(child, injectedProps);
|
|
2384
2438
|
return /* @__PURE__ */ jsxs(
|
|
2385
2439
|
"div",
|
|
2386
2440
|
{
|
|
@@ -2423,7 +2477,7 @@ var LEVEL_CLASSES = {
|
|
|
2423
2477
|
"3": "text-[14px] leading-[20px] font-semibold lg:text-[18px] lg:leading-[24px] lg:font-medium"
|
|
2424
2478
|
};
|
|
2425
2479
|
var BASE_CLASSES4 = "font-heading text-heading";
|
|
2426
|
-
var Heading =
|
|
2480
|
+
var Heading = React30__default.forwardRef(
|
|
2427
2481
|
function Heading2({ level, className, mb, size: _size, style: styleProp, ...rest }, ref) {
|
|
2428
2482
|
const Tag3 = level ? LEVEL_TAG[level] : "h2";
|
|
2429
2483
|
const levelClasses = level ? LEVEL_CLASSES[level] : void 0;
|
|
@@ -2509,7 +2563,7 @@ var ICON_SIZE_CLASSES = {
|
|
|
2509
2563
|
md: "[&_svg]:size-5"
|
|
2510
2564
|
};
|
|
2511
2565
|
var SP2 = 4;
|
|
2512
|
-
var IconButton =
|
|
2566
|
+
var IconButton = React30.forwardRef(
|
|
2513
2567
|
function IconButton2(props, ref) {
|
|
2514
2568
|
const {
|
|
2515
2569
|
size,
|
|
@@ -2560,7 +2614,7 @@ var IconButton = React29.forwardRef(
|
|
|
2560
2614
|
ref,
|
|
2561
2615
|
size,
|
|
2562
2616
|
disabled: !loadingSkeleton && (loading || disabled) || void 0,
|
|
2563
|
-
render: _as ?
|
|
2617
|
+
render: _as ? React30.createElement(_as) : void 0,
|
|
2564
2618
|
className: combinedClassName,
|
|
2565
2619
|
style: mergedStyle,
|
|
2566
2620
|
...expanded ? { "data-expanded": true } : {},
|
|
@@ -2731,31 +2785,31 @@ function extractStyleProps(props) {
|
|
|
2731
2785
|
}
|
|
2732
2786
|
return { styleProps, rest };
|
|
2733
2787
|
}
|
|
2734
|
-
var Image2 =
|
|
2788
|
+
var Image2 = React30__default.forwardRef(
|
|
2735
2789
|
function Image3(props, ref) {
|
|
2736
2790
|
const { fallback, src, onLoad, onError, skeletonWidth, skeletonHeight, alt, className, style: styleProp, ...allRest } = props;
|
|
2737
2791
|
const { styleProps, rest: extraProps } = extractStyleProps(allRest);
|
|
2738
|
-
const [loading, setLoading] =
|
|
2739
|
-
const [error, setError] =
|
|
2740
|
-
const handleLoadError =
|
|
2792
|
+
const [loading, setLoading] = React30__default.useState(true);
|
|
2793
|
+
const [error, setError] = React30__default.useState(false);
|
|
2794
|
+
const handleLoadError = React30__default.useCallback((event) => {
|
|
2741
2795
|
setError(true);
|
|
2742
2796
|
setLoading(false);
|
|
2743
2797
|
onError?.(event);
|
|
2744
2798
|
}, [onError]);
|
|
2745
|
-
const handleLoadSuccess =
|
|
2799
|
+
const handleLoadSuccess = React30__default.useCallback((event) => {
|
|
2746
2800
|
setLoading(false);
|
|
2747
2801
|
onLoad?.(event);
|
|
2748
2802
|
}, [onLoad]);
|
|
2749
2803
|
const passthroughProps = allRest;
|
|
2750
2804
|
if (!src && fallback) {
|
|
2751
|
-
if (
|
|
2752
|
-
return
|
|
2805
|
+
if (React30__default.isValidElement(fallback)) {
|
|
2806
|
+
return React30__default.cloneElement(fallback, passthroughProps);
|
|
2753
2807
|
}
|
|
2754
2808
|
return fallback;
|
|
2755
2809
|
}
|
|
2756
2810
|
if (error) {
|
|
2757
|
-
if (
|
|
2758
|
-
return
|
|
2811
|
+
if (React30__default.isValidElement(fallback)) {
|
|
2812
|
+
return React30__default.cloneElement(fallback, passthroughProps);
|
|
2759
2813
|
}
|
|
2760
2814
|
return fallback;
|
|
2761
2815
|
}
|
|
@@ -2811,14 +2865,22 @@ var INPUT_VARIANT_CLASSES = {
|
|
|
2811
2865
|
filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
|
|
2812
2866
|
unstyled: "border-0 bg-transparent p-0 h-auto"
|
|
2813
2867
|
};
|
|
2814
|
-
var Input =
|
|
2815
|
-
({ size = "md", variant = "outline", className, ...rest }, ref) => {
|
|
2868
|
+
var Input = React30__default.forwardRef(
|
|
2869
|
+
({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
|
|
2870
|
+
const handleChange = React30__default.useCallback(
|
|
2871
|
+
(event) => {
|
|
2872
|
+
onChange?.(event);
|
|
2873
|
+
onChangeText?.(event.target.value);
|
|
2874
|
+
},
|
|
2875
|
+
[onChange, onChangeText]
|
|
2876
|
+
);
|
|
2816
2877
|
return /* @__PURE__ */ jsx(
|
|
2817
2878
|
"input",
|
|
2818
2879
|
{
|
|
2819
2880
|
ref,
|
|
2820
2881
|
className: cn(INPUT_BASE, INPUT_SIZE_CLASSES[size], INPUT_VARIANT_CLASSES[variant], className),
|
|
2821
|
-
...rest
|
|
2882
|
+
...rest,
|
|
2883
|
+
onChange: handleChange
|
|
2822
2884
|
}
|
|
2823
2885
|
);
|
|
2824
2886
|
}
|
|
@@ -2829,7 +2891,7 @@ function getComponentDisplayName2(type) {
|
|
|
2829
2891
|
if ("displayName" in type) return type.displayName;
|
|
2830
2892
|
return void 0;
|
|
2831
2893
|
}
|
|
2832
|
-
var InputGroup =
|
|
2894
|
+
var InputGroup = React30.forwardRef(
|
|
2833
2895
|
function InputGroup2(props, ref) {
|
|
2834
2896
|
const {
|
|
2835
2897
|
startElement,
|
|
@@ -2842,11 +2904,11 @@ var InputGroup = React29.forwardRef(
|
|
|
2842
2904
|
className,
|
|
2843
2905
|
...rest
|
|
2844
2906
|
} = props;
|
|
2845
|
-
const startElementRef =
|
|
2846
|
-
const endElementRef =
|
|
2847
|
-
const groupRef =
|
|
2848
|
-
const [inlinePaddings, setInlinePaddings] =
|
|
2849
|
-
const calculateInlinePaddings =
|
|
2907
|
+
const startElementRef = React30.useRef(null);
|
|
2908
|
+
const endElementRef = React30.useRef(null);
|
|
2909
|
+
const groupRef = React30.useRef(null);
|
|
2910
|
+
const [inlinePaddings, setInlinePaddings] = React30.useState();
|
|
2911
|
+
const calculateInlinePaddings = React30.useCallback(() => {
|
|
2850
2912
|
const startWidth = startElementRef.current?.getBoundingClientRect().width ?? 0;
|
|
2851
2913
|
const endWidth = endElementRef.current?.getBoundingClientRect().width ?? 0;
|
|
2852
2914
|
setInlinePaddings({
|
|
@@ -2854,7 +2916,7 @@ var InputGroup = React29.forwardRef(
|
|
|
2854
2916
|
end: endWidth
|
|
2855
2917
|
});
|
|
2856
2918
|
}, []);
|
|
2857
|
-
|
|
2919
|
+
React30.useEffect(() => {
|
|
2858
2920
|
if (!groupRef.current) return;
|
|
2859
2921
|
let timeoutId;
|
|
2860
2922
|
const intersectionObserver = new IntersectionObserver(
|
|
@@ -2874,7 +2936,7 @@ var InputGroup = React29.forwardRef(
|
|
|
2874
2936
|
}
|
|
2875
2937
|
};
|
|
2876
2938
|
}, [calculateInlinePaddings]);
|
|
2877
|
-
|
|
2939
|
+
React30.useEffect(() => {
|
|
2878
2940
|
calculateInlinePaddings();
|
|
2879
2941
|
const resizeHandler = debounce(calculateInlinePaddings, 300);
|
|
2880
2942
|
const resizeObserver = new ResizeObserver(resizeHandler);
|
|
@@ -2885,7 +2947,7 @@ var InputGroup = React29.forwardRef(
|
|
|
2885
2947
|
resizeObserver.disconnect();
|
|
2886
2948
|
};
|
|
2887
2949
|
}, [calculateInlinePaddings]);
|
|
2888
|
-
const combinedRef =
|
|
2950
|
+
const combinedRef = React30.useCallback((node) => {
|
|
2889
2951
|
groupRef.current = node;
|
|
2890
2952
|
if (typeof ref === "function") {
|
|
2891
2953
|
ref(node);
|
|
@@ -2914,11 +2976,11 @@ var InputGroup = React29.forwardRef(
|
|
|
2914
2976
|
children: startElement
|
|
2915
2977
|
}
|
|
2916
2978
|
),
|
|
2917
|
-
|
|
2979
|
+
React30.Children.map(children, (child) => {
|
|
2918
2980
|
if (getComponentDisplayName2(child.type) !== "FieldInput") {
|
|
2919
2981
|
return child;
|
|
2920
2982
|
}
|
|
2921
|
-
return
|
|
2983
|
+
return React30.cloneElement(child, {
|
|
2922
2984
|
...startElement && { ps: startOffset ?? (inlinePaddings?.start ? `${inlinePaddings.start}px` : void 0) },
|
|
2923
2985
|
...endElement && { pe: endOffset ?? (inlinePaddings?.end ? `${inlinePaddings.end}px` : void 0) },
|
|
2924
2986
|
// hide input value and placeholder for the first render
|
|
@@ -2959,7 +3021,7 @@ function parsePlacement(placement) {
|
|
|
2959
3021
|
}
|
|
2960
3022
|
return { side, align };
|
|
2961
3023
|
}
|
|
2962
|
-
var PositioningContext =
|
|
3024
|
+
var PositioningContext = React30.createContext({
|
|
2963
3025
|
side: "bottom",
|
|
2964
3026
|
align: "start",
|
|
2965
3027
|
sideOffset: 4,
|
|
@@ -2989,13 +3051,13 @@ var MenuRoot = (props) => {
|
|
|
2989
3051
|
}
|
|
2990
3052
|
};
|
|
2991
3053
|
const { side, align } = parsePlacement(mergedPositioning.placement);
|
|
2992
|
-
const positioningValue =
|
|
3054
|
+
const positioningValue = React30.useMemo(() => ({
|
|
2993
3055
|
side,
|
|
2994
3056
|
align,
|
|
2995
3057
|
sideOffset: mergedPositioning.offset?.mainAxis ?? 4,
|
|
2996
3058
|
alignOffset: mergedPositioning.offset?.crossAxis ?? 0
|
|
2997
3059
|
}), [side, align, mergedPositioning.offset?.mainAxis, mergedPositioning.offset?.crossAxis]);
|
|
2998
|
-
const handleOpenChange =
|
|
3060
|
+
const handleOpenChange = React30.useCallback((isOpen) => {
|
|
2999
3061
|
onOpenChange?.({ open: isOpen });
|
|
3000
3062
|
}, [onOpenChange]);
|
|
3001
3063
|
return /* @__PURE__ */ jsx(PositioningContext.Provider, { value: positioningValue, children: /* @__PURE__ */ jsx(
|
|
@@ -3009,13 +3071,13 @@ var MenuRoot = (props) => {
|
|
|
3009
3071
|
}
|
|
3010
3072
|
) });
|
|
3011
3073
|
};
|
|
3012
|
-
var MenuTrigger =
|
|
3074
|
+
var MenuTrigger = React30.forwardRef(function MenuTrigger2(props, ref) {
|
|
3013
3075
|
const { asChild = false, ...rest } = props;
|
|
3014
3076
|
return /* @__PURE__ */ jsx(DropdownMenu.Trigger, { asChild, ref, ...rest });
|
|
3015
3077
|
});
|
|
3016
|
-
var MenuContent =
|
|
3078
|
+
var MenuContent = React30.forwardRef(function MenuContent2(props, ref) {
|
|
3017
3079
|
const { portalled = true, portalRef, className, zIndex, minW, style, ...rest } = props;
|
|
3018
|
-
const positioning =
|
|
3080
|
+
const positioning = React30.useContext(PositioningContext);
|
|
3019
3081
|
const mergedStyle = {
|
|
3020
3082
|
...style,
|
|
3021
3083
|
...zIndex !== void 0 ? { zIndex: typeof zIndex === "string" ? `var(--z-index-${zIndex}, ${zIndex})` : zIndex } : {},
|
|
@@ -3050,7 +3112,7 @@ var MenuContent = React29.forwardRef(function MenuContent2(props, ref) {
|
|
|
3050
3112
|
}
|
|
3051
3113
|
return /* @__PURE__ */ jsx(DropdownMenu.Portal, { container: portalRef?.current ?? void 0, children: content });
|
|
3052
3114
|
});
|
|
3053
|
-
var MenuItem =
|
|
3115
|
+
var MenuItem = React30.forwardRef(function MenuItem2(props, ref) {
|
|
3054
3116
|
const { className, value: _value, asChild, closeOnSelect: _closeOnSelect, disabled, children, onClick, ...rest } = props;
|
|
3055
3117
|
return /* @__PURE__ */ jsx(
|
|
3056
3118
|
DropdownMenu.Item,
|
|
@@ -3072,11 +3134,11 @@ var MenuItem = React29.forwardRef(function MenuItem2(props, ref) {
|
|
|
3072
3134
|
}
|
|
3073
3135
|
);
|
|
3074
3136
|
});
|
|
3075
|
-
var MenuItemText =
|
|
3137
|
+
var MenuItemText = React30.forwardRef(function MenuItemText2(props, ref) {
|
|
3076
3138
|
const { className, ...rest } = props;
|
|
3077
3139
|
return /* @__PURE__ */ jsx("span", { ref, className: cn("flex-1", className), ...rest });
|
|
3078
3140
|
});
|
|
3079
|
-
|
|
3141
|
+
React30.forwardRef(function MenuItemCommand2(props, ref) {
|
|
3080
3142
|
const { className, ...rest } = props;
|
|
3081
3143
|
return /* @__PURE__ */ jsx(
|
|
3082
3144
|
"span",
|
|
@@ -3087,7 +3149,7 @@ React29.forwardRef(function MenuItemCommand2(props, ref) {
|
|
|
3087
3149
|
}
|
|
3088
3150
|
);
|
|
3089
3151
|
});
|
|
3090
|
-
var MenuSeparator =
|
|
3152
|
+
var MenuSeparator = React30.forwardRef(function MenuSeparator2(props, ref) {
|
|
3091
3153
|
const { className, ...rest } = props;
|
|
3092
3154
|
return /* @__PURE__ */ jsx(
|
|
3093
3155
|
DropdownMenu.Separator,
|
|
@@ -3098,14 +3160,14 @@ var MenuSeparator = React29.forwardRef(function MenuSeparator2(props, ref) {
|
|
|
3098
3160
|
}
|
|
3099
3161
|
);
|
|
3100
3162
|
});
|
|
3101
|
-
var MenuItemGroup =
|
|
3163
|
+
var MenuItemGroup = React30.forwardRef(function MenuItemGroup2(props, ref) {
|
|
3102
3164
|
const { title, children, className, ...rest } = props;
|
|
3103
3165
|
return /* @__PURE__ */ jsxs(DropdownMenu.Group, { ref, className, ...rest, children: [
|
|
3104
3166
|
title && /* @__PURE__ */ jsx(DropdownMenu.Label, { className: "px-2 py-1.5 text-xs font-semibold select-none opacity-60", children: title }),
|
|
3105
3167
|
children
|
|
3106
3168
|
] });
|
|
3107
3169
|
});
|
|
3108
|
-
var MenuArrow =
|
|
3170
|
+
var MenuArrow = React30.forwardRef(function MenuArrow2(props, ref) {
|
|
3109
3171
|
const { className, ...rest } = props;
|
|
3110
3172
|
return /* @__PURE__ */ jsx(
|
|
3111
3173
|
DropdownMenu.Arrow,
|
|
@@ -3116,7 +3178,7 @@ var MenuArrow = React29.forwardRef(function MenuArrow2(props, ref) {
|
|
|
3116
3178
|
}
|
|
3117
3179
|
);
|
|
3118
3180
|
});
|
|
3119
|
-
var MenuCheckboxItem =
|
|
3181
|
+
var MenuCheckboxItem = React30.forwardRef(function MenuCheckboxItem2(props, ref) {
|
|
3120
3182
|
const { className, children, checked, onCheckedChange, onClick, ...rest } = props;
|
|
3121
3183
|
return /* @__PURE__ */ jsxs(
|
|
3122
3184
|
DropdownMenu.CheckboxItem,
|
|
@@ -3140,7 +3202,7 @@ var MenuCheckboxItem = React29.forwardRef(function MenuCheckboxItem2(props, ref)
|
|
|
3140
3202
|
}
|
|
3141
3203
|
);
|
|
3142
3204
|
});
|
|
3143
|
-
var MenuRadioItemGroup =
|
|
3205
|
+
var MenuRadioItemGroup = React30.forwardRef(function MenuRadioItemGroup2(props, ref) {
|
|
3144
3206
|
const { value, onValueChange, ...rest } = props;
|
|
3145
3207
|
return /* @__PURE__ */ jsx(
|
|
3146
3208
|
DropdownMenu.RadioGroup,
|
|
@@ -3152,7 +3214,7 @@ var MenuRadioItemGroup = React29.forwardRef(function MenuRadioItemGroup2(props,
|
|
|
3152
3214
|
}
|
|
3153
3215
|
);
|
|
3154
3216
|
});
|
|
3155
|
-
var MenuRadioItem =
|
|
3217
|
+
var MenuRadioItem = React30.forwardRef(function MenuRadioItem2(props, ref) {
|
|
3156
3218
|
const { className, children, value, onClick, ...rest } = props;
|
|
3157
3219
|
const { value: _v, ...radixRest } = rest;
|
|
3158
3220
|
return /* @__PURE__ */ jsxs(
|
|
@@ -3175,11 +3237,11 @@ var MenuRadioItem = React29.forwardRef(function MenuRadioItem2(props, ref) {
|
|
|
3175
3237
|
}
|
|
3176
3238
|
);
|
|
3177
3239
|
});
|
|
3178
|
-
|
|
3240
|
+
React30.forwardRef(function MenuContextTrigger2(props, ref) {
|
|
3179
3241
|
const { asChild: _asChild, ...rest } = props;
|
|
3180
3242
|
return /* @__PURE__ */ jsx("span", { ref, ...rest });
|
|
3181
3243
|
});
|
|
3182
|
-
var MenuTriggerItem =
|
|
3244
|
+
var MenuTriggerItem = React30.forwardRef(function MenuTriggerItem2(props, ref) {
|
|
3183
3245
|
const { startIcon, children, className, ...rest } = props;
|
|
3184
3246
|
return /* @__PURE__ */ jsx(DropdownMenu.Sub, { children: /* @__PURE__ */ jsxs(
|
|
3185
3247
|
DropdownMenu.SubTrigger,
|
|
@@ -3214,7 +3276,7 @@ var INPUT_BASE2 = [
|
|
|
3214
3276
|
].join(" ");
|
|
3215
3277
|
var INPUT_FILLED = "border-[var(--color-input-border)]";
|
|
3216
3278
|
var INPUT_INVALID = "border-[var(--color-border-error)] hover:border-[var(--color-border-error)]";
|
|
3217
|
-
var PinInput =
|
|
3279
|
+
var PinInput = React30.forwardRef(
|
|
3218
3280
|
function PinInput2(props, ref) {
|
|
3219
3281
|
const {
|
|
3220
3282
|
count = 6,
|
|
@@ -3232,12 +3294,12 @@ var PinInput = React29.forwardRef(
|
|
|
3232
3294
|
bgColor,
|
|
3233
3295
|
className
|
|
3234
3296
|
} = props;
|
|
3235
|
-
const inputRefs =
|
|
3236
|
-
const values =
|
|
3297
|
+
const inputRefs = React30.useRef([]);
|
|
3298
|
+
const values = React30.useMemo(
|
|
3237
3299
|
() => controlledValue ?? Array.from({ length: count }).fill(""),
|
|
3238
3300
|
[controlledValue, count]
|
|
3239
3301
|
);
|
|
3240
|
-
const updateValue =
|
|
3302
|
+
const updateValue = React30.useCallback((index, char) => {
|
|
3241
3303
|
const next = [...values];
|
|
3242
3304
|
next[index] = char;
|
|
3243
3305
|
onValueChange?.({ value: next });
|
|
@@ -3245,11 +3307,11 @@ var PinInput = React29.forwardRef(
|
|
|
3245
3307
|
onValueComplete?.({ value: next });
|
|
3246
3308
|
}
|
|
3247
3309
|
}, [values, onValueChange, onValueComplete]);
|
|
3248
|
-
const focusInput =
|
|
3310
|
+
const focusInput = React30.useCallback((index) => {
|
|
3249
3311
|
const clamped = Math.max(0, Math.min(index, count - 1));
|
|
3250
3312
|
inputRefs.current[clamped]?.focus();
|
|
3251
3313
|
}, [count]);
|
|
3252
|
-
const handleInput =
|
|
3314
|
+
const handleInput = React30.useCallback((index, e) => {
|
|
3253
3315
|
const target = e.currentTarget;
|
|
3254
3316
|
const char = target.value.slice(-1);
|
|
3255
3317
|
updateValue(index, char);
|
|
@@ -3257,7 +3319,7 @@ var PinInput = React29.forwardRef(
|
|
|
3257
3319
|
focusInput(index + 1);
|
|
3258
3320
|
}
|
|
3259
3321
|
}, [count, updateValue, focusInput]);
|
|
3260
|
-
const handleKeyDown =
|
|
3322
|
+
const handleKeyDown = React30.useCallback((index, e) => {
|
|
3261
3323
|
if (e.key === "Backspace") {
|
|
3262
3324
|
if (values[index]) {
|
|
3263
3325
|
updateValue(index, "");
|
|
@@ -3274,7 +3336,7 @@ var PinInput = React29.forwardRef(
|
|
|
3274
3336
|
e.preventDefault();
|
|
3275
3337
|
}
|
|
3276
3338
|
}, [count, values, updateValue, focusInput]);
|
|
3277
|
-
const handlePaste =
|
|
3339
|
+
const handlePaste = React30.useCallback((e) => {
|
|
3278
3340
|
e.preventDefault();
|
|
3279
3341
|
const pasted = e.clipboardData.getData("text/plain").trim();
|
|
3280
3342
|
if (!pasted) {
|
|
@@ -3291,18 +3353,18 @@ var PinInput = React29.forwardRef(
|
|
|
3291
3353
|
}
|
|
3292
3354
|
focusInput(Math.min(chars.length, count - 1));
|
|
3293
3355
|
}, [count, values, onValueChange, onValueComplete, focusInput]);
|
|
3294
|
-
const handleFocus =
|
|
3356
|
+
const handleFocus = React30.useCallback((e) => {
|
|
3295
3357
|
e.currentTarget.select();
|
|
3296
3358
|
}, []);
|
|
3297
|
-
const handleNoop =
|
|
3359
|
+
const handleNoop = React30.useCallback(() => {
|
|
3298
3360
|
}, []);
|
|
3299
|
-
const setInputRef =
|
|
3361
|
+
const setInputRef = React30.useCallback((index) => (el) => {
|
|
3300
3362
|
inputRefs.current[index] = el;
|
|
3301
3363
|
}, []);
|
|
3302
|
-
const onInputAtIndex =
|
|
3364
|
+
const onInputAtIndex = React30.useCallback((index) => (e) => {
|
|
3303
3365
|
handleInput(index, e);
|
|
3304
3366
|
}, [handleInput]);
|
|
3305
|
-
const onKeyDownAtIndex =
|
|
3367
|
+
const onKeyDownAtIndex = React30.useCallback((index) => (e) => {
|
|
3306
3368
|
handleKeyDown(index, e);
|
|
3307
3369
|
}, [handleKeyDown]);
|
|
3308
3370
|
const bgStyle = bgColor ? { backgroundColor: `var(--color-${bgColor.replace(/\./g, "-")})` } : void 0;
|
|
@@ -3363,7 +3425,7 @@ function parsePlacement2(placement) {
|
|
|
3363
3425
|
}
|
|
3364
3426
|
return { side, align };
|
|
3365
3427
|
}
|
|
3366
|
-
var PositioningContext2 =
|
|
3428
|
+
var PositioningContext2 = React30.createContext({
|
|
3367
3429
|
side: "bottom",
|
|
3368
3430
|
align: "start",
|
|
3369
3431
|
sideOffset: 4,
|
|
@@ -3397,7 +3459,7 @@ var PopoverRoot = (props) => {
|
|
|
3397
3459
|
}
|
|
3398
3460
|
};
|
|
3399
3461
|
const { side, align } = parsePlacement2(mergedPositioning.placement);
|
|
3400
|
-
const positioningValue =
|
|
3462
|
+
const positioningValue = React30.useMemo(() => ({
|
|
3401
3463
|
side,
|
|
3402
3464
|
align,
|
|
3403
3465
|
sideOffset: mergedPositioning.offset?.mainAxis ?? 4,
|
|
@@ -3414,7 +3476,7 @@ var PopoverRoot = (props) => {
|
|
|
3414
3476
|
autoFocus,
|
|
3415
3477
|
closeOnInteractOutside
|
|
3416
3478
|
]);
|
|
3417
|
-
const handleOpenChange =
|
|
3479
|
+
const handleOpenChange = React30.useCallback((isOpen) => {
|
|
3418
3480
|
onOpenChange?.({ open: isOpen });
|
|
3419
3481
|
}, [onOpenChange]);
|
|
3420
3482
|
const placement = mergedPositioning.placement ?? "bottom-start";
|
|
@@ -3432,11 +3494,11 @@ var PopoverRoot = (props) => {
|
|
|
3432
3494
|
}
|
|
3433
3495
|
) });
|
|
3434
3496
|
};
|
|
3435
|
-
var PopoverTrigger =
|
|
3497
|
+
var PopoverTrigger = React30.forwardRef(function PopoverTrigger2(props, ref) {
|
|
3436
3498
|
const { asChild = true, ...rest } = props;
|
|
3437
3499
|
return /* @__PURE__ */ jsx(Popover.Trigger, { asChild: asChild ? "except-style" : void 0, ref, ...rest });
|
|
3438
3500
|
});
|
|
3439
|
-
var PopoverContent =
|
|
3501
|
+
var PopoverContent = React30.forwardRef(function PopoverContent2(props, ref) {
|
|
3440
3502
|
const { portalled = true, portalRef: _portalRef, className, w, minW, maxW, paddingTop, style: styleProp, ...rest } = props;
|
|
3441
3503
|
const resolvedW = typeof w === "object" ? w.base ?? w.lg : w;
|
|
3442
3504
|
const contentStyle = {
|
|
@@ -3467,7 +3529,7 @@ var PopoverContent = React29.forwardRef(function PopoverContent2(props, ref) {
|
|
|
3467
3529
|
}
|
|
3468
3530
|
);
|
|
3469
3531
|
});
|
|
3470
|
-
var PopoverArrow =
|
|
3532
|
+
var PopoverArrow = React30.forwardRef(function PopoverArrow2(props, ref) {
|
|
3471
3533
|
const { className, ...rest } = props;
|
|
3472
3534
|
return /* @__PURE__ */ jsx(
|
|
3473
3535
|
Popover.Arrow,
|
|
@@ -3479,7 +3541,7 @@ var PopoverArrow = React29.forwardRef(function PopoverArrow2(props, ref) {
|
|
|
3479
3541
|
}
|
|
3480
3542
|
);
|
|
3481
3543
|
});
|
|
3482
|
-
var PopoverCloseTrigger =
|
|
3544
|
+
var PopoverCloseTrigger = React30.forwardRef(function PopoverCloseTrigger2(props, ref) {
|
|
3483
3545
|
const { className, ...rest } = props;
|
|
3484
3546
|
return /* @__PURE__ */ jsx(
|
|
3485
3547
|
Popover.Close,
|
|
@@ -3493,14 +3555,14 @@ var PopoverCloseTrigger = React29.forwardRef(function PopoverCloseTrigger2(props
|
|
|
3493
3555
|
}
|
|
3494
3556
|
);
|
|
3495
3557
|
});
|
|
3496
|
-
var PopoverCloseTriggerWrapper =
|
|
3558
|
+
var PopoverCloseTriggerWrapper = React30.forwardRef(function PopoverCloseTriggerWrapper2(props, ref) {
|
|
3497
3559
|
const { disabled, children, ...rest } = props;
|
|
3498
3560
|
if (disabled) {
|
|
3499
3561
|
return children;
|
|
3500
3562
|
}
|
|
3501
3563
|
return /* @__PURE__ */ jsx(Popover.Close, { ref, ...rest, asChild: true, children });
|
|
3502
3564
|
});
|
|
3503
|
-
var PopoverBody =
|
|
3565
|
+
var PopoverBody = React30.forwardRef(function PopoverBody2(props, ref) {
|
|
3504
3566
|
const {
|
|
3505
3567
|
className,
|
|
3506
3568
|
style: styleProp,
|
|
@@ -3538,7 +3600,7 @@ var PopoverBody = React29.forwardRef(function PopoverBody2(props, ref) {
|
|
|
3538
3600
|
}
|
|
3539
3601
|
);
|
|
3540
3602
|
});
|
|
3541
|
-
var PopoverHeader =
|
|
3603
|
+
var PopoverHeader = React30.forwardRef(function PopoverHeader2(props, ref) {
|
|
3542
3604
|
const { className, ...rest } = props;
|
|
3543
3605
|
return /* @__PURE__ */ jsx(
|
|
3544
3606
|
"div",
|
|
@@ -3549,7 +3611,7 @@ var PopoverHeader = React29.forwardRef(function PopoverHeader2(props, ref) {
|
|
|
3549
3611
|
}
|
|
3550
3612
|
);
|
|
3551
3613
|
});
|
|
3552
|
-
var PopoverFooter =
|
|
3614
|
+
var PopoverFooter = React30.forwardRef(function PopoverFooter2(props, ref) {
|
|
3553
3615
|
const { className, ...rest } = props;
|
|
3554
3616
|
return /* @__PURE__ */ jsx(
|
|
3555
3617
|
"div",
|
|
@@ -3560,7 +3622,7 @@ var PopoverFooter = React29.forwardRef(function PopoverFooter2(props, ref) {
|
|
|
3560
3622
|
}
|
|
3561
3623
|
);
|
|
3562
3624
|
});
|
|
3563
|
-
var PopoverTitle =
|
|
3625
|
+
var PopoverTitle = React30.forwardRef(function PopoverTitle2(props, ref) {
|
|
3564
3626
|
const { className, ...rest } = props;
|
|
3565
3627
|
return /* @__PURE__ */ jsx(
|
|
3566
3628
|
"h3",
|
|
@@ -3571,7 +3633,7 @@ var PopoverTitle = React29.forwardRef(function PopoverTitle2(props, ref) {
|
|
|
3571
3633
|
}
|
|
3572
3634
|
);
|
|
3573
3635
|
});
|
|
3574
|
-
var PopoverDescription =
|
|
3636
|
+
var PopoverDescription = React30.forwardRef(function PopoverDescription2(props, ref) {
|
|
3575
3637
|
const { className, ...rest } = props;
|
|
3576
3638
|
return /* @__PURE__ */ jsx(
|
|
3577
3639
|
"p",
|
|
@@ -3593,7 +3655,7 @@ function normalizeValue(value, min, max) {
|
|
|
3593
3655
|
if (max <= min) return 0;
|
|
3594
3656
|
return Math.round((value - min) / (max - min) * 100);
|
|
3595
3657
|
}
|
|
3596
|
-
var Progress =
|
|
3658
|
+
var Progress = React30.forwardRef(
|
|
3597
3659
|
function Progress2(props, ref) {
|
|
3598
3660
|
const {
|
|
3599
3661
|
value,
|
|
@@ -3670,12 +3732,12 @@ var SIZE_MAP = {
|
|
|
3670
3732
|
lg: { size: 48, thickness: 7, textClass: "text-sm" },
|
|
3671
3733
|
xl: { size: 64, thickness: 8, textClass: "text-sm" }
|
|
3672
3734
|
};
|
|
3673
|
-
var Ctx =
|
|
3735
|
+
var Ctx = React30.createContext({
|
|
3674
3736
|
value: 0,
|
|
3675
3737
|
size: "md",
|
|
3676
3738
|
colorPalette: "blue"
|
|
3677
3739
|
});
|
|
3678
|
-
var ProgressCircleRoot =
|
|
3740
|
+
var ProgressCircleRoot = React30.forwardRef(function ProgressCircleRoot2(props, ref) {
|
|
3679
3741
|
const {
|
|
3680
3742
|
value = 0,
|
|
3681
3743
|
size = "md",
|
|
@@ -3684,7 +3746,7 @@ var ProgressCircleRoot = React29.forwardRef(function ProgressCircleRoot2(props,
|
|
|
3684
3746
|
children,
|
|
3685
3747
|
...rest
|
|
3686
3748
|
} = props;
|
|
3687
|
-
const ctx =
|
|
3749
|
+
const ctx = React30.useMemo(
|
|
3688
3750
|
() => ({ value: value ?? null, size, colorPalette }),
|
|
3689
3751
|
[value, size, colorPalette]
|
|
3690
3752
|
);
|
|
@@ -3702,9 +3764,9 @@ var ProgressCircleRoot = React29.forwardRef(function ProgressCircleRoot2(props,
|
|
|
3702
3764
|
}
|
|
3703
3765
|
) });
|
|
3704
3766
|
});
|
|
3705
|
-
var ProgressCircleRing =
|
|
3767
|
+
var ProgressCircleRing = React30.forwardRef(function ProgressCircleRing2(props, ref) {
|
|
3706
3768
|
const { trackColor, cap, color, className, ...rest } = props;
|
|
3707
|
-
const { value, size: sizeKey } =
|
|
3769
|
+
const { value, size: sizeKey } = React30.useContext(Ctx);
|
|
3708
3770
|
const { size, thickness } = SIZE_MAP[sizeKey];
|
|
3709
3771
|
const radius = size / 2 - thickness / 2;
|
|
3710
3772
|
const circumference = 2 * Math.PI * radius;
|
|
@@ -3759,9 +3821,9 @@ var ProgressCircleRing = React29.forwardRef(function ProgressCircleRing2(props,
|
|
|
3759
3821
|
}
|
|
3760
3822
|
);
|
|
3761
3823
|
});
|
|
3762
|
-
var ProgressCircleValueText =
|
|
3824
|
+
var ProgressCircleValueText = React30.forwardRef(function ProgressCircleValueText2(props, ref) {
|
|
3763
3825
|
const { className, children, ...rest } = props;
|
|
3764
|
-
const { value, size: sizeKey } =
|
|
3826
|
+
const { value, size: sizeKey } = React30.useContext(Ctx);
|
|
3765
3827
|
const { textClass } = SIZE_MAP[sizeKey];
|
|
3766
3828
|
return /* @__PURE__ */ jsx(
|
|
3767
3829
|
"div",
|
|
@@ -3805,8 +3867,8 @@ var SIZE_CLASSES8 = {
|
|
|
3805
3867
|
label: "text-base"
|
|
3806
3868
|
}
|
|
3807
3869
|
};
|
|
3808
|
-
var RadioSizeContext =
|
|
3809
|
-
var RadioGroupBase =
|
|
3870
|
+
var RadioSizeContext = React30.createContext("md");
|
|
3871
|
+
var RadioGroupBase = React30.forwardRef(
|
|
3810
3872
|
function RadioGroup2(props, ref) {
|
|
3811
3873
|
const {
|
|
3812
3874
|
children,
|
|
@@ -3823,7 +3885,7 @@ var RadioGroupBase = React29.forwardRef(
|
|
|
3823
3885
|
className,
|
|
3824
3886
|
...rest
|
|
3825
3887
|
} = props;
|
|
3826
|
-
const handleValueChange =
|
|
3888
|
+
const handleValueChange = React30.useCallback(
|
|
3827
3889
|
(nextValue) => {
|
|
3828
3890
|
if (readOnly) return;
|
|
3829
3891
|
onValueChange?.({ value: nextValue });
|
|
@@ -3856,10 +3918,10 @@ var RadioGroupBase = React29.forwardRef(
|
|
|
3856
3918
|
var RadioGroup3 = RadioGroupBase;
|
|
3857
3919
|
var NOOP2 = () => {
|
|
3858
3920
|
};
|
|
3859
|
-
var RadioBase =
|
|
3921
|
+
var RadioBase = React30.forwardRef(
|
|
3860
3922
|
function Radio(props, ref) {
|
|
3861
3923
|
const { children, inputProps, rootRef, value, disabled, className, ...rest } = props;
|
|
3862
|
-
const size =
|
|
3924
|
+
const size = React30.useContext(RadioSizeContext);
|
|
3863
3925
|
const sizeClasses2 = SIZE_CLASSES8[size];
|
|
3864
3926
|
return /* @__PURE__ */ jsxs(
|
|
3865
3927
|
"label",
|
|
@@ -3921,23 +3983,23 @@ var RadioBase = React29.forwardRef(
|
|
|
3921
3983
|
var Radio2 = RadioBase;
|
|
3922
3984
|
var StarFilledIcon = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) });
|
|
3923
3985
|
var StarOutlineIcon = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z", strokeWidth: "1.5" }) });
|
|
3924
|
-
var Rating =
|
|
3986
|
+
var Rating = React30.forwardRef(
|
|
3925
3987
|
function Rating2(props, ref) {
|
|
3926
3988
|
const { count = 5, label: labelProp, defaultValue = 0, onValueChange, readOnly, className, ...rest } = props;
|
|
3927
|
-
const [value, setValue] =
|
|
3928
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
3989
|
+
const [value, setValue] = React30.useState(defaultValue);
|
|
3990
|
+
const [hoveredIndex, setHoveredIndex] = React30.useState(-1);
|
|
3929
3991
|
const highlightedIndex = hoveredIndex >= 0 && !readOnly ? hoveredIndex + 1 : value;
|
|
3930
3992
|
const label = Array.isArray(labelProp) ? labelProp[highlightedIndex - 1] : labelProp;
|
|
3931
|
-
const handleClick =
|
|
3993
|
+
const handleClick = React30.useCallback((index) => () => {
|
|
3932
3994
|
if (readOnly) return;
|
|
3933
3995
|
setValue(index);
|
|
3934
3996
|
onValueChange?.({ value: index });
|
|
3935
3997
|
}, [readOnly, onValueChange]);
|
|
3936
|
-
const handleMouseEnter =
|
|
3998
|
+
const handleMouseEnter = React30.useCallback((index) => () => {
|
|
3937
3999
|
if (readOnly) return;
|
|
3938
4000
|
setHoveredIndex(index);
|
|
3939
4001
|
}, [readOnly]);
|
|
3940
|
-
const handleMouseLeave =
|
|
4002
|
+
const handleMouseLeave = React30.useCallback(() => {
|
|
3941
4003
|
setHoveredIndex(-1);
|
|
3942
4004
|
}, []);
|
|
3943
4005
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("inline-flex items-center gap-1", className), ...rest, children: [
|
|
@@ -3965,14 +4027,14 @@ var Rating = React29.forwardRef(
|
|
|
3965
4027
|
] });
|
|
3966
4028
|
}
|
|
3967
4029
|
);
|
|
3968
|
-
function createListCollection(
|
|
3969
|
-
return { items:
|
|
4030
|
+
function createListCollection(config2) {
|
|
4031
|
+
return { items: config2.items };
|
|
3970
4032
|
}
|
|
3971
4033
|
var ArrowIcon2 = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M7.5 15L12.5 10L7.5 5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
3972
4034
|
var CheckIcon2 = ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M16.667 5L7.5 14.167 3.333 10", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
3973
4035
|
function FilterInput({ placeholder, initialValue = "", onChange }) {
|
|
3974
|
-
const [value, setValue] =
|
|
3975
|
-
const handleChange =
|
|
4036
|
+
const [value, setValue] = React30.useState(initialValue);
|
|
4037
|
+
const handleChange = React30.useCallback((e) => {
|
|
3976
4038
|
setValue(e.target.value);
|
|
3977
4039
|
onChange?.(e.target.value);
|
|
3978
4040
|
}, [onChange]);
|
|
@@ -3991,15 +4053,15 @@ function FilterInput({ placeholder, initialValue = "", onChange }) {
|
|
|
3991
4053
|
}
|
|
3992
4054
|
);
|
|
3993
4055
|
}
|
|
3994
|
-
var SelectInternalContext =
|
|
4056
|
+
var SelectInternalContext = React30.createContext(null);
|
|
3995
4057
|
function useSelectInternalContext() {
|
|
3996
|
-
const ctx =
|
|
4058
|
+
const ctx = React30.useContext(SelectInternalContext);
|
|
3997
4059
|
if (!ctx) {
|
|
3998
4060
|
throw new Error("Select compound components must be rendered inside <SelectRoot>");
|
|
3999
4061
|
}
|
|
4000
4062
|
return ctx;
|
|
4001
4063
|
}
|
|
4002
|
-
var SelectRoot =
|
|
4064
|
+
var SelectRoot = React30.forwardRef(
|
|
4003
4065
|
function SelectRoot2(props, ref) {
|
|
4004
4066
|
const {
|
|
4005
4067
|
children,
|
|
@@ -4030,21 +4092,21 @@ var SelectRoot = React29.forwardRef(
|
|
|
4030
4092
|
hideFrom: _hideFrom
|
|
4031
4093
|
} = props;
|
|
4032
4094
|
const collection = collectionProp ?? createListCollection({ items: [] });
|
|
4033
|
-
const [internalValue, setInternalValue] =
|
|
4095
|
+
const [internalValue, setInternalValue] = React30.useState(defaultValueArr ?? []);
|
|
4034
4096
|
const currentValue = valueProp ?? internalValue;
|
|
4035
|
-
const selectedItems =
|
|
4097
|
+
const selectedItems = React30.useMemo(() => {
|
|
4036
4098
|
return currentValue.map((v) => collection.items.find((item) => item.value === v)).filter(Boolean);
|
|
4037
4099
|
}, [currentValue, collection.items]);
|
|
4038
|
-
const [open, setOpen] =
|
|
4100
|
+
const [open, setOpen] = React30.useState(defaultOpen ?? false);
|
|
4039
4101
|
const isOpen = openProp ?? open;
|
|
4040
|
-
const handleOpenChange =
|
|
4102
|
+
const handleOpenChange = React30.useCallback((nextOpen) => {
|
|
4041
4103
|
setOpen(nextOpen);
|
|
4042
4104
|
onOpenChange?.(nextOpen);
|
|
4043
4105
|
if (!nextOpen) {
|
|
4044
4106
|
onInteractOutside?.();
|
|
4045
4107
|
}
|
|
4046
4108
|
}, [onOpenChange, onInteractOutside]);
|
|
4047
|
-
const handleRadixValueChange =
|
|
4109
|
+
const handleRadixValueChange = React30.useCallback((radixValue) => {
|
|
4048
4110
|
const nextArr = [radixValue];
|
|
4049
4111
|
if (!valueProp) {
|
|
4050
4112
|
setInternalValue(nextArr);
|
|
@@ -4052,7 +4114,7 @@ var SelectRoot = React29.forwardRef(
|
|
|
4052
4114
|
const items = collection.items.filter((item) => nextArr.includes(item.value));
|
|
4053
4115
|
onValueChangeProp?.({ value: nextArr, items });
|
|
4054
4116
|
}, [valueProp, collection.items, onValueChangeProp]);
|
|
4055
|
-
const ctxValue =
|
|
4117
|
+
const ctxValue = React30.useMemo(() => ({
|
|
4056
4118
|
value: currentValue,
|
|
4057
4119
|
selectedItems,
|
|
4058
4120
|
collection,
|
|
@@ -4072,7 +4134,7 @@ var SelectRoot = React29.forwardRef(
|
|
|
4072
4134
|
if (typeof v === "string") return v;
|
|
4073
4135
|
return v.base ?? v.lg ?? Object.values(v)[0];
|
|
4074
4136
|
};
|
|
4075
|
-
const inlineStyle =
|
|
4137
|
+
const inlineStyle = React30.useMemo(() => {
|
|
4076
4138
|
const s = { ...style };
|
|
4077
4139
|
const rw = resolveVal(w);
|
|
4078
4140
|
if (rw) s.width = rw;
|
|
@@ -4110,7 +4172,7 @@ var SelectRoot = React29.forwardRef(
|
|
|
4110
4172
|
) });
|
|
4111
4173
|
}
|
|
4112
4174
|
);
|
|
4113
|
-
var SelectControl =
|
|
4175
|
+
var SelectControl = React30.forwardRef(
|
|
4114
4176
|
function SelectControl2(props, ref) {
|
|
4115
4177
|
const { children, noIndicator, triggerProps, loading, defaultValue } = props;
|
|
4116
4178
|
const ctx = useSelectInternalContext();
|
|
@@ -4147,11 +4209,11 @@ var SelectControl = React29.forwardRef(
|
|
|
4147
4209
|
return trigger;
|
|
4148
4210
|
}
|
|
4149
4211
|
);
|
|
4150
|
-
var SelectClearTrigger =
|
|
4212
|
+
var SelectClearTrigger = React30.forwardRef(
|
|
4151
4213
|
function SelectClearTrigger2(props, ref) {
|
|
4152
4214
|
const { className, ...rest } = props;
|
|
4153
4215
|
const ctx = useSelectInternalContext();
|
|
4154
|
-
const handleClick =
|
|
4216
|
+
const handleClick = React30.useCallback(() => {
|
|
4155
4217
|
ctx.onValueChange({ value: [], items: [] });
|
|
4156
4218
|
}, [ctx]);
|
|
4157
4219
|
return /* @__PURE__ */ jsx(
|
|
@@ -4168,7 +4230,7 @@ var SelectClearTrigger = React29.forwardRef(
|
|
|
4168
4230
|
);
|
|
4169
4231
|
}
|
|
4170
4232
|
);
|
|
4171
|
-
var SelectContent =
|
|
4233
|
+
var SelectContent = React30.forwardRef(
|
|
4172
4234
|
function SelectContent2(props, ref) {
|
|
4173
4235
|
const { portalled = true, portalRef, children, className, ...rest } = props;
|
|
4174
4236
|
const content = /* @__PURE__ */ jsx(
|
|
@@ -4195,7 +4257,7 @@ var SelectContent = React29.forwardRef(
|
|
|
4195
4257
|
return content;
|
|
4196
4258
|
}
|
|
4197
4259
|
);
|
|
4198
|
-
var SelectItem =
|
|
4260
|
+
var SelectItem = React30.forwardRef(
|
|
4199
4261
|
function SelectItem2(props, ref) {
|
|
4200
4262
|
const { item, children, className, ...rest } = props;
|
|
4201
4263
|
return /* @__PURE__ */ jsxs(
|
|
@@ -4223,7 +4285,7 @@ var SelectItem = React29.forwardRef(
|
|
|
4223
4285
|
);
|
|
4224
4286
|
}
|
|
4225
4287
|
);
|
|
4226
|
-
var SelectValueText =
|
|
4288
|
+
var SelectValueText = React30.forwardRef(
|
|
4227
4289
|
function SelectValueText2(props, ref) {
|
|
4228
4290
|
const { children, size, required, invalid, errorText, mode, className, style, placeholder: placeholderProp, ...rest } = props;
|
|
4229
4291
|
const ctx = useSelectInternalContext();
|
|
@@ -4279,7 +4341,7 @@ var SelectValueText = React29.forwardRef(
|
|
|
4279
4341
|
);
|
|
4280
4342
|
}
|
|
4281
4343
|
);
|
|
4282
|
-
var SelectItemGroup =
|
|
4344
|
+
var SelectItemGroup = React30.forwardRef(
|
|
4283
4345
|
function SelectItemGroup2(props, ref) {
|
|
4284
4346
|
const { children, label, className, ...rest } = props;
|
|
4285
4347
|
return /* @__PURE__ */ jsxs(RadixSelect.Group, { ref, className: cn("py-1", className), ...rest, children: [
|
|
@@ -4290,7 +4352,7 @@ var SelectItemGroup = React29.forwardRef(
|
|
|
4290
4352
|
);
|
|
4291
4353
|
var SelectLabel = RadixSelect.Label;
|
|
4292
4354
|
var SelectItemText = RadixSelect.ItemText;
|
|
4293
|
-
var Select =
|
|
4355
|
+
var Select = React30.forwardRef((props, ref) => {
|
|
4294
4356
|
const { collection, placeholder, portalled = true, loading, errorText, contentProps, contentHeader, itemFilter, mode, ...rest } = props;
|
|
4295
4357
|
return /* @__PURE__ */ jsxs(
|
|
4296
4358
|
SelectRoot,
|
|
@@ -4312,7 +4374,7 @@ var Select = React29.forwardRef((props, ref) => {
|
|
|
4312
4374
|
) }),
|
|
4313
4375
|
/* @__PURE__ */ jsxs(SelectContent, { portalled, ...contentProps, children: [
|
|
4314
4376
|
contentHeader,
|
|
4315
|
-
collection.items.filter(itemFilter ?? (() => true)).map((item) => /* @__PURE__ */ jsxs(
|
|
4377
|
+
collection.items.filter(itemFilter ?? (() => true)).map((item) => /* @__PURE__ */ jsxs(React30.Fragment, { children: [
|
|
4316
4378
|
/* @__PURE__ */ jsx(SelectItem, { item, children: item.renderLabel ? item.renderLabel("item") : item.label }),
|
|
4317
4379
|
item.afterElement
|
|
4318
4380
|
] }, item.value))
|
|
@@ -4321,19 +4383,19 @@ var Select = React29.forwardRef((props, ref) => {
|
|
|
4321
4383
|
}
|
|
4322
4384
|
);
|
|
4323
4385
|
});
|
|
4324
|
-
var SelectAsync =
|
|
4386
|
+
var SelectAsync = React30.forwardRef((props, ref) => {
|
|
4325
4387
|
const { placeholder, portalled = true, loading, loadOptions, extraControls, onValueChange, errorText, mode, contentHeader, ...rest } = props;
|
|
4326
|
-
const [collection, setCollection] =
|
|
4327
|
-
const [inputValue, setInputValue] =
|
|
4328
|
-
const [value, setValue] =
|
|
4388
|
+
const [collection, setCollection] = React30.useState(createListCollection({ items: [] }));
|
|
4389
|
+
const [inputValue, setInputValue] = React30.useState("");
|
|
4390
|
+
const [value, setValue] = React30.useState([]);
|
|
4329
4391
|
const debouncedInputValue = useDebounce(inputValue, 300);
|
|
4330
|
-
|
|
4392
|
+
React30.useEffect(() => {
|
|
4331
4393
|
loadOptions(debouncedInputValue, value).then(setCollection);
|
|
4332
4394
|
}, [debouncedInputValue, loadOptions, value]);
|
|
4333
|
-
const handleFilterChange =
|
|
4395
|
+
const handleFilterChange = React30.useCallback((val) => {
|
|
4334
4396
|
setInputValue(val);
|
|
4335
4397
|
}, []);
|
|
4336
|
-
const handleValueChange =
|
|
4398
|
+
const handleValueChange = React30.useCallback(({ value: v, items }) => {
|
|
4337
4399
|
setValue(v);
|
|
4338
4400
|
onValueChange?.({ value: v, items });
|
|
4339
4401
|
}, [onValueChange]);
|
|
@@ -4392,7 +4454,7 @@ var VERTICAL_SIZE_CLASSES = {
|
|
|
4392
4454
|
md: "border-l-2",
|
|
4393
4455
|
lg: "border-l-[3px]"
|
|
4394
4456
|
};
|
|
4395
|
-
var Separator2 =
|
|
4457
|
+
var Separator2 = React30__default.forwardRef(
|
|
4396
4458
|
function Separator3({ orientation = "horizontal", variant = "solid", size = "sm", className, ...rest }, ref) {
|
|
4397
4459
|
const isVertical = orientation === "vertical";
|
|
4398
4460
|
return /* @__PURE__ */ jsx(
|
|
@@ -4416,7 +4478,7 @@ var Separator2 = React29__default.forwardRef(
|
|
|
4416
4478
|
);
|
|
4417
4479
|
var THUMB_SIZE = 20;
|
|
4418
4480
|
var TRACK_HEIGHT = 6;
|
|
4419
|
-
var Slider =
|
|
4481
|
+
var Slider = React30.forwardRef(
|
|
4420
4482
|
function Slider2(props, ref) {
|
|
4421
4483
|
const {
|
|
4422
4484
|
marks: marksProp,
|
|
@@ -4535,7 +4597,7 @@ var SIZE_CLASSES9 = {
|
|
|
4535
4597
|
label: "text-base"
|
|
4536
4598
|
}
|
|
4537
4599
|
};
|
|
4538
|
-
var SwitchBase =
|
|
4600
|
+
var SwitchBase = React30.forwardRef(
|
|
4539
4601
|
function Switch(props, ref) {
|
|
4540
4602
|
const {
|
|
4541
4603
|
inputProps,
|
|
@@ -4554,10 +4616,10 @@ var SwitchBase = React29.forwardRef(
|
|
|
4554
4616
|
className,
|
|
4555
4617
|
...rest
|
|
4556
4618
|
} = props;
|
|
4557
|
-
const [internalChecked, setInternalChecked] =
|
|
4619
|
+
const [internalChecked, setInternalChecked] = React30.useState(defaultChecked ?? false);
|
|
4558
4620
|
const isControlled = checkedProp !== void 0;
|
|
4559
4621
|
const checkedState = isControlled ? checkedProp : internalChecked;
|
|
4560
|
-
const handleCheckedChange =
|
|
4622
|
+
const handleCheckedChange = React30.useCallback(
|
|
4561
4623
|
(nextChecked) => {
|
|
4562
4624
|
if (!isControlled) {
|
|
4563
4625
|
setInternalChecked(nextChecked);
|
|
@@ -4822,7 +4884,7 @@ function resolveResponsive(value) {
|
|
|
4822
4884
|
}
|
|
4823
4885
|
return void 0;
|
|
4824
4886
|
}
|
|
4825
|
-
var TableRoot =
|
|
4887
|
+
var TableRoot = React30.forwardRef(
|
|
4826
4888
|
function TableRoot2(props, ref) {
|
|
4827
4889
|
const { className, style: styleProp, children, ...other } = props;
|
|
4828
4890
|
const rawMinW = other.minWidth ?? other.minW;
|
|
@@ -4845,7 +4907,7 @@ var TableRoot = React29.forwardRef(
|
|
|
4845
4907
|
);
|
|
4846
4908
|
}
|
|
4847
4909
|
);
|
|
4848
|
-
var TableHeader =
|
|
4910
|
+
var TableHeader = React30.forwardRef(
|
|
4849
4911
|
function TableHeader2(props, ref) {
|
|
4850
4912
|
const { className, style: styleProp, children, ...other } = props;
|
|
4851
4913
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -4862,7 +4924,7 @@ var TableHeader = React29.forwardRef(
|
|
|
4862
4924
|
);
|
|
4863
4925
|
}
|
|
4864
4926
|
);
|
|
4865
|
-
var TableBody =
|
|
4927
|
+
var TableBody = React30.forwardRef(
|
|
4866
4928
|
function TableBody2(props, ref) {
|
|
4867
4929
|
const { className, style: styleProp, children, ...other } = props;
|
|
4868
4930
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -4879,7 +4941,7 @@ var TableBody = React29.forwardRef(
|
|
|
4879
4941
|
);
|
|
4880
4942
|
}
|
|
4881
4943
|
);
|
|
4882
|
-
var TableRow =
|
|
4944
|
+
var TableRow = React30.forwardRef(
|
|
4883
4945
|
function TableRow2(props, ref) {
|
|
4884
4946
|
const { className, style: styleProp, children, ...other } = props;
|
|
4885
4947
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -4896,7 +4958,7 @@ var TableRow = React29.forwardRef(
|
|
|
4896
4958
|
);
|
|
4897
4959
|
}
|
|
4898
4960
|
);
|
|
4899
|
-
var TableCell =
|
|
4961
|
+
var TableCell = React30.forwardRef(
|
|
4900
4962
|
function TableCell2(props, ref) {
|
|
4901
4963
|
const { isNumeric, className, style: styleProp, children, ...other } = props;
|
|
4902
4964
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -4917,7 +4979,7 @@ var TableCell = React29.forwardRef(
|
|
|
4917
4979
|
);
|
|
4918
4980
|
}
|
|
4919
4981
|
);
|
|
4920
|
-
var TableColumnHeader =
|
|
4982
|
+
var TableColumnHeader = React30.forwardRef(
|
|
4921
4983
|
function TableColumnHeader2(props, ref) {
|
|
4922
4984
|
const { isNumeric, className, style: styleProp, children, ...other } = props;
|
|
4923
4985
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -4944,7 +5006,7 @@ var TableColumnHeader = React29.forwardRef(
|
|
|
4944
5006
|
);
|
|
4945
5007
|
var TableColumnHeaderSortable = (props) => {
|
|
4946
5008
|
const { sortField, sortValue, onSortToggle, children, disabled, indicatorPosition = "left", contentAfter, ...rest } = props;
|
|
4947
|
-
const handleSortToggle =
|
|
5009
|
+
const handleSortToggle = React30.useCallback(() => {
|
|
4948
5010
|
onSortToggle(sortField);
|
|
4949
5011
|
}, [onSortToggle, sortField]);
|
|
4950
5012
|
const isActive = sortValue.includes(sortField);
|
|
@@ -4970,16 +5032,16 @@ var TableColumnHeaderSortable = (props) => {
|
|
|
4970
5032
|
var ACTION_BAR_SHADOW = "0 4px 4px -4px rgb(0 0 0 / 10%), 0 2px 4px -4px rgb(0 0 0 / 6%)";
|
|
4971
5033
|
var TableHeaderSticky = (props) => {
|
|
4972
5034
|
const { top, children, className, style: styleProp, ...rest } = props;
|
|
4973
|
-
const ref =
|
|
4974
|
-
const [isStuck, setIsStuck] =
|
|
4975
|
-
const handleScroll =
|
|
5035
|
+
const ref = React30.useRef(null);
|
|
5036
|
+
const [isStuck, setIsStuck] = React30.useState(false);
|
|
5037
|
+
const handleScroll = React30.useCallback(() => {
|
|
4976
5038
|
if (Number(ref.current?.getBoundingClientRect().y) <= (Number(top) || 0)) {
|
|
4977
5039
|
setIsStuck(true);
|
|
4978
5040
|
} else {
|
|
4979
5041
|
setIsStuck(false);
|
|
4980
5042
|
}
|
|
4981
5043
|
}, [top]);
|
|
4982
|
-
|
|
5044
|
+
React30.useEffect(() => {
|
|
4983
5045
|
const throttledHandleScroll = throttle(handleScroll, 300);
|
|
4984
5046
|
window.addEventListener("scroll", throttledHandleScroll);
|
|
4985
5047
|
return () => {
|
|
@@ -5001,7 +5063,7 @@ var TableHeaderSticky = (props) => {
|
|
|
5001
5063
|
}
|
|
5002
5064
|
);
|
|
5003
5065
|
};
|
|
5004
|
-
var TableCaption =
|
|
5066
|
+
var TableCaption = React30.forwardRef(
|
|
5005
5067
|
function TableCaption2(props, ref) {
|
|
5006
5068
|
const { className, style: styleProp, children, ...other } = props;
|
|
5007
5069
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -5018,7 +5080,7 @@ var TableCaption = React29.forwardRef(
|
|
|
5018
5080
|
);
|
|
5019
5081
|
}
|
|
5020
5082
|
);
|
|
5021
|
-
var TableFooter =
|
|
5083
|
+
var TableFooter = React30.forwardRef(
|
|
5022
5084
|
function TableFooter2(props, ref) {
|
|
5023
5085
|
const { className, style: styleProp, children, ...other } = props;
|
|
5024
5086
|
const { style: extracted, rest } = extractStyles(other);
|
|
@@ -5035,7 +5097,7 @@ var TableFooter = React29.forwardRef(
|
|
|
5035
5097
|
);
|
|
5036
5098
|
}
|
|
5037
5099
|
);
|
|
5038
|
-
var TableScrollWrapper =
|
|
5100
|
+
var TableScrollWrapper = React30.forwardRef(
|
|
5039
5101
|
function TableScrollWrapper2(props, ref) {
|
|
5040
5102
|
const { className, children, ...rest } = props;
|
|
5041
5103
|
return /* @__PURE__ */ jsx(
|
|
@@ -5054,7 +5116,7 @@ var ROOT_SIZE_CLASSES = {
|
|
|
5054
5116
|
md: "[--tabs-height:2.5rem] [--tabs-content-padding:1.5rem]",
|
|
5055
5117
|
free: ""
|
|
5056
5118
|
};
|
|
5057
|
-
var TabsRoot =
|
|
5119
|
+
var TabsRoot = React30.forwardRef(
|
|
5058
5120
|
function TabsRoot2(props, ref) {
|
|
5059
5121
|
const {
|
|
5060
5122
|
variant = "solid",
|
|
@@ -5066,7 +5128,7 @@ var TabsRoot = React29.forwardRef(
|
|
|
5066
5128
|
className,
|
|
5067
5129
|
...rest
|
|
5068
5130
|
} = props;
|
|
5069
|
-
const handleValueChange =
|
|
5131
|
+
const handleValueChange = React30.useCallback(
|
|
5070
5132
|
(value) => {
|
|
5071
5133
|
if (!onValueChange) return;
|
|
5072
5134
|
onValueChange({ value });
|
|
@@ -5091,7 +5153,7 @@ var TabsRoot = React29.forwardRef(
|
|
|
5091
5153
|
);
|
|
5092
5154
|
}
|
|
5093
5155
|
);
|
|
5094
|
-
var TabsList =
|
|
5156
|
+
var TabsList = React30.forwardRef(
|
|
5095
5157
|
function TabsList2(props, ref) {
|
|
5096
5158
|
const {
|
|
5097
5159
|
className,
|
|
@@ -5145,7 +5207,7 @@ var TRIGGER_VARIANT_CLASSES = {
|
|
|
5145
5207
|
segmented: "bg-transparent text-text-primary border-2 border-solid border-selected-control-bg hover:text-hover data-[state=active]:text-selected-control-text data-[state=active]:bg-selected-control-bg data-[state=active]:border-selected-control-bg data-[state=active]:hover:text-selected-control-text",
|
|
5146
5208
|
unstyled: ""
|
|
5147
5209
|
};
|
|
5148
|
-
var TabsTrigger =
|
|
5210
|
+
var TabsTrigger = React30.forwardRef(
|
|
5149
5211
|
function TabsTrigger2(props, ref) {
|
|
5150
5212
|
const {
|
|
5151
5213
|
className,
|
|
@@ -5165,7 +5227,7 @@ var TabsTrigger = React29.forwardRef(
|
|
|
5165
5227
|
visibility: _visibility,
|
|
5166
5228
|
...rest
|
|
5167
5229
|
} = props;
|
|
5168
|
-
const internalRef =
|
|
5230
|
+
const internalRef = React30.useRef(null);
|
|
5169
5231
|
const mergedRef = useMergedRef(ref, internalRef);
|
|
5170
5232
|
const { variant, size, fitted } = useTabsContext(internalRef);
|
|
5171
5233
|
return /* @__PURE__ */ jsx(
|
|
@@ -5185,7 +5247,7 @@ var TabsTrigger = React29.forwardRef(
|
|
|
5185
5247
|
);
|
|
5186
5248
|
}
|
|
5187
5249
|
);
|
|
5188
|
-
var TabsContent =
|
|
5250
|
+
var TabsContent = React30.forwardRef(
|
|
5189
5251
|
function TabsContent2(props, ref) {
|
|
5190
5252
|
const { className, padding: _padding, ...rest } = props;
|
|
5191
5253
|
return /* @__PURE__ */ jsx(
|
|
@@ -5219,8 +5281,8 @@ var TabsCounter = ({ count }) => {
|
|
|
5219
5281
|
);
|
|
5220
5282
|
};
|
|
5221
5283
|
function useTabsContext(triggerRef) {
|
|
5222
|
-
const [ctx, setCtx] =
|
|
5223
|
-
|
|
5284
|
+
const [ctx, setCtx] = React30.useState({ variant: "solid", size: "md", fitted: false });
|
|
5285
|
+
React30.useEffect(() => {
|
|
5224
5286
|
const el = triggerRef.current;
|
|
5225
5287
|
if (!el) return;
|
|
5226
5288
|
const root = el.closest("[data-variant]");
|
|
@@ -5234,7 +5296,7 @@ function useTabsContext(triggerRef) {
|
|
|
5234
5296
|
return ctx;
|
|
5235
5297
|
}
|
|
5236
5298
|
function useMergedRef(...refs) {
|
|
5237
|
-
return
|
|
5299
|
+
return React30.useCallback(
|
|
5238
5300
|
(instance) => {
|
|
5239
5301
|
for (const ref of refs) {
|
|
5240
5302
|
if (!ref) continue;
|
|
@@ -5272,7 +5334,7 @@ var TAG_SELECTED_CLASSES = [
|
|
|
5272
5334
|
"hover:opacity-76"
|
|
5273
5335
|
].join(" ");
|
|
5274
5336
|
var TAG_DISABLED_CLASSES = "opacity-40 pointer-events-none cursor-not-allowed";
|
|
5275
|
-
var Tag =
|
|
5337
|
+
var Tag = React30.forwardRef(
|
|
5276
5338
|
function Tag2(props, ref) {
|
|
5277
5339
|
const {
|
|
5278
5340
|
variant,
|
|
@@ -5359,14 +5421,22 @@ var TEXTAREA_VARIANT_CLASSES = {
|
|
|
5359
5421
|
filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
|
|
5360
5422
|
unstyled: "border-0 bg-transparent p-0"
|
|
5361
5423
|
};
|
|
5362
|
-
var Textarea =
|
|
5363
|
-
({ size = "md", variant = "outline", className, ...rest }, ref) => {
|
|
5424
|
+
var Textarea = React30__default.forwardRef(
|
|
5425
|
+
({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
|
|
5426
|
+
const handleChange = React30__default.useCallback(
|
|
5427
|
+
(event) => {
|
|
5428
|
+
onChange?.(event);
|
|
5429
|
+
onChangeText?.(event.target.value);
|
|
5430
|
+
},
|
|
5431
|
+
[onChange, onChangeText]
|
|
5432
|
+
);
|
|
5364
5433
|
return /* @__PURE__ */ jsx(
|
|
5365
5434
|
"textarea",
|
|
5366
5435
|
{
|
|
5367
5436
|
ref,
|
|
5368
5437
|
className: cn(TEXTAREA_BASE, TEXTAREA_SIZE_CLASSES[size], TEXTAREA_VARIANT_CLASSES[variant], className),
|
|
5369
|
-
...rest
|
|
5438
|
+
...rest,
|
|
5439
|
+
onChange: handleChange
|
|
5370
5440
|
}
|
|
5371
5441
|
);
|
|
5372
5442
|
}
|
|
@@ -5495,7 +5565,7 @@ function QuoteCell({ value, highlight, align = "right", onClick, className }) {
|
|
|
5495
5565
|
}
|
|
5496
5566
|
var CALL_HEADERS = ["Bid", "Ask", "Last", "Vol", "OI", "IV", "Delta"];
|
|
5497
5567
|
var PUT_HEADERS = ["Delta", "IV", "OI", "Vol", "Last", "Ask", "Bid"];
|
|
5498
|
-
var OptionChain =
|
|
5568
|
+
var OptionChain = React30.forwardRef(
|
|
5499
5569
|
function OptionChain2(props, ref) {
|
|
5500
5570
|
const {
|
|
5501
5571
|
symbol: _symbol,
|
|
@@ -5506,7 +5576,7 @@ var OptionChain = React29.forwardRef(
|
|
|
5506
5576
|
className,
|
|
5507
5577
|
...rest
|
|
5508
5578
|
} = props;
|
|
5509
|
-
const handleClick =
|
|
5579
|
+
const handleClick = React30.useCallback(
|
|
5510
5580
|
(quote, type, strike) => {
|
|
5511
5581
|
if (!quote || !onSelectContract) return;
|
|
5512
5582
|
onSelectContract({
|
|
@@ -5686,7 +5756,7 @@ function GreekItem({ def, value, compact }) {
|
|
|
5686
5756
|
}
|
|
5687
5757
|
);
|
|
5688
5758
|
}
|
|
5689
|
-
var GreeksDisplay =
|
|
5759
|
+
var GreeksDisplay = React30.forwardRef(
|
|
5690
5760
|
function GreeksDisplay2(props, ref) {
|
|
5691
5761
|
const {
|
|
5692
5762
|
delta,
|
|
@@ -5917,7 +5987,7 @@ function LegRow({ leg, index, strikes, expirations, removable, onChange, onRemov
|
|
|
5917
5987
|
)
|
|
5918
5988
|
] });
|
|
5919
5989
|
}
|
|
5920
|
-
var StrategyBuilder =
|
|
5990
|
+
var StrategyBuilder = React30.forwardRef(
|
|
5921
5991
|
function StrategyBuilder2(props, ref) {
|
|
5922
5992
|
const {
|
|
5923
5993
|
underlying,
|
|
@@ -5929,12 +5999,12 @@ var StrategyBuilder = React29.forwardRef(
|
|
|
5929
5999
|
...rest
|
|
5930
6000
|
} = props;
|
|
5931
6001
|
const defaultExp = expirations[0] ?? "";
|
|
5932
|
-
const [strategyType, setStrategyType] =
|
|
5933
|
-
const [legs, setLegs] =
|
|
6002
|
+
const [strategyType, setStrategyType] = React30.useState("bull_call_spread");
|
|
6003
|
+
const [legs, setLegs] = React30.useState(() => {
|
|
5934
6004
|
const preset = STRATEGY_PRESETS.find((p) => p.value === "bull_call_spread");
|
|
5935
6005
|
return preset ? preset.buildLegs(strikes, spotPrice, defaultExp) : [];
|
|
5936
6006
|
});
|
|
5937
|
-
const handleStrategyChange =
|
|
6007
|
+
const handleStrategyChange = React30.useCallback(
|
|
5938
6008
|
(e) => {
|
|
5939
6009
|
const type = e.target.value;
|
|
5940
6010
|
setStrategyType(type);
|
|
@@ -5945,7 +6015,7 @@ var StrategyBuilder = React29.forwardRef(
|
|
|
5945
6015
|
},
|
|
5946
6016
|
[strikes, spotPrice, defaultExp]
|
|
5947
6017
|
);
|
|
5948
|
-
const handleLegChange =
|
|
6018
|
+
const handleLegChange = React30.useCallback(
|
|
5949
6019
|
(index, leg) => {
|
|
5950
6020
|
setLegs((prev) => {
|
|
5951
6021
|
const next = [...prev];
|
|
@@ -5955,13 +6025,13 @@ var StrategyBuilder = React29.forwardRef(
|
|
|
5955
6025
|
},
|
|
5956
6026
|
[]
|
|
5957
6027
|
);
|
|
5958
|
-
const handleLegRemove =
|
|
6028
|
+
const handleLegRemove = React30.useCallback(
|
|
5959
6029
|
(index) => {
|
|
5960
6030
|
setLegs((prev) => prev.filter((_, i) => i !== index));
|
|
5961
6031
|
},
|
|
5962
6032
|
[]
|
|
5963
6033
|
);
|
|
5964
|
-
const handleAddLeg =
|
|
6034
|
+
const handleAddLeg = React30.useCallback(() => {
|
|
5965
6035
|
if (legs.length >= 4) return;
|
|
5966
6036
|
const atm = findATM(strikes, spotPrice);
|
|
5967
6037
|
setLegs((prev) => [
|
|
@@ -5969,14 +6039,14 @@ var StrategyBuilder = React29.forwardRef(
|
|
|
5969
6039
|
{ action: "buy", type: "call", strike: atm, expiration: defaultExp, quantity: 1 }
|
|
5970
6040
|
]);
|
|
5971
6041
|
}, [legs.length, strikes, spotPrice, defaultExp]);
|
|
5972
|
-
const netPremium =
|
|
6042
|
+
const netPremium = React30.useMemo(() => {
|
|
5973
6043
|
return legs.reduce((sum, leg) => {
|
|
5974
6044
|
if (leg.premium === void 0) return sum;
|
|
5975
6045
|
const sign = leg.action === "buy" ? -1 : 1;
|
|
5976
6046
|
return sum + sign * leg.premium * leg.quantity;
|
|
5977
6047
|
}, 0);
|
|
5978
6048
|
}, [legs]);
|
|
5979
|
-
const handleSubmit =
|
|
6049
|
+
const handleSubmit = React30.useCallback(() => {
|
|
5980
6050
|
if (!onSubmit || legs.length === 0) return;
|
|
5981
6051
|
onSubmit({
|
|
5982
6052
|
type: strategyType,
|
|
@@ -6097,7 +6167,7 @@ function buildPath(points, vb, width, height) {
|
|
|
6097
6167
|
return parts.join(" ");
|
|
6098
6168
|
}
|
|
6099
6169
|
var LEG_COLORS = ["#6366f1", "#f59e0b", "#ec4899", "#06b6d4"];
|
|
6100
|
-
var PnlDiagram =
|
|
6170
|
+
var PnlDiagram = React30.forwardRef(
|
|
6101
6171
|
function PnlDiagram2(props, ref) {
|
|
6102
6172
|
const {
|
|
6103
6173
|
legs,
|
|
@@ -6106,10 +6176,10 @@ var PnlDiagram = React29.forwardRef(
|
|
|
6106
6176
|
className,
|
|
6107
6177
|
...rest
|
|
6108
6178
|
} = props;
|
|
6109
|
-
const containerRef =
|
|
6110
|
-
const [hoverX, setHoverX] =
|
|
6111
|
-
const [dims, setDims] =
|
|
6112
|
-
|
|
6179
|
+
const containerRef = React30.useRef(null);
|
|
6180
|
+
const [hoverX, setHoverX] = React30.useState(null);
|
|
6181
|
+
const [dims, setDims] = React30.useState({ width: 600, height: 240 });
|
|
6182
|
+
React30.useEffect(() => {
|
|
6113
6183
|
const el = containerRef.current;
|
|
6114
6184
|
if (!el) return;
|
|
6115
6185
|
const observer = new ResizeObserver((entries) => {
|
|
@@ -6132,7 +6202,7 @@ var PnlDiagram = React29.forwardRef(
|
|
|
6132
6202
|
const xMax = maxStrike + range * 0.3;
|
|
6133
6203
|
const SAMPLES = 200;
|
|
6134
6204
|
const step = (xMax - xMin) / SAMPLES;
|
|
6135
|
-
const combinedPoints =
|
|
6205
|
+
const combinedPoints = React30.useMemo(() => {
|
|
6136
6206
|
const pts = [];
|
|
6137
6207
|
for (let i = 0; i <= SAMPLES; i++) {
|
|
6138
6208
|
const price = xMin + i * step;
|
|
@@ -6140,7 +6210,7 @@ var PnlDiagram = React29.forwardRef(
|
|
|
6140
6210
|
}
|
|
6141
6211
|
return pts;
|
|
6142
6212
|
}, [legs, multiplier, xMin, step]);
|
|
6143
|
-
const legPointSets =
|
|
6213
|
+
const legPointSets = React30.useMemo(() => {
|
|
6144
6214
|
return legs.map((leg) => {
|
|
6145
6215
|
const pts = [];
|
|
6146
6216
|
for (let i = 0; i <= SAMPLES; i++) {
|
|
@@ -6161,7 +6231,7 @@ var PnlDiagram = React29.forwardRef(
|
|
|
6161
6231
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6162
6232
|
const scaleX = (x) => PADDING.left + (x - vb.xMin) / (vb.xMax - vb.xMin) * chartW;
|
|
6163
6233
|
const scaleY = (y) => PADDING.top + chartH - (y - vb.yMin) / (vb.yMax - vb.yMin) * chartH;
|
|
6164
|
-
const breakevens =
|
|
6234
|
+
const breakevens = React30.useMemo(() => {
|
|
6165
6235
|
const pts = [];
|
|
6166
6236
|
for (let i = 1; i < combinedPoints.length; i++) {
|
|
6167
6237
|
const prev = combinedPoints[i - 1];
|
|
@@ -6178,7 +6248,7 @@ var PnlDiagram = React29.forwardRef(
|
|
|
6178
6248
|
const maxGainPoint = combinedPoints.find((p) => p.y === maxGain);
|
|
6179
6249
|
const maxLossPoint = combinedPoints.find((p) => p.y === maxLoss);
|
|
6180
6250
|
const zeroY = scaleY(0);
|
|
6181
|
-
const handleMouseMove =
|
|
6251
|
+
const handleMouseMove = React30.useCallback(
|
|
6182
6252
|
(e) => {
|
|
6183
6253
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
6184
6254
|
const mouseX = e.clientX - rect.left;
|
|
@@ -6191,7 +6261,7 @@ var PnlDiagram = React29.forwardRef(
|
|
|
6191
6261
|
},
|
|
6192
6262
|
[vb.xMin, vb.xMax, chartW]
|
|
6193
6263
|
);
|
|
6194
|
-
const handleMouseLeave =
|
|
6264
|
+
const handleMouseLeave = React30.useCallback(() => setHoverX(null), []);
|
|
6195
6265
|
const hoverPnl = hoverX !== null ? calcTotalPnl(legs, hoverX, multiplier) : null;
|
|
6196
6266
|
buildPath(
|
|
6197
6267
|
combinedPoints.map((p) => ({ x: scaleX(p.x), y: scaleY(p.y) })).map((p) => ({ x: p.x - PADDING.left, y: p.y - PADDING.top })),
|
|
@@ -6495,7 +6565,7 @@ function formatDate(date) {
|
|
|
6495
6565
|
const d = new Date(date);
|
|
6496
6566
|
return d.toLocaleDateString("en-US", { month: "short", day: "numeric" });
|
|
6497
6567
|
}
|
|
6498
|
-
var OptionPositionCard =
|
|
6568
|
+
var OptionPositionCard = React30.forwardRef(
|
|
6499
6569
|
function OptionPositionCard2(props, ref) {
|
|
6500
6570
|
const {
|
|
6501
6571
|
position,
|
|
@@ -6657,7 +6727,7 @@ function ExpirationPill({ exp, isSelected, onClick }) {
|
|
|
6657
6727
|
}
|
|
6658
6728
|
);
|
|
6659
6729
|
}
|
|
6660
|
-
var ExpirationSelector =
|
|
6730
|
+
var ExpirationSelector = React30.forwardRef(
|
|
6661
6731
|
function ExpirationSelector2(props, ref) {
|
|
6662
6732
|
const {
|
|
6663
6733
|
expirations,
|
|
@@ -6667,8 +6737,8 @@ var ExpirationSelector = React29.forwardRef(
|
|
|
6667
6737
|
className,
|
|
6668
6738
|
...rest
|
|
6669
6739
|
} = props;
|
|
6670
|
-
const scrollRef =
|
|
6671
|
-
|
|
6740
|
+
const scrollRef = React30.useRef(null);
|
|
6741
|
+
React30.useEffect(() => {
|
|
6672
6742
|
const container = scrollRef.current;
|
|
6673
6743
|
if (!container) return;
|
|
6674
6744
|
const selectedEl = container.querySelector('[data-selected="true"]');
|
|
@@ -6980,4 +7050,4 @@ var BankPage = styled(View, {
|
|
|
6980
7050
|
padding: 16
|
|
6981
7051
|
});
|
|
6982
7052
|
|
|
6983
|
-
export { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, Alert, AppProvider, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Button, ButtonGroup, ButtonGroupRadio, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, CloseButton, CollapsibleDetails, CollapsibleList, ColorModeProvider, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, EmptyState, ExpirationSelector, Field, GreeksDisplay, Heading, IconButton, Image2 as Image, Input, InputGroup, Link, LinkBox, LinkExternalIcon, LinkOverlay, MenuArrow, MenuCheckboxItem, MenuContent, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, OptionChain, OptionPositionCard, PinInput, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, Radio2 as Radio, RadioGroup3 as RadioGroup, Rating, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator2 as Separator, Skeleton, SkeletonCircle, SkeletonText, Slider, StrategyBuilder, Switch2 as Switch, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Textarea, Toaster, Tooltip, bankColors, buttonVariants, cn, createListCollection, toaster, useAccordion, useColorMode, useColorModeValue };
|
|
7053
|
+
export { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, Alert, AppProvider, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Button, ButtonGroup, ButtonGroupRadio, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, CloseButton, CollapsibleDetails, CollapsibleList, ColorModeProvider, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, EmptyState, ExpirationSelector, Field, GreeksDisplay, Heading, IconButton, Image2 as Image, Input, InputGroup, LUX_BRAND, Link, LinkBox, LinkExternalIcon, LinkOverlay, MenuArrow, MenuCheckboxItem, MenuContent, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, OptionChain, OptionPositionCard, PARS_GOLD, PinInput, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, Radio2 as Radio, RadioGroup3 as RadioGroup, Rating, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator2 as Separator, Skeleton, SkeletonCircle, SkeletonText, Slider, StrategyBuilder, Switch2 as Switch, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Textarea, Toaster, Tooltip, bankColors, buttonVariants, cn, config, createListCollection, lux_config_default as guiConfig, luxThemes, toaster, useAccordion, useColorMode, useColorModeValue };
|