@cntyclub/ui-react 0.1.1 → 0.2.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
@@ -1,11 +1,11 @@
1
1
  import { cn, buttonVariants, Input, Button, SpinnerOnDemand } from './chunk-2HQPCV2L.js';
2
2
  export { Button, Calendar, Checkbox, CheckboxGroup, Field, FieldControl, FieldDescription, FieldError, FieldGroup, FieldItem, FieldLabel, FieldValidity, Input, InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, InputGroupTextarea, Label, NumberField, NumberFieldDecrement, NumberFieldGroup, NumberFieldIncrement, NumberFieldInput, NumberFieldScrubArea, Popover, PopoverClose, PopoverPopup as PopoverContent, PopoverCreateHandle, PopoverDescription, PopoverPopup, PopoverTitle, PopoverTrigger, Select, SelectPopup as SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectSeparator, SelectTrigger, SelectValue, SpinnerOnDemand, Textarea, buttonVariants, cn } from './chunk-2HQPCV2L.js';
3
3
  import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
4
- import { ChevronDownIcon, SunIcon, MoonIcon, ChevronsUpDownIcon, XIcon, CheckIcon, UserRoundIcon, PlusIcon, ChevronRight, MoreHorizontal, ArrowLeftIcon, ArrowRightIcon, SearchIcon, NfcIcon, ChevronRightIcon, FileQuestionIcon, ShieldAlertIcon, ShieldXIcon, TriangleAlertIcon, MinusIcon, ChevronLeftIcon, MoreHorizontalIcon, GripVerticalIcon, PanelLeftIcon, Loader2Icon, TrendingDownIcon, TrendingUpIcon, CircleCheckIcon, LoaderCircleIcon, InfoIcon, CircleAlertIcon, PlayIcon, PauseIcon, VolumeXIcon, Volume2Icon, Minimize2Icon, Maximize2Icon, UserIcon, CloudUploadIcon, TrashIcon, Undo2, Redo2, Bold, Italic, Strikethrough, List, ListOrdered, AlignLeft, AlignCenter, AlignRight, AlignJustify } from 'lucide-react';
4
+ import { ChevronDownIcon, SunIcon, MoonIcon, ChevronsUpDownIcon, XIcon, CheckIcon, UserRoundIcon, PlusIcon, ChevronRight, MoreHorizontal, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, SearchIcon, NfcIcon, ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon, FileQuestionIcon, ShieldAlertIcon, ShieldXIcon, TriangleAlertIcon, MinusIcon, GripVerticalIcon, PanelLeftIcon, Loader2Icon, TrendingDownIcon, TrendingUpIcon, CircleCheckIcon, LoaderCircleIcon, InfoIcon, CircleAlertIcon, PlayIcon, PauseIcon, VolumeXIcon, Volume2Icon, Minimize2Icon, Maximize2Icon, UserIcon, CloudUploadIcon, TrashIcon, Undo2, Redo2, Bold, Italic, Strikethrough, List, ListOrdered, AlignLeft, AlignCenter, AlignRight, AlignJustify } from 'lucide-react';
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 React15 from 'react';
8
+ import * as React17 from 'react';
9
9
  import { createContext, memo, forwardRef, useRef, useState, useMemo, useContext, useEffect, useCallback, useSyncExternalStore, isValidElement, useLayoutEffect } from 'react';
10
10
  import { flushSync } from 'react-dom';
11
11
  import { mergeProps } from '@base-ui/react/merge-props';
@@ -27,6 +27,8 @@ import { Transition } from '@headlessui/react';
27
27
  import { Slot, Slottable } from '@radix-ui/react-slot';
28
28
  import useResizeObserver from 'use-resize-observer';
29
29
  import { OTPInput, REGEXP_ONLY_DIGITS, OTPInputContext } from 'input-otp';
30
+ import ReactMarkdown from 'react-markdown';
31
+ import remarkGfm from 'remark-gfm';
30
32
  import { Menu as Menu$1 } from '@base-ui/react/menu';
31
33
  import { Menubar as Menubar$1 } from '@base-ui/react/menubar';
32
34
  import { Meter as Meter$1 } from '@base-ui/react/meter';
