@cntyclub/ui-react 0.13.0 → 0.15.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/index.d.ts +69 -2
- package/dist/index.js +327 -170
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ui/avatar-group.tsx +63 -10
- package/src/components/ui/chat-divider.tsx +67 -0
- package/src/components/ui/context-meter.tsx +134 -0
- package/src/index.ts +2 -0
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { ChevronDownIcon, SunIcon, MoonIcon, ChevronsUpDownIcon, XIcon, CheckIco
|
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
7
7
|
import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
|
|
8
|
-
import * as
|
|
8
|
+
import * as React19 from 'react';
|
|
9
9
|
import { createContext, memo, forwardRef, useRef, useCallback, useMemo, useImperativeHandle, useEffect, useState, useContext, Fragment as Fragment$1, useSyncExternalStore, isValidElement, useLayoutEffect } from 'react';
|
|
10
10
|
import { flushSync } from 'react-dom';
|
|
11
11
|
import { mergeProps } from '@base-ui/react/merge-props';
|
|
@@ -15,6 +15,7 @@ export { ThinkingOrb } from 'thinking-orbs';
|
|
|
15
15
|
import { Autocomplete as Autocomplete$1 } from '@base-ui/react/autocomplete';
|
|
16
16
|
import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
|
|
17
17
|
import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
|
|
18
|
+
import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
|
|
18
19
|
import { format, intervalToDuration } from 'date-fns';
|
|
19
20
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
20
21
|
import * as RechartsPrimitive from 'recharts';
|
|
@@ -27,7 +28,6 @@ import { ContextMenu as ContextMenu$1 } from '@base-ui/react/context-menu';
|
|
|
27
28
|
import { Fieldset as Fieldset$1 } from '@base-ui/react/fieldset';
|
|
28
29
|
import { Form as Form$1 } from '@base-ui/react/form';
|
|
29
30
|
import { Separator as Separator$1 } from '@base-ui/react/separator';
|
|
30
|
-
import { Tooltip } from '@base-ui/react/tooltip';
|
|
31
31
|
import { Transition } from '@headlessui/react';
|
|
32
32
|
import { Slot, Slottable } from '@radix-ui/react-slot';
|
|
33
33
|
import useResizeObserver from 'use-resize-observer';
|
|
@@ -1057,7 +1057,7 @@ function useSmoothWheel(ref, {
|
|
|
1057
1057
|
multiplier = 0.8,
|
|
1058
1058
|
ease = 0.12
|
|
1059
1059
|
} = {}) {
|
|
1060
|
-
|
|
1060
|
+
React19.useEffect(() => {
|
|
1061
1061
|
if (!enabled) return;
|
|
1062
1062
|
const el = ref.current;
|
|
1063
1063
|
if (!el) return;
|
|
@@ -1151,7 +1151,7 @@ function SmoothScroll({
|
|
|
1151
1151
|
ease,
|
|
1152
1152
|
...props
|
|
1153
1153
|
}) {
|
|
1154
|
-
const ref =
|
|
1154
|
+
const ref = React19.useRef(null);
|
|
1155
1155
|
useSmoothWheel(ref, { ease, horizontal, multiplier });
|
|
1156
1156
|
return /* @__PURE__ */ jsx(
|
|
1157
1157
|
"div",
|
|
@@ -1177,7 +1177,7 @@ function ScrollArea({
|
|
|
1177
1177
|
viewportClassName,
|
|
1178
1178
|
...props
|
|
1179
1179
|
}) {
|
|
1180
|
-
const viewportRef =
|
|
1180
|
+
const viewportRef = React19.useRef(null);
|
|
1181
1181
|
useSmoothWheel(viewportRef, { enabled: wheelToHorizontal, horizontal: true });
|
|
1182
1182
|
useSmoothWheel(viewportRef, {
|
|
1183
1183
|
enabled: smooth && !wheelToHorizontal,
|
|
@@ -1705,6 +1705,86 @@ function AvatarProfilePhoto({
|
|
|
1705
1705
|
}
|
|
1706
1706
|
);
|
|
1707
1707
|
}
|
|
1708
|
+
var TooltipCreateHandle = Tooltip$1.createHandle;
|
|
1709
|
+
var TooltipProvider = Tooltip$1.Provider;
|
|
1710
|
+
var Tooltip = Tooltip$1.Root;
|
|
1711
|
+
function TooltipTrigger(props) {
|
|
1712
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
1713
|
+
}
|
|
1714
|
+
function TooltipTitle({
|
|
1715
|
+
className,
|
|
1716
|
+
...props
|
|
1717
|
+
}) {
|
|
1718
|
+
return /* @__PURE__ */ jsx(
|
|
1719
|
+
"p",
|
|
1720
|
+
{
|
|
1721
|
+
"data-slot": "tooltip-title",
|
|
1722
|
+
className: cn("font-medium leading-snug", className),
|
|
1723
|
+
...props
|
|
1724
|
+
}
|
|
1725
|
+
);
|
|
1726
|
+
}
|
|
1727
|
+
function TooltipDescription({
|
|
1728
|
+
className,
|
|
1729
|
+
...props
|
|
1730
|
+
}) {
|
|
1731
|
+
return /* @__PURE__ */ jsx(
|
|
1732
|
+
"p",
|
|
1733
|
+
{
|
|
1734
|
+
"data-slot": "tooltip-description",
|
|
1735
|
+
className: cn("text-muted-foreground leading-snug", className),
|
|
1736
|
+
...props
|
|
1737
|
+
}
|
|
1738
|
+
);
|
|
1739
|
+
}
|
|
1740
|
+
function TooltipPopup({
|
|
1741
|
+
className,
|
|
1742
|
+
align = "center",
|
|
1743
|
+
sideOffset = 4,
|
|
1744
|
+
side = "top",
|
|
1745
|
+
arrow = false,
|
|
1746
|
+
children,
|
|
1747
|
+
...props
|
|
1748
|
+
}) {
|
|
1749
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
1750
|
+
Tooltip$1.Positioner,
|
|
1751
|
+
{
|
|
1752
|
+
align,
|
|
1753
|
+
className: "z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] data-instant:transition-none",
|
|
1754
|
+
"data-slot": "tooltip-positioner",
|
|
1755
|
+
side,
|
|
1756
|
+
sideOffset: arrow ? sideOffset + 5 : sideOffset,
|
|
1757
|
+
children: /* @__PURE__ */ jsxs(
|
|
1758
|
+
Tooltip$1.Popup,
|
|
1759
|
+
{
|
|
1760
|
+
className: cn(
|
|
1761
|
+
"relative flex h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) text-balance rounded-md border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs shadow-md/5 transition-[width,height,scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 data-instant:duration-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]",
|
|
1762
|
+
className
|
|
1763
|
+
),
|
|
1764
|
+
"data-slot": "tooltip-popup",
|
|
1765
|
+
...props,
|
|
1766
|
+
children: [
|
|
1767
|
+
/* @__PURE__ */ jsx(
|
|
1768
|
+
Tooltip$1.Viewport,
|
|
1769
|
+
{
|
|
1770
|
+
className: "relative size-full overflow-clip px-(--viewport-inline-padding) py-1 [--viewport-inline-padding:--spacing(2)] data-instant:transition-none **:data-current:data-ending-style:opacity-0 **:data-current:data-starting-style:opacity-0 **:data-previous:data-ending-style:opacity-0 **:data-previous:data-starting-style:opacity-0 **:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:truncate **:data-current:opacity-100 **:data-previous:opacity-100 **:data-current:transition-opacity **:data-previous:transition-opacity",
|
|
1771
|
+
"data-slot": "tooltip-viewport",
|
|
1772
|
+
children
|
|
1773
|
+
}
|
|
1774
|
+
),
|
|
1775
|
+
arrow && /* @__PURE__ */ jsx(
|
|
1776
|
+
Tooltip$1.Arrow,
|
|
1777
|
+
{
|
|
1778
|
+
"data-slot": "tooltip-arrow",
|
|
1779
|
+
className: "absolute block size-2.5 bg-popover data-[side=top]:[clip-path:polygon(0%_0%,100%_0%,50%_100%)] data-[side=bottom]:[clip-path:polygon(50%_0%,0%_100%,100%_100%)] data-[side=left]:[clip-path:polygon(0%_0%,100%_50%,0%_100%)] data-[side=right]:[clip-path:polygon(100%_0%,0%_50%,100%_100%)]"
|
|
1780
|
+
}
|
|
1781
|
+
)
|
|
1782
|
+
]
|
|
1783
|
+
}
|
|
1784
|
+
)
|
|
1785
|
+
}
|
|
1786
|
+
) });
|
|
1787
|
+
}
|
|
1708
1788
|
var avatarGroupVariants = cva(
|
|
1709
1789
|
// Each child gets a ring in the page color so overlapping avatars stay
|
|
1710
1790
|
// visually separated; hover lifts one to the front.
|
|
@@ -1726,12 +1806,13 @@ function AvatarGroup({
|
|
|
1726
1806
|
max,
|
|
1727
1807
|
size = "sm",
|
|
1728
1808
|
overlap,
|
|
1809
|
+
showNameOnHover = false,
|
|
1729
1810
|
children,
|
|
1730
1811
|
...props
|
|
1731
1812
|
}) {
|
|
1732
1813
|
const shown = items && max ? items.slice(0, max) : items;
|
|
1733
1814
|
const overflow = items && max ? items.length - max : 0;
|
|
1734
|
-
|
|
1815
|
+
const group = /* @__PURE__ */ jsxs(
|
|
1735
1816
|
"div",
|
|
1736
1817
|
{
|
|
1737
1818
|
className: cn(avatarGroupVariants({ overlap }), className),
|
|
@@ -1739,16 +1820,38 @@ function AvatarGroup({
|
|
|
1739
1820
|
role: "group",
|
|
1740
1821
|
...props,
|
|
1741
1822
|
children: [
|
|
1742
|
-
items ? shown?.map((item, i) =>
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1823
|
+
items ? shown?.map((item, i) => {
|
|
1824
|
+
const label = item.name ?? item.alt;
|
|
1825
|
+
const avatar = /* @__PURE__ */ jsx(
|
|
1826
|
+
Avatar,
|
|
1827
|
+
{
|
|
1828
|
+
alt: item.alt,
|
|
1829
|
+
initials: item.initials,
|
|
1830
|
+
size,
|
|
1831
|
+
src: item.src
|
|
1832
|
+
}
|
|
1833
|
+
);
|
|
1834
|
+
if (!(showNameOnHover && label)) {
|
|
1835
|
+
return /* @__PURE__ */ jsx(Avatar, { alt: item.alt, initials: item.initials, size, src: item.src }, i);
|
|
1836
|
+
}
|
|
1837
|
+
return (
|
|
1838
|
+
// The span wrapper is the group's direct child, so it carries the
|
|
1839
|
+
// ring/overlap styling; the tooltip anchors to it (Base UI needs a
|
|
1840
|
+
// ref-able host, which the Avatar fn component doesn't forward).
|
|
1841
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: order is stable
|
|
1842
|
+
/* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
1843
|
+
/* @__PURE__ */ jsx(
|
|
1844
|
+
TooltipTrigger,
|
|
1845
|
+
{
|
|
1846
|
+
className: "inline-flex cursor-default",
|
|
1847
|
+
render: /* @__PURE__ */ jsx("span", {}),
|
|
1848
|
+
children: avatar
|
|
1849
|
+
}
|
|
1850
|
+
),
|
|
1851
|
+
/* @__PURE__ */ jsx(TooltipPopup, { children: label })
|
|
1852
|
+
] }, i)
|
|
1853
|
+
);
|
|
1854
|
+
}) : children,
|
|
1752
1855
|
overflow > 0 ? /* @__PURE__ */ jsxs(
|
|
1753
1856
|
"span",
|
|
1754
1857
|
{
|
|
@@ -1769,6 +1872,10 @@ function AvatarGroup({
|
|
|
1769
1872
|
]
|
|
1770
1873
|
}
|
|
1771
1874
|
);
|
|
1875
|
+
if (showNameOnHover) {
|
|
1876
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { delay: 150, closeDelay: 0, children: group });
|
|
1877
|
+
}
|
|
1878
|
+
return group;
|
|
1772
1879
|
}
|
|
1773
1880
|
function AnimatedCounter({
|
|
1774
1881
|
value,
|
|
@@ -2474,9 +2581,9 @@ function CardFooter({
|
|
|
2474
2581
|
render
|
|
2475
2582
|
});
|
|
2476
2583
|
}
|
|
2477
|
-
var CarouselContext =
|
|
2584
|
+
var CarouselContext = React19.createContext(null);
|
|
2478
2585
|
function useCarousel() {
|
|
2479
|
-
const context =
|
|
2586
|
+
const context = React19.useContext(CarouselContext);
|
|
2480
2587
|
if (!context) {
|
|
2481
2588
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
2482
2589
|
}
|
|
@@ -2499,20 +2606,20 @@ function Carousel({
|
|
|
2499
2606
|
},
|
|
2500
2607
|
plugins
|
|
2501
2608
|
);
|
|
2502
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
2503
|
-
const [canScrollNext, setCanScrollNext] =
|
|
2504
|
-
const onSelect =
|
|
2609
|
+
const [canScrollPrev, setCanScrollPrev] = React19.useState(false);
|
|
2610
|
+
const [canScrollNext, setCanScrollNext] = React19.useState(false);
|
|
2611
|
+
const onSelect = React19.useCallback((api2) => {
|
|
2505
2612
|
if (!api2) return;
|
|
2506
2613
|
setCanScrollPrev(api2.canScrollPrev());
|
|
2507
2614
|
setCanScrollNext(api2.canScrollNext());
|
|
2508
2615
|
}, []);
|
|
2509
|
-
const scrollPrev =
|
|
2616
|
+
const scrollPrev = React19.useCallback(() => {
|
|
2510
2617
|
api?.scrollPrev();
|
|
2511
2618
|
}, [api]);
|
|
2512
|
-
const scrollNext =
|
|
2619
|
+
const scrollNext = React19.useCallback(() => {
|
|
2513
2620
|
api?.scrollNext();
|
|
2514
2621
|
}, [api]);
|
|
2515
|
-
const handleKeyDown =
|
|
2622
|
+
const handleKeyDown = React19.useCallback(
|
|
2516
2623
|
(event) => {
|
|
2517
2624
|
if (event.key === "ArrowLeft") {
|
|
2518
2625
|
event.preventDefault();
|
|
@@ -2524,11 +2631,11 @@ function Carousel({
|
|
|
2524
2631
|
},
|
|
2525
2632
|
[scrollPrev, scrollNext]
|
|
2526
2633
|
);
|
|
2527
|
-
|
|
2634
|
+
React19.useEffect(() => {
|
|
2528
2635
|
if (!api || !setApi) return;
|
|
2529
2636
|
setApi(api);
|
|
2530
2637
|
}, [api, setApi]);
|
|
2531
|
-
|
|
2638
|
+
React19.useEffect(() => {
|
|
2532
2639
|
if (!api) return;
|
|
2533
2640
|
onSelect(api);
|
|
2534
2641
|
api.on("reInit", onSelect);
|
|
@@ -2670,9 +2777,9 @@ function CarouselNext({
|
|
|
2670
2777
|
);
|
|
2671
2778
|
}
|
|
2672
2779
|
var THEMES = { light: "", dark: '[data-theme="dark"]' };
|
|
2673
|
-
var ChartContext =
|
|
2780
|
+
var ChartContext = React19.createContext(null);
|
|
2674
2781
|
function useChart() {
|
|
2675
|
-
const context =
|
|
2782
|
+
const context = React19.useContext(ChartContext);
|
|
2676
2783
|
if (!context) {
|
|
2677
2784
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
2678
2785
|
}
|
|
@@ -2685,7 +2792,7 @@ function ChartContainer({
|
|
|
2685
2792
|
config,
|
|
2686
2793
|
...props
|
|
2687
2794
|
}) {
|
|
2688
|
-
const uniqueId =
|
|
2795
|
+
const uniqueId = React19.useId();
|
|
2689
2796
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
2690
2797
|
return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
|
|
2691
2798
|
"div",
|
|
@@ -2746,7 +2853,7 @@ function ChartTooltipContent({
|
|
|
2746
2853
|
labelKey
|
|
2747
2854
|
}) {
|
|
2748
2855
|
const { config } = useChart();
|
|
2749
|
-
const tooltipLabel =
|
|
2856
|
+
const tooltipLabel = React19.useMemo(() => {
|
|
2750
2857
|
if (hideLabel || !payload?.length) {
|
|
2751
2858
|
return null;
|
|
2752
2859
|
}
|
|
@@ -2959,15 +3066,15 @@ function ChatMessages({
|
|
|
2959
3066
|
children,
|
|
2960
3067
|
...props
|
|
2961
3068
|
}) {
|
|
2962
|
-
const viewportRef =
|
|
2963
|
-
const pinnedRef =
|
|
2964
|
-
const handleScroll =
|
|
3069
|
+
const viewportRef = React19.useRef(null);
|
|
3070
|
+
const pinnedRef = React19.useRef(true);
|
|
3071
|
+
const handleScroll = React19.useCallback(() => {
|
|
2965
3072
|
const viewport = viewportRef.current;
|
|
2966
3073
|
if (!viewport) return;
|
|
2967
3074
|
const distanceFromBottom = viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight;
|
|
2968
3075
|
pinnedRef.current = distanceFromBottom < 48;
|
|
2969
3076
|
}, []);
|
|
2970
|
-
|
|
3077
|
+
React19.useEffect(() => {
|
|
2971
3078
|
const viewport = viewportRef.current;
|
|
2972
3079
|
if (!viewport || !autoScroll || !pinnedRef.current) return;
|
|
2973
3080
|
viewport.scrollTop = viewport.scrollHeight;
|
|
@@ -3215,13 +3322,13 @@ function ChatInput({
|
|
|
3215
3322
|
value,
|
|
3216
3323
|
...props
|
|
3217
3324
|
}) {
|
|
3218
|
-
const textareaRef =
|
|
3219
|
-
const submit =
|
|
3325
|
+
const textareaRef = React19.useRef(null);
|
|
3326
|
+
const submit = React19.useCallback(() => {
|
|
3220
3327
|
const trimmed = value.trim();
|
|
3221
3328
|
if (!trimmed || disabled) return;
|
|
3222
3329
|
onSubmit(trimmed);
|
|
3223
3330
|
}, [disabled, onSubmit, value]);
|
|
3224
|
-
|
|
3331
|
+
React19.useEffect(() => {
|
|
3225
3332
|
const textarea = textareaRef.current;
|
|
3226
3333
|
if (!textarea) return;
|
|
3227
3334
|
textarea.style.height = "auto";
|
|
@@ -3280,6 +3387,45 @@ function ChatInput({
|
|
|
3280
3387
|
}
|
|
3281
3388
|
);
|
|
3282
3389
|
}
|
|
3390
|
+
var LABEL_TONE = {
|
|
3391
|
+
default: "text-muted-foreground",
|
|
3392
|
+
summary: "text-muted-foreground",
|
|
3393
|
+
unread: "text-primary"
|
|
3394
|
+
};
|
|
3395
|
+
var LINE_TONE = {
|
|
3396
|
+
default: "bg-border",
|
|
3397
|
+
summary: "bg-border",
|
|
3398
|
+
unread: "bg-primary/40"
|
|
3399
|
+
};
|
|
3400
|
+
function ChatDivider({ label, icon, variant = "default", className, ...props }) {
|
|
3401
|
+
return /* @__PURE__ */ jsxs(
|
|
3402
|
+
"div",
|
|
3403
|
+
{
|
|
3404
|
+
className: cn("flex w-full items-center gap-3 py-1 select-none", className),
|
|
3405
|
+
"data-slot": "chat-divider",
|
|
3406
|
+
"data-variant": variant,
|
|
3407
|
+
role: "separator",
|
|
3408
|
+
...props,
|
|
3409
|
+
children: [
|
|
3410
|
+
/* @__PURE__ */ jsx("span", { className: cn("h-px flex-1", LINE_TONE[variant]) }),
|
|
3411
|
+
label != null ? /* @__PURE__ */ jsxs(
|
|
3412
|
+
"span",
|
|
3413
|
+
{
|
|
3414
|
+
className: cn(
|
|
3415
|
+
"inline-flex items-center gap-1.5 font-medium text-xs whitespace-nowrap",
|
|
3416
|
+
LABEL_TONE[variant]
|
|
3417
|
+
),
|
|
3418
|
+
children: [
|
|
3419
|
+
icon ? /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0 items-center", children: icon }) : null,
|
|
3420
|
+
label
|
|
3421
|
+
]
|
|
3422
|
+
}
|
|
3423
|
+
) : null,
|
|
3424
|
+
/* @__PURE__ */ jsx("span", { className: cn("h-px flex-1", LINE_TONE[variant]) })
|
|
3425
|
+
]
|
|
3426
|
+
}
|
|
3427
|
+
);
|
|
3428
|
+
}
|
|
3283
3429
|
function Collapsible({ ...props }) {
|
|
3284
3430
|
return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
|
|
3285
3431
|
}
|
|
@@ -3312,12 +3458,12 @@ function CollapsiblePanel({
|
|
|
3312
3458
|
}
|
|
3313
3459
|
);
|
|
3314
3460
|
}
|
|
3315
|
-
var ComboboxContext =
|
|
3461
|
+
var ComboboxContext = React19.createContext({
|
|
3316
3462
|
chipsRef: null,
|
|
3317
3463
|
multiple: false
|
|
3318
3464
|
});
|
|
3319
3465
|
function Combobox(props) {
|
|
3320
|
-
const chipsRef =
|
|
3466
|
+
const chipsRef = React19.useRef(null);
|
|
3321
3467
|
return /* @__PURE__ */ jsx(ComboboxContext.Provider, { value: { chipsRef, multiple: !!props.multiple }, children: /* @__PURE__ */ jsx(
|
|
3322
3468
|
Combobox$1.Root,
|
|
3323
3469
|
{
|
|
@@ -3333,7 +3479,7 @@ function ComboboxInput({
|
|
|
3333
3479
|
size,
|
|
3334
3480
|
...props
|
|
3335
3481
|
}) {
|
|
3336
|
-
const { multiple } =
|
|
3482
|
+
const { multiple } = React19.useContext(ComboboxContext);
|
|
3337
3483
|
const sizeValue = size ?? "default";
|
|
3338
3484
|
if (multiple) {
|
|
3339
3485
|
return /* @__PURE__ */ jsx(
|
|
@@ -3422,7 +3568,7 @@ function ComboboxPopup({
|
|
|
3422
3568
|
sideOffset = 4,
|
|
3423
3569
|
...props
|
|
3424
3570
|
}) {
|
|
3425
|
-
const { chipsRef } =
|
|
3571
|
+
const { chipsRef } = React19.useContext(ComboboxContext);
|
|
3426
3572
|
return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
3427
3573
|
Combobox$1.Positioner,
|
|
3428
3574
|
{
|
|
@@ -3593,7 +3739,7 @@ function ComboboxChips({
|
|
|
3593
3739
|
startAddon,
|
|
3594
3740
|
...props
|
|
3595
3741
|
}) {
|
|
3596
|
-
const { chipsRef } =
|
|
3742
|
+
const { chipsRef } = React19.useContext(ComboboxContext);
|
|
3597
3743
|
return /* @__PURE__ */ jsxs(
|
|
3598
3744
|
Combobox$1.Chips,
|
|
3599
3745
|
{
|
|
@@ -3965,6 +4111,97 @@ function ConfettiButtonComponent({ options, children, onClick, ...props }) {
|
|
|
3965
4111
|
}
|
|
3966
4112
|
ConfettiButtonComponent.displayName = "ConfettiButton";
|
|
3967
4113
|
var ConfettiButton = ConfettiButtonComponent;
|
|
4114
|
+
var STATE_COLOR = {
|
|
4115
|
+
ok: "text-muted-foreground",
|
|
4116
|
+
warn: "text-amber-500",
|
|
4117
|
+
summarizing: "text-sky-500",
|
|
4118
|
+
full: "text-destructive"
|
|
4119
|
+
};
|
|
4120
|
+
function deriveState(pct, warnAt, summarizeAt, lockAt) {
|
|
4121
|
+
if (pct >= lockAt) return "full";
|
|
4122
|
+
if (pct >= summarizeAt) return "summarizing";
|
|
4123
|
+
if (pct >= warnAt) return "warn";
|
|
4124
|
+
return "ok";
|
|
4125
|
+
}
|
|
4126
|
+
function ContextMeter({
|
|
4127
|
+
used,
|
|
4128
|
+
budget,
|
|
4129
|
+
pct,
|
|
4130
|
+
state,
|
|
4131
|
+
warnAt = 0.75,
|
|
4132
|
+
summarizeAt = 0.85,
|
|
4133
|
+
lockAt = 0.98,
|
|
4134
|
+
size = 24,
|
|
4135
|
+
strokeWidth = 2.5,
|
|
4136
|
+
showLabel = false,
|
|
4137
|
+
className,
|
|
4138
|
+
...props
|
|
4139
|
+
}) {
|
|
4140
|
+
const fraction = Math.max(
|
|
4141
|
+
0,
|
|
4142
|
+
Math.min(1, pct ?? (budget ? (used ?? 0) / budget : 0))
|
|
4143
|
+
);
|
|
4144
|
+
const resolvedState = state ?? deriveState(fraction, warnAt, summarizeAt, lockAt);
|
|
4145
|
+
const percent = Math.round(fraction * 100);
|
|
4146
|
+
const radius = (size - strokeWidth) / 2;
|
|
4147
|
+
const circumference = 2 * Math.PI * radius;
|
|
4148
|
+
const dash = circumference * fraction;
|
|
4149
|
+
const center = size / 2;
|
|
4150
|
+
return /* @__PURE__ */ jsxs(
|
|
4151
|
+
"span",
|
|
4152
|
+
{
|
|
4153
|
+
className: cn("relative inline-flex items-center justify-center", STATE_COLOR[resolvedState]),
|
|
4154
|
+
"data-slot": "context-meter",
|
|
4155
|
+
"data-state": resolvedState,
|
|
4156
|
+
style: { width: size, height: size },
|
|
4157
|
+
children: [
|
|
4158
|
+
/* @__PURE__ */ jsxs(
|
|
4159
|
+
"svg",
|
|
4160
|
+
{
|
|
4161
|
+
width: size,
|
|
4162
|
+
height: size,
|
|
4163
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
4164
|
+
role: "meter",
|
|
4165
|
+
"aria-valuemin": 0,
|
|
4166
|
+
"aria-valuemax": 100,
|
|
4167
|
+
"aria-valuenow": percent,
|
|
4168
|
+
"aria-label": `Context ${percent}% used`,
|
|
4169
|
+
className: cn("-rotate-90", className),
|
|
4170
|
+
...props,
|
|
4171
|
+
children: [
|
|
4172
|
+
/* @__PURE__ */ jsx(
|
|
4173
|
+
"circle",
|
|
4174
|
+
{
|
|
4175
|
+
cx: center,
|
|
4176
|
+
cy: center,
|
|
4177
|
+
r: radius,
|
|
4178
|
+
fill: "none",
|
|
4179
|
+
strokeWidth,
|
|
4180
|
+
className: "stroke-muted"
|
|
4181
|
+
}
|
|
4182
|
+
),
|
|
4183
|
+
/* @__PURE__ */ jsx(
|
|
4184
|
+
"circle",
|
|
4185
|
+
{
|
|
4186
|
+
cx: center,
|
|
4187
|
+
cy: center,
|
|
4188
|
+
r: radius,
|
|
4189
|
+
fill: "none",
|
|
4190
|
+
strokeWidth,
|
|
4191
|
+
strokeLinecap: "round",
|
|
4192
|
+
stroke: "currentColor",
|
|
4193
|
+
strokeDasharray: `${dash} ${circumference}`,
|
|
4194
|
+
className: "transition-[stroke-dasharray] duration-500 ease-out"
|
|
4195
|
+
}
|
|
4196
|
+
)
|
|
4197
|
+
]
|
|
4198
|
+
}
|
|
4199
|
+
),
|
|
4200
|
+
showLabel ? /* @__PURE__ */ jsx("span", { className: "absolute font-medium text-[0.5rem] text-foreground tabular-nums", children: percent }) : null
|
|
4201
|
+
]
|
|
4202
|
+
}
|
|
4203
|
+
);
|
|
4204
|
+
}
|
|
3968
4205
|
var BASE_WIDTH = 316;
|
|
3969
4206
|
var BASE_HEIGHT = 190;
|
|
3970
4207
|
var GLASS_FACE = "border border-white/30 bg-white/10 text-white backdrop-blur-md";
|
|
@@ -4407,7 +4644,7 @@ function TableCaption({
|
|
|
4407
4644
|
function formatCell(value) {
|
|
4408
4645
|
if (value === null || value === void 0 || value === "") return "\u2014";
|
|
4409
4646
|
if (typeof value === "boolean") return value ? "Yes" : "No";
|
|
4410
|
-
if (
|
|
4647
|
+
if (React19.isValidElement(value)) return value;
|
|
4411
4648
|
if (typeof value === "object") return JSON.stringify(value);
|
|
4412
4649
|
return String(value);
|
|
4413
4650
|
}
|
|
@@ -4421,9 +4658,9 @@ function DataTablePaged({
|
|
|
4421
4658
|
searchPlaceholder = "Filter results\u2026",
|
|
4422
4659
|
totalCount
|
|
4423
4660
|
}) {
|
|
4424
|
-
const [page, setPage] =
|
|
4425
|
-
const [query, setQuery] =
|
|
4426
|
-
const filteredRows =
|
|
4661
|
+
const [page, setPage] = React19.useState(1);
|
|
4662
|
+
const [query, setQuery] = React19.useState("");
|
|
4663
|
+
const filteredRows = React19.useMemo(() => {
|
|
4427
4664
|
const trimmed = query.trim().toLowerCase();
|
|
4428
4665
|
if (!trimmed) return rows;
|
|
4429
4666
|
return rows.filter(
|
|
@@ -5528,86 +5765,6 @@ function GroupSeparator({
|
|
|
5528
5765
|
}
|
|
5529
5766
|
);
|
|
5530
5767
|
}
|
|
5531
|
-
var TooltipCreateHandle = Tooltip.createHandle;
|
|
5532
|
-
var TooltipProvider = Tooltip.Provider;
|
|
5533
|
-
var Tooltip2 = Tooltip.Root;
|
|
5534
|
-
function TooltipTrigger(props) {
|
|
5535
|
-
return /* @__PURE__ */ jsx(Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
5536
|
-
}
|
|
5537
|
-
function TooltipTitle({
|
|
5538
|
-
className,
|
|
5539
|
-
...props
|
|
5540
|
-
}) {
|
|
5541
|
-
return /* @__PURE__ */ jsx(
|
|
5542
|
-
"p",
|
|
5543
|
-
{
|
|
5544
|
-
"data-slot": "tooltip-title",
|
|
5545
|
-
className: cn("font-medium leading-snug", className),
|
|
5546
|
-
...props
|
|
5547
|
-
}
|
|
5548
|
-
);
|
|
5549
|
-
}
|
|
5550
|
-
function TooltipDescription({
|
|
5551
|
-
className,
|
|
5552
|
-
...props
|
|
5553
|
-
}) {
|
|
5554
|
-
return /* @__PURE__ */ jsx(
|
|
5555
|
-
"p",
|
|
5556
|
-
{
|
|
5557
|
-
"data-slot": "tooltip-description",
|
|
5558
|
-
className: cn("text-muted-foreground leading-snug", className),
|
|
5559
|
-
...props
|
|
5560
|
-
}
|
|
5561
|
-
);
|
|
5562
|
-
}
|
|
5563
|
-
function TooltipPopup({
|
|
5564
|
-
className,
|
|
5565
|
-
align = "center",
|
|
5566
|
-
sideOffset = 4,
|
|
5567
|
-
side = "top",
|
|
5568
|
-
arrow = false,
|
|
5569
|
-
children,
|
|
5570
|
-
...props
|
|
5571
|
-
}) {
|
|
5572
|
-
return /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(
|
|
5573
|
-
Tooltip.Positioner,
|
|
5574
|
-
{
|
|
5575
|
-
align,
|
|
5576
|
-
className: "z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] data-instant:transition-none",
|
|
5577
|
-
"data-slot": "tooltip-positioner",
|
|
5578
|
-
side,
|
|
5579
|
-
sideOffset: arrow ? sideOffset + 5 : sideOffset,
|
|
5580
|
-
children: /* @__PURE__ */ jsxs(
|
|
5581
|
-
Tooltip.Popup,
|
|
5582
|
-
{
|
|
5583
|
-
className: cn(
|
|
5584
|
-
"relative flex h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) text-balance rounded-md border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs shadow-md/5 transition-[width,height,scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-md)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 data-instant:duration-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]",
|
|
5585
|
-
className
|
|
5586
|
-
),
|
|
5587
|
-
"data-slot": "tooltip-popup",
|
|
5588
|
-
...props,
|
|
5589
|
-
children: [
|
|
5590
|
-
/* @__PURE__ */ jsx(
|
|
5591
|
-
Tooltip.Viewport,
|
|
5592
|
-
{
|
|
5593
|
-
className: "relative size-full overflow-clip px-(--viewport-inline-padding) py-1 [--viewport-inline-padding:--spacing(2)] data-instant:transition-none **:data-current:data-ending-style:opacity-0 **:data-current:data-starting-style:opacity-0 **:data-previous:data-ending-style:opacity-0 **:data-previous:data-starting-style:opacity-0 **:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:truncate **:data-current:opacity-100 **:data-previous:opacity-100 **:data-current:transition-opacity **:data-previous:transition-opacity",
|
|
5594
|
-
"data-slot": "tooltip-viewport",
|
|
5595
|
-
children
|
|
5596
|
-
}
|
|
5597
|
-
),
|
|
5598
|
-
arrow && /* @__PURE__ */ jsx(
|
|
5599
|
-
Tooltip.Arrow,
|
|
5600
|
-
{
|
|
5601
|
-
"data-slot": "tooltip-arrow",
|
|
5602
|
-
className: "absolute block size-2.5 bg-popover data-[side=top]:[clip-path:polygon(0%_0%,100%_0%,50%_100%)] data-[side=bottom]:[clip-path:polygon(50%_0%,0%_100%,100%_100%)] data-[side=left]:[clip-path:polygon(0%_0%,100%_50%,0%_100%)] data-[side=right]:[clip-path:polygon(100%_0%,0%_50%,100%_100%)]"
|
|
5603
|
-
}
|
|
5604
|
-
)
|
|
5605
|
-
]
|
|
5606
|
-
}
|
|
5607
|
-
)
|
|
5608
|
-
}
|
|
5609
|
-
) });
|
|
5610
|
-
}
|
|
5611
5768
|
function HelpTip({
|
|
5612
5769
|
children,
|
|
5613
5770
|
title,
|
|
@@ -5620,7 +5777,7 @@ function HelpTip({
|
|
|
5620
5777
|
popupClassName,
|
|
5621
5778
|
arrow = false
|
|
5622
5779
|
}) {
|
|
5623
|
-
return /* @__PURE__ */ jsx(TooltipProvider, { delay, children: /* @__PURE__ */ jsxs(
|
|
5780
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { delay, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
5624
5781
|
/* @__PURE__ */ jsx(
|
|
5625
5782
|
TooltipTrigger,
|
|
5626
5783
|
{
|
|
@@ -5880,7 +6037,7 @@ function InputOTPSlot({
|
|
|
5880
6037
|
size,
|
|
5881
6038
|
...props
|
|
5882
6039
|
}) {
|
|
5883
|
-
const inputOTPContext =
|
|
6040
|
+
const inputOTPContext = React19.useContext(OTPInputContext);
|
|
5884
6041
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
5885
6042
|
return /* @__PURE__ */ jsxs(
|
|
5886
6043
|
"div",
|
|
@@ -6584,10 +6741,10 @@ function MultiSelect({
|
|
|
6584
6741
|
popupClassName,
|
|
6585
6742
|
sideOffset = 4
|
|
6586
6743
|
}) {
|
|
6587
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
6744
|
+
const [uncontrolledValue, setUncontrolledValue] = React19.useState(
|
|
6588
6745
|
defaultValue ?? []
|
|
6589
6746
|
);
|
|
6590
|
-
const [search, setSearch] =
|
|
6747
|
+
const [search, setSearch] = React19.useState("");
|
|
6591
6748
|
const isControlled = valueProp !== void 0;
|
|
6592
6749
|
const value = isControlled ? valueProp : uncontrolledValue;
|
|
6593
6750
|
const setValue = (next) => {
|
|
@@ -6731,8 +6888,8 @@ function MultiSelectSearch({
|
|
|
6731
6888
|
onChange,
|
|
6732
6889
|
placeholder
|
|
6733
6890
|
}) {
|
|
6734
|
-
const inputRef =
|
|
6735
|
-
|
|
6891
|
+
const inputRef = React19.useRef(null);
|
|
6892
|
+
React19.useEffect(() => {
|
|
6736
6893
|
const frame = requestAnimationFrame(() => inputRef.current?.focus());
|
|
6737
6894
|
return () => cancelAnimationFrame(frame);
|
|
6738
6895
|
}, []);
|
|
@@ -7223,8 +7380,8 @@ var qrCodeVariants = cva(
|
|
|
7223
7380
|
}
|
|
7224
7381
|
);
|
|
7225
7382
|
function QRCode({ className, size, value, options, ...props }) {
|
|
7226
|
-
const containerRef =
|
|
7227
|
-
|
|
7383
|
+
const containerRef = React19.useRef(null);
|
|
7384
|
+
React19.useEffect(() => {
|
|
7228
7385
|
const container = containerRef.current;
|
|
7229
7386
|
if (!container) return;
|
|
7230
7387
|
let disposed = false;
|
|
@@ -7752,8 +7909,8 @@ function SocialButton({
|
|
|
7752
7909
|
render
|
|
7753
7910
|
});
|
|
7754
7911
|
}
|
|
7755
|
-
var StepperContext =
|
|
7756
|
-
var StepperItemContext =
|
|
7912
|
+
var StepperContext = React19.createContext({ orientation: "horizontal", value: 1 });
|
|
7913
|
+
var StepperItemContext = React19.createContext({ state: "inactive", step: 1 });
|
|
7757
7914
|
function Stepper({
|
|
7758
7915
|
value = 1,
|
|
7759
7916
|
orientation = "horizontal",
|
|
@@ -7780,7 +7937,7 @@ function StepperItem({
|
|
|
7780
7937
|
className,
|
|
7781
7938
|
...props
|
|
7782
7939
|
}) {
|
|
7783
|
-
const { value } =
|
|
7940
|
+
const { value } = React19.useContext(StepperContext);
|
|
7784
7941
|
const state = completed || value > step ? "completed" : value === step ? "active" : "inactive";
|
|
7785
7942
|
return /* @__PURE__ */ jsx(StepperItemContext.Provider, { value: { state, step }, children: /* @__PURE__ */ jsx(
|
|
7786
7943
|
"div",
|
|
@@ -7819,7 +7976,7 @@ function StepperIndicator({
|
|
|
7819
7976
|
children,
|
|
7820
7977
|
...props
|
|
7821
7978
|
}) {
|
|
7822
|
-
const { step } =
|
|
7979
|
+
const { step } = React19.useContext(StepperItemContext);
|
|
7823
7980
|
return /* @__PURE__ */ jsxs(
|
|
7824
7981
|
"span",
|
|
7825
7982
|
{
|
|
@@ -7971,7 +8128,7 @@ function Toggle({
|
|
|
7971
8128
|
}
|
|
7972
8129
|
);
|
|
7973
8130
|
}
|
|
7974
|
-
var ToggleGroupContext =
|
|
8131
|
+
var ToggleGroupContext = React19.createContext({
|
|
7975
8132
|
size: "default",
|
|
7976
8133
|
variant: "default"
|
|
7977
8134
|
});
|
|
@@ -8008,7 +8165,7 @@ function Toggle2({
|
|
|
8008
8165
|
size,
|
|
8009
8166
|
...props
|
|
8010
8167
|
}) {
|
|
8011
|
-
const context =
|
|
8168
|
+
const context = React19.useContext(ToggleGroupContext);
|
|
8012
8169
|
const resolvedVariant = context.variant || variant;
|
|
8013
8170
|
const resolvedSize = context.size || size;
|
|
8014
8171
|
return /* @__PURE__ */ jsx(
|
|
@@ -8268,7 +8425,7 @@ function Skeleton({ className, ...props }) {
|
|
|
8268
8425
|
}
|
|
8269
8426
|
);
|
|
8270
8427
|
}
|
|
8271
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
8428
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React19.useLayoutEffect : React19.useEffect;
|
|
8272
8429
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
8273
8430
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
8274
8431
|
var SIDEBAR_WIDTH_LG = "18.5rem";
|
|
@@ -8276,9 +8433,9 @@ var SIDEBAR_WIDTH_MD = "14.5rem";
|
|
|
8276
8433
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
8277
8434
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
8278
8435
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
8279
|
-
var SidebarContext =
|
|
8436
|
+
var SidebarContext = React19.createContext(null);
|
|
8280
8437
|
function useSidebar() {
|
|
8281
|
-
const context =
|
|
8438
|
+
const context = React19.useContext(SidebarContext);
|
|
8282
8439
|
if (!context) {
|
|
8283
8440
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
8284
8441
|
}
|
|
@@ -8294,7 +8451,7 @@ function SidebarProvider({
|
|
|
8294
8451
|
children,
|
|
8295
8452
|
...props
|
|
8296
8453
|
}) {
|
|
8297
|
-
const [isMobile, setIsMobile] =
|
|
8454
|
+
const [isMobile, setIsMobile] = React19.useState(false);
|
|
8298
8455
|
useIsomorphicLayoutEffect(() => {
|
|
8299
8456
|
const mql = window.matchMedia("(max-width: 47.999rem)");
|
|
8300
8457
|
const onChange = () => setIsMobile(mql.matches);
|
|
@@ -8302,10 +8459,10 @@ function SidebarProvider({
|
|
|
8302
8459
|
mql.addEventListener("change", onChange);
|
|
8303
8460
|
return () => mql.removeEventListener("change", onChange);
|
|
8304
8461
|
}, []);
|
|
8305
|
-
const [openMobile, setOpenMobile] =
|
|
8306
|
-
const [_open, _setOpen] =
|
|
8462
|
+
const [openMobile, setOpenMobile] = React19.useState(false);
|
|
8463
|
+
const [_open, _setOpen] = React19.useState(defaultOpen);
|
|
8307
8464
|
const open = openProp ?? _open;
|
|
8308
|
-
const setOpen =
|
|
8465
|
+
const setOpen = React19.useCallback(
|
|
8309
8466
|
(value) => {
|
|
8310
8467
|
const openState = typeof value === "function" ? value(open) : value;
|
|
8311
8468
|
if (setOpenProp) {
|
|
@@ -8333,10 +8490,10 @@ function SidebarProvider({
|
|
|
8333
8490
|
} catch {
|
|
8334
8491
|
}
|
|
8335
8492
|
}, [persistKey, openProp]);
|
|
8336
|
-
const toggleSidebar =
|
|
8493
|
+
const toggleSidebar = React19.useCallback(() => {
|
|
8337
8494
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
8338
8495
|
}, [isMobile, setOpen]);
|
|
8339
|
-
|
|
8496
|
+
React19.useEffect(() => {
|
|
8340
8497
|
const handleKeyDown = (event) => {
|
|
8341
8498
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
8342
8499
|
event.preventDefault();
|
|
@@ -8347,7 +8504,7 @@ function SidebarProvider({
|
|
|
8347
8504
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
8348
8505
|
}, [toggleSidebar]);
|
|
8349
8506
|
const state = open ? "expanded" : "collapsed";
|
|
8350
|
-
const contextValue =
|
|
8507
|
+
const contextValue = React19.useMemo(
|
|
8351
8508
|
() => ({
|
|
8352
8509
|
isMobile,
|
|
8353
8510
|
open,
|
|
@@ -8742,7 +8899,7 @@ function SidebarMenuButton({
|
|
|
8742
8899
|
children: tooltip
|
|
8743
8900
|
};
|
|
8744
8901
|
}
|
|
8745
|
-
return /* @__PURE__ */ jsxs(
|
|
8902
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
8746
8903
|
/* @__PURE__ */ jsx(
|
|
8747
8904
|
TooltipTrigger,
|
|
8748
8905
|
{
|
|
@@ -8813,7 +8970,7 @@ function SidebarMenuSkeleton({
|
|
|
8813
8970
|
showIcon = false,
|
|
8814
8971
|
...props
|
|
8815
8972
|
}) {
|
|
8816
|
-
const width =
|
|
8973
|
+
const width = React19.useMemo(() => {
|
|
8817
8974
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
8818
8975
|
}, []);
|
|
8819
8976
|
return /* @__PURE__ */ jsxs(
|
|
@@ -8912,7 +9069,7 @@ function Slider({
|
|
|
8912
9069
|
formatLabel = (labelValue) => String(labelValue),
|
|
8913
9070
|
...props
|
|
8914
9071
|
}) {
|
|
8915
|
-
const _values =
|
|
9072
|
+
const _values = React19.useMemo(() => {
|
|
8916
9073
|
if (value !== void 0) {
|
|
8917
9074
|
return Array.isArray(value) ? value : [value];
|
|
8918
9075
|
}
|
|
@@ -9616,7 +9773,7 @@ function TBtn({ icon, label, onClick, isActive, disabled, compact, tooltip }) {
|
|
|
9616
9773
|
compact ? "size-6 [&_svg]:size-3" : "size-7 [&_svg]:size-3.5"
|
|
9617
9774
|
);
|
|
9618
9775
|
if (tooltip) {
|
|
9619
|
-
return /* @__PURE__ */ jsxs(
|
|
9776
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
9620
9777
|
/* @__PURE__ */ jsx(
|
|
9621
9778
|
TooltipTrigger,
|
|
9622
9779
|
{
|
|
@@ -10304,30 +10461,30 @@ function VideoPlayer({
|
|
|
10304
10461
|
loop = false,
|
|
10305
10462
|
...props
|
|
10306
10463
|
}) {
|
|
10307
|
-
const containerRef =
|
|
10308
|
-
const videoRef =
|
|
10309
|
-
const hideTimerRef =
|
|
10310
|
-
const [playing, setPlaying] =
|
|
10311
|
-
const [currentTime, setCurrentTime] =
|
|
10312
|
-
const [duration, setDuration] =
|
|
10313
|
-
const [muted, setMuted] =
|
|
10314
|
-
const [fullscreen, setFullscreen] =
|
|
10315
|
-
const [controlsVisible, setControlsVisible] =
|
|
10464
|
+
const containerRef = React19.useRef(null);
|
|
10465
|
+
const videoRef = React19.useRef(null);
|
|
10466
|
+
const hideTimerRef = React19.useRef(null);
|
|
10467
|
+
const [playing, setPlaying] = React19.useState(false);
|
|
10468
|
+
const [currentTime, setCurrentTime] = React19.useState(0);
|
|
10469
|
+
const [duration, setDuration] = React19.useState(0);
|
|
10470
|
+
const [muted, setMuted] = React19.useState(false);
|
|
10471
|
+
const [fullscreen, setFullscreen] = React19.useState(false);
|
|
10472
|
+
const [controlsVisible, setControlsVisible] = React19.useState(true);
|
|
10316
10473
|
const clearHideTimer = () => {
|
|
10317
10474
|
if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
|
|
10318
10475
|
};
|
|
10319
|
-
const scheduleHide =
|
|
10476
|
+
const scheduleHide = React19.useCallback(() => {
|
|
10320
10477
|
clearHideTimer();
|
|
10321
10478
|
hideTimerRef.current = setTimeout(() => setControlsVisible(false), 2500);
|
|
10322
10479
|
}, []);
|
|
10323
|
-
|
|
10324
|
-
|
|
10480
|
+
React19.useEffect(() => () => clearHideTimer(), []);
|
|
10481
|
+
React19.useEffect(() => {
|
|
10325
10482
|
if (!playing) {
|
|
10326
10483
|
clearHideTimer();
|
|
10327
10484
|
setControlsVisible(true);
|
|
10328
10485
|
}
|
|
10329
10486
|
}, [playing]);
|
|
10330
|
-
|
|
10487
|
+
React19.useEffect(() => {
|
|
10331
10488
|
const handler = () => setFullscreen(!!document.fullscreenElement);
|
|
10332
10489
|
document.addEventListener("fullscreenchange", handler);
|
|
10333
10490
|
return () => document.removeEventListener("fullscreenchange", handler);
|
|
@@ -10611,7 +10768,7 @@ function DashboardTopbar({
|
|
|
10611
10768
|
),
|
|
10612
10769
|
/* @__PURE__ */ jsxs("div", { className: "ml-auto flex flex-shrink-0 items-center gap-2 sm:gap-3", children: [
|
|
10613
10770
|
actions,
|
|
10614
|
-
showThemeToggle ? /* @__PURE__ */ jsxs(
|
|
10771
|
+
showThemeToggle ? /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
10615
10772
|
/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx("span", { className: "inline-flex" }), children: /* @__PURE__ */ jsx(
|
|
10616
10773
|
AnimatedThemeToggler,
|
|
10617
10774
|
{
|
|
@@ -10622,7 +10779,7 @@ function DashboardTopbar({
|
|
|
10622
10779
|
) }),
|
|
10623
10780
|
/* @__PURE__ */ jsx(TooltipPopup, { children: "Toggle light / dark theme" })
|
|
10624
10781
|
] }) : null,
|
|
10625
|
-
supportHref ? /* @__PURE__ */ jsxs(
|
|
10782
|
+
supportHref ? /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
10626
10783
|
/* @__PURE__ */ jsx(
|
|
10627
10784
|
TooltipTrigger,
|
|
10628
10785
|
{
|
|
@@ -11041,6 +11198,6 @@ function useIs2xl({
|
|
|
11041
11198
|
return is2xl;
|
|
11042
11199
|
}
|
|
11043
11200
|
|
|
11044
|
-
export { Accordion, AccordionPanel as AccordionContent, AccordionItem, AccordionPanel, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogPopup, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AlertTitle, AnchoredToastProvider, AnimatedCounter, AnimatedThemeToggler, AppGalleryLogoIcon, AppStoreButton, AppleLogoIcon, AspectRatio, AuroraOrb, AuroraText, Autocomplete, AutocompleteClear, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteItem, AutocompleteList, AutocompletePopup, AutocompleteRow, AutocompleteSeparator, AutocompleteStatus, AutocompleteTrigger, AutocompleteValue, Avatar, AvatarAddButton, AvatarCompanyIcon, AvatarFallback, AvatarGroup, AvatarImage, AvatarLabelGroup, AvatarProfilePhoto, AvatarUploadBase, Badge, BadgeAvatar, BadgeCloseButton, BadgeDot, BadgeFlag, BadgeGroup, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Group as ButtonGroup, GroupSeparator as ButtonGroupSeparator, GroupText as ButtonGroupText, CONFETTI_COLORS, Card, CardAction, CardPanel as CardContent, CardDescription, CardFooter, CardFrame, CardFrameDescription, CardFrameFooter, CardFrameHeader, CardFrameTitle, CardHeader, CardPanel, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Chat, ChatEmptyState, ChatEmptyStateDescription, ChatEmptyStateIcon, ChatEmptyStateTitle, ChatHeader, ChatHeaderActions, ChatHeaderAvatar, ChatHeaderTitle, ChatInput, ChatMessage, ChatMessageBubble, ChatMessages, ChatSuggestion, ChatSuggestions, ChatToolCard, ChatToolCardActions, ChatToolCardHeader, ChatToolChip, ChatTypingIndicator, Collapsible, CollapsiblePanel as CollapsibleContent, CollapsiblePanel, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandCollection, CommandCreateHandle, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut, Confetti, ConfettiButton, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CreditCard, DashboardHeader, DashboardPanel, DashboardTopbar, DataTablePaged, DatePicker, DateRangePicker, Dialog, DialogBackdrop, DialogClose, DialogPopup as DialogContent, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogBackdrop as DialogOverlay, DialogPanel, DialogPopup, DialogPortal, DialogTitle, DialogTrigger, DialogViewport, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DribbbleLogoIcon, Menu as DropdownMenu, MenuCheckboxItem as DropdownMenuCheckboxItem, MenuPopup as DropdownMenuContent, MenuCreateHandle as DropdownMenuCreateHandle, MenuGroup as DropdownMenuGroup, MenuItem as DropdownMenuItem, MenuGroupLabel as DropdownMenuLabel, MenuPortal as DropdownMenuPortal, MenuRadioGroup as DropdownMenuRadioGroup, MenuRadioItem as DropdownMenuRadioItem, MenuSeparator as DropdownMenuSeparator, MenuShortcut as DropdownMenuShortcut, MenuSub as DropdownMenuSub, MenuSubPopup as DropdownMenuSubContent, MenuSubTrigger as DropdownMenuSubTrigger, MenuTrigger as DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, ErrorOrEmptyState, Fab, FacebookLogoIcon, FeaturedIcon, Fieldset, FieldsetLegend, FigmaLogoIcon, ForbiddenErrorState, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GalaxyStoreLogoIcon, GeneralErrorState, GoogleLogoIcon, GooglePlayLogoIcon, Group, GroupSeparator, GroupText, HelpTip, HorizontalScrollFader, HorizontalScrollFaderContent, HorizontalScrollFaderLeftScroller, HorizontalScrollFaderRightScroller, PreviewCard as HoverCard, PreviewCardPopup as HoverCardContent, PreviewCardTrigger as HoverCardTrigger, ImageUploadBase, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InternalServerErrorState, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, LeftScroller, Markdown, Menu, MenuCheckboxItem, MenuCreateHandle, MenuGroup, MenuGroupLabel, MenuItem, MenuPopup, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, MenuSub, MenuSubPopup, MenuSubTrigger, MenuTrigger, Menubar, MenuCheckboxItem as MenubarCheckboxItem, MenubarContent, MenuGroup as MenubarGroup, MenuItem as MenubarItem, MenuGroupLabel as MenubarLabel, MenubarMenu, MenuPortal as MenubarPortal, MenuRadioGroup as MenubarRadioGroup, MenuRadioItem as MenubarRadioItem, MenuSeparator as MenubarSeparator, MenuShortcut as MenubarShortcut, MenuSub as MenubarSub, MenuSubPopup as MenubarSubContent, MenuSubTrigger as MenubarSubTrigger, MenubarTrigger, Meter, MeterIndicator, MeterLabel, MeterTrack, MeterValue, MultiSelect, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NotFoundErrorState, OfflineErrorState, Pagination, PaginationContent, PaginationControls, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Pipeline, PipelineConversion, PreviewCard, PreviewCardPopup, PreviewCardTrigger, Progress, ProgressCircle, ProgressFloatingValue, ProgressHalfCircle, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, QRCode, QRCodeGradientScan, Radio, RadioGroup, Radio as RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RightScroller, ScrollArea, ScrollBar, SectionHeader, SegmentedControl, Separator, Sheet, SheetBackdrop, SheetClose, SheetPopup as SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetBackdrop as SheetOverlay, SheetPanel, SheetPopup, SheetPortal, SheetTitle, SheetTrigger, SheetViewport, 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, SliderValue, SmoothScroll, SocialButton, Spinner, Stat, StatDescription, StatGroup, StatLabel, StatTrend, StatValue, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTab, TabsTab as TabsTrigger, Tag, TagGroup, target_countdown_default as TargetCountdown, TextEditor, ThemeContextOverride, ThemeProvider, Timeline, TimelineContent, TimelineDescription, TimelineDot, TimelineItem, TimelineTime, TimelineTitle, ToastProvider, Toggle, ToggleGroup, Toggle2 as ToggleGroupItem, ToggleGroupSeparator, Toolbar, ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator,
|
|
11201
|
+
export { Accordion, AccordionPanel as AccordionContent, AccordionItem, AccordionPanel, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogPopup, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AlertTitle, AnchoredToastProvider, AnimatedCounter, AnimatedThemeToggler, AppGalleryLogoIcon, AppStoreButton, AppleLogoIcon, AspectRatio, AuroraOrb, AuroraText, Autocomplete, AutocompleteClear, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteItem, AutocompleteList, AutocompletePopup, AutocompleteRow, AutocompleteSeparator, AutocompleteStatus, AutocompleteTrigger, AutocompleteValue, Avatar, AvatarAddButton, AvatarCompanyIcon, AvatarFallback, AvatarGroup, AvatarImage, AvatarLabelGroup, AvatarProfilePhoto, AvatarUploadBase, Badge, BadgeAvatar, BadgeCloseButton, BadgeDot, BadgeFlag, BadgeGroup, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Group as ButtonGroup, GroupSeparator as ButtonGroupSeparator, GroupText as ButtonGroupText, CONFETTI_COLORS, Card, CardAction, CardPanel as CardContent, CardDescription, CardFooter, CardFrame, CardFrameDescription, CardFrameFooter, CardFrameHeader, CardFrameTitle, CardHeader, CardPanel, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Chat, ChatDivider, ChatEmptyState, ChatEmptyStateDescription, ChatEmptyStateIcon, ChatEmptyStateTitle, ChatHeader, ChatHeaderActions, ChatHeaderAvatar, ChatHeaderTitle, ChatInput, ChatMessage, ChatMessageBubble, ChatMessages, ChatSuggestion, ChatSuggestions, ChatToolCard, ChatToolCardActions, ChatToolCardHeader, ChatToolChip, ChatTypingIndicator, Collapsible, CollapsiblePanel as CollapsibleContent, CollapsiblePanel, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandCollection, CommandCreateHandle, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut, Confetti, ConfettiButton, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContextMeter, CreditCard, DashboardHeader, DashboardPanel, DashboardTopbar, DataTablePaged, DatePicker, DateRangePicker, Dialog, DialogBackdrop, DialogClose, DialogPopup as DialogContent, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogBackdrop as DialogOverlay, DialogPanel, DialogPopup, DialogPortal, DialogTitle, DialogTrigger, DialogViewport, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DribbbleLogoIcon, Menu as DropdownMenu, MenuCheckboxItem as DropdownMenuCheckboxItem, MenuPopup as DropdownMenuContent, MenuCreateHandle as DropdownMenuCreateHandle, MenuGroup as DropdownMenuGroup, MenuItem as DropdownMenuItem, MenuGroupLabel as DropdownMenuLabel, MenuPortal as DropdownMenuPortal, MenuRadioGroup as DropdownMenuRadioGroup, MenuRadioItem as DropdownMenuRadioItem, MenuSeparator as DropdownMenuSeparator, MenuShortcut as DropdownMenuShortcut, MenuSub as DropdownMenuSub, MenuSubPopup as DropdownMenuSubContent, MenuSubTrigger as DropdownMenuSubTrigger, MenuTrigger as DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, ErrorOrEmptyState, Fab, FacebookLogoIcon, FeaturedIcon, Fieldset, FieldsetLegend, FigmaLogoIcon, ForbiddenErrorState, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GalaxyStoreLogoIcon, GeneralErrorState, GoogleLogoIcon, GooglePlayLogoIcon, Group, GroupSeparator, GroupText, HelpTip, HorizontalScrollFader, HorizontalScrollFaderContent, HorizontalScrollFaderLeftScroller, HorizontalScrollFaderRightScroller, PreviewCard as HoverCard, PreviewCardPopup as HoverCardContent, PreviewCardTrigger as HoverCardTrigger, ImageUploadBase, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InternalServerErrorState, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, LeftScroller, Markdown, Menu, MenuCheckboxItem, MenuCreateHandle, MenuGroup, MenuGroupLabel, MenuItem, MenuPopup, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, MenuSub, MenuSubPopup, MenuSubTrigger, MenuTrigger, Menubar, MenuCheckboxItem as MenubarCheckboxItem, MenubarContent, MenuGroup as MenubarGroup, MenuItem as MenubarItem, MenuGroupLabel as MenubarLabel, MenubarMenu, MenuPortal as MenubarPortal, MenuRadioGroup as MenubarRadioGroup, MenuRadioItem as MenubarRadioItem, MenuSeparator as MenubarSeparator, MenuShortcut as MenubarShortcut, MenuSub as MenubarSub, MenuSubPopup as MenubarSubContent, MenuSubTrigger as MenubarSubTrigger, MenubarTrigger, Meter, MeterIndicator, MeterLabel, MeterTrack, MeterValue, MultiSelect, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NotFoundErrorState, OfflineErrorState, Pagination, PaginationContent, PaginationControls, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Pipeline, PipelineConversion, PreviewCard, PreviewCardPopup, PreviewCardTrigger, Progress, ProgressCircle, ProgressFloatingValue, ProgressHalfCircle, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, QRCode, QRCodeGradientScan, Radio, RadioGroup, Radio as RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RightScroller, ScrollArea, ScrollBar, SectionHeader, SegmentedControl, Separator, Sheet, SheetBackdrop, SheetClose, SheetPopup as SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetBackdrop as SheetOverlay, SheetPanel, SheetPopup, SheetPortal, SheetTitle, SheetTrigger, SheetViewport, 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, SliderValue, SmoothScroll, SocialButton, Spinner, Stat, StatDescription, StatGroup, StatLabel, StatTrend, StatValue, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTab, TabsTab as TabsTrigger, Tag, TagGroup, target_countdown_default as TargetCountdown, TextEditor, ThemeContextOverride, ThemeProvider, Timeline, TimelineContent, TimelineDescription, TimelineDot, TimelineItem, TimelineTime, TimelineTitle, ToastProvider, Toggle, ToggleGroup, Toggle2 as ToggleGroupItem, ToggleGroupSeparator, Toolbar, ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator, Tooltip, TooltipPopup as TooltipContent, TooltipCreateHandle, TooltipDescription, TooltipPopup, TooltipProvider, TooltipTitle, TooltipTrigger, UnauthorizedErrorState, VerticalScrollFader, VerticalScrollFaderBottomScroller, VerticalScrollFaderContent, VerticalScrollFaderTopScroller, VideoPlayer, XLogoIcon, anchoredToastManager, appStoreButtonVariants, avatarGroupVariants, avatarVariants, badgeGroupVariants, badgeVariants, chatMessageBubbleVariants, chatMessageVariants, fabVariants, featuredIconVariants, groupVariants, itemVariants, navigationMenuTriggerStyle, qrCodeVariants, script, sectionHeaderDescriptionVariants, sectionHeaderTitleVariants, sheetPopupVariants, sheetViewportVariants, sideCannons, socialButtonVariants, statTrendVariants, statVariants, toastManager, toggleVariants, useAutocompleteFilter, use_callback_ref_default as useCallbackRef, useCarousel, useComboboxFilter, useConfetti, useFirstRender, useHover, useIs2xl, useIsLg, useIsMd, useIsSm, use_is_tab_active_default as useIsTabActive, useIsXl, useMediaQuery, useSidebar, useSmoothWheel, useSubscribeBreakpoints, useTheme, videoPlayerVariants };
|
|
11045
11202
|
//# sourceMappingURL=index.js.map
|
|
11046
11203
|
//# sourceMappingURL=index.js.map
|