@bizapps/ui 1.4.1 → 1.5.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/main.cjs +334 -104
- package/dist/main.cjs.map +1 -1
- package/dist/main.css +1 -1
- package/dist/main.d.cts +143 -53
- package/dist/main.d.ts +143 -53
- package/dist/main.js +334 -106
- package/dist/main.js.map +1 -1
- package/package.json +2 -1
package/dist/main.js
CHANGED
|
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority';
|
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
7
|
-
import { createContext, memo, useRef, useState, useMemo, useCallback, useEffect, forwardRef, Fragment, useId, useContext, useLayoutEffect } from 'react';
|
|
7
|
+
import { createContext, memo, useRef, useState, useMemo, useCallback, useEffect, forwardRef, Fragment, useId, useContext, useLayoutEffect, isValidElement, cloneElement } from 'react';
|
|
8
8
|
import { Avatar as Avatar$1, Checkbox as Checkbox$1, Slot, Select as Select$1, Label as Label$1, Popover as Popover$1, Toggle as Toggle$1, ToggleGroup, Separator as Separator$1, Progress as Progress$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Tooltip as Tooltip$1, Dialog as Dialog$1, AlertDialog as AlertDialog$1, Accordion as Accordion$1, DropdownMenu as DropdownMenu$1, RadioGroup as RadioGroup$1, NavigationMenu as NavigationMenu$1 } from 'radix-ui';
|
|
9
9
|
import { isSameDay, isToday, format, addDays } from 'date-fns';
|
|
10
10
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
@@ -1683,31 +1683,37 @@ function SelectContent({
|
|
|
1683
1683
|
className,
|
|
1684
1684
|
children,
|
|
1685
1685
|
position = "popper",
|
|
1686
|
+
maxHeight,
|
|
1687
|
+
style,
|
|
1686
1688
|
...props
|
|
1687
1689
|
}) {
|
|
1690
|
+
const resolvedMaxHeight = typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight;
|
|
1688
1691
|
return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
|
|
1689
1692
|
Select$1.Content,
|
|
1690
1693
|
{
|
|
1691
1694
|
"data-slot": "select-content",
|
|
1692
1695
|
className: cn(
|
|
1693
|
-
"border-border bg-popover text-popover-foreground relative z-50 max-h-
|
|
1696
|
+
"border-border bg-popover text-popover-foreground relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-hidden rounded-md border shadow-md",
|
|
1694
1697
|
"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
1695
1698
|
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
1696
1699
|
"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",
|
|
1697
|
-
position === "popper" && "w-
|
|
1700
|
+
position === "popper" && "w-(--radix-select-trigger-width)",
|
|
1698
1701
|
className
|
|
1699
1702
|
),
|
|
1700
1703
|
position,
|
|
1704
|
+
style: {
|
|
1705
|
+
...resolvedMaxHeight ? {
|
|
1706
|
+
maxHeight: `min(${resolvedMaxHeight}, var(--radix-select-content-available-height))`
|
|
1707
|
+
} : null,
|
|
1708
|
+
...style
|
|
1709
|
+
},
|
|
1701
1710
|
...props,
|
|
1702
1711
|
children: [
|
|
1703
1712
|
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
|
|
1704
1713
|
/* @__PURE__ */ jsx(
|
|
1705
1714
|
Select$1.Viewport,
|
|
1706
1715
|
{
|
|
1707
|
-
className: cn(
|
|
1708
|
-
"p-1",
|
|
1709
|
-
position === "popper" && "h-[--radix-select-trigger-height]"
|
|
1710
|
-
),
|
|
1716
|
+
className: cn("scroll-my-1 p-1", position === "popper" && "w-full"),
|
|
1711
1717
|
children
|
|
1712
1718
|
}
|
|
1713
1719
|
),
|
|
@@ -4369,6 +4375,7 @@ ColorPickerPresets.displayName = "ColorPickerPresets";
|
|
|
4369
4375
|
function Calendar({
|
|
4370
4376
|
className,
|
|
4371
4377
|
classNames,
|
|
4378
|
+
modifiersClassNames,
|
|
4372
4379
|
showOutsideDays = true,
|
|
4373
4380
|
captionLayout = "dropdown",
|
|
4374
4381
|
buttonVariant = "ghost",
|
|
@@ -4380,6 +4387,36 @@ function Calendar({
|
|
|
4380
4387
|
...props
|
|
4381
4388
|
}) {
|
|
4382
4389
|
const defaultClassNames = getDefaultClassNames();
|
|
4390
|
+
const resolvedComponents = useMemo(
|
|
4391
|
+
() => ({
|
|
4392
|
+
Root: ({ className: className2, rootRef, ...rootProps }) => {
|
|
4393
|
+
return /* @__PURE__ */ jsx(
|
|
4394
|
+
"div",
|
|
4395
|
+
{
|
|
4396
|
+
"data-slot": "calendar",
|
|
4397
|
+
ref: rootRef,
|
|
4398
|
+
className: cn(className2),
|
|
4399
|
+
...rootProps
|
|
4400
|
+
}
|
|
4401
|
+
);
|
|
4402
|
+
},
|
|
4403
|
+
Chevron: ({ className: className2, orientation, ...chevronProps }) => {
|
|
4404
|
+
if (orientation === "left") {
|
|
4405
|
+
return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...chevronProps });
|
|
4406
|
+
}
|
|
4407
|
+
if (orientation === "right") {
|
|
4408
|
+
return /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("size-4", className2), ...chevronProps });
|
|
4409
|
+
}
|
|
4410
|
+
return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...chevronProps });
|
|
4411
|
+
},
|
|
4412
|
+
DayButton: (dayButtonProps) => /* @__PURE__ */ jsx(CalendarDayButton, { locale, ...dayButtonProps }),
|
|
4413
|
+
WeekNumber: ({ children, ...weekNumberProps }) => {
|
|
4414
|
+
return /* @__PURE__ */ jsx("td", { ...weekNumberProps, children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
|
|
4415
|
+
},
|
|
4416
|
+
...components
|
|
4417
|
+
}),
|
|
4418
|
+
[locale, components]
|
|
4419
|
+
);
|
|
4383
4420
|
return /* @__PURE__ */ jsx(
|
|
4384
4421
|
DayPicker,
|
|
4385
4422
|
{
|
|
@@ -4471,33 +4508,13 @@ function Calendar({
|
|
|
4471
4508
|
hidden: cn("invisible", defaultClassNames.hidden),
|
|
4472
4509
|
...classNames
|
|
4473
4510
|
},
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
"data-slot": "calendar",
|
|
4480
|
-
ref: rootRef,
|
|
4481
|
-
className: cn(className2),
|
|
4482
|
-
...props2
|
|
4483
|
-
}
|
|
4484
|
-
);
|
|
4485
|
-
},
|
|
4486
|
-
Chevron: ({ className: className2, orientation, ...props2 }) => {
|
|
4487
|
-
if (orientation === "left") {
|
|
4488
|
-
return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
|
|
4489
|
-
}
|
|
4490
|
-
if (orientation === "right") {
|
|
4491
|
-
return /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("size-4", className2), ...props2 });
|
|
4492
|
-
}
|
|
4493
|
-
return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
|
|
4494
|
-
},
|
|
4495
|
-
DayButton: ({ ...props2 }) => /* @__PURE__ */ jsx(CalendarDayButton, { locale, ...props2 }),
|
|
4496
|
-
WeekNumber: ({ children, ...props2 }) => {
|
|
4497
|
-
return /* @__PURE__ */ jsx("td", { ...props2, children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
|
|
4498
|
-
},
|
|
4499
|
-
...components
|
|
4511
|
+
modifiersClassNames: {
|
|
4512
|
+
preview_start: "relative isolate z-0 rounded-l-md bg-primary/8 after:absolute after:inset-y-0 after:right-0 after:w-3 after:bg-primary/8",
|
|
4513
|
+
preview_middle: "rounded-none bg-primary/8",
|
|
4514
|
+
preview_end: "relative isolate z-0 rounded-r-md bg-primary/8 after:absolute after:inset-y-0 after:left-0 after:w-3 after:bg-primary/8",
|
|
4515
|
+
...modifiersClassNames
|
|
4500
4516
|
},
|
|
4517
|
+
components: resolvedComponents,
|
|
4501
4518
|
...props
|
|
4502
4519
|
}
|
|
4503
4520
|
);
|
|
@@ -4514,6 +4531,9 @@ function CalendarDayButton({
|
|
|
4514
4531
|
useEffect(() => {
|
|
4515
4532
|
if (modifiers.focused) ref.current?.focus();
|
|
4516
4533
|
}, [modifiers.focused]);
|
|
4534
|
+
const isPreviewEdge = Boolean(
|
|
4535
|
+
(modifiers.preview_start || modifiers.preview_end) && !modifiers.selected
|
|
4536
|
+
);
|
|
4517
4537
|
return /* @__PURE__ */ jsx(
|
|
4518
4538
|
Button,
|
|
4519
4539
|
{
|
|
@@ -4525,8 +4545,10 @@ function CalendarDayButton({
|
|
|
4525
4545
|
"data-range-start": modifiers.range_start,
|
|
4526
4546
|
"data-range-end": modifiers.range_end,
|
|
4527
4547
|
"data-range-middle": modifiers.range_middle,
|
|
4548
|
+
"data-preview-middle": Boolean(modifiers.preview_middle),
|
|
4549
|
+
"data-preview-edge": isPreviewEdge,
|
|
4528
4550
|
className: cn(
|
|
4529
|
-
"group-data-[focused=true]/day:ring-primary/40 data-[range-end=true]:!bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:!bg-primary/8 data-[range-middle=true]:text-foreground data-[range-start=true]:!bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:!bg-primary data-[selected-single=true]:text-primary-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 !rounded-md border-0 !bg-transparent leading-none font-normal transition-colors duration-150 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:rounded-md group-data-[focused=true]/day:ring-[2px] hover:!bg-transparent data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[selected-single=true]:rounded-md [&>span]:text-xs [&>span]:font-medium [&>span]:opacity-75",
|
|
4551
|
+
"group-data-[focused=true]/day:ring-primary/40 data-[preview-edge=true]:ring-primary/50 data-[preview-edge=true]:text-primary data-[preview-middle=true]:text-primary data-[range-end=true]:!bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:!bg-primary/8 data-[range-middle=true]:text-foreground data-[range-start=true]:!bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:!bg-primary data-[selected-single=true]:text-primary-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 !rounded-md border-0 !bg-transparent leading-none font-normal transition-colors duration-150 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:rounded-md group-data-[focused=true]/day:ring-[2px] hover:!bg-transparent data-[preview-edge=true]:rounded-md data-[preview-edge=true]:font-medium data-[preview-edge=true]:ring-[2px] data-[preview-middle=true]:font-medium data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[selected-single=true]:rounded-md [&>span]:text-xs [&>span]:font-medium [&>span]:opacity-75",
|
|
4530
4552
|
defaultClassNames.day,
|
|
4531
4553
|
className
|
|
4532
4554
|
),
|
|
@@ -4534,35 +4556,37 @@ function CalendarDayButton({
|
|
|
4534
4556
|
}
|
|
4535
4557
|
);
|
|
4536
4558
|
}
|
|
4537
|
-
function DatePicker({
|
|
4538
|
-
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
numberOfMonths = 1
|
|
4547
|
-
}) {
|
|
4559
|
+
function DatePicker(props) {
|
|
4560
|
+
const {
|
|
4561
|
+
placeholder = "Pick a date",
|
|
4562
|
+
disabled = false,
|
|
4563
|
+
className,
|
|
4564
|
+
fromDate,
|
|
4565
|
+
toDate,
|
|
4566
|
+
numberOfMonths = 1
|
|
4567
|
+
} = props;
|
|
4548
4568
|
const [open, setOpen] = useState(false);
|
|
4549
4569
|
const [awaitingRangeEnd, setAwaitingRangeEnd] = useState(false);
|
|
4570
|
+
const [previewDate, setPreviewDate] = useState(void 0);
|
|
4550
4571
|
const label = useMemo(() => {
|
|
4551
|
-
if (mode === "range") {
|
|
4552
|
-
const range = selected;
|
|
4572
|
+
if (props.mode === "range") {
|
|
4573
|
+
const range = props.selected;
|
|
4553
4574
|
if (!range?.from) return placeholder;
|
|
4554
4575
|
if (!range.to) return `${format(range.from, "MMM d, yyyy")} \u2013 \u2026`;
|
|
4555
4576
|
return `${format(range.from, "MMM d, yyyy")} \u2013 ${format(range.to, "MMM d, yyyy")}`;
|
|
4556
4577
|
}
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
}, [mode, selected, placeholder]);
|
|
4578
|
+
return props.selected ? format(props.selected, "MMM d, yyyy") : placeholder;
|
|
4579
|
+
}, [props.mode, props.selected, placeholder]);
|
|
4560
4580
|
const handleOpenChange = (nextOpen) => {
|
|
4561
4581
|
setOpen(nextOpen);
|
|
4562
|
-
if (!nextOpen)
|
|
4582
|
+
if (!nextOpen) {
|
|
4583
|
+
setAwaitingRangeEnd(false);
|
|
4584
|
+
setPreviewDate(void 0);
|
|
4585
|
+
}
|
|
4563
4586
|
};
|
|
4564
4587
|
const handleRangeSelect = (range, triggerDate) => {
|
|
4565
|
-
|
|
4588
|
+
if (props.mode !== "range") return;
|
|
4589
|
+
const emit = props.onSelect;
|
|
4566
4590
|
if (!awaitingRangeEnd) {
|
|
4567
4591
|
setAwaitingRangeEnd(true);
|
|
4568
4592
|
emit?.({ from: triggerDate, to: void 0 });
|
|
@@ -4574,8 +4598,25 @@ function DatePicker({
|
|
|
4574
4598
|
return;
|
|
4575
4599
|
}
|
|
4576
4600
|
setAwaitingRangeEnd(false);
|
|
4601
|
+
setPreviewDate(void 0);
|
|
4577
4602
|
setOpen(false);
|
|
4578
4603
|
};
|
|
4604
|
+
const rangeFrom = props.mode === "range" ? props.selected?.from : void 0;
|
|
4605
|
+
const previewModifiers = useMemo(() => {
|
|
4606
|
+
if (!awaitingRangeEnd || !rangeFrom || !previewDate) return void 0;
|
|
4607
|
+
if (isSameDay(rangeFrom, previewDate)) return void 0;
|
|
4608
|
+
const [start, end] = previewDate < rangeFrom ? [previewDate, rangeFrom] : [rangeFrom, previewDate];
|
|
4609
|
+
return {
|
|
4610
|
+
preview_start: start,
|
|
4611
|
+
preview_middle: { after: start, before: end },
|
|
4612
|
+
preview_end: end
|
|
4613
|
+
};
|
|
4614
|
+
}, [awaitingRangeEnd, rangeFrom, previewDate]);
|
|
4615
|
+
const handleDayPreview = (day, dayModifiers) => {
|
|
4616
|
+
if (!awaitingRangeEnd) return;
|
|
4617
|
+
if (dayModifiers.disabled || dayModifiers.hidden) return;
|
|
4618
|
+
setPreviewDate((current) => current && isSameDay(current, day) ? current : day);
|
|
4619
|
+
};
|
|
4579
4620
|
const dateConstraints = useMemo(() => {
|
|
4580
4621
|
const disabledMatchers = [];
|
|
4581
4622
|
if (fromDate) disabledMatchers.push({ before: fromDate });
|
|
@@ -4586,7 +4627,7 @@ function DatePicker({
|
|
|
4586
4627
|
...toDate && { endMonth: toDate }
|
|
4587
4628
|
};
|
|
4588
4629
|
}, [fromDate, toDate]);
|
|
4589
|
-
const hasValue = mode === "range" ? !!selected?.from : !!selected;
|
|
4630
|
+
const hasValue = props.mode === "range" ? !!props.selected?.from : !!props.selected;
|
|
4590
4631
|
return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
|
|
4591
4632
|
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
4592
4633
|
Button,
|
|
@@ -4605,32 +4646,36 @@ function DatePicker({
|
|
|
4605
4646
|
]
|
|
4606
4647
|
}
|
|
4607
4648
|
) }),
|
|
4608
|
-
/* @__PURE__ */ jsx(PopoverContent, { "data-slot": "date-picker-content", className: "w-auto p-0", align: "start", children: mode === "range" ?
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4649
|
+
/* @__PURE__ */ jsx(PopoverContent, { "data-slot": "date-picker-content", className: "w-auto p-0", align: "start", children: props.mode === "range" ? (
|
|
4650
|
+
// Clearing the preview on the wrapper instead of per day
|
|
4651
|
+
// avoids the blank frame `onDayMouseLeave` would cause when
|
|
4652
|
+
// the pointer travels from one day to the next.
|
|
4653
|
+
/* @__PURE__ */ jsx("div", { onMouseLeave: () => setPreviewDate(void 0), children: /* @__PURE__ */ jsx(
|
|
4654
|
+
Calendar,
|
|
4655
|
+
{
|
|
4612
4656
|
mode: "range",
|
|
4613
|
-
selected,
|
|
4657
|
+
selected: props.selected,
|
|
4614
4658
|
onSelect: handleRangeSelect,
|
|
4615
|
-
|
|
4659
|
+
modifiers: previewModifiers,
|
|
4660
|
+
onDayMouseEnter: handleDayPreview,
|
|
4661
|
+
onDayFocus: handleDayPreview,
|
|
4616
4662
|
numberOfMonths,
|
|
4617
|
-
autoFocus: true
|
|
4663
|
+
autoFocus: true,
|
|
4664
|
+
...dateConstraints
|
|
4618
4665
|
}
|
|
4619
|
-
}
|
|
4666
|
+
) })
|
|
4620
4667
|
) : /* @__PURE__ */ jsx(
|
|
4621
4668
|
Calendar,
|
|
4622
4669
|
{
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
onSelect
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
autoFocus: true
|
|
4633
|
-
}
|
|
4670
|
+
mode: "single",
|
|
4671
|
+
selected: props.selected,
|
|
4672
|
+
onSelect: (date) => {
|
|
4673
|
+
props.onSelect?.(date);
|
|
4674
|
+
setOpen(false);
|
|
4675
|
+
},
|
|
4676
|
+
numberOfMonths,
|
|
4677
|
+
autoFocus: true,
|
|
4678
|
+
...dateConstraints
|
|
4634
4679
|
}
|
|
4635
4680
|
) })
|
|
4636
4681
|
] });
|
|
@@ -5093,6 +5138,8 @@ function AbilityProvider({ children, permissions }) {
|
|
|
5093
5138
|
const [permissionSet, setPermissionSet] = useState(
|
|
5094
5139
|
() => new Set(permissions ?? [])
|
|
5095
5140
|
);
|
|
5141
|
+
const [imperativelyResolved, setImperativelyResolved] = useState(false);
|
|
5142
|
+
const status = permissions !== void 0 || imperativelyResolved ? "ready" : "loading";
|
|
5096
5143
|
const can = useCallback(
|
|
5097
5144
|
(perms, mode = "any") => {
|
|
5098
5145
|
const list = Array.isArray(perms) ? perms : [perms];
|
|
@@ -5107,21 +5154,23 @@ function AbilityProvider({ children, permissions }) {
|
|
|
5107
5154
|
);
|
|
5108
5155
|
const setAbilities = useCallback((perms) => {
|
|
5109
5156
|
setPermissionSet(new Set(perms));
|
|
5157
|
+
setImperativelyResolved(true);
|
|
5110
5158
|
}, []);
|
|
5111
5159
|
const clearAbilities = useCallback(() => {
|
|
5112
5160
|
setPermissionSet(/* @__PURE__ */ new Set());
|
|
5161
|
+
setImperativelyResolved(true);
|
|
5113
5162
|
}, []);
|
|
5114
|
-
const
|
|
5163
|
+
const permissionKey = permissions === void 0 ? null : [...permissions].sort().join("|");
|
|
5164
|
+
const syncedKey = useRef(permissionKey);
|
|
5115
5165
|
useEffect(() => {
|
|
5116
|
-
if (
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
syncedKey.current = key;
|
|
5166
|
+
if (permissionKey === null) return;
|
|
5167
|
+
if (permissionKey === syncedKey.current) return;
|
|
5168
|
+
syncedKey.current = permissionKey;
|
|
5120
5169
|
setPermissionSet(new Set(permissions));
|
|
5121
|
-
}, [permissions]);
|
|
5170
|
+
}, [permissionKey, permissions]);
|
|
5122
5171
|
const value = useMemo(
|
|
5123
|
-
() => ({ can, setAbilities, clearAbilities }),
|
|
5124
|
-
[can, setAbilities, clearAbilities]
|
|
5172
|
+
() => ({ can, setAbilities, clearAbilities, status }),
|
|
5173
|
+
[can, setAbilities, clearAbilities, status]
|
|
5125
5174
|
);
|
|
5126
5175
|
return /* @__PURE__ */ jsx(AbilityContext.Provider, { value, children });
|
|
5127
5176
|
}
|
|
@@ -5136,18 +5185,173 @@ function useCan(permissions, mode = "any") {
|
|
|
5136
5185
|
const { can } = useAbility();
|
|
5137
5186
|
return can(permissions, mode);
|
|
5138
5187
|
}
|
|
5139
|
-
function
|
|
5140
|
-
|
|
5141
|
-
|
|
5188
|
+
function useAbilityStatus() {
|
|
5189
|
+
return useAbility().status;
|
|
5190
|
+
}
|
|
5191
|
+
|
|
5192
|
+
// src/components/authorization/permissions.generated.ts
|
|
5193
|
+
var KNOWN_PERMISSIONS = [];
|
|
5194
|
+
|
|
5195
|
+
// src/components/authorization/permission-catalog.ts
|
|
5196
|
+
var CATALOG = new Set(KNOWN_PERMISSIONS);
|
|
5197
|
+
var warned = /* @__PURE__ */ new Set();
|
|
5198
|
+
function warnUnknownPermission(permission) {
|
|
5199
|
+
if (process.env.NODE_ENV === "production") return;
|
|
5200
|
+
if (CATALOG.size === 0) return;
|
|
5201
|
+
const requested = Array.isArray(permission) ? permission : [permission];
|
|
5202
|
+
for (const entry of requested) {
|
|
5203
|
+
if (entry.includes("*")) continue;
|
|
5204
|
+
if (CATALOG.has(entry) || warned.has(entry)) continue;
|
|
5205
|
+
warned.add(entry);
|
|
5206
|
+
console.warn(
|
|
5207
|
+
`[Can] Unknown permission "${entry}". It is not in the generated permission catalog. Check for a typo, or regenerate the catalog with \`pnpm generate-permissions\`.`
|
|
5208
|
+
);
|
|
5209
|
+
}
|
|
5210
|
+
}
|
|
5211
|
+
var FOCUS_TRAVERSAL_KEYS = /* @__PURE__ */ new Set(["Tab", "Escape"]);
|
|
5212
|
+
function blockInteraction(event) {
|
|
5213
|
+
event.preventDefault();
|
|
5214
|
+
event.stopPropagation();
|
|
5215
|
+
}
|
|
5216
|
+
function blockNonTraversalKey(event) {
|
|
5217
|
+
if (!FOCUS_TRAVERSAL_KEYS.has(event.key)) blockInteraction(event);
|
|
5218
|
+
}
|
|
5219
|
+
var warnedRenderPropMisuse = /* @__PURE__ */ new Set();
|
|
5220
|
+
function warnRenderPropVoidsProps(voided) {
|
|
5221
|
+
if (process.env.NODE_ENV === "production") return;
|
|
5222
|
+
if (voided.length === 0) return;
|
|
5223
|
+
const key = voided.join(",");
|
|
5224
|
+
if (warnedRenderPropMisuse.has(key)) return;
|
|
5225
|
+
warnedRenderPropMisuse.add(key);
|
|
5226
|
+
console.warn(
|
|
5227
|
+
`[Can] \`children\` is a function, so ${voided.map((prop) => `\`${prop}\``).join(", ")} ${voided.length === 1 ? "is" : "are"} ignored. A render prop owns every state: read \`allowed\` and \`status\` and render the disabled, loading and denied cases yourself, or pass an element instead of a function.`
|
|
5228
|
+
);
|
|
5229
|
+
}
|
|
5230
|
+
function disableElement(child) {
|
|
5231
|
+
return cloneElement(child, {
|
|
5232
|
+
"aria-disabled": "true",
|
|
5233
|
+
className: cn(child.props.className, "cursor-not-allowed opacity-50"),
|
|
5234
|
+
onClickCapture: blockInteraction,
|
|
5235
|
+
onKeyDownCapture: blockNonTraversalKey,
|
|
5236
|
+
onKeyUpCapture: blockNonTraversalKey,
|
|
5237
|
+
onPointerDownCapture: blockInteraction,
|
|
5238
|
+
onMouseDownCapture: blockInteraction
|
|
5239
|
+
});
|
|
5240
|
+
}
|
|
5241
|
+
function InteractionFirewall({ children }) {
|
|
5242
|
+
return /* @__PURE__ */ jsx(
|
|
5243
|
+
"span",
|
|
5244
|
+
{
|
|
5245
|
+
"data-slot": "can-blocked",
|
|
5246
|
+
className: "contents",
|
|
5247
|
+
onClickCapture: blockInteraction,
|
|
5248
|
+
onPointerDownCapture: blockInteraction,
|
|
5249
|
+
onMouseDownCapture: blockInteraction,
|
|
5250
|
+
onKeyDownCapture: blockNonTraversalKey,
|
|
5251
|
+
onKeyUpCapture: blockNonTraversalKey,
|
|
5252
|
+
children
|
|
5253
|
+
}
|
|
5254
|
+
);
|
|
5255
|
+
}
|
|
5256
|
+
function DisabledSubtree({
|
|
5257
|
+
children,
|
|
5258
|
+
className,
|
|
5259
|
+
...props
|
|
5260
|
+
}) {
|
|
5261
|
+
const { "data-slot": _incomingDataSlot, ...restProps } = props;
|
|
5262
|
+
return /* @__PURE__ */ jsx(
|
|
5263
|
+
"span",
|
|
5264
|
+
{
|
|
5265
|
+
"data-slot": "can-disabled",
|
|
5266
|
+
"aria-disabled": "true",
|
|
5267
|
+
className: cn(
|
|
5268
|
+
"inline-flex cursor-not-allowed opacity-50",
|
|
5269
|
+
"*:pointer-events-none",
|
|
5270
|
+
className
|
|
5271
|
+
),
|
|
5272
|
+
onClickCapture: blockInteraction,
|
|
5273
|
+
onPointerDownCapture: blockInteraction,
|
|
5274
|
+
onMouseDownCapture: blockInteraction,
|
|
5275
|
+
onKeyDownCapture: blockNonTraversalKey,
|
|
5276
|
+
onKeyUpCapture: blockNonTraversalKey,
|
|
5277
|
+
...restProps,
|
|
5278
|
+
children
|
|
5279
|
+
}
|
|
5280
|
+
);
|
|
5281
|
+
}
|
|
5282
|
+
function Can({
|
|
5283
|
+
permission,
|
|
5284
|
+
mode = "any",
|
|
5285
|
+
negate = false,
|
|
5286
|
+
behavior = "hide",
|
|
5287
|
+
reason = null,
|
|
5288
|
+
fallback = null,
|
|
5289
|
+
loading,
|
|
5290
|
+
children
|
|
5291
|
+
}) {
|
|
5292
|
+
warnUnknownPermission(permission);
|
|
5293
|
+
const { can, status } = useAbility();
|
|
5294
|
+
const hasPermission = status === "ready" && can(permission, mode);
|
|
5142
5295
|
const show = negate ? !hasPermission : hasPermission;
|
|
5143
5296
|
if (typeof children === "function") {
|
|
5144
|
-
|
|
5297
|
+
warnRenderPropVoidsProps([
|
|
5298
|
+
...behavior === "disable" ? ["behavior='disable'"] : [],
|
|
5299
|
+
...reason !== null ? ["reason"] : [],
|
|
5300
|
+
...fallback !== null ? ["fallback"] : [],
|
|
5301
|
+
...loading !== void 0 ? ["loading"] : []
|
|
5302
|
+
]);
|
|
5303
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: children({ allowed: show, status }) });
|
|
5304
|
+
}
|
|
5305
|
+
if (status === "loading" && loading !== void 0) {
|
|
5306
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: loading });
|
|
5145
5307
|
}
|
|
5146
|
-
|
|
5308
|
+
if (show) {
|
|
5309
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children });
|
|
5310
|
+
}
|
|
5311
|
+
if (behavior === "disable") {
|
|
5312
|
+
if (isValidElement(children) && children.type !== Fragment) {
|
|
5313
|
+
const disabledChild = disableElement(children);
|
|
5314
|
+
if (reason === null) {
|
|
5315
|
+
return /* @__PURE__ */ jsx(InteractionFirewall, { children: disabledChild });
|
|
5316
|
+
}
|
|
5317
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
5318
|
+
/* @__PURE__ */ jsx(InteractionFirewall, { children: /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: disabledChild }) }),
|
|
5319
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: reason })
|
|
5320
|
+
] });
|
|
5321
|
+
}
|
|
5322
|
+
if (reason === null) {
|
|
5323
|
+
return /* @__PURE__ */ jsx(DisabledSubtree, { children });
|
|
5324
|
+
}
|
|
5325
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
5326
|
+
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(DisabledSubtree, { children }) }),
|
|
5327
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: reason })
|
|
5328
|
+
] });
|
|
5329
|
+
}
|
|
5330
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
|
|
5147
5331
|
}
|
|
5148
5332
|
Can.displayName = "Can";
|
|
5149
|
-
function CanNot({
|
|
5150
|
-
|
|
5333
|
+
function CanNot({
|
|
5334
|
+
permission,
|
|
5335
|
+
mode = "any",
|
|
5336
|
+
behavior = "hide",
|
|
5337
|
+
reason = null,
|
|
5338
|
+
fallback = null,
|
|
5339
|
+
loading,
|
|
5340
|
+
children
|
|
5341
|
+
}) {
|
|
5342
|
+
return /* @__PURE__ */ jsx(
|
|
5343
|
+
Can,
|
|
5344
|
+
{
|
|
5345
|
+
permission,
|
|
5346
|
+
mode,
|
|
5347
|
+
negate: true,
|
|
5348
|
+
behavior,
|
|
5349
|
+
reason,
|
|
5350
|
+
fallback,
|
|
5351
|
+
loading,
|
|
5352
|
+
children
|
|
5353
|
+
}
|
|
5354
|
+
);
|
|
5151
5355
|
}
|
|
5152
5356
|
CanNot.displayName = "CanNot";
|
|
5153
5357
|
function useMediaQuery(query) {
|
|
@@ -6944,7 +7148,7 @@ function TableHead({ className, ...props }) {
|
|
|
6944
7148
|
{
|
|
6945
7149
|
"data-slot": "table-head",
|
|
6946
7150
|
className: cn(
|
|
6947
|
-
"text-foreground has
|
|
7151
|
+
"text-foreground has-[[role=checkbox]]:pr-0 h-12 px-3 text-left align-middle font-medium whitespace-nowrap",
|
|
6948
7152
|
className
|
|
6949
7153
|
),
|
|
6950
7154
|
...props
|
|
@@ -6957,7 +7161,7 @@ function TableCell({ className, ...props }) {
|
|
|
6957
7161
|
{
|
|
6958
7162
|
"data-slot": "table-cell",
|
|
6959
7163
|
className: cn(
|
|
6960
|
-
"has
|
|
7164
|
+
"has-[[role=checkbox]]:pr-0 p-3 align-middle whitespace-nowrap",
|
|
6961
7165
|
className
|
|
6962
7166
|
),
|
|
6963
7167
|
...props
|
|
@@ -7218,6 +7422,13 @@ function useTableContext() {
|
|
|
7218
7422
|
function useTableContextSafe() {
|
|
7219
7423
|
return useContext(TableContext);
|
|
7220
7424
|
}
|
|
7425
|
+
|
|
7426
|
+
// src/components/compounds/Table/cell-size-class.ts
|
|
7427
|
+
var cellSizeClass = {
|
|
7428
|
+
sm: "px-3 py-1.5 text-xs",
|
|
7429
|
+
md: "px-5 py-2.5 text-sm",
|
|
7430
|
+
lg: "px-6 py-3 text-sm"
|
|
7431
|
+
};
|
|
7221
7432
|
var cardPadding = {
|
|
7222
7433
|
sm: "p-3",
|
|
7223
7434
|
md: "p-4",
|
|
@@ -7555,6 +7766,9 @@ function DataTableHeaderCell({ header }) {
|
|
|
7555
7766
|
},
|
|
7556
7767
|
className: cn(
|
|
7557
7768
|
"bg-primary text-primary-foreground",
|
|
7769
|
+
// Same density padding as the body cells: without it the header
|
|
7770
|
+
// label and the cell value below it sit at different offsets.
|
|
7771
|
+
cellSizeClass[meta.size ?? tableSize],
|
|
7558
7772
|
canResize && "relative",
|
|
7559
7773
|
meta.align === "center" && "text-center",
|
|
7560
7774
|
meta.align === "right" && "text-right",
|
|
@@ -7944,11 +8158,6 @@ function useTablePersistence({
|
|
|
7944
8158
|
persistDensity
|
|
7945
8159
|
};
|
|
7946
8160
|
}
|
|
7947
|
-
var cellSizeClass = {
|
|
7948
|
-
sm: "px-1 py-0 text-xs",
|
|
7949
|
-
md: "px-5 py-2.5 text-sm",
|
|
7950
|
-
lg: "px-6 py-3 text-sm"
|
|
7951
|
-
};
|
|
7952
8161
|
function resolveClassName(value, row) {
|
|
7953
8162
|
return typeof value === "function" ? value(row) : value;
|
|
7954
8163
|
}
|
|
@@ -7989,6 +8198,13 @@ function DataTableCell({
|
|
|
7989
8198
|
}
|
|
7990
8199
|
);
|
|
7991
8200
|
}
|
|
8201
|
+
var INTERACTIVE_CELL_CONTENT = 'button, a, input, select, textarea, [role="button"], [role="checkbox"], [role="menuitem"], [role="link"]';
|
|
8202
|
+
function isInteractiveCellEvent(event) {
|
|
8203
|
+
const target = event.target;
|
|
8204
|
+
if (!(target instanceof Element)) return false;
|
|
8205
|
+
const match = target.closest(INTERACTIVE_CELL_CONTENT);
|
|
8206
|
+
return match !== null && match !== event.currentTarget;
|
|
8207
|
+
}
|
|
7992
8208
|
function DataTableRow({ row, classNames }) {
|
|
7993
8209
|
const { onRowClick, variant } = useTableContext();
|
|
7994
8210
|
const clickable = Boolean(onRowClick);
|
|
@@ -8001,12 +8217,15 @@ function DataTableRow({ row, classNames }) {
|
|
|
8001
8217
|
"data-clickable": clickable || void 0,
|
|
8002
8218
|
role: clickable ? "button" : void 0,
|
|
8003
8219
|
tabIndex: clickable ? 0 : void 0,
|
|
8004
|
-
onClick: clickable ? () =>
|
|
8220
|
+
onClick: clickable ? (e) => {
|
|
8221
|
+
if (isInteractiveCellEvent(e)) return;
|
|
8222
|
+
onRowClick?.(row.original);
|
|
8223
|
+
} : void 0,
|
|
8005
8224
|
onKeyDown: clickable ? (e) => {
|
|
8006
|
-
if (e.key
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8225
|
+
if (e.key !== "Enter" && e.key !== " ") return;
|
|
8226
|
+
if (isInteractiveCellEvent(e)) return;
|
|
8227
|
+
e.preventDefault();
|
|
8228
|
+
onRowClick?.(row.original);
|
|
8010
8229
|
} : void 0,
|
|
8011
8230
|
className: cn("hover:bg-muted", clickable && "cursor-pointer", rowClassName),
|
|
8012
8231
|
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(DataTableCell, { cell, cellClassName }, cell.id))
|
|
@@ -8607,7 +8826,7 @@ function DataTableFooter({ pagination, selectedCount, className }) {
|
|
|
8607
8826
|
className: cn("flex items-center justify-between border-t px-4 py-2", className),
|
|
8608
8827
|
children: [
|
|
8609
8828
|
selectedCount != null && selectedCount > 0 && /* @__PURE__ */ jsx("span", { "aria-live": "polite", className: "text-muted-foreground text-xs", children: `${selectedCount} row${selectedCount > 1 ? "s" : ""} selected` }),
|
|
8610
|
-
/* @__PURE__ */ jsx(TablePagination, { ...pagination })
|
|
8829
|
+
/* @__PURE__ */ jsx("div", { className: "ml-auto", children: /* @__PURE__ */ jsx(TablePagination, { ...pagination }) })
|
|
8611
8830
|
]
|
|
8612
8831
|
}
|
|
8613
8832
|
);
|
|
@@ -8716,18 +8935,21 @@ function DataTableSearch({
|
|
|
8716
8935
|
debounce = 300
|
|
8717
8936
|
}) {
|
|
8718
8937
|
const ctx = useTableContextSafe();
|
|
8719
|
-
const [inputValue, setInputValue] = useState("");
|
|
8720
8938
|
const globalFilter = ctx?.globalFilter;
|
|
8721
8939
|
const setGlobalFilter = ctx?.setGlobalFilter;
|
|
8940
|
+
const committedValue = globalFilter ?? "";
|
|
8941
|
+
const [inputValue, setInputValue] = useState(committedValue);
|
|
8722
8942
|
useEffect(() => {
|
|
8723
|
-
if (globalFilter ===
|
|
8943
|
+
if (globalFilter === void 0) return;
|
|
8944
|
+
setInputValue(globalFilter);
|
|
8724
8945
|
}, [globalFilter]);
|
|
8725
8946
|
useEffect(() => {
|
|
8947
|
+
if (inputValue === committedValue) return;
|
|
8726
8948
|
const timer = setTimeout(() => {
|
|
8727
8949
|
setGlobalFilter?.(inputValue);
|
|
8728
8950
|
}, debounce);
|
|
8729
8951
|
return () => clearTimeout(timer);
|
|
8730
|
-
}, [inputValue, debounce, setGlobalFilter]);
|
|
8952
|
+
}, [inputValue, committedValue, debounce, setGlobalFilter]);
|
|
8731
8953
|
const handleClear = () => {
|
|
8732
8954
|
setInputValue("");
|
|
8733
8955
|
setGlobalFilter?.("");
|
|
@@ -8748,7 +8970,13 @@ function DataTableSearch({
|
|
|
8748
8970
|
onChange: (e) => setInputValue(e.target.value),
|
|
8749
8971
|
placeholder,
|
|
8750
8972
|
"aria-label": placeholder,
|
|
8751
|
-
className:
|
|
8973
|
+
className: cn(
|
|
8974
|
+
"h-8 w-48 pr-9 pl-9 text-sm",
|
|
8975
|
+
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
8976
|
+
"[&::-webkit-search-decoration]:appearance-none",
|
|
8977
|
+
"[&::-webkit-search-results-button]:appearance-none",
|
|
8978
|
+
"[&::-webkit-search-results-decoration]:appearance-none"
|
|
8979
|
+
)
|
|
8752
8980
|
}
|
|
8753
8981
|
),
|
|
8754
8982
|
inputValue && /* @__PURE__ */ jsx(
|
|
@@ -8758,7 +8986,7 @@ function DataTableSearch({
|
|
|
8758
8986
|
size: "icon-sm",
|
|
8759
8987
|
onClick: handleClear,
|
|
8760
8988
|
"aria-label": "Clear search",
|
|
8761
|
-
className: "text-muted-foreground hover:text-foreground absolute right-
|
|
8989
|
+
className: "text-muted-foreground hover:text-foreground absolute top-1/2 right-1.5 size-6 -translate-y-1/2",
|
|
8762
8990
|
children: /* @__PURE__ */ jsx(X, { className: "size-3.5", "aria-hidden": "true" })
|
|
8763
8991
|
}
|
|
8764
8992
|
)
|
|
@@ -9143,6 +9371,6 @@ function TCCEProvider({
|
|
|
9143
9371
|
return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: tooltipDelayDuration, children: /* @__PURE__ */ jsx(AbilityProvider, { permissions, children: /* @__PURE__ */ jsx(Toaster, { position: toasterPosition, children }) }) });
|
|
9144
9372
|
}
|
|
9145
9373
|
|
|
9146
|
-
export { AbilityProvider, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge2 as Badge, BottomNav, BottomNavTabs, BottomNavTabsContent, BottomNavTabsList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Can, CanNot, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, ColorPicker, ColorPickerAlpha, ColorPickerEyeDropper, ColorPickerFormat, ColorPickerHue, ColorPickerOutput, ColorPickerPresets, ColorPickerSelection, Combobox, DataTable, DataTableCardView, DataTableColumnFilter, DataTableFooter, DataTableHeaderCell, DataTableRowActions, DataTableSearch, DataTableSkeleton, DataTableToolbar, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EventCalendar, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, FilterOption, Input, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Label, Link, Logo, MiniCalendar, MiniCalendarDay, MiniCalendarDays, MiniCalendarNavigation, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneField, PinInput, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, SegmentedControlItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, SpinnerDots, SpinnerLoader, Status, StatusIndicator, StatusLabel, Switch, TCCEProvider, TEXT_SIZES, TEXT_WEIGHTS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TablePagination, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, Textarea, Toaster, Toggle, ToggleGroup2 as ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, animation, avatarVariants, badgeVariants2 as badgeVariants, buttonVariants, columnFiltersToArrayQueryParams, columnFiltersToJsonString, columnFiltersToQueryParams, columnFiltersToRecord, createBackendParams, createBackendParamsWithFilters, duration, ease, fadeIn, getActiveFilterCount, getActiveFilterValues, getColumnValueCounts, getUniqueColumnValues, hasActiveFilters, linkVariants, logos, matchPermission, mergeFilters, multiSelectFilter, navigationMenuTriggerStyle, parseJsonToFilters, parseQueryParamsToFilters, progressIndicatorVariants, progressVariants, scaleIn, searchInArray, skeletonVariants, slideRight, slideUp, sortRecordToSortingState, sortingStateToJsonString, sortingStateToRecord, spinnerDotsVariants, spinnerLoaderVariants, spinnerVariants, spring, stagger, toggleVariants, tooltipContentVariants, transition, useAbility, useAppForm, useCan, useCarousel, useColorPicker, useColumnFilter, useSidebar, useTableContext, useTableData, useTableFiltering, useTableGlobalFilter, useTableSizing, useTableSorting, useTableVisibility, useToast };
|
|
9374
|
+
export { AbilityProvider, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge2 as Badge, BottomNav, BottomNavTabs, BottomNavTabsContent, BottomNavTabsList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Can, CanNot, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, ColorPicker, ColorPickerAlpha, ColorPickerEyeDropper, ColorPickerFormat, ColorPickerHue, ColorPickerOutput, ColorPickerPresets, ColorPickerSelection, Combobox, DataTable, DataTableCardView, DataTableColumnFilter, DataTableFooter, DataTableHeaderCell, DataTableRowActions, DataTableSearch, DataTableSkeleton, DataTableToolbar, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EventCalendar, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, FilterOption, Input, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, KNOWN_PERMISSIONS, Label, Link, Logo, MiniCalendar, MiniCalendarDay, MiniCalendarDays, MiniCalendarNavigation, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneField, PinInput, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, SegmentedControlItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, SpinnerDots, SpinnerLoader, Status, StatusIndicator, StatusLabel, Switch, TCCEProvider, TEXT_SIZES, TEXT_WEIGHTS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TablePagination, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, Textarea, Toaster, Toggle, ToggleGroup2 as ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, animation, avatarVariants, badgeVariants2 as badgeVariants, buttonVariants, columnFiltersToArrayQueryParams, columnFiltersToJsonString, columnFiltersToQueryParams, columnFiltersToRecord, createBackendParams, createBackendParamsWithFilters, duration, ease, fadeIn, getActiveFilterCount, getActiveFilterValues, getColumnValueCounts, getUniqueColumnValues, hasActiveFilters, linkVariants, logos, matchPermission, mergeFilters, multiSelectFilter, navigationMenuTriggerStyle, parseJsonToFilters, parseQueryParamsToFilters, progressIndicatorVariants, progressVariants, scaleIn, searchInArray, skeletonVariants, slideRight, slideUp, sortRecordToSortingState, sortingStateToJsonString, sortingStateToRecord, spinnerDotsVariants, spinnerLoaderVariants, spinnerVariants, spring, stagger, toggleVariants, tooltipContentVariants, transition, useAbility, useAbilityStatus, useAppForm, useCan, useCarousel, useColorPicker, useColumnFilter, useSidebar, useTableContext, useTableData, useTableFiltering, useTableGlobalFilter, useTableSizing, useTableSorting, useTableVisibility, useToast };
|
|
9147
9375
|
//# sourceMappingURL=main.js.map
|
|
9148
9376
|
//# sourceMappingURL=main.js.map
|