@@ -923,7 +925,7 @@ function useSmoothWheel(ref, {
923
925
  multiplier = 0.8,
924
926
  ease = 0.12
925
927
  } = {}) {
926
- React15.useEffect(() => {
928
+ React17.useEffect(() => {
927
929
  if (!enabled) return;
928
930
  const el = ref.current;
929
931
  if (!el) return;
@@ -986,7 +988,7 @@ function SmoothScroll({
986
988
  ease,
987
989
  ...props
988
990
  }) {
989
- const ref = React15.useRef(null);
991
+ const ref = React17.useRef(null);
990
992
  useSmoothWheel(ref, { ease, horizontal, multiplier });
991
993
  return /* @__PURE__ */ jsx(
992
994
  "div",
@@ -1012,7 +1014,7 @@ function ScrollArea({
1012
1014
  viewportClassName,
1013
1015
  ...props
1014
1016
  }) {
1015
- const viewportRef = React15.useRef(null);
1017
+ const viewportRef = React17.useRef(null);
1016
1018
  useSmoothWheel(viewportRef, { enabled: wheelToHorizontal, horizontal: true });
1017
1019
  useSmoothWheel(viewportRef, {
1018
1020
  enabled: smooth && !wheelToHorizontal,
@@ -2143,9 +2145,9 @@ function CardFooter({
2143
2145
  render
2144
2146
  });
2145
2147
  }
2146
- var CarouselContext = React15.createContext(null);
2148
+ var CarouselContext = React17.createContext(null);
2147
2149
  function useCarousel() {
2148
- const context = React15.useContext(CarouselContext);
2150
+ const context = React17.useContext(CarouselContext);
2149
2151
  if (!context) {
2150
2152
  throw new Error("useCarousel must be used within a <Carousel />");
2151
2153
  }
@@ -2168,20 +2170,20 @@ function Carousel({
2168
2170
  },
2169
2171
  plugins
2170
2172
  );
2171
- const [canScrollPrev, setCanScrollPrev] = React15.useState(false);
2172
- const [canScrollNext, setCanScrollNext] = React15.useState(false);
2173
- const onSelect = React15.useCallback((api2) => {
2173
+ const [canScrollPrev, setCanScrollPrev] = React17.useState(false);
2174
+ const [canScrollNext, setCanScrollNext] = React17.useState(false);
2175
+ const onSelect = React17.useCallback((api2) => {
2174
2176
  if (!api2) return;
2175
2177
  setCanScrollPrev(api2.canScrollPrev());
2176
2178
  setCanScrollNext(api2.canScrollNext());
2177
2179
  }, []);
2178
- const scrollPrev = React15.useCallback(() => {
2180
+ const scrollPrev = React17.useCallback(() => {
2179
2181
  api?.scrollPrev();
2180
2182
  }, [api]);
2181
- const scrollNext = React15.useCallback(() => {
2183
+ const scrollNext = React17.useCallback(() => {
2182
2184
  api?.scrollNext();
2183
2185
  }, [api]);
2184
- const handleKeyDown = React15.useCallback(
2186
+ const handleKeyDown = React17.useCallback(
2185
2187
  (event) => {
2186
2188
  if (event.key === "ArrowLeft") {
2187
2189
  event.preventDefault();
@@ -2193,11 +2195,11 @@ function Carousel({
2193
2195
  },
2194
2196
  [scrollPrev, scrollNext]
2195
2197
  );
2196
- React15.useEffect(() => {
2198
+ React17.useEffect(() => {
2197
2199
  if (!api || !setApi) return;
2198
2200
  setApi(api);
2199
2201
  }, [api, setApi]);
2200
- React15.useEffect(() => {
2202
+ React17.useEffect(() => {
2201
2203
  if (!api) return;
2202
2204
  onSelect(api);
2203
2205
  api.on("reInit", onSelect);
@@ -2339,9 +2341,9 @@ function CarouselNext({
2339
2341
  );
2340
2342
  }
2341
2343
  var THEMES = { light: "", dark: '[data-theme="dark"]' };
2342
- var ChartContext = React15.createContext(null);
2344
+ var ChartContext = React17.createContext(null);
2343
2345
  function useChart() {
2344
- const context = React15.useContext(ChartContext);
2346
+ const context = React17.useContext(ChartContext);
2345
2347
  if (!context) {
2346
2348
  throw new Error("useChart must be used within a <ChartContainer />");
2347
2349
  }
@@ -2354,7 +2356,7 @@ function ChartContainer({
2354
2356
  config,
2355
2357
  ...props
2356
2358
  }) {
2357
- const uniqueId = React15.useId();
2359
+ const uniqueId = React17.useId();
2358
2360
  const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
2359
2361
  return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
2360
2362
  "div",
@@ -2415,7 +2417,7 @@ function ChartTooltipContent({
2415
2417
  labelKey
2416
2418
  }) {
2417
2419
  const { config } = useChart();
2418
- const tooltipLabel = React15.useMemo(() => {
2420
+ const tooltipLabel = React17.useMemo(() => {
2419
2421
  if (hideLabel || !payload?.length) {
2420
2422
  return null;
2421
2423
  }
@@ -2561,6 +2563,217 @@ function getPayloadConfigFromPayload(config, payload, key) {
2561
2563
  }
2562
2564
  return configLabelKey in config ? config[configLabelKey] : config[key];
2563
2565
  }
2566
+ function Chat({ className, ...props }) {
2567
+ return /* @__PURE__ */ jsx(
2568
+ "div",
2569
+ {
2570
+ className: cn("flex min-h-0 flex-1 flex-col", className),
2571
+ "data-slot": "chat",
2572
+ ...props
2573
+ }
2574
+ );
2575
+ }
2576
+ function ChatMessages({
2577
+ autoScroll = true,
2578
+ className,
2579
+ children,
2580
+ ...props
2581
+ }) {
2582
+ const viewportRef = React17.useRef(null);
2583
+ const pinnedRef = React17.useRef(true);
2584
+ const handleScroll = React17.useCallback(() => {
2585
+ const viewport = viewportRef.current;
2586
+ if (!viewport) return;
2587
+ const distanceFromBottom = viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight;
2588
+ pinnedRef.current = distanceFromBottom < 48;
2589
+ }, []);
2590
+ React17.useEffect(() => {
2591
+ const viewport = viewportRef.current;
2592
+ if (!viewport || !autoScroll || !pinnedRef.current) return;
2593
+ viewport.scrollTop = viewport.scrollHeight;
2594
+ }, [children, autoScroll]);
2595
+ return /* @__PURE__ */ jsx(
2596
+ "div",
2597
+ {
2598
+ className: cn(
2599
+ "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto scroll-smooth p-4",
2600
+ className
2601
+ ),
2602
+ "data-slot": "chat-messages",
2603
+ onScroll: handleScroll,
2604
+ ref: viewportRef,
2605
+ ...props,
2606
+ children
2607
+ }
2608
+ );
2609
+ }
2610
+ var chatMessageVariants = cva("flex w-full flex-col gap-1", {
2611
+ defaultVariants: {
2612
+ from: "assistant"
2613
+ },
2614
+ variants: {
2615
+ from: {
2616
+ assistant: "items-start",
2617
+ user: "items-end"
2618
+ }
2619
+ }
2620
+ });
2621
+ function ChatMessage({ className, from, ...props }) {
2622
+ return /* @__PURE__ */ jsx(
2623
+ "div",
2624
+ {
2625
+ className: cn(chatMessageVariants({ className, from })),
2626
+ "data-from": from ?? "assistant",
2627
+ "data-slot": "chat-message",
2628
+ ...props
2629
+ }
2630
+ );
2631
+ }
2632
+ var chatMessageBubbleVariants = cva(
2633
+ "max-w-[85%] rounded-2xl px-3.5 py-2 text-sm leading-relaxed break-words",
2634
+ {
2635
+ defaultVariants: {
2636
+ from: "assistant"
2637
+ },
2638
+ variants: {
2639
+ from: {
2640
+ assistant: "rounded-bl-md bg-muted text-foreground",
2641
+ user: "rounded-br-md bg-primary text-primary-foreground"
2642
+ }
2643
+ }
2644
+ }
2645
+ );
2646
+ function ChatMessageBubble({ className, from, ...props }) {
2647
+ return /* @__PURE__ */ jsx(
2648
+ "div",
2649
+ {
2650
+ className: cn(chatMessageBubbleVariants({ className, from })),
2651
+ "data-from": from ?? "assistant",
2652
+ "data-slot": "chat-message-bubble",
2653
+ ...props
2654
+ }
2655
+ );
2656
+ }
2657
+ function ChatToolCard({ className, ...props }) {
2658
+ return /* @__PURE__ */ jsx(
2659
+ "div",
2660
+ {
2661
+ className: cn(
2662
+ "w-full max-w-[95%] rounded-xl border border-border bg-card p-3 text-card-foreground text-sm shadow-xs",
2663
+ className
2664
+ ),
2665
+ "data-slot": "chat-tool-card",
2666
+ ...props
2667
+ }
2668
+ );
2669
+ }
2670
+ function ChatToolCardHeader({ className, ...props }) {
2671
+ return /* @__PURE__ */ jsx(
2672
+ "div",
2673
+ {
2674
+ className: cn("flex items-center gap-2 font-medium", className),
2675
+ "data-slot": "chat-tool-card-header",
2676
+ ...props
2677
+ }
2678
+ );
2679
+ }
2680
+ function ChatToolCardActions({ className, ...props }) {
2681
+ return /* @__PURE__ */ jsx(
2682
+ "div",
2683
+ {
2684
+ className: cn("mt-3 flex items-center justify-end gap-2", className),
2685
+ "data-slot": "chat-tool-card-actions",
2686
+ ...props
2687
+ }
2688
+ );
2689
+ }
2690
+ function ChatTypingIndicator({ className, ...props }) {
2691
+ return /* @__PURE__ */ jsxs(
2692
+ "div",
2693
+ {
2694
+ "aria-label": "Assistant is typing",
2695
+ className: cn(
2696
+ "flex w-fit items-center gap-1 rounded-2xl rounded-bl-md bg-muted px-3.5 py-2.5",
2697
+ className
2698
+ ),
2699
+ "data-slot": "chat-typing-indicator",
2700
+ role: "status",
2701
+ ...props,
2702
+ children: [
2703
+ /* @__PURE__ */ jsx("span", { className: "size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:0ms]" }),
2704
+ /* @__PURE__ */ jsx("span", { className: "size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:150ms]" }),
2705
+ /* @__PURE__ */ jsx("span", { className: "size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:300ms]" })
2706
+ ]
2707
+ }
2708
+ );
2709
+ }
2710
+ function ChatInput({
2711
+ className,
2712
+ disabled,
2713
+ onSubmit,
2714
+ onValueChange,
2715
+ placeholder = "Ask anything\u2026",
2716
+ value,
2717
+ ...props
2718
+ }) {
2719
+ const textareaRef = React17.useRef(null);
2720
+ const submit = React17.useCallback(() => {
2721
+ const trimmed = value.trim();
2722
+ if (!trimmed || disabled) return;
2723
+ onSubmit(trimmed);
2724
+ }, [disabled, onSubmit, value]);
2725
+ React17.useEffect(() => {
2726
+ const textarea = textareaRef.current;
2727
+ if (!textarea) return;
2728
+ textarea.style.height = "auto";
2729
+ textarea.style.height = `${Math.min(textarea.scrollHeight, 144)}px`;
2730
+ }, [value]);
2731
+ return /* @__PURE__ */ jsxs(
2732
+ "form",
2733
+ {
2734
+ className: cn(
2735
+ "flex items-end gap-2 border-border border-t bg-background p-3",
2736
+ className
2737
+ ),
2738
+ "data-slot": "chat-input",
2739
+ onSubmit: (event) => {
2740
+ event.preventDefault();
2741
+ submit();
2742
+ },
2743
+ children: [
2744
+ /* @__PURE__ */ jsx(
2745
+ "textarea",
2746
+ {
2747
+ className: "max-h-36 min-h-9 flex-1 resize-none rounded-lg border border-input bg-transparent px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-64",
2748
+ disabled,
2749
+ onChange: (event) => onValueChange(event.target.value),
2750
+ onKeyDown: (event) => {
2751
+ if (event.key === "Enter" && !event.shiftKey) {
2752
+ event.preventDefault();
2753
+ submit();
2754
+ }
2755
+ },
2756
+ placeholder,
2757
+ ref: textareaRef,
2758
+ rows: 1,
2759
+ value,
2760
+ ...props
2761
+ }
2762
+ ),
2763
+ /* @__PURE__ */ jsx(
2764
+ Button,
2765
+ {
2766
+ "aria-label": "Send message",
2767
+ disabled: disabled || !value.trim(),
2768
+ size: "icon",
2769
+ type: "submit",
2770
+ children: /* @__PURE__ */ jsx(ArrowUpIcon, {})
2771
+ }
2772
+ )
2773
+ ]
2774
+ }
2775
+ );
2776
+ }
2564
2777
  function Collapsible({ ...props }) {
2565
2778
  return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
2566
2779
  }
@@ -2593,12 +2806,12 @@ function CollapsiblePanel({
2593
2806
  }
2594
2807
  );
2595
2808
  }
2596
- var ComboboxContext = React15.createContext({
2809
+ var ComboboxContext = React17.createContext({
2597
2810
  chipsRef: null,
2598
2811
  multiple: false
2599
2812
  });
2600
2813
  function Combobox(props) {
2601
- const chipsRef = React15.useRef(null);
2814
+ const chipsRef = React17.useRef(null);
2602
2815
  return /* @__PURE__ */ jsx(ComboboxContext.Provider, { value: { chipsRef, multiple: !!props.multiple }, children: /* @__PURE__ */ jsx(
2603
2816
  Combobox$1.Root,
2604
2817
  {
@@ -2614,7 +2827,7 @@ function ComboboxInput({
2614
2827
  size,
2615
2828
  ...props
2616
2829
  }) {
2617
- const { multiple } = React15.useContext(ComboboxContext);
2830
+ const { multiple } = React17.useContext(ComboboxContext);
2618
2831
  const sizeValue = size ?? "default";
2619
2832
  if (multiple) {
2620
2833
  return /* @__PURE__ */ jsx(
@@ -2703,7 +2916,7 @@ function ComboboxPopup({
2703
2916
  sideOffset = 4,
2704
2917
  ...props
2705
2918
  }) {
2706
- const { chipsRef } = React15.useContext(ComboboxContext);
2919
+ const { chipsRef } = React17.useContext(ComboboxContext);
2707
2920
  return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
2708
2921
  Combobox$1.Positioner,
2709
2922
  {
@@ -2874,7 +3087,7 @@ function ComboboxChips({
2874
3087
  startAddon,
2875
3088
  ...props
2876
3089
  }) {
2877
- const { chipsRef } = React15.useContext(ComboboxContext);
3090
+ const { chipsRef } = React17.useContext(ComboboxContext);
2878
3091
  return /* @__PURE__ */ jsxs(
2879
3092
  Combobox$1.Chips,
2880
3093
  {
@@ -3267,72 +3480,421 @@ function CreditCard({
3267
3480
  return /* @__PURE__ */ jsx(
3268
3481
  "div",
3269
3482
  {
3270
- className: cn("relative shrink-0 select-none font-sans", className),
3271
- "data-slot": "credit-card",
3272
- "data-type": type,
3273
- style: { height: Math.round(BASE_HEIGHT * scale), width, ...style },
3274
- ...props,
3275
- children: /* @__PURE__ */ jsxs(
3276
- "div",
3483
+ className: cn("relative shrink-0 select-none font-sans", className),
3484
+ "data-slot": "credit-card",
3485
+ "data-type": type,
3486
+ style: { height: Math.round(BASE_HEIGHT * scale), width, ...style },
3487
+ ...props,
3488
+ children: /* @__PURE__ */ jsxs(
3489
+ "div",
3490
+ {
3491
+ className: cn(
3492
+ "absolute top-0 left-0 flex origin-top-left flex-col justify-between overflow-hidden rounded-[20px] p-5",
3493
+ variant.card
3494
+ ),
3495
+ style: {
3496
+ height: BASE_HEIGHT,
3497
+ transform: `scale(${scale})`,
3498
+ width: BASE_WIDTH
3499
+ },
3500
+ children: [
3501
+ variant.strip ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("absolute", variant.strip) }) : null,
3502
+ /* @__PURE__ */ jsxs("div", { className: "relative flex items-start justify-between", children: [
3503
+ /* @__PURE__ */ jsx(
3504
+ "span",
3505
+ {
3506
+ className: "font-semibold text-base tracking-tight",
3507
+ "data-slot": "credit-card-company",
3508
+ children: company
3509
+ }
3510
+ ),
3511
+ /* @__PURE__ */ jsx(NfcIcon, { "aria-hidden": true, className: "size-5 opacity-70" })
3512
+ ] }),
3513
+ /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-2.5", children: [
3514
+ /* @__PURE__ */ jsx(
3515
+ "span",
3516
+ {
3517
+ className: "font-medium text-[0.9375rem] tabular-nums tracking-[0.12em]",
3518
+ "data-slot": "credit-card-number",
3519
+ children: cardNumber
3520
+ }
3521
+ ),
3522
+ /* @__PURE__ */ jsxs("div", { className: "flex items-end justify-between", children: [
3523
+ /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-4", children: [
3524
+ /* @__PURE__ */ jsx(
3525
+ "span",
3526
+ {
3527
+ className: "font-medium text-[0.6875rem] uppercase tracking-[0.14em]",
3528
+ "data-slot": "credit-card-holder",
3529
+ children: cardHolder
3530
+ }
3531
+ ),
3532
+ /* @__PURE__ */ jsx(
3533
+ "span",
3534
+ {
3535
+ className: "font-medium text-[0.6875rem] tabular-nums tracking-[0.14em] opacity-80",
3536
+ "data-slot": "credit-card-expiration",
3537
+ children: cardExpiration
3538
+ }
3539
+ )
3540
+ ] }),
3541
+ /* @__PURE__ */ jsx(CreditCardLogo, { onDark: variant.onDark })
3542
+ ] })
3543
+ ] })
3544
+ ]
3545
+ }
3546
+ )
3547
+ }
3548
+ );
3549
+ }
3550
+ function Pagination({ className, ...props }) {
3551
+ return /* @__PURE__ */ jsx(
3552
+ "nav",
3553
+ {
3554
+ "aria-label": "pagination",
3555
+ className: cn("mx-auto flex w-full justify-center", className),
3556
+ "data-slot": "pagination",
3557
+ ...props
3558
+ }
3559
+ );
3560
+ }
3561
+ function PaginationContent({
3562
+ className,
3563
+ ...props
3564
+ }) {
3565
+ return /* @__PURE__ */ jsx(
3566
+ "ul",
3567
+ {
3568
+ className: cn("flex flex-row items-center gap-1", className),
3569
+ "data-slot": "pagination-content",
3570
+ ...props
3571
+ }
3572
+ );
3573
+ }
3574
+ function PaginationItem({ className, ...props }) {
3575
+ return /* @__PURE__ */ jsx(
3576
+ "li",
3577
+ {
3578
+ className: cn(
3579
+ "animate-in fade-in-0 zoom-in-95 duration-200 ease-out",
3580
+ className
3581
+ ),
3582
+ "data-slot": "pagination-item",
3583
+ ...props
3584
+ }
3585
+ );
3586
+ }
3587
+ function PaginationLink({
3588
+ className,
3589
+ isActive,
3590
+ disabled,
3591
+ size = "icon",
3592
+ render,
3593
+ ...props
3594
+ }) {
3595
+ const defaultProps = {
3596
+ "aria-current": isActive ? "page" : void 0,
3597
+ "aria-disabled": disabled || void 0,
3598
+ className: cn(
3599
+ buttonVariants({
3600
+ size,
3601
+ variant: isActive ? "outline" : "ghost"
3602
+ }),
3603
+ "transition-[opacity,box-shadow,filter] duration-200 ease-out",
3604
+ disabled && "pointer-events-none opacity-50",
3605
+ className
3606
+ ),
3607
+ "data-active": isActive,
3608
+ "data-disabled": disabled || void 0,
3609
+ "data-slot": "pagination-link",
3610
+ tabIndex: disabled ? -1 : void 0
3611
+ };
3612
+ return useRender({
3613
+ defaultTagName: "a",
3614
+ props: mergeProps(defaultProps, props),
3615
+ render
3616
+ });
3617
+ }
3618
+ function PaginationPrevious({
3619
+ className,
3620
+ ...props
3621
+ }) {
3622
+ return /* @__PURE__ */ jsxs(
3623
+ PaginationLink,
3624
+ {
3625
+ "aria-label": "Go to previous page",
3626
+ className: cn("max-sm:aspect-square max-sm:p-0", className),
3627
+ size: "default",
3628
+ ...props,
3629
+ children: [
3630
+ /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "sm:-ms-1" }),
3631
+ /* @__PURE__ */ jsx("span", { className: "max-sm:hidden", children: "Previous" })
3632
+ ]
3633
+ }
3634
+ );
3635
+ }
3636
+ function PaginationNext({
3637
+ className,
3638
+ ...props
3639
+ }) {
3640
+ return /* @__PURE__ */ jsxs(
3641
+ PaginationLink,
3642
+ {
3643
+ "aria-label": "Go to next page",
3644
+ className: cn("max-sm:aspect-square max-sm:p-0", className),
3645
+ size: "default",
3646
+ ...props,
3647
+ children: [
3648
+ /* @__PURE__ */ jsx("span", { className: "max-sm:hidden", children: "Next" }),
3649
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "sm:-me-1" })
3650
+ ]
3651
+ }
3652
+ );
3653
+ }
3654
+ function PaginationEllipsis({
3655
+ className,
3656
+ ...props
3657
+ }) {
3658
+ return /* @__PURE__ */ jsxs(
3659
+ "span",
3660
+ {
3661
+ "aria-hidden": true,
3662
+ className: cn("flex min-w-7 justify-center", className),
3663
+ "data-slot": "pagination-ellipsis",
3664
+ ...props,
3665
+ children: [
3666
+ /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-5 sm:size-4" }),
3667
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
3668
+ ]
3669
+ }
3670
+ );
3671
+ }
3672
+ function PaginationControls(props) {
3673
+ const { page, pageCount, renderPageLink } = props;
3674
+ if (pageCount <= 1) return null;
3675
+ return /* @__PURE__ */ jsx(Pagination, { children: /* @__PURE__ */ jsxs(PaginationContent, { children: [
3676
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
3677
+ PaginationPrevious,
3678
+ {
3679
+ disabled: page <= 1,
3680
+ render: page > 1 ? renderPageLink(page - 1) : /* @__PURE__ */ jsx("span", {})
3681
+ }
3682
+ ) }),
3683
+ page > 1 && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationLink, { render: renderPageLink(1), children: "1" }) }),
3684
+ page > 2 && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }),
3685
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationLink, { render: renderPageLink(page), isActive: true, children: page }) }),
3686
+ pageCount > page + 1 && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }),
3687
+ pageCount > page && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationLink, { render: renderPageLink(pageCount), children: pageCount }) }),
3688
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
3689
+ PaginationNext,
3690
+ {
3691
+ disabled: page >= pageCount,
3692
+ render: page < pageCount ? renderPageLink(page + 1) : /* @__PURE__ */ jsx("span", {})
3693
+ }
3694
+ ) })
3695
+ ] }) });
3696
+ }
3697
+ function Table({ className, ...props }) {
3698
+ return /* @__PURE__ */ jsx(
3699
+ "div",
3700
+ {
3701
+ className: "relative w-full overflow-x-auto",
3702
+ "data-slot": "table-container",
3703
+ children: /* @__PURE__ */ jsx(
3704
+ "table",
3705
+ {
3706
+ className: cn(
3707
+ "w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm",
3708
+ className
3709
+ ),
3710
+ "data-slot": "table",
3711
+ ...props
3712
+ }
3713
+ )
3714
+ }
3715
+ );
3716
+ }
3717
+ function TableHeader({ className, ...props }) {
3718
+ return /* @__PURE__ */ jsx(
3719
+ "thead",
3720
+ {
3721
+ className: cn(
3722
+ "[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent",
3723
+ className
3724
+ ),
3725
+ "data-slot": "table-header",
3726
+ ...props
3727
+ }
3728
+ );
3729
+ }
3730
+ function TableBody({ className, ...props }) {
3731
+ return /* @__PURE__ */ jsx(
3732
+ "tbody",
3733
+ {
3734
+ className: cn(
3735
+ "relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs/5 before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-background in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-transparent in-data-[slot=frame]:*:[tr]:data-[state=selected]:*:[td]:bg-muted/72",
3736
+ className
3737
+ ),
3738
+ "data-slot": "table-body",
3739
+ ...props
3740
+ }
3741
+ );
3742
+ }
3743
+ function TableFooter({ className, ...props }) {
3744
+ return /* @__PURE__ */ jsx(
3745
+ "tfoot",
3746
+ {
3747
+ className: cn(
3748
+ "border-t in-data-[slot=frame]:border-none bg-muted/72 in-data-[slot=frame]:bg-transparent font-medium [&>tr]:last:border-b-0 in-data-[slot=frame]:*:[tr]:hover:bg-transparent",
3749
+ className
3750
+ ),
3751
+ "data-slot": "table-footer",
3752
+ ...props
3753
+ }
3754
+ );
3755
+ }
3756
+ function TableRow({ className, ...props }) {
3757
+ return /* @__PURE__ */ jsx(
3758
+ "tr",
3759
+ {
3760
+ className: cn(
3761
+ "border-b transition-colors hover:bg-muted/72 in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted/72 in-data-[slot=frame]:data-[state=selected]:bg-transparent",
3762
+ className
3763
+ ),
3764
+ "data-slot": "table-row",
3765
+ ...props
3766
+ }
3767
+ );
3768
+ }
3769
+ function TableHead({ className, ...props }) {
3770
+ return /* @__PURE__ */ jsx(
3771
+ "th",
3772
+ {
3773
+ className: cn(
3774
+ "h-10 whitespace-nowrap px-2.5 text-left align-middle font-medium text-muted-foreground leading-none has-[[role=checkbox]]:w-px has-[[role=checkbox]]:pe-0",
3775
+ className
3776
+ ),
3777
+ "data-slot": "table-head",
3778
+ ...props
3779
+ }
3780
+ );
3781
+ }
3782
+ function TableCell({ className, ...props }) {
3783
+ return /* @__PURE__ */ jsx(
3784
+ "td",
3785
+ {
3786
+ className: cn(
3787
+ "whitespace-nowrap p-2.5 align-middle leading-none in-data-[slot=frame]:first:p-[calc(--spacing(2.5)-1px)] in-data-[slot=frame]:last:p-[calc(--spacing(2.5)-1px)] has-[[role=checkbox]]:pe-0",
3788
+ className
3789
+ ),
3790
+ "data-slot": "table-cell",
3791
+ ...props
3792
+ }
3793
+ );
3794
+ }
3795
+ function TableCaption({
3796
+ className,
3797
+ ...props
3798
+ }) {
3799
+ return /* @__PURE__ */ jsx(
3800
+ "caption",
3801
+ {
3802
+ className: cn(
3803
+ "in-data-[slot=frame]:my-4 mt-4 text-muted-foreground text-sm",
3804
+ className
3805
+ ),
3806
+ "data-slot": "table-caption",
3807
+ ...props
3808
+ }
3809
+ );
3810
+ }
3811
+ function formatCell(value) {
3812
+ if (value === null || value === void 0 || value === "") return "\u2014";
3813
+ if (typeof value === "boolean") return value ? "Yes" : "No";
3814
+ if (React17.isValidElement(value)) return value;
3815
+ if (typeof value === "object") return JSON.stringify(value);
3816
+ return String(value);
3817
+ }
3818
+ function DataTablePaged({
3819
+ className,
3820
+ columns,
3821
+ emptyLabel = "No results",
3822
+ pageSize = 10,
3823
+ rows,
3824
+ searchable = true,
3825
+ searchPlaceholder = "Filter results\u2026",
3826
+ totalCount
3827
+ }) {
3828
+ const [page, setPage] = React17.useState(1);
3829
+ const [query, setQuery] = React17.useState("");
3830
+ const filteredRows = React17.useMemo(() => {
3831
+ const trimmed = query.trim().toLowerCase();
3832
+ if (!trimmed) return rows;
3833
+ return rows.filter(
3834
+ (row) => columns.some(
3835
+ (column) => String(row[column.key] ?? "").toLowerCase().includes(trimmed)
3836
+ )
3837
+ );
3838
+ }, [columns, query, rows]);
3839
+ const pageCount = Math.max(1, Math.ceil(filteredRows.length / pageSize));
3840
+ const safePage = Math.min(page, pageCount);
3841
+ const pageRows = filteredRows.slice((safePage - 1) * pageSize, safePage * pageSize);
3842
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-2", className), "data-slot": "data-table-paged", children: [
3843
+ searchable && rows.length > pageSize && /* @__PURE__ */ jsxs("div", { className: "relative", children: [
3844
+ /* @__PURE__ */ jsx(SearchIcon, { className: "-translate-y-1/2 absolute top-1/2 left-2.5 size-4 text-muted-foreground" }),
3845
+ /* @__PURE__ */ jsx(
3846
+ Input,
3277
3847
  {
3278
- className: cn(
3279
- "absolute top-0 left-0 flex origin-top-left flex-col justify-between overflow-hidden rounded-[20px] p-5",
3280
- variant.card
3281
- ),
3282
- style: {
3283
- height: BASE_HEIGHT,
3284
- transform: `scale(${scale})`,
3285
- width: BASE_WIDTH
3848
+ className: "h-8 pl-8 text-sm",
3849
+ onChange: (event) => {
3850
+ setQuery(event.target.value);
3851
+ setPage(1);
3286
3852
  },
3287
- children: [
3288
- variant.strip ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("absolute", variant.strip) }) : null,
3289
- /* @__PURE__ */ jsxs("div", { className: "relative flex items-start justify-between", children: [
3290
- /* @__PURE__ */ jsx(
3291
- "span",
3292
- {
3293
- className: "font-semibold text-base tracking-tight",
3294
- "data-slot": "credit-card-company",
3295
- children: company
3296
- }
3297
- ),
3298
- /* @__PURE__ */ jsx(NfcIcon, { "aria-hidden": true, className: "size-5 opacity-70" })
3299
- ] }),
3300
- /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-2.5", children: [
3301
- /* @__PURE__ */ jsx(
3302
- "span",
3303
- {
3304
- className: "font-medium text-[0.9375rem] tabular-nums tracking-[0.12em]",
3305
- "data-slot": "credit-card-number",
3306
- children: cardNumber
3853
+ placeholder: searchPlaceholder,
3854
+ value: query
3855
+ }
3856
+ )
3857
+ ] }),
3858
+ /* @__PURE__ */ jsx("div", { className: "overflow-x-auto rounded-lg border border-border", children: /* @__PURE__ */ jsxs(Table, { children: [
3859
+ /* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsx(TableRow, { children: columns.map((column) => /* @__PURE__ */ jsx(TableHead, { className: "whitespace-nowrap", children: column.label ?? column.key.replaceAll("_", " ") }, column.key)) }) }),
3860
+ /* @__PURE__ */ jsx(TableBody, { children: pageRows.length === 0 ? /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
3861
+ TableCell,
3862
+ {
3863
+ className: "py-6 text-center text-muted-foreground",
3864
+ colSpan: columns.length,
3865
+ children: emptyLabel
3866
+ }
3867
+ ) }) : pageRows.map((row, rowIndex) => /* @__PURE__ */ jsx(TableRow, { children: columns.map((column) => /* @__PURE__ */ jsx(TableCell, { className: "max-w-56 truncate", children: formatCell(row[column.key]) }, column.key)) }, `${safePage}-${rowIndex}`)) })
3868
+ ] }) }),
3869
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
3870
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground text-xs", children: [
3871
+ filteredRows.length,
3872
+ typeof totalCount === "number" && totalCount > rows.length ? ` of ${totalCount}` : "",
3873
+ " ",
3874
+ "rows"
3875
+ ] }),
3876
+ /* @__PURE__ */ jsx(
3877
+ PaginationControls,
3878
+ {
3879
+ page: safePage,
3880
+ pageCount,
3881
+ renderPageLink: (nextPage) => (
3882
+ // biome-ignore lint/a11y/useValidAnchor: client-side pagination
3883
+ /* @__PURE__ */ jsx(
3884
+ "a",
3885
+ {
3886
+ href: "#",
3887
+ onClick: (event) => {
3888
+ event.preventDefault();
3889
+ setPage(nextPage);
3307
3890
  }
3308
- ),
3309
- /* @__PURE__ */ jsxs("div", { className: "flex items-end justify-between", children: [
3310
- /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-4", children: [
3311
- /* @__PURE__ */ jsx(
3312
- "span",
3313
- {
3314
- className: "font-medium text-[0.6875rem] uppercase tracking-[0.14em]",
3315
- "data-slot": "credit-card-holder",
3316
- children: cardHolder
3317
- }
3318
- ),
3319
- /* @__PURE__ */ jsx(
3320
- "span",
3321
- {
3322
- className: "font-medium text-[0.6875rem] tabular-nums tracking-[0.14em] opacity-80",
3323
- "data-slot": "credit-card-expiration",
3324
- children: cardExpiration
3325
- }
3326
- )
3327
- ] }),
3328
- /* @__PURE__ */ jsx(CreditCardLogo, { onDark: variant.onDark })
3329
- ] })
3330
- ] })
3331
- ]
3891
+ }
3892
+ )
3893
+ )
3332
3894
  }
3333
3895
  )
3334
- }
3335
- );
3896
+ ] })
3897
+ ] });
3336
3898
  }
