@postxl/ui-components 1.3.4 → 1.3.6
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/index.d.ts +321 -129
- package/dist/index.js +313 -34
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/styles/theme.css +2 -0
package/dist/index.js
CHANGED
|
@@ -59,7 +59,7 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
|
59
59
|
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
60
60
|
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
61
61
|
import useEmblaCarousel from "embla-carousel-react";
|
|
62
|
-
import { BaselineIcon, CalendarIcon as CalendarIcon$1, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronUpIcon as ChevronUpIcon$1, CopyIcon,
|
|
62
|
+
import { BaselineIcon, CalendarIcon as CalendarIcon$1, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronUpIcon as ChevronUpIcon$1, CopyIcon, EraserIcon, EyeOffIcon, FilterX, GripHorizontalIcon, HashIcon, ListChecksIcon, ListIcon, PanelLeftIcon, PinIcon, PinOffIcon, PlusIcon, Settings2Icon, SquareIcon, TextInitialIcon, TrashIcon, XIcon } from "lucide-react";
|
|
63
63
|
import * as CollapsePrimitive from "@radix-ui/react-collapsible";
|
|
64
64
|
import { Command as Command$1 } from "cmdk";
|
|
65
65
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
@@ -91,6 +91,21 @@ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
|
91
91
|
function cn(...inputs) {
|
|
92
92
|
return twMerge(clsx(inputs));
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Generates a test ID by combining a base ID with a suffix.
|
|
96
|
+
* Returns undefined if no base ID is provided.
|
|
97
|
+
*
|
|
98
|
+
* For the root element, use `data-test-id={__e2e_test_id__}` directly.
|
|
99
|
+
* Use this function only for sub-elements that need a suffix.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* <div data-test-id={__e2e_test_id__}> // root element - use directly
|
|
103
|
+
* <input data-test-id={testId(__e2e_test_id__, 'search')}> // sub-element - returns `${baseId}-search` or undefined
|
|
104
|
+
*/
|
|
105
|
+
function testId(baseId, suffix) {
|
|
106
|
+
if (!baseId) return void 0;
|
|
107
|
+
return `${baseId}-${suffix}`;
|
|
108
|
+
}
|
|
94
109
|
|
|
95
110
|
//#endregion
|
|
96
111
|
//#region src/accordion/accordion.tsx
|
|
@@ -366,7 +381,7 @@ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
|
366
381
|
|
|
367
382
|
//#endregion
|
|
368
383
|
//#region src/calendar/calendar.tsx
|
|
369
|
-
function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", showYearNavigation = false, formatters, components,...props }) {
|
|
384
|
+
function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", showYearNavigation = false, formatters, components, __e2e_test_id__,...props }) {
|
|
370
385
|
const defaultClassNames = getDefaultClassNames();
|
|
371
386
|
const [rangeSelectionStep, setRangeSelectionStep] = React$43.useState("from");
|
|
372
387
|
const handleDayClick = React$43.useCallback((day, modifiers, e) => {
|
|
@@ -467,6 +482,7 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
467
482
|
disabled: fromMonth && currentMonth <= fromMonth,
|
|
468
483
|
className: btnClassNames,
|
|
469
484
|
onClick: () => setCurrentMonth((m) => addMonths(m ?? new Date(), -12)),
|
|
485
|
+
__e2e_test_id__: testId(__e2e_test_id__, "prev-year"),
|
|
470
486
|
children: /* @__PURE__ */ jsx(DoubleArrowLeftIcon, { className: "" })
|
|
471
487
|
}), /* @__PURE__ */ jsx(Button, {
|
|
472
488
|
"aria-label": "previous month",
|
|
@@ -475,6 +491,7 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
475
491
|
disabled: fromMonth && currentMonth <= fromMonth,
|
|
476
492
|
className: btnClassNames,
|
|
477
493
|
onClick: () => setCurrentMonth((m) => addMonths(m ?? new Date(), -1)),
|
|
494
|
+
__e2e_test_id__: testId(__e2e_test_id__, "prev-month"),
|
|
478
495
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, {})
|
|
479
496
|
})]
|
|
480
497
|
}), /* @__PURE__ */ jsxs("div", {
|
|
@@ -486,6 +503,7 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
486
503
|
disabled: toMonth && currentMonth >= toMonth,
|
|
487
504
|
className: btnClassNames,
|
|
488
505
|
onClick: () => setCurrentMonth((m) => addMonths(m ?? new Date(), 1)),
|
|
506
|
+
__e2e_test_id__: testId(__e2e_test_id__, "next-month"),
|
|
489
507
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, {})
|
|
490
508
|
}), showYearNavigation && /* @__PURE__ */ jsx(Button, {
|
|
491
509
|
"aria-label": "next year",
|
|
@@ -494,6 +512,7 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
494
512
|
disabled: toMonth && currentMonth >= toMonth,
|
|
495
513
|
className: btnClassNames,
|
|
496
514
|
onClick: () => setCurrentMonth((m) => addMonths(m ?? new Date(), 12)),
|
|
515
|
+
__e2e_test_id__: testId(__e2e_test_id__, "next-year"),
|
|
497
516
|
children: /* @__PURE__ */ jsx(DoubleArrowRightIcon, {})
|
|
498
517
|
})]
|
|
499
518
|
})]
|
|
@@ -502,6 +521,7 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
502
521
|
Root: ({ className: className$1, rootRef,...props$1 }) => {
|
|
503
522
|
return /* @__PURE__ */ jsx("div", {
|
|
504
523
|
"data-slot": "calendar",
|
|
524
|
+
"data-test-id": __e2e_test_id__,
|
|
505
525
|
ref: rootRef,
|
|
506
526
|
className: cn(className$1),
|
|
507
527
|
...props$1
|
|
@@ -750,7 +770,7 @@ CarouselNext.displayName = "CarouselNext";
|
|
|
750
770
|
|
|
751
771
|
//#endregion
|
|
752
772
|
//#region src/checkbox/checkbox.tsx
|
|
753
|
-
const checkboxVariants = cva("cursor-pointer peer appearance-none rounded border focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive shrink-0 shadow-xs transition-shadow", {
|
|
773
|
+
const checkboxVariants = cva("cursor-pointer peer appearance-none rounded-sm border focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive shrink-0 shadow-xs transition-shadow", {
|
|
754
774
|
variants: {
|
|
755
775
|
variant: {
|
|
756
776
|
default: "",
|
|
@@ -863,6 +883,7 @@ function DialogContent({ className, children, showCloseButton = true, __e2e_test
|
|
|
863
883
|
children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
|
|
864
884
|
"data-slot": "dialog-content",
|
|
865
885
|
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className),
|
|
886
|
+
"data-test-id": __e2e_test_id__,
|
|
866
887
|
...props,
|
|
867
888
|
children: [children, showCloseButton && /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
|
|
868
889
|
title: "Close",
|
|
@@ -873,7 +894,7 @@ function DialogContent({ className, children, showCloseButton = true, __e2e_test
|
|
|
873
894
|
variant: "outline",
|
|
874
895
|
size: "icon",
|
|
875
896
|
className: "size-6 rounded",
|
|
876
|
-
__e2e_test_id__: __e2e_test_id__
|
|
897
|
+
__e2e_test_id__: testId(__e2e_test_id__, "close"),
|
|
877
898
|
children: /* @__PURE__ */ jsx(Cross2Icon, {})
|
|
878
899
|
}), /* @__PURE__ */ jsx("span", {
|
|
879
900
|
className: "sr-only",
|
|
@@ -1247,7 +1268,7 @@ const ContentFrame = ({ title = "", controls = [], indicators = [], children, on
|
|
|
1247
1268
|
/* @__PURE__ */ jsxs("div", {
|
|
1248
1269
|
className: "flex flex-grow gap-2 overflow-hidden",
|
|
1249
1270
|
children: [/* @__PURE__ */ jsx("h2", {
|
|
1250
|
-
className: "text-xl overflow-hidden text-ellipsis whitespace-nowrap",
|
|
1271
|
+
className: "text-xl overflow-hidden text-ellipsis whitespace-nowrap w-full",
|
|
1251
1272
|
children: titleLink ?? title
|
|
1252
1273
|
}), indicators.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
1253
1274
|
className: "flex gap-2 whitespace-nowrap",
|
|
@@ -1803,7 +1824,7 @@ const GanttTimerangePicker = ({ initialDateFrom, initialDateTo, onRangeChange, t
|
|
|
1803
1824
|
onClick: () => {
|
|
1804
1825
|
setIsOpen(false);
|
|
1805
1826
|
},
|
|
1806
|
-
children: /* @__PURE__ */ jsx(
|
|
1827
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-5" })
|
|
1807
1828
|
})]
|
|
1808
1829
|
}),
|
|
1809
1830
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -1915,12 +1936,12 @@ const GanttTimeline = ({ header }) => {
|
|
|
1915
1936
|
const lastYearPartialMs = timelineEndMs - new Date(te.getFullYear(), 0, 1).getTime();
|
|
1916
1937
|
const firstMonthPartialMs = new Date(ts.getFullYear(), ts.getMonth() + 1, 1).getTime() - timelineStartMs;
|
|
1917
1938
|
const lastMonthPartialMs = timelineEndMs - new Date(te.getFullYear(), te.getMonth(), 1).getTime();
|
|
1918
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
1919
|
-
className: "absolute right-8 top-1/2
|
|
1939
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [cellOpts.onRangeChange && /* @__PURE__ */ jsx("div", {
|
|
1940
|
+
className: "absolute right-8 top-1/2 -translate-y-1/2",
|
|
1920
1941
|
children: /* @__PURE__ */ jsx(GanttTimerangePicker, {
|
|
1921
1942
|
initialDateFrom: cellOpts.dateRangeFrom ?? void 0,
|
|
1922
1943
|
initialDateTo: cellOpts.dateRangeTo ?? void 0,
|
|
1923
|
-
onRangeChange: cellOpts.onRangeChange
|
|
1944
|
+
onRangeChange: cellOpts.onRangeChange,
|
|
1924
1945
|
timelineStart: cellOpts.timelineStart,
|
|
1925
1946
|
timelineEnd: cellOpts.timelineEnd
|
|
1926
1947
|
})
|
|
@@ -2546,7 +2567,8 @@ function useDebouncedCallback(callback, delay) {
|
|
|
2546
2567
|
const inputVariants = cva("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
|
|
2547
2568
|
variants: { variant: {
|
|
2548
2569
|
default: "min-h-9 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
2549
|
-
simple: "min-h-8"
|
|
2570
|
+
simple: "min-h-8",
|
|
2571
|
+
discreet: "py-0 min-h-7 border-transparent shadow-none hover:border-input hover:shadow-sm focus:border-input focus:shadow-sm bg-transparent hover:bg-accent/30"
|
|
2550
2572
|
} },
|
|
2551
2573
|
defaultVariants: { variant: "default" }
|
|
2552
2574
|
});
|
|
@@ -2681,7 +2703,7 @@ function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpe
|
|
|
2681
2703
|
size: "icon",
|
|
2682
2704
|
className: "size-7",
|
|
2683
2705
|
onClick: onClose,
|
|
2684
|
-
children: /* @__PURE__ */ jsx(
|
|
2706
|
+
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
2685
2707
|
})
|
|
2686
2708
|
]
|
|
2687
2709
|
})]
|
|
@@ -3277,7 +3299,8 @@ function GanttCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSe
|
|
|
3277
3299
|
const textareaVariants = cva("border-input placeholder:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50", {
|
|
3278
3300
|
variants: { variant: {
|
|
3279
3301
|
default: "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
3280
|
-
simple: ""
|
|
3302
|
+
simple: "",
|
|
3303
|
+
discreet: "border-transparent shadow-none hover:border-input hover:shadow-sm focus:border-input focus:shadow-sm bg-transparent hover:bg-accent/30"
|
|
3281
3304
|
} },
|
|
3282
3305
|
defaultVariants: { variant: "default" }
|
|
3283
3306
|
});
|
|
@@ -3672,7 +3695,7 @@ function MultiSelectCell({ cell, table, rowIndex, columnId, isFocused, isEditing
|
|
|
3672
3695
|
event.preventDefault();
|
|
3673
3696
|
event.stopPropagation();
|
|
3674
3697
|
},
|
|
3675
|
-
children: /* @__PURE__ */ jsx(
|
|
3698
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3" })
|
|
3676
3699
|
})]
|
|
3677
3700
|
}, value)), /* @__PURE__ */ jsx(CommandInput, {
|
|
3678
3701
|
ref: inputRef,
|
|
@@ -3919,25 +3942,31 @@ function SelectCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isS
|
|
|
3919
3942
|
const cellOpts = cell.column.columnDef.meta?.cell;
|
|
3920
3943
|
const hasSearch = (cellOpts?.variant === "select" && cellOpts?.hasSearch) ?? false;
|
|
3921
3944
|
const sideOffset = -(inputRef.current?.clientHeight ?? 0);
|
|
3922
|
-
const arrayOptions = cellOpts?.variant === "select" ? cellOpts
|
|
3923
|
-
const optionsMap = cellOpts?.variant === "select" ? cellOpts.optionsMap : void 0;
|
|
3945
|
+
const { options: arrayOptions, optionsMap, optionsRenderer } = cellOpts?.variant === "select" ? cellOpts : {};
|
|
3924
3946
|
const arrayOptionsLabelMap = React$18.useMemo(() => arrayOptions ? new Map(arrayOptions.map((opt) => [opt.value, opt.label])) : null, [arrayOptions]);
|
|
3925
3947
|
const displayLabel = React$18.useMemo(() => {
|
|
3926
|
-
if (
|
|
3927
|
-
|
|
3928
|
-
|
|
3948
|
+
if (optionsMap) {
|
|
3949
|
+
const data = optionsMap.get(value ?? "");
|
|
3950
|
+
if (optionsRenderer) return optionsRenderer(data, "cell");
|
|
3951
|
+
return data ?? value;
|
|
3952
|
+
}
|
|
3953
|
+
if (arrayOptionsLabelMap) return arrayOptionsLabelMap.get(value ?? "") ?? value;
|
|
3929
3954
|
return value;
|
|
3930
3955
|
}, [
|
|
3931
3956
|
value,
|
|
3932
3957
|
optionsMap,
|
|
3933
|
-
arrayOptionsLabelMap
|
|
3958
|
+
arrayOptionsLabelMap,
|
|
3959
|
+
optionsRenderer
|
|
3934
3960
|
]);
|
|
3935
3961
|
const options = React$18.useMemo(() => {
|
|
3936
3962
|
if (!isEditing) return [];
|
|
3937
|
-
if (arrayOptions) return arrayOptions
|
|
3938
|
-
|
|
3963
|
+
if (arrayOptions) return arrayOptions.map((opt) => ({
|
|
3964
|
+
value: opt.value,
|
|
3965
|
+
data: opt.label
|
|
3966
|
+
}));
|
|
3967
|
+
if (optionsMap) return Array.from(optionsMap.entries()).map(([id, data]) => ({
|
|
3939
3968
|
value: id,
|
|
3940
|
-
|
|
3969
|
+
data
|
|
3941
3970
|
}));
|
|
3942
3971
|
return [];
|
|
3943
3972
|
}, [
|
|
@@ -3998,13 +4027,13 @@ function SelectCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isS
|
|
|
3998
4027
|
meta?.isScrolling
|
|
3999
4028
|
]);
|
|
4000
4029
|
let editingContent;
|
|
4001
|
-
if (hasSearch) editingContent = /* @__PURE__ */ jsxs(Popover, {
|
|
4030
|
+
if (hasSearch || optionsRenderer) editingContent = /* @__PURE__ */ jsxs(Popover, {
|
|
4002
4031
|
open,
|
|
4003
4032
|
onOpenChange,
|
|
4004
4033
|
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
4005
4034
|
asChild: true,
|
|
4006
4035
|
children: /* @__PURE__ */ jsx("div", {
|
|
4007
|
-
className: "size-full items-start text-start border-none p-0 shadow-none focus-visible:ring-0 dark:bg-transparent [&_svg]:hidden line-clamp-1",
|
|
4036
|
+
className: cn("size-full", !optionsRenderer && "items-start text-start border-none p-0 shadow-none focus-visible:ring-0 dark:bg-transparent [&_svg]:hidden line-clamp-1"),
|
|
4008
4037
|
children: displayLabel
|
|
4009
4038
|
})
|
|
4010
4039
|
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
@@ -4014,17 +4043,18 @@ function SelectCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isS
|
|
|
4014
4043
|
className: "max-w-[500px] w-full rounded-none p-0",
|
|
4015
4044
|
onOpenAutoFocus,
|
|
4016
4045
|
children: /* @__PURE__ */ jsx(Command, { children: /* @__PURE__ */ jsxs(CommandList, { children: [
|
|
4017
|
-
/* @__PURE__ */ jsx(CommandInput, {
|
|
4046
|
+
hasSearch && /* @__PURE__ */ jsx(CommandInput, {
|
|
4018
4047
|
ref: inputRef,
|
|
4019
4048
|
placeholder: "Search...",
|
|
4020
4049
|
className: "h-auto flex-1 p-0"
|
|
4021
4050
|
}),
|
|
4022
4051
|
/* @__PURE__ */ jsx(CommandEmpty, { children: "No results found." }),
|
|
4023
4052
|
/* @__PURE__ */ jsx(CommandGroup, { children: options.map((option) => /* @__PURE__ */ jsxs(CommandItem, {
|
|
4053
|
+
className: optionsRenderer ? "py-1" : void 0,
|
|
4024
4054
|
onSelect: () => {
|
|
4025
4055
|
onValueChange(option.value);
|
|
4026
4056
|
},
|
|
4027
|
-
children: [/* @__PURE__ */ jsx("span", { children: option.
|
|
4057
|
+
children: [optionsRenderer ? optionsRenderer(option.data, "option") : /* @__PURE__ */ jsx("span", { children: option.data }), value === option.value ? /* @__PURE__ */ jsx(CheckIcon$1, { className: "ml-auto h-4 w-4" }) : null]
|
|
4028
4058
|
}, option.value)) })
|
|
4029
4059
|
] }) })
|
|
4030
4060
|
})]
|
|
@@ -4046,7 +4076,7 @@ function SelectCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isS
|
|
|
4046
4076
|
children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
|
|
4047
4077
|
value: option.value,
|
|
4048
4078
|
spacing: "sm",
|
|
4049
|
-
children: option.
|
|
4079
|
+
children: option.data
|
|
4050
4080
|
}, option.value))
|
|
4051
4081
|
})]
|
|
4052
4082
|
});
|
|
@@ -4060,7 +4090,7 @@ function SelectCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isS
|
|
|
4060
4090
|
isFocused,
|
|
4061
4091
|
isSelected,
|
|
4062
4092
|
onKeyDown: onWrapperKeyDown,
|
|
4063
|
-
children: isEditing ? editingContent : /* @__PURE__ */ jsx("span", {
|
|
4093
|
+
children: isEditing ? editingContent : optionsRenderer ? displayLabel : /* @__PURE__ */ jsx("span", {
|
|
4064
4094
|
"data-slot": "grid-cell-content",
|
|
4065
4095
|
children: displayLabel
|
|
4066
4096
|
})
|
|
@@ -4511,6 +4541,63 @@ function DataGridViewMenu({ table,...props }) {
|
|
|
4511
4541
|
})] });
|
|
4512
4542
|
}
|
|
4513
4543
|
|
|
4544
|
+
//#endregion
|
|
4545
|
+
//#region src/data-grid/column-presets/select-column.tsx
|
|
4546
|
+
/**
|
|
4547
|
+
* Creates a selection column with checkboxes for row selection.
|
|
4548
|
+
* Includes a header checkbox for selecting all rows and an optional delete button.
|
|
4549
|
+
*
|
|
4550
|
+
* @example
|
|
4551
|
+
* ```tsx
|
|
4552
|
+
* const columns = [
|
|
4553
|
+
* createSelectColumn<MyDataType>({
|
|
4554
|
+
* onRemoveRows: (ids) => handleDelete(ids),
|
|
4555
|
+
* }),
|
|
4556
|
+
* // ... other columns
|
|
4557
|
+
* ]
|
|
4558
|
+
* ```
|
|
4559
|
+
*/
|
|
4560
|
+
function createSelectColumn(options = {}) {
|
|
4561
|
+
const { onRemoveRows, id = "select", size = 70 } = options;
|
|
4562
|
+
return {
|
|
4563
|
+
id,
|
|
4564
|
+
header: ({ table }) => /* @__PURE__ */ jsxs("div", {
|
|
4565
|
+
className: "size-full p-0 m-0 flex items-center gap-2",
|
|
4566
|
+
children: [/* @__PURE__ */ jsx(Checkbox, {
|
|
4567
|
+
variant: table.getIsSomePageRowsSelected() ? "default" : "simple",
|
|
4568
|
+
iconStyle: table.getIsSomePageRowsSelected() ? "default" : "simple",
|
|
4569
|
+
checkIcon: "check",
|
|
4570
|
+
checked: table.getIsAllPageRowsSelected() || table.getIsSomePageRowsSelected(),
|
|
4571
|
+
onChange: (e) => table.toggleAllPageRowsSelected(!!e.target.checked)
|
|
4572
|
+
}), onRemoveRows && /* @__PURE__ */ jsx(Button, {
|
|
4573
|
+
variant: "ghost",
|
|
4574
|
+
className: "size-5 hover:[&_svg]:text-background hover:bg-destructive/90",
|
|
4575
|
+
onClick: () => {
|
|
4576
|
+
const toRemove = table.getSelectedRowModel().rows.map((row) => row.original.id);
|
|
4577
|
+
if (toRemove.length === 0) return;
|
|
4578
|
+
onRemoveRows(toRemove);
|
|
4579
|
+
table.toggleAllRowsSelected(false);
|
|
4580
|
+
},
|
|
4581
|
+
children: /* @__PURE__ */ jsx(TrashIcon, {})
|
|
4582
|
+
})]
|
|
4583
|
+
}),
|
|
4584
|
+
cell: ({ row }) => /* @__PURE__ */ jsx("div", {
|
|
4585
|
+
className: "size-full flex items-center px-3",
|
|
4586
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
4587
|
+
variant: "simple",
|
|
4588
|
+
iconStyle: "simple",
|
|
4589
|
+
checkIcon: "check",
|
|
4590
|
+
checked: row.getIsSelected(),
|
|
4591
|
+
disabled: !row.getCanSelect(),
|
|
4592
|
+
onChange: (e) => row.toggleSelected(!!e.target.checked)
|
|
4593
|
+
})
|
|
4594
|
+
}),
|
|
4595
|
+
size,
|
|
4596
|
+
enableSorting: false,
|
|
4597
|
+
enableHiding: false
|
|
4598
|
+
};
|
|
4599
|
+
}
|
|
4600
|
+
|
|
4514
4601
|
//#endregion
|
|
4515
4602
|
//#region src/data-grid/hooks/use-data-grid.tsx
|
|
4516
4603
|
const DEFAULT_ROW_HEIGHT = "short";
|
|
@@ -6089,6 +6176,109 @@ function useIsMobile(mobileBreakpoint = 768) {
|
|
|
6089
6176
|
return isMobile;
|
|
6090
6177
|
}
|
|
6091
6178
|
|
|
6179
|
+
//#endregion
|
|
6180
|
+
//#region src/info-card/info-card.tsx
|
|
6181
|
+
const variantStyles = {
|
|
6182
|
+
loading: {
|
|
6183
|
+
titleClass: "text-foreground",
|
|
6184
|
+
messageContainerClass: "p-4 bg-muted border border-border rounded-md"
|
|
6185
|
+
},
|
|
6186
|
+
error: {
|
|
6187
|
+
titleClass: "text-destructive",
|
|
6188
|
+
messageContainerClass: "p-4 bg-destructive/10 border border-destructive/20 rounded-md"
|
|
6189
|
+
},
|
|
6190
|
+
info: {
|
|
6191
|
+
titleClass: "text-foreground",
|
|
6192
|
+
messageContainerClass: "p-4 bg-muted border border-border rounded-md"
|
|
6193
|
+
},
|
|
6194
|
+
"not-found": {
|
|
6195
|
+
titleClass: "text-foreground",
|
|
6196
|
+
messageContainerClass: "p-4 bg-muted border border-border rounded-md"
|
|
6197
|
+
}
|
|
6198
|
+
};
|
|
6199
|
+
const InfoCard = ({ variant, title, message, showHomeButton = false, children }) => {
|
|
6200
|
+
const styles = variantStyles[variant];
|
|
6201
|
+
return /* @__PURE__ */ jsx("div", {
|
|
6202
|
+
className: "flex w-full pt-4 px-4 h-(--content-without-header) items-center justify-center",
|
|
6203
|
+
children: /* @__PURE__ */ jsxs(Card, {
|
|
6204
|
+
className: "max-w-xl w-full",
|
|
6205
|
+
children: [
|
|
6206
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, {
|
|
6207
|
+
className: styles.titleClass,
|
|
6208
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
6209
|
+
className: "flex items-center gap-2",
|
|
6210
|
+
children: [variant === "loading" && /* @__PURE__ */ jsx("div", {
|
|
6211
|
+
style: {
|
|
6212
|
+
width: 20,
|
|
6213
|
+
height: 20
|
|
6214
|
+
},
|
|
6215
|
+
children: /* @__PURE__ */ jsx(Spinner, {})
|
|
6216
|
+
}), title]
|
|
6217
|
+
})
|
|
6218
|
+
}) }),
|
|
6219
|
+
/* @__PURE__ */ jsxs(CardContent, {
|
|
6220
|
+
className: "space-y-4",
|
|
6221
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
6222
|
+
className: styles.messageContainerClass,
|
|
6223
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
6224
|
+
className: "text-sm wrap-break-word",
|
|
6225
|
+
children: message
|
|
6226
|
+
})
|
|
6227
|
+
}), children]
|
|
6228
|
+
}),
|
|
6229
|
+
showHomeButton && /* @__PURE__ */ jsx(CardFooter, { children: /* @__PURE__ */ jsx(Button, {
|
|
6230
|
+
asChild: true,
|
|
6231
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
6232
|
+
href: "/",
|
|
6233
|
+
children: "Back to Home"
|
|
6234
|
+
})
|
|
6235
|
+
}) })
|
|
6236
|
+
]
|
|
6237
|
+
})
|
|
6238
|
+
});
|
|
6239
|
+
};
|
|
6240
|
+
|
|
6241
|
+
//#endregion
|
|
6242
|
+
//#region src/input/deferred-input.tsx
|
|
6243
|
+
/**
|
|
6244
|
+
* An Input that buffers changes locally and only commits to the parent
|
|
6245
|
+
* on blur or Enter key press. Useful for forms where you don't want to
|
|
6246
|
+
* trigger expensive operations (like API calls) on every keystroke.
|
|
6247
|
+
*/
|
|
6248
|
+
function DeferredInput({ value, onCommit, onValueChange, commitOnEnter = true, onBlur, onKeyDown,...props }) {
|
|
6249
|
+
const [localValue, setLocalValue] = useState(value);
|
|
6250
|
+
useEffect(() => {
|
|
6251
|
+
setLocalValue(value);
|
|
6252
|
+
}, [value]);
|
|
6253
|
+
const commitValue = useCallback(() => {
|
|
6254
|
+
if (localValue !== value) onCommit(localValue);
|
|
6255
|
+
}, [
|
|
6256
|
+
localValue,
|
|
6257
|
+
value,
|
|
6258
|
+
onCommit
|
|
6259
|
+
]);
|
|
6260
|
+
const handleChange = useCallback((e) => {
|
|
6261
|
+
const newValue = e.target.value;
|
|
6262
|
+
setLocalValue(newValue);
|
|
6263
|
+
onValueChange?.(newValue);
|
|
6264
|
+
}, [onValueChange]);
|
|
6265
|
+
const handleBlur = useCallback((e) => {
|
|
6266
|
+
commitValue();
|
|
6267
|
+
onBlur?.(e);
|
|
6268
|
+
}, [commitValue, onBlur]);
|
|
6269
|
+
const handleKeyDown = useCallback((e) => {
|
|
6270
|
+
if (commitOnEnter && e.key === "Enter") e.currentTarget.blur();
|
|
6271
|
+
onKeyDown?.(e);
|
|
6272
|
+
}, [commitOnEnter, onKeyDown]);
|
|
6273
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
6274
|
+
...props,
|
|
6275
|
+
value: localValue,
|
|
6276
|
+
onChange: handleChange,
|
|
6277
|
+
onBlur: handleBlur,
|
|
6278
|
+
onKeyDown: handleKeyDown
|
|
6279
|
+
});
|
|
6280
|
+
}
|
|
6281
|
+
|
|
6092
6282
|
//#endregion
|
|
6093
6283
|
//#region src/input/number-input.tsx
|
|
6094
6284
|
/**
|
|
@@ -6142,7 +6332,8 @@ function parseFormattedNumberHeuristic(formatted) {
|
|
|
6142
6332
|
const numberInputWrapperVariants = cva("border-input bg-background grid grid-cols-[auto_1fr_auto] items-center overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow] has-[input:disabled]:pointer-events-none has-[input:disabled]:cursor-not-allowed has-[input:disabled]:opacity-50", {
|
|
6143
6333
|
variants: { variant: {
|
|
6144
6334
|
default: "min-h-9 focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]",
|
|
6145
|
-
simple: "min-h-8"
|
|
6335
|
+
simple: "min-h-8",
|
|
6336
|
+
discreet: "py-0 min-h-7 border-transparent shadow-none hover:border-input hover:shadow-sm focus-within:border-input focus-within:shadow-sm bg-transparent hover:bg-accent/30"
|
|
6146
6337
|
} },
|
|
6147
6338
|
defaultVariants: { variant: "default" }
|
|
6148
6339
|
});
|
|
@@ -6235,7 +6426,7 @@ const NumberInput = React$10.forwardRef(({ className, wrapperClassName, prefix,
|
|
|
6235
6426
|
inputVariants({ variant }),
|
|
6236
6427
|
// Remove border/shadow/ring from input since wrapper handles it
|
|
6237
6428
|
// Use min-h-full to override min-h-9/min-h-8 from inputVariants - wrapper controls height - never use explicit h-* in input since it breaks the spinner buttons for some browsers
|
|
6238
|
-
"min-h-full border-0 shadow-none focus-visible:ring-0 p-0 tabular-nums",
|
|
6429
|
+
"min-h-full bg-transparent hover:bg-transparent border-0 shadow-none focus-visible:ring-0 p-0 tabular-nums",
|
|
6239
6430
|
!prefix && !suffix ? "col-span-3" : !prefix || !suffix ? "col-span-2" : "col-span-1",
|
|
6240
6431
|
"text-right",
|
|
6241
6432
|
!prefix && "pl-2",
|
|
@@ -6266,6 +6457,51 @@ const NumberInput = React$10.forwardRef(({ className, wrapperClassName, prefix,
|
|
|
6266
6457
|
});
|
|
6267
6458
|
NumberInput.displayName = "NumberInput";
|
|
6268
6459
|
|
|
6460
|
+
//#endregion
|
|
6461
|
+
//#region src/input/deferred-number-input.tsx
|
|
6462
|
+
/**
|
|
6463
|
+
* A NumberInput that buffers changes locally and only commits to the parent
|
|
6464
|
+
* on blur or Enter key press. Useful for forms where you don't want to
|
|
6465
|
+
* trigger expensive operations (like API calls) on every keystroke.
|
|
6466
|
+
*/
|
|
6467
|
+
function DeferredNumberInput({ value, onCommit, onValueChange, commitOnEnter = true, onBlur, onEnter,...props }) {
|
|
6468
|
+
const [localValue, setLocalValue] = useState(value);
|
|
6469
|
+
useEffect(() => {
|
|
6470
|
+
setLocalValue(value);
|
|
6471
|
+
}, [value]);
|
|
6472
|
+
const commitValue = useCallback(() => {
|
|
6473
|
+
if (localValue !== value) onCommit(localValue);
|
|
6474
|
+
}, [
|
|
6475
|
+
localValue,
|
|
6476
|
+
value,
|
|
6477
|
+
onCommit
|
|
6478
|
+
]);
|
|
6479
|
+
const handleChange = useCallback((newValue) => {
|
|
6480
|
+
const normalizedValue = newValue ?? null;
|
|
6481
|
+
setLocalValue(normalizedValue);
|
|
6482
|
+
onValueChange?.(normalizedValue);
|
|
6483
|
+
}, [onValueChange]);
|
|
6484
|
+
const handleBlur = useCallback((e) => {
|
|
6485
|
+
commitValue();
|
|
6486
|
+
onBlur?.(e);
|
|
6487
|
+
}, [commitValue, onBlur]);
|
|
6488
|
+
const handleEnter = useCallback(() => {
|
|
6489
|
+
if (commitOnEnter) commitValue();
|
|
6490
|
+
onEnter?.();
|
|
6491
|
+
}, [
|
|
6492
|
+
commitOnEnter,
|
|
6493
|
+
commitValue,
|
|
6494
|
+
onEnter
|
|
6495
|
+
]);
|
|
6496
|
+
return /* @__PURE__ */ jsx(NumberInput, {
|
|
6497
|
+
...props,
|
|
6498
|
+
value: localValue ?? void 0,
|
|
6499
|
+
onChange: handleChange,
|
|
6500
|
+
onBlur: handleBlur,
|
|
6501
|
+
onEnter: handleEnter
|
|
6502
|
+
});
|
|
6503
|
+
}
|
|
6504
|
+
|
|
6269
6505
|
//#endregion
|
|
6270
6506
|
//#region src/mark-value-renderer/mark-value-renderer.tsx
|
|
6271
6507
|
/**
|
|
@@ -6673,12 +6909,14 @@ const sheetVariants = cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transiti
|
|
|
6673
6909
|
} },
|
|
6674
6910
|
defaultVariants: { side: "right" }
|
|
6675
6911
|
});
|
|
6676
|
-
const SheetContent = React$6.forwardRef(({ side = "right", className, children,...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(SheetPrimitive.Content, {
|
|
6912
|
+
const SheetContent = React$6.forwardRef(({ side = "right", className, children, __e2e_test_id__,...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(SheetPrimitive.Content, {
|
|
6677
6913
|
ref,
|
|
6678
6914
|
className: cn(sheetVariants({ side }), className),
|
|
6915
|
+
"data-test-id": __e2e_test_id__,
|
|
6679
6916
|
...props,
|
|
6680
6917
|
children: [/* @__PURE__ */ jsxs(SheetPrimitive.Close, {
|
|
6681
6918
|
className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",
|
|
6919
|
+
"data-test-id": testId(__e2e_test_id__, "close"),
|
|
6682
6920
|
children: [/* @__PURE__ */ jsx(Cross2Icon, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", {
|
|
6683
6921
|
className: "sr-only",
|
|
6684
6922
|
children: "Close"
|
|
@@ -7112,7 +7350,7 @@ function usePersistedState(storageKey, defaultValue) {
|
|
|
7112
7350
|
}, [storageKey]);
|
|
7113
7351
|
return [state, setPersistedState];
|
|
7114
7352
|
}
|
|
7115
|
-
function Slicer({ filterValues, selectedValues, onChange, title, isLoading = false, optionsHeight = 200, className, defaultCollapsed = false, storageKey }) {
|
|
7353
|
+
function Slicer({ filterValues, selectedValues, onChange, title, isLoading = false, optionsHeight = 200, className, defaultCollapsed = false, storageKey, __e2e_test_id__ }) {
|
|
7116
7354
|
const effectiveStorageKey = storageKey === null ? void 0 : storageKey ?? `slicer-collapsed-${title}`;
|
|
7117
7355
|
const [isCollapsed, setIsCollapsed] = usePersistedState(effectiveStorageKey, defaultCollapsed);
|
|
7118
7356
|
const [searchQuery, setSearchQuery] = useState("");
|
|
@@ -7146,6 +7384,7 @@ function Slicer({ filterValues, selectedValues, onChange, title, isLoading = fal
|
|
|
7146
7384
|
};
|
|
7147
7385
|
return /* @__PURE__ */ jsxs(Card, {
|
|
7148
7386
|
className: cn("flex flex-col overflow-hidden w-56 rounded shadow-sm shrink-0", className),
|
|
7387
|
+
"data-test-id": __e2e_test_id__,
|
|
7149
7388
|
children: [/* @__PURE__ */ jsxs(CardHeader, {
|
|
7150
7389
|
className: "px-2 py-0 pt-2 flex space-y-0 border-b border-border bg-muted/50 relative min-h-9",
|
|
7151
7390
|
children: [
|
|
@@ -7158,7 +7397,8 @@ function Slicer({ filterValues, selectedValues, onChange, title, isLoading = fal
|
|
|
7158
7397
|
variant: "simple",
|
|
7159
7398
|
placeholder: "Search...",
|
|
7160
7399
|
value: searchQuery,
|
|
7161
|
-
onChange: (e) => setSearchQuery(e.target.value)
|
|
7400
|
+
onChange: (e) => setSearchQuery(e.target.value),
|
|
7401
|
+
"data-test-id": testId(__e2e_test_id__, "search")
|
|
7162
7402
|
}),
|
|
7163
7403
|
/* @__PURE__ */ jsx(Button, {
|
|
7164
7404
|
variant: "ghost",
|
|
@@ -7169,6 +7409,7 @@ function Slicer({ filterValues, selectedValues, onChange, title, isLoading = fal
|
|
|
7169
7409
|
},
|
|
7170
7410
|
title: isCollapsed ? "Expand slicer" : "Collapse slicer",
|
|
7171
7411
|
className: "size-7 absolute top-1 right-9 text-muted-foreground",
|
|
7412
|
+
"data-test-id": testId(__e2e_test_id__, "collapse"),
|
|
7172
7413
|
children: /* @__PURE__ */ jsx(ChevronUpIcon$1, { className: cn(isCollapsed && "rotate-180") })
|
|
7173
7414
|
}),
|
|
7174
7415
|
/* @__PURE__ */ jsx(Button, {
|
|
@@ -7178,6 +7419,7 @@ function Slicer({ filterValues, selectedValues, onChange, title, isLoading = fal
|
|
|
7178
7419
|
onClick: handleClear,
|
|
7179
7420
|
title: "Clear filter",
|
|
7180
7421
|
className: "size-7 absolute top-1 right-1 text-muted-foreground",
|
|
7422
|
+
"data-test-id": testId(__e2e_test_id__, "clear"),
|
|
7181
7423
|
children: /* @__PURE__ */ jsx(FilterX, {})
|
|
7182
7424
|
})
|
|
7183
7425
|
]
|
|
@@ -7188,6 +7430,7 @@ function Slicer({ filterValues, selectedValues, onChange, title, isLoading = fal
|
|
|
7188
7430
|
size: "xs",
|
|
7189
7431
|
className: "w-full justify-start px-2 py-1 rounded-sm text-sm font-normal",
|
|
7190
7432
|
onClick: handleSelectAll,
|
|
7433
|
+
"data-test-id": testId(__e2e_test_id__, "select-all"),
|
|
7191
7434
|
children: searchQuery.length > 0 ? /* @__PURE__ */ jsx(Checkbox, {
|
|
7192
7435
|
readOnly: true,
|
|
7193
7436
|
checked: isAnyFilteredSelected,
|
|
@@ -7360,6 +7603,42 @@ function TabsContent({ className,...props }) {
|
|
|
7360
7603
|
});
|
|
7361
7604
|
}
|
|
7362
7605
|
|
|
7606
|
+
//#endregion
|
|
7607
|
+
//#region src/textarea/deferred-textarea.tsx
|
|
7608
|
+
/**
|
|
7609
|
+
* A Textarea that buffers changes locally and only commits to the parent
|
|
7610
|
+
* on blur. Useful for forms where you don't want to trigger expensive
|
|
7611
|
+
* operations (like API calls) on every keystroke.
|
|
7612
|
+
*/
|
|
7613
|
+
function DeferredTextarea({ value, onCommit, onValueChange, onBlur,...props }) {
|
|
7614
|
+
const [localValue, setLocalValue] = useState(value);
|
|
7615
|
+
useEffect(() => {
|
|
7616
|
+
setLocalValue(value);
|
|
7617
|
+
}, [value]);
|
|
7618
|
+
const commitValue = useCallback(() => {
|
|
7619
|
+
if (localValue !== value) onCommit(localValue);
|
|
7620
|
+
}, [
|
|
7621
|
+
localValue,
|
|
7622
|
+
value,
|
|
7623
|
+
onCommit
|
|
7624
|
+
]);
|
|
7625
|
+
const handleChange = useCallback((e) => {
|
|
7626
|
+
const newValue = e.target.value;
|
|
7627
|
+
setLocalValue(newValue);
|
|
7628
|
+
onValueChange?.(newValue);
|
|
7629
|
+
}, [onValueChange]);
|
|
7630
|
+
const handleBlur = useCallback((e) => {
|
|
7631
|
+
commitValue();
|
|
7632
|
+
onBlur?.(e);
|
|
7633
|
+
}, [commitValue, onBlur]);
|
|
7634
|
+
return /* @__PURE__ */ jsx(Textarea, {
|
|
7635
|
+
...props,
|
|
7636
|
+
value: localValue,
|
|
7637
|
+
onChange: handleChange,
|
|
7638
|
+
onBlur: handleBlur
|
|
7639
|
+
});
|
|
7640
|
+
}
|
|
7641
|
+
|
|
7363
7642
|
//#endregion
|
|
7364
7643
|
//#region src/toggle/toggle.tsx
|
|
7365
7644
|
const toggleVariants = cva("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground cursor-pointer", {
|
|
@@ -7427,5 +7706,5 @@ const ToggleGroupItem = React$1.forwardRef(({ className, children, variant, size
|
|
|
7427
7706
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
7428
7707
|
|
|
7429
7708
|
//#endregion
|
|
7430
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxCell, Collapse, CollapseContent, CollapseTrigger, ComboboxDemo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandPaletteDialog, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteShortcut, CommandSeparator, CommandShortcut, ContentFrame, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridCell, DataGridCellWrapper, DataGridColumnHeader, DataGridContextMenu, DataGridRow, DataGridSearch, DataGridViewMenu, DateCell, DatePickerDemo, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GanttCell, GanttTimeline, GanttTimerangePicker, HeaderComponents, HoverCard, HoverCardContent, HoverCardTrigger, Input, Label, Loader, LongTextCell, MarkValueRenderer, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectCell, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberCell, NumberInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ReactNodeCell, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectCell, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShortTextCell, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slicer, Slider, Spinner, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, checkboxVariants, cn, commandInputVariants, getCellKey, getCommonPinningStyles, getLineCount, getRowHeightValue, inputVariants, isoToLocalDate, knobVariants, navigationMenuTriggerStyle, parseCellKey, sliderVariants, toast, toggleVariants, useCallbackRef, useDataGrid, useDebouncedCallback, useIsMobile, useSidebar };
|
|
7709
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxCell, Collapse, CollapseContent, CollapseTrigger, ComboboxDemo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandPaletteDialog, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteShortcut, CommandSeparator, CommandShortcut, ContentFrame, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridCell, DataGridCellWrapper, DataGridColumnHeader, DataGridContextMenu, DataGridRow, DataGridSearch, DataGridViewMenu, DateCell, DatePickerDemo, DeferredInput, DeferredNumberInput, DeferredTextarea, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GanttCell, GanttTimeline, GanttTimerangePicker, HeaderComponents, HoverCard, HoverCardContent, HoverCardTrigger, InfoCard, Input, Label, Loader, LongTextCell, MarkValueRenderer, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectCell, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberCell, NumberInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ReactNodeCell, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectCell, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShortTextCell, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slicer, Slider, Spinner, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, checkboxVariants, cn, commandInputVariants, createSelectColumn, getCellKey, getCommonPinningStyles, getLineCount, getRowHeightValue, inputVariants, isoToLocalDate, knobVariants, navigationMenuTriggerStyle, parseCellKey, sliderVariants, testId, toast, toggleVariants, useCallbackRef, useDataGrid, useDebouncedCallback, useIsMobile, useSidebar };
|
|
7431
7710
|
//# sourceMappingURL=index.js.map
|