@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.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 React17 from 'react';
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
- React17.useEffect(() => {
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 = React17.useRef(null);
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 = React17.useRef(null);
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
- return /* @__PURE__ */ jsxs(
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) => /* @__PURE__ */ jsx(
1743
- Avatar,
1744
- {
1745
- alt: item.alt,
1746
- initials: item.initials,
1747
- size,
1748
- src: item.src
1749
- },
1750
- i
1751
- )) : children,
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 = React17.createContext(null);
2584
+ var CarouselContext = React19.createContext(null);
2478
2585
  function useCarousel() {
2479
- const context = React17.useContext(CarouselContext);
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] = React17.useState(false);
2503
- const [canScrollNext, setCanScrollNext] = React17.useState(false);
2504
- const onSelect = React17.useCallback((api2) => {
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 = React17.useCallback(() => {
2616
+ const scrollPrev = React19.useCallback(() => {
2510
2617
  api?.scrollPrev();
2511
2618
  }, [api]);
2512
- const scrollNext = React17.useCallback(() => {
2619
+ const scrollNext = React19.useCallback(() => {
2513
2620
  api?.scrollNext();
2514
2621
  }, [api]);
2515
- const handleKeyDown = React17.useCallback(
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
- React17.useEffect(() => {
2634
+ React19.useEffect(() => {
2528
2635
  if (!api || !setApi) return;
2529
2636
  setApi(api);
2530
2637
  }, [api, setApi]);
2531
- React17.useEffect(() => {
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 = React17.createContext(null);
2780
+ var ChartContext = React19.createContext(null);
2674
2781
  function useChart() {
2675
- const context = React17.useContext(ChartContext);
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 = React17.useId();
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 = React17.useMemo(() => {
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 = React17.useRef(null);
2963
- const pinnedRef = React17.useRef(true);
2964
- const handleScroll = React17.useCallback(() => {
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
- React17.useEffect(() => {
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 = React17.useRef(null);
3219
- const submit = React17.useCallback(() => {
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
- React17.useEffect(() => {
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 = React17.createContext({
3461
+ var ComboboxContext = React19.createContext({
3316
3462
  chipsRef: null,
3317
3463
  multiple: false
3318
3464
  });
3319
3465
  function Combobox(props) {
3320
- const chipsRef = React17.useRef(null);
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 } = React17.useContext(ComboboxContext);
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 } = React17.useContext(ComboboxContext);
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 } = React17.useContext(ComboboxContext);
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 (React17.isValidElement(value)) return value;
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] = React17.useState(1);
4425
- const [query, setQuery] = React17.useState("");
4426
- const filteredRows = React17.useMemo(() => {
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(Tooltip2, { children: [
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 = React17.useContext(OTPInputContext);
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] = React17.useState(
6744
+ const [uncontrolledValue, setUncontrolledValue] = React19.useState(
6588
6745
  defaultValue ?? []
6589
6746
  );
6590
- const [search, setSearch] = React17.useState("");
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 = React17.useRef(null);
6735
- React17.useEffect(() => {
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 = React17.useRef(null);
7227
- React17.useEffect(() => {
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 = React17.createContext({ orientation: "horizontal", value: 1 });
7756
- var StepperItemContext = React17.createContext({ state: "inactive", step: 1 });
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 } = React17.useContext(StepperContext);
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 } = React17.useContext(StepperItemContext);
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 = React17.createContext({
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 = React17.useContext(ToggleGroupContext);
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" ? React17.useLayoutEffect : React17.useEffect;
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 = React17.createContext(null);
8436
+ var SidebarContext = React19.createContext(null);
8280
8437
  function useSidebar() {
8281
- const context = React17.useContext(SidebarContext);
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] = React17.useState(false);
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] = React17.useState(false);
8306
- const [_open, _setOpen] = React17.useState(defaultOpen);
8462
+ const [openMobile, setOpenMobile] = React19.useState(false);
8463
+ const [_open, _setOpen] = React19.useState(defaultOpen);
8307
8464
  const open = openProp ?? _open;
8308
- const setOpen = React17.useCallback(
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 = React17.useCallback(() => {
8493
+ const toggleSidebar = React19.useCallback(() => {
8337
8494
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
8338
8495
  }, [isMobile, setOpen]);
8339
- React17.useEffect(() => {
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 = React17.useMemo(
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(Tooltip2, { children: [
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 = React17.useMemo(() => {
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 = React17.useMemo(() => {
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(Tooltip2, { children: [
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 = React17.useRef(null);
10308
- const videoRef = React17.useRef(null);
10309
- const hideTimerRef = React17.useRef(null);
10310
- const [playing, setPlaying] = React17.useState(false);
10311
- const [currentTime, setCurrentTime] = React17.useState(0);
10312
- const [duration, setDuration] = React17.useState(0);
10313
- const [muted, setMuted] = React17.useState(false);
10314
- const [fullscreen, setFullscreen] = React17.useState(false);
10315
- const [controlsVisible, setControlsVisible] = React17.useState(true);
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 = React17.useCallback(() => {
10476
+ const scheduleHide = React19.useCallback(() => {
10320
10477
  clearHideTimer();
10321
10478
  hideTimerRef.current = setTimeout(() => setControlsVisible(false), 2500);
10322
10479
  }, []);
10323
- React17.useEffect(() => () => clearHideTimer(), []);
10324
- React17.useEffect(() => {
10480
+ React19.useEffect(() => () => clearHideTimer(), []);
10481
+ React19.useEffect(() => {
10325
10482
  if (!playing) {
10326
10483
  clearHideTimer();
10327
10484
  setControlsVisible(true);
10328
10485
  }
10329
10486
  }, [playing]);
10330
- React17.useEffect(() => {
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(Tooltip2, { children: [
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(Tooltip2, { children: [
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, Tooltip2 as 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 };
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