3337
3899
  function Drawer(props) {
3338
3900
  return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
@@ -3940,6 +4502,33 @@ function EmptyContent({ className, ...props }) {
3940
4502
  }
3941
4503
  );
3942
4504
  }
4505
+ var fabVariants = cva(
4506
+ "fixed z-50 rounded-full shadow-lg transition-transform duration-150 hover:scale-105 active:scale-95 before:rounded-full",
4507
+ {
4508
+ defaultVariants: {
4509
+ position: "bottom-right"
4510
+ },
4511
+ variants: {
4512
+ position: {
4513
+ "bottom-right": "right-4 bottom-4 sm:right-6 sm:bottom-6",
4514
+ "bottom-left": "bottom-4 left-4 sm:bottom-6 sm:left-6",
4515
+ "top-right": "top-4 right-4 sm:top-6 sm:right-6",
4516
+ "top-left": "top-4 left-4 sm:top-6 sm:left-6"
4517
+ }
4518
+ }
4519
+ }
4520
+ );
4521
+ function Fab({ className, position, size = "icon-xl", ...props }) {
4522
+ return /* @__PURE__ */ jsx(
4523
+ Button,
4524
+ {
4525
+ className: cn(fabVariants({ className, position })),
4526
+ "data-slot": "fab",
4527
+ size,
4528
+ ...props
4529
+ }
4530
+ );
4531
+ }
3943
4532
  var featuredIconVariants = cva(
3944
4533
  "relative inline-flex shrink-0 select-none items-center justify-center align-middle [&_svg]:pointer-events-none [&_svg]:shrink-0",
3945
4534
  {
@@ -4576,7 +5165,7 @@ function InputOTPSlot({
4576
5165
  size,
4577
5166
  ...props
4578
5167
  }) {
4579
- const inputOTPContext = React15.useContext(OTPInputContext);
5168
+ const inputOTPContext = React17.useContext(OTPInputContext);
4580
5169
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
4581
5170
  return /* @__PURE__ */ jsxs(
4582
5171
  "div",
@@ -4785,6 +5374,81 @@ function KbdGroup({ className, ...props }) {
4785
5374
  }
4786
5375
  );
4787
5376
  }
5377
+ function Markdown({ children, className }) {
5378
+ return /* @__PURE__ */ jsx(
5379
+ "div",
5380
+ {
5381
+ className: cn(
5382
+ "space-y-2 break-words text-foreground text-sm leading-relaxed",
5383
+ className
5384
+ ),
5385
+ "data-slot": "markdown",
5386
+ children: /* @__PURE__ */ jsx(
5387
+ ReactMarkdown,
5388
+ {
5389
+ components: {
5390
+ a: ({ node: _node, ...props }) => /* @__PURE__ */ jsx(
5391
+ "a",
5392
+ {
5393
+ className: "font-medium text-primary underline underline-offset-2 hover:opacity-80",
5394
+ rel: "noreferrer noopener",
5395
+ target: "_blank",
5396
+ ...props
5397
+ }
5398
+ ),
5399
+ blockquote: ({ node: _node, ...props }) => /* @__PURE__ */ jsx(
5400
+ "blockquote",
5401
+ {
5402
+ className: "border-border border-l-2 pl-3 text-muted-foreground italic",
5403
+ ...props
5404
+ }
5405
+ ),
5406
+ code: ({ node: _node, className: codeClassName, ...props }) => {
5407
+ const isBlock = /language-/.test(codeClassName ?? "");
5408
+ return /* @__PURE__ */ jsx(
5409
+ "code",
5410
+ {
5411
+ className: cn(
5412
+ "rounded bg-muted font-mono text-[0.85em]",
5413
+ isBlock ? "block overflow-x-auto p-3" : "px-1 py-0.5",
5414
+ codeClassName
5415
+ ),
5416
+ ...props
5417
+ }
5418
+ );
5419
+ },
5420
+ h1: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("h1", { className: "font-semibold text-base", ...props }),
5421
+ h2: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-base", ...props }),
5422
+ h3: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm", ...props }),
5423
+ hr: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("hr", { className: "border-border", ...props }),
5424
+ li: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("li", { className: "my-0.5", ...props }),
5425
+ ol: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("ol", { className: "list-decimal space-y-1 pl-5", ...props }),
5426
+ pre: ({ node: _node, ...props }) => /* @__PURE__ */ jsx(
5427
+ "pre",
5428
+ {
5429
+ className: "overflow-x-auto rounded-lg bg-muted p-0 text-[0.85em]",
5430
+ ...props
5431
+ }
5432
+ ),
5433
+ table: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("div", { className: "overflow-x-auto rounded-lg border border-border", children: /* @__PURE__ */ jsx("table", { className: "w-full text-left text-sm", ...props }) }),
5434
+ td: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("td", { className: "border-border border-t px-3 py-1.5 align-top", ...props }),
5435
+ th: ({ node: _node, ...props }) => /* @__PURE__ */ jsx(
5436
+ "th",
5437
+ {
5438
+ className: "bg-muted px-3 py-1.5 font-medium text-muted-foreground",
5439
+ ...props
5440
+ }
5441
+ ),
5442
+ ul: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("ul", { className: "list-disc space-y-1 pl-5", ...props })
5443
+ },
5444
+ remarkPlugins: [remarkGfm],
5445
+ skipHtml: true,
5446
+ children
5447
+ }
5448
+ )
5449
+ }
5450
+ );
5451
+ }
4788
5452
  var MenuCreateHandle = Menu$1.createHandle;
4789
5453
  var Menu = Menu$1.Root;
4790
5454
  var MenuPortal = Menu$1.Portal;
@@ -5152,10 +5816,10 @@ function MultiSelect({
5152
5816
  popupClassName,
5153
5817
  sideOffset = 4
5154
5818
  }) {
5155
- const [uncontrolledValue, setUncontrolledValue] = React15.useState(
5819
+ const [uncontrolledValue, setUncontrolledValue] = React17.useState(
5156
5820
  defaultValue ?? []
5157
5821
  );
5158
- const [search, setSearch] = React15.useState("");
5822
+ const [search, setSearch] = React17.useState("");
5159
5823
  const isControlled = valueProp !== void 0;
5160
5824
  const value = isControlled ? valueProp : uncontrolledValue;
5161
5825
  const setValue = (next) => {
@@ -5299,8 +5963,8 @@ function MultiSelectSearch({
5299
5963
  onChange,
5300
5964
  placeholder
5301
5965
  }) {
5302
- const inputRef = React15.useRef(null);
5303
- React15.useEffect(() => {
5966
+ const inputRef = React17.useRef(null);
5967
+ React17.useEffect(() => {
5304
5968
  const frame = requestAnimationFrame(() => inputRef.current?.focus());
5305
5969
  return () => cancelAnimationFrame(frame);
5306
5970
  }, []);
@@ -5398,251 +6062,104 @@ function NavigationMenu({
5398
6062
  className: "relative h-full w-full overflow-hidden",
5399
6063
  "data-slot": "navigation-menu-viewport"
5400
6064
  }
5401
- )
5402
- }
5403
- )
5404
- }
5405
- ) })
5406
- ]
5407
- }
5408
- );
5409
- }
5410
- function NavigationMenuList({
5411
- className,
5412
- ...props
5413
- }) {
5414
- return /* @__PURE__ */ jsx(
5415
- NavigationMenu$1.List,
5416
- {
5417
- className: cn(
5418
- "group flex flex-1 list-none items-center justify-center gap-1",
5419
- className
5420
- ),
5421
- "data-slot": "navigation-menu-list",
5422
- ...props
5423
- }
5424
- );
5425
- }
5426
- function NavigationMenuItem({
5427
- className,
5428
- ...props
5429
- }) {
5430
- return /* @__PURE__ */ jsx(
5431
- NavigationMenu$1.Item,
5432
- {
5433
- className: cn("relative", className),
5434
- "data-slot": "navigation-menu-item",
5435
- ...props
5436
- }
5437
- );
5438
- }
5439
- var navigationMenuTriggerStyle = cva(
5440
- "group inline-flex h-9 w-max cursor-pointer select-none items-center justify-center gap-1 rounded-lg bg-transparent px-3 py-2 font-medium text-base outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-popup-open:bg-accent/50 data-popup-open:text-accent-foreground disabled:pointer-events-none disabled:opacity-64 sm:h-8 sm:text-sm"
5441
- );
5442
- function NavigationMenuTrigger({
5443
- className,
5444
- children,
5445
- ...props
5446
- }) {
5447
- return /* @__PURE__ */ jsxs(
5448
- NavigationMenu$1.Trigger,
5449
- {
5450
- className: cn(navigationMenuTriggerStyle(), className),
5451
- "data-slot": "navigation-menu-trigger",
5452
- ...props,
5453
- children: [
5454
- children,
5455
- /* @__PURE__ */ jsx(
5456
- NavigationMenu$1.Icon,
5457
- {
5458
- className: "relative top-px transition-transform duration-300 ease-in-out group-data-popup-open:rotate-180",
5459
- "data-slot": "navigation-menu-icon",
5460
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-3.5 opacity-80" })
5461
- }
5462
- )
5463
- ]
5464
- }
5465
- );
5466
- }
5467
- function NavigationMenuContent({
5468
- className,
5469
- ...props
5470
- }) {
5471
- return /* @__PURE__ */ jsx(
5472
- NavigationMenu$1.Content,
5473
- {
5474
- className: cn(
5475
- "h-full w-max p-2 transition-[opacity,translate,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 data-[activation-direction=left]:data-ending-style:translate-x-[50%] data-[activation-direction=left]:data-starting-style:translate-x-[-50%] data-[activation-direction=right]:data-ending-style:translate-x-[-50%] data-[activation-direction=right]:data-starting-style:translate-x-[50%]",
5476
- className
5477
- ),
5478
- "data-slot": "navigation-menu-content",
5479
- ...props
5480
- }
5481
- );
5482
- }
5483
- function NavigationMenuLink({
5484
- className,
5485
- ...props
5486
- }) {
5487
- return /* @__PURE__ */ jsx(
5488
- NavigationMenu$1.Link,
5489
- {
5490
- className: cn(
5491
- "flex cursor-pointer flex-col gap-1 rounded-md p-2 text-base no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-sm [&_svg:not([class*='size-'])]:size-4",
5492
- className
5493
- ),
5494
- "data-slot": "navigation-menu-link",
5495
- ...props
5496
- }
5497
- );
5498
- }
5499
- function Pagination({ className, ...props }) {
5500
- return /* @__PURE__ */ jsx(
5501
- "nav",
5502
- {
5503
- "aria-label": "pagination",
5504
- className: cn("mx-auto flex w-full justify-center", className),
5505
- "data-slot": "pagination",
5506
- ...props
5507
- }
5508
- );
5509
- }
5510
- function PaginationContent({
5511
- className,
5512
- ...props
5513
- }) {
5514
- return /* @__PURE__ */ jsx(
5515
- "ul",
5516
- {
5517
- className: cn("flex flex-row items-center gap-1", className),
5518
- "data-slot": "pagination-content",
5519
- ...props
6065
+ )
6066
+ }
6067
+ )
6068
+ }
6069
+ ) })
6070
+ ]
5520
6071
  }
5521
6072
  );
5522
6073
  }
5523
- function PaginationItem({ className, ...props }) {
6074
+ function NavigationMenuList({
6075
+ className,
6076
+ ...props
6077
+ }) {
5524
6078
  return /* @__PURE__ */ jsx(
5525
- "li",
6079
+ NavigationMenu$1.List,
5526
6080
  {
5527
6081
  className: cn(
5528
- "animate-in fade-in-0 zoom-in-95 duration-200 ease-out",
6082
+ "group flex flex-1 list-none items-center justify-center gap-1",
5529
6083
  className
5530
6084
  ),
5531
- "data-slot": "pagination-item",
6085
+ "data-slot": "navigation-menu-list",
5532
6086
  ...props
5533
6087
  }
5534
6088
  );
5535
6089
  }
5536
- function PaginationLink({
6090
+ function NavigationMenuItem({
5537
6091
  className,
5538
- isActive,
5539
- disabled,
5540
- size = "icon",
5541
- render,
5542
6092
  ...props
5543
6093
  }) {
5544
- const defaultProps = {
5545
- "aria-current": isActive ? "page" : void 0,
5546
- "aria-disabled": disabled || void 0,
5547
- className: cn(
5548
- buttonVariants({
5549
- size,
5550
- variant: isActive ? "outline" : "ghost"
5551
- }),
5552
- "transition-[opacity,box-shadow,filter] duration-200 ease-out",
5553
- disabled && "pointer-events-none opacity-50",
5554
- className
5555
- ),
5556
- "data-active": isActive,
5557
- "data-disabled": disabled || void 0,
5558
- "data-slot": "pagination-link",
5559
- tabIndex: disabled ? -1 : void 0
5560
- };
5561
- return useRender({
5562
- defaultTagName: "a",
5563
- props: mergeProps(defaultProps, props),
5564
- render
5565
- });
6094
+ return /* @__PURE__ */ jsx(
6095
+ NavigationMenu$1.Item,
6096
+ {
6097
+ className: cn("relative", className),
6098
+ "data-slot": "navigation-menu-item",
6099
+ ...props
6100
+ }
6101
+ );
5566
6102
  }
5567
- function PaginationPrevious({
6103
+ var navigationMenuTriggerStyle = cva(
6104
+ "group inline-flex h-9 w-max cursor-pointer select-none items-center justify-center gap-1 rounded-lg bg-transparent px-3 py-2 font-medium text-base outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-popup-open:bg-accent/50 data-popup-open:text-accent-foreground disabled:pointer-events-none disabled:opacity-64 sm:h-8 sm:text-sm"
6105
+ );
6106
+ function NavigationMenuTrigger({
5568
6107
  className,
6108
+ children,
5569
6109
  ...props
5570
6110
  }) {
5571
6111
  return /* @__PURE__ */ jsxs(
5572
- PaginationLink,
6112
+ NavigationMenu$1.Trigger,
5573
6113
  {
5574
- "aria-label": "Go to previous page",
5575
- className: cn("max-sm:aspect-square max-sm:p-0", className),
5576
- size: "default",
6114
+ className: cn(navigationMenuTriggerStyle(), className),
6115
+ "data-slot": "navigation-menu-trigger",
5577
6116
  ...props,
5578
6117
  children: [
5579
- /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "sm:-ms-1" }),
5580
- /* @__PURE__ */ jsx("span", { className: "max-sm:hidden", children: "Previous" })
6118
+ children,
6119
+ /* @__PURE__ */ jsx(
6120
+ NavigationMenu$1.Icon,
6121
+ {
6122
+ className: "relative top-px transition-transform duration-300 ease-in-out group-data-popup-open:rotate-180",
6123
+ "data-slot": "navigation-menu-icon",
6124
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-3.5 opacity-80" })
6125
+ }
6126
+ )
5581
6127
  ]
5582
6128
  }
5583
6129
  );
5584
6130
  }
5585
- function PaginationNext({
6131
+ function NavigationMenuContent({
5586
6132
  className,
5587
6133
  ...props
5588
6134
  }) {
5589
- return /* @__PURE__ */ jsxs(
5590
- PaginationLink,
6135
+ return /* @__PURE__ */ jsx(
6136
+ NavigationMenu$1.Content,
5591
6137
  {
5592
- "aria-label": "Go to next page",
5593
- className: cn("max-sm:aspect-square max-sm:p-0", className),
5594
- size: "default",
5595
- ...props,
5596
- children: [
5597
- /* @__PURE__ */ jsx("span", { className: "max-sm:hidden", children: "Next" }),
5598
- /* @__PURE__ */ jsx(ChevronRightIcon, { className: "sm:-me-1" })
5599
- ]
6138
+ className: cn(
6139
+ "h-full w-max p-2 transition-[opacity,translate,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 data-[activation-direction=left]:data-ending-style:translate-x-[50%] data-[activation-direction=left]:data-starting-style:translate-x-[-50%] data-[activation-direction=right]:data-ending-style:translate-x-[-50%] data-[activation-direction=right]:data-starting-style:translate-x-[50%]",
6140
+ className
6141
+ ),
6142
+ "data-slot": "navigation-menu-content",
6143
+ ...props
5600
6144
  }
5601
6145
  );
5602
6146
  }
5603
- function PaginationEllipsis({
6147
+ function NavigationMenuLink({
5604
6148
  className,
5605
6149
  ...props
5606
6150
  }) {
5607
- return /* @__PURE__ */ jsxs(
5608
- "span",
6151
+ return /* @__PURE__ */ jsx(
6152
+ NavigationMenu$1.Link,
5609
6153
  {
5610
- "aria-hidden": true,
5611
- className: cn("flex min-w-7 justify-center", className),
5612
- "data-slot": "pagination-ellipsis",
5613
- ...props,
5614
- children: [
5615
- /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-5 sm:size-4" }),
5616
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
5617
- ]
6154
+ className: cn(
6155
+ "flex cursor-pointer flex-col gap-1 rounded-md p-2 text-base no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background sm:text-sm [&_svg:not([class*='size-'])]:size-4",
6156
+ className
6157
+ ),
6158
+ "data-slot": "navigation-menu-link",
6159
+ ...props
5618
6160
  }
5619
6161
  );
5620
6162
  }
5621
- function PaginationControls(props) {
5622
- const { page, pageCount, renderPageLink } = props;
5623
- if (pageCount <= 1) return null;
5624
- return /* @__PURE__ */ jsx(Pagination, { children: /* @__PURE__ */ jsxs(PaginationContent, { children: [
5625
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
5626
- PaginationPrevious,
5627
- {
5628
- disabled: page <= 1,
5629
- render: page > 1 ? renderPageLink(page - 1) : /* @__PURE__ */ jsx("span", {})
5630
- }
5631
- ) }),
5632
- page > 1 && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationLink, { render: renderPageLink(1), children: "1" }) }),
5633
- page > 2 && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }),
5634
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationLink, { render: renderPageLink(page), isActive: true, children: page }) }),
5635
- pageCount > page + 1 && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }),
5636
- pageCount > page && /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationLink, { render: renderPageLink(pageCount), children: pageCount }) }),
5637
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
5638
- PaginationNext,
5639
- {
5640
- disabled: page >= pageCount,
5641
- render: page < pageCount ? renderPageLink(page + 1) : /* @__PURE__ */ jsx("span", {})
5642
- }
5643
- ) })
5644
- ] }) });
5645
- }
5646
6163
  var PreviewCard = PreviewCard$1.Root;
5647
6164
  function PreviewCardTrigger({ ...props }) {
5648
6165
  return /* @__PURE__ */ jsx(PreviewCard$1.Trigger, { "data-slot": "preview-card-trigger", ...props });
@@ -5938,8 +6455,8 @@ var qrCodeVariants = cva(
5938
6455
  }
5939
6456
  );
5940
6457
  function QRCode({ className, size, value, options, ...props }) {
5941
- const containerRef = React15.useRef(null);
5942
- React15.useEffect(() => {
6458
+ const containerRef = React17.useRef(null);
6459
+ React17.useEffect(() => {
5943
6460
  const container = containerRef.current;
5944
6461
  if (!container) return;
5945
6462
  let disposed = false;
@@ -6467,8 +6984,8 @@ function SocialButton({
6467
6984
  render
6468
6985
  });
6469
6986
  }
6470
- var StepperContext = React15.createContext({ orientation: "horizontal", value: 1 });
6471
- var StepperItemContext = React15.createContext({ state: "inactive", step: 1 });
6987
+ var StepperContext = React17.createContext({ orientation: "horizontal", value: 1 });
6988
+ var StepperItemContext = React17.createContext({ state: "inactive", step: 1 });
6472
6989
  function Stepper({
6473
6990
  value = 1,
6474
6991
  orientation = "horizontal",
@@ -6495,7 +7012,7 @@ function StepperItem({
6495
7012
  className,
6496
7013
  ...props
6497
7014
  }) {
6498
- const { value } = React15.useContext(StepperContext);
7015
+ const { value } = React17.useContext(StepperContext);
6499
7016
  const state = completed || value > step ? "completed" : value === step ? "active" : "inactive";
6500
7017
  return /* @__PURE__ */ jsx(StepperItemContext.Provider, { value: { state, step }, children: /* @__PURE__ */ jsx(
6501
7018
  "div",
@@ -6534,7 +7051,7 @@ function StepperIndicator({
6534
7051
  children,
6535
7052
  ...props
6536
7053
  }) {
6537
- const { step } = React15.useContext(StepperItemContext);
7054
+ const { step } = React17.useContext(StepperItemContext);
6538
7055
  return /* @__PURE__ */ jsxs(
6539
7056
  "span",
6540
7057
  {
@@ -6862,7 +7379,7 @@ function TooltipPopup({
6862
7379
  }
6863
7380
  ) });
6864
7381
  }
6865
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React15.useLayoutEffect : React15.useEffect;
7382
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React17.useLayoutEffect : React17.useEffect;
6866
7383
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
6867
7384
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
6868
7385
  var SIDEBAR_WIDTH_LG = "18.5rem";
@@ -6870,9 +7387,9 @@ var SIDEBAR_WIDTH_MD = "14.5rem";
6870
7387
  var SIDEBAR_WIDTH_MOBILE = "18rem";
6871
7388
  var SIDEBAR_WIDTH_ICON = "3rem";
6872
7389
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
6873
- var SidebarContext = React15.createContext(null);
7390
+ var SidebarContext = React17.createContext(null);
6874
7391
  function useSidebar() {
6875
- const context = React15.useContext(SidebarContext);
7392
+ const context = React17.useContext(SidebarContext);
6876
7393
  if (!context) {
6877
7394
  throw new Error("useSidebar must be used within a SidebarProvider.");
6878
7395
  }
@@ -6887,7 +7404,7 @@ function SidebarProvider({
6887
7404
  children,
6888
7405
  ...props
6889
7406
  }) {
6890
- const [isMobile, setIsMobile] = React15.useState(false);
7407
+ const [isMobile, setIsMobile] = React17.useState(false);
6891
7408
  useIsomorphicLayoutEffect(() => {
6892
7409
  const mql = window.matchMedia("(max-width: 47.999rem)");
6893
7410
  const onChange = () => setIsMobile(mql.matches);
@@ -6895,10 +7412,10 @@ function SidebarProvider({
6895
7412
  mql.addEventListener("change", onChange);
6896
7413
  return () => mql.removeEventListener("change", onChange);
6897
7414
  }, []);
6898
- const [openMobile, setOpenMobile] = React15.useState(false);
6899
- const [_open, _setOpen] = React15.useState(defaultOpen);
7415
+ const [openMobile, setOpenMobile] = React17.useState(false);
7416
+ const [_open, _setOpen] = React17.useState(defaultOpen);
6900
7417
  const open = openProp ?? _open;
6901
- const setOpen = React15.useCallback(
7418
+ const setOpen = React17.useCallback(
6902
7419
  (value) => {
6903
7420
  const openState = typeof value === "function" ? value(open) : value;
6904
7421
  if (setOpenProp) {
@@ -6913,10 +7430,10 @@ function SidebarProvider({
6913
7430
  },
6914
7431
  [setOpenProp, open]
6915
7432
  );
6916
- const toggleSidebar = React15.useCallback(() => {
7433
+ const toggleSidebar = React17.useCallback(() => {
6917
7434
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
6918
7435
  }, [isMobile, setOpen]);
6919
- React15.useEffect(() => {
7436
+ React17.useEffect(() => {
6920
7437
  const handleKeyDown = (event) => {
6921
7438
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
6922
7439
  event.preventDefault();
@@ -6927,7 +7444,7 @@ function SidebarProvider({
6927
7444
  return () => window.removeEventListener("keydown", handleKeyDown);
6928
7445
  }, [toggleSidebar]);
6929
7446
  const state = open ? "expanded" : "collapsed";
6930
- const contextValue = React15.useMemo(
7447
+ const contextValue = React17.useMemo(
6931
7448
  () => ({
6932
7449
  isMobile,
6933
7450
  open,
@@ -7394,7 +7911,7 @@ function SidebarMenuSkeleton({
7394
7911
  showIcon = false,
7395
7912
  ...props
7396
7913
  }) {
7397
- const width = React15.useMemo(() => {
7914
+ const width = React17.useMemo(() => {
7398
7915
  return `${Math.floor(Math.random() * 40) + 50}%`;
7399
7916
  }, []);
7400
7917
  return /* @__PURE__ */ jsxs(
@@ -7493,7 +8010,7 @@ function Slider({
7493
8010
  formatLabel = (labelValue) => String(labelValue),
7494
8011
  ...props
7495
8012
  }) {
7496
- const _values = React15.useMemo(() => {
8013
+ const _values = React17.useMemo(() => {
7497
8014
  if (value !== void 0) {
7498
8015
  return Array.isArray(value) ? value : [value];
7499
8016
  }
@@ -7772,120 +8289,6 @@ function Switch({ className, size = "md", slim = false, ...props }) {
7772
8289
  }
7773
8290
  );
7774
8291
  }
7775
- function Table({ className, ...props }) {
7776
- return /* @__PURE__ */ jsx(
7777
- "div",
7778
- {
7779
- className: "relative w-full overflow-x-auto",
7780
- "data-slot": "table-container",
7781
- children: /* @__PURE__ */ jsx(
7782
- "table",
7783
- {
7784
- className: cn(
7785
- "w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm",
7786
- className
7787
- ),
7788
- "data-slot": "table",
7789
- ...props
7790
- }
7791
- )
7792
- }
7793
- );
7794
- }
7795
- function TableHeader({ className, ...props }) {
7796
- return /* @__PURE__ */ jsx(
7797
- "thead",
7798
- {
7799
- className: cn(
7800
- "[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent",
7801
- className
7802
- ),
7803
- "data-slot": "table-header",
7804
- ...props
7805
- }
7806
- );
7807
- }
7808
- function TableBody({ className, ...props }) {
7809
- return /* @__PURE__ */ jsx(
7810
- "tbody",
7811
- {
7812
- className: cn(
7813
- "relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs/5 before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-background in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-transparent in-data-[slot=frame]:*:[tr]:data-[state=selected]:*:[td]:bg-muted/72",
7814
- className
7815
- ),
7816
- "data-slot": "table-body",
7817
- ...props
7818
- }
7819
- );
7820
- }
7821
- function TableFooter({ className, ...props }) {
7822
- return /* @__PURE__ */ jsx(
7823
- "tfoot",
7824
- {
7825
- className: cn(
7826
- "border-t in-data-[slot=frame]:border-none bg-muted/72 in-data-[slot=frame]:bg-transparent font-medium [&>tr]:last:border-b-0 in-data-[slot=frame]:*:[tr]:hover:bg-transparent",
7827
- className
7828
- ),
7829
- "data-slot": "table-footer",
7830
- ...props
7831
- }
7832
- );
7833
- }
7834
- function TableRow({ className, ...props }) {
7835
- return /* @__PURE__ */ jsx(
7836
- "tr",
7837
- {
7838
- className: cn(
7839
- "border-b transition-colors hover:bg-muted/72 in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted/72 in-data-[slot=frame]:data-[state=selected]:bg-transparent",
7840
- className
7841
- ),
7842
- "data-slot": "table-row",
7843
- ...props
7844
- }
7845
- );
7846
- }
7847
- function TableHead({ className, ...props }) {
7848
- return /* @__PURE__ */ jsx(
7849
- "th",
7850
- {
7851
- className: cn(
7852
- "h-10 whitespace-nowrap px-2.5 text-left align-middle font-medium text-muted-foreground leading-none has-[[role=checkbox]]:w-px has-[[role=checkbox]]:pe-0",
7853
- className
7854
- ),
7855
- "data-slot": "table-head",
7856
- ...props
7857
- }
7858
- );
7859
- }
7860
- function TableCell({ className, ...props }) {
7861
- return /* @__PURE__ */ jsx(
7862
- "td",
7863
- {
7864
- className: cn(
7865
- "whitespace-nowrap p-2.5 align-middle leading-none in-data-[slot=frame]:first:p-[calc(--spacing(2.5)-1px)] in-data-[slot=frame]:last:p-[calc(--spacing(2.5)-1px)] has-[[role=checkbox]]:pe-0",
7866
- className
7867
- ),
7868
- "data-slot": "table-cell",
7869
- ...props
7870
- }
7871
- );
7872
- }
7873
- function TableCaption({
7874
- className,
7875
- ...props
7876
- }) {
7877
- return /* @__PURE__ */ jsx(
7878
- "caption",
7879
- {
7880
- className: cn(
7881
- "in-data-[slot=frame]:my-4 mt-4 text-muted-foreground text-sm",
7882
- className
7883
- ),
7884
- "data-slot": "table-caption",
7885
- ...props
7886
- }
7887
- );
7888
- }
7889
8292
  function Tabs({ className, ...props }) {
7890
8293
  return /* @__PURE__ */ jsx(
7891
8294
  Tabs$1.Root,
@@ -8780,7 +9183,7 @@ function Toggle({
8780
9183
  }
8781
9184
  );
8782
9185
  }
8783
- var ToggleGroupContext = React15.createContext({
9186
+ var ToggleGroupContext = React17.createContext({
8784
9187
  size: "default",
8785
9188
  variant: "default"
8786
9189
  });
@@ -8817,7 +9220,7 @@ function Toggle2({
8817
9220
  size,
8818
9221
  ...props
8819
9222
  }) {
8820
- const context = React15.useContext(ToggleGroupContext);
9223
+ const context = React17.useContext(ToggleGroupContext);
8821
9224
  const resolvedVariant = context.variant || variant;
8822
9225
  const resolvedSize = context.size || size;
8823
9226
  return /* @__PURE__ */ jsx(
@@ -9093,30 +9496,30 @@ function VideoPlayer({
9093
9496
  loop = false,
9094
9497
  ...props
9095
9498
  }) {
9096
- const containerRef = React15.useRef(null);
9097
- const videoRef = React15.useRef(null);
9098
- const hideTimerRef = React15.useRef(null);
9099
- const [playing, setPlaying] = React15.useState(false);
9100
- const [currentTime, setCurrentTime] = React15.useState(0);
9101
- const [duration, setDuration] = React15.useState(0);
9102
- const [muted, setMuted] = React15.useState(false);
9103
- const [fullscreen, setFullscreen] = React15.useState(false);
9104
- const [controlsVisible, setControlsVisible] = React15.useState(true);
9499
+ const containerRef = React17.useRef(null);
9500
+ const videoRef = React17.useRef(null);
9501
+ const hideTimerRef = React17.useRef(null);
9502
+ const [playing, setPlaying] = React17.useState(false);
9503
+ const [currentTime, setCurrentTime] = React17.useState(0);
9504
+ const [duration, setDuration] = React17.useState(0);
9505
+ const [muted, setMuted] = React17.useState(false);
9506
+ const [fullscreen, setFullscreen] = React17.useState(false);
9507
+ const [controlsVisible, setControlsVisible] = React17.useState(true);
9105
9508
  const clearHideTimer = () => {
9106
9509
  if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
9107
9510
  };
9108
- const scheduleHide = React15.useCallback(() => {
9511
+ const scheduleHide = React17.useCallback(() => {
9109
9512
  clearHideTimer();
9110
9513
  hideTimerRef.current = setTimeout(() => setControlsVisible(false), 2500);
9111
9514
  }, []);
9112
- React15.useEffect(() => () => clearHideTimer(), []);
9113
- React15.useEffect(() => {
9515
+ React17.useEffect(() => () => clearHideTimer(), []);
9516
+ React17.useEffect(() => {
9114
9517
  if (!playing) {
9115
9518
  clearHideTimer();
9116
9519
  setControlsVisible(true);
9117
9520
  }
9118
9521
  }, [playing]);
9119
- React15.useEffect(() => {
9522
+ React17.useEffect(() => {
9120
9523
  const handler = () => setFullscreen(!!document.fullscreenElement);
9121
9524
  document.addEventListener("fullscreenchange", handler);
9122
9525
  return () => document.removeEventListener("fullscreenchange", handler);
@@ -9686,6 +10089,6 @@ function useIs2xl({
9686
10089
  return is2xl;
9687
10090
  }
9688
10091
 
9689
- 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, AnimatedThemeToggler, AppGalleryLogoIcon, AppStoreButton, AppleLogoIcon, AspectRatio, 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, 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, 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, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CreditCard, DashboardHeader, DashboardPanel, 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, FacebookLogoIcon, FeaturedIcon, Fieldset, FieldsetLegend, FigmaLogoIcon, ForbiddenErrorState, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GalaxyStoreLogoIcon, GeneralErrorState, GoogleLogoIcon, GooglePlayLogoIcon, Group, GroupSeparator, GroupText, 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, 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, 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, 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, featuredIconVariants, groupVariants, itemVariants, navigationMenuTriggerStyle, qrCodeVariants, script, sectionHeaderDescriptionVariants, sectionHeaderTitleVariants, sheetPopupVariants, sheetViewportVariants, socialButtonVariants, statTrendVariants, statVariants, toastManager, toggleVariants, useAutocompleteFilter, use_callback_ref_default as useCallbackRef, useCarousel, useComboboxFilter, useFirstRender, useHover, useIs2xl, useIsLg, useIsMd, useIsSm, use_is_tab_active_default as useIsTabActive, useIsXl, useMediaQuery, useSidebar, useSmoothWheel, useSubscribeBreakpoints, useTheme, videoPlayerVariants };
10092
+ 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, AnimatedThemeToggler, AppGalleryLogoIcon, AppStoreButton, AppleLogoIcon, AspectRatio, 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, 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, ChatInput, ChatMessage, ChatMessageBubble, ChatMessages, ChatToolCard, ChatToolCardActions, ChatToolCardHeader, 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, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CreditCard, DashboardHeader, DashboardPanel, DataTablePaged, 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, 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, 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, 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, socialButtonVariants, statTrendVariants, statVariants, toastManager, toggleVariants, useAutocompleteFilter, use_callback_ref_default as useCallbackRef, useCarousel, useComboboxFilter, useFirstRender, useHover, useIs2xl, useIsLg, useIsMd, useIsSm, use_is_tab_active_default as useIsTabActive, useIsXl, useMediaQuery, useSidebar, useSmoothWheel, useSubscribeBreakpoints, useTheme, videoPlayerVariants };
9690
10093
  //# sourceMappingURL=index.js.map
9691
10094
  //# sourceMappingURL=index.js.map