@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/form.d.ts +1 -1
- package/dist/index.d.ts +97 -3
- package/dist/index.js +845 -442
- package/dist/index.js.map +1 -1
- package/dist/{input-CZvh825j.d.ts → input-JCZs61MO.d.ts} +1 -1
- package/package.json +3 -1
- package/src/components/ui/chat.tsx +271 -0
- package/src/components/ui/data-table-paged.tsx +163 -0
- package/src/components/ui/fab.tsx +45 -0
- package/src/components/ui/markdown.tsx +107 -0
- package/src/index.ts +4 -0
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,
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
2148
|
+
var CarouselContext = React17.createContext(null);
|
|
2147
2149
|
function useCarousel() {
|
|
2148
|
-
const context =
|
|
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] =
|
|
2172
|
-
const [canScrollNext, setCanScrollNext] =
|
|
2173
|
-
const onSelect =
|
|
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 =
|
|
2180
|
+
const scrollPrev = React17.useCallback(() => {
|
|
2179
2181
|
api?.scrollPrev();
|
|
2180
2182
|
}, [api]);
|
|
2181
|
-
const scrollNext =
|
|
2183
|
+
const scrollNext = React17.useCallback(() => {
|
|
2182
2184
|
api?.scrollNext();
|
|
2183
2185
|
}, [api]);
|
|
2184
|
-
const handleKeyDown =
|
|
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
|
-
|
|
2198
|
+
React17.useEffect(() => {
|
|
2197
2199
|
if (!api || !setApi) return;
|
|
2198
2200
|
setApi(api);
|
|
2199
2201
|
}, [api, setApi]);
|
|
2200
|
-
|
|
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 =
|
|
2344
|
+
var ChartContext = React17.createContext(null);
|
|
2343
2345
|
function useChart() {
|
|
2344
|
-
const context =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
2809
|
+
var ComboboxContext = React17.createContext({
|
|
2597
2810
|
chipsRef: null,
|
|
2598
2811
|
multiple: false
|
|
2599
2812
|
});
|
|
2600
2813
|
function Combobox(props) {
|
|
2601
|
-
const chipsRef =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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:
|
|
3279
|
-
|
|
3280
|
-
|
|
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
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
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
|
-
|
|
3310
|
-
|
|
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 =
|
|
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] =
|
|
5819
|
+
const [uncontrolledValue, setUncontrolledValue] = React17.useState(
|
|
5156
5820
|
defaultValue ?? []
|
|
5157
5821
|
);
|
|
5158
|
-
const [search, setSearch] =
|
|
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 =
|
|
5303
|
-
|
|
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
|
|
6074
|
+
function NavigationMenuList({
|
|
6075
|
+
className,
|
|
6076
|
+
...props
|
|
6077
|
+
}) {
|
|
5524
6078
|
return /* @__PURE__ */ jsx(
|
|
5525
|
-
|
|
6079
|
+
NavigationMenu$1.List,
|
|
5526
6080
|
{
|
|
5527
6081
|
className: cn(
|
|
5528
|
-
"
|
|
6082
|
+
"group flex flex-1 list-none items-center justify-center gap-1",
|
|
5529
6083
|
className
|
|
5530
6084
|
),
|
|
5531
|
-
"data-slot": "
|
|
6085
|
+
"data-slot": "navigation-menu-list",
|
|
5532
6086
|
...props
|
|
5533
6087
|
}
|
|
5534
6088
|
);
|
|
5535
6089
|
}
|
|
5536
|
-
function
|
|
6090
|
+
function NavigationMenuItem({
|
|
5537
6091
|
className,
|
|
5538
|
-
isActive,
|
|
5539
|
-
disabled,
|
|
5540
|
-
size = "icon",
|
|
5541
|
-
render,
|
|
5542
6092
|
...props
|
|
5543
6093
|
}) {
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6112
|
+
NavigationMenu$1.Trigger,
|
|
5573
6113
|
{
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
size: "default",
|
|
6114
|
+
className: cn(navigationMenuTriggerStyle(), className),
|
|
6115
|
+
"data-slot": "navigation-menu-trigger",
|
|
5577
6116
|
...props,
|
|
5578
6117
|
children: [
|
|
5579
|
-
|
|
5580
|
-
/* @__PURE__ */ jsx(
|
|
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
|
|
6131
|
+
function NavigationMenuContent({
|
|
5586
6132
|
className,
|
|
5587
6133
|
...props
|
|
5588
6134
|
}) {
|
|
5589
|
-
return /* @__PURE__ */
|
|
5590
|
-
|
|
6135
|
+
return /* @__PURE__ */ jsx(
|
|
6136
|
+
NavigationMenu$1.Content,
|
|
5591
6137
|
{
|
|
5592
|
-
|
|
5593
|
-
|
|
5594
|
-
|
|
5595
|
-
|
|
5596
|
-
|
|
5597
|
-
|
|
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
|
|
6147
|
+
function NavigationMenuLink({
|
|
5604
6148
|
className,
|
|
5605
6149
|
...props
|
|
5606
6150
|
}) {
|
|
5607
|
-
return /* @__PURE__ */
|
|
5608
|
-
|
|
6151
|
+
return /* @__PURE__ */ jsx(
|
|
6152
|
+
NavigationMenu$1.Link,
|
|
5609
6153
|
{
|
|
5610
|
-
|
|
5611
|
-
|
|
5612
|
-
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
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 =
|
|
5942
|
-
|
|
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 =
|
|
6471
|
-
var StepperItemContext =
|
|
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 } =
|
|
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 } =
|
|
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" ?
|
|
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 =
|
|
7390
|
+
var SidebarContext = React17.createContext(null);
|
|
6874
7391
|
function useSidebar() {
|
|
6875
|
-
const context =
|
|
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] =
|
|
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] =
|
|
6899
|
-
const [_open, _setOpen] =
|
|
7415
|
+
const [openMobile, setOpenMobile] = React17.useState(false);
|
|
7416
|
+
const [_open, _setOpen] = React17.useState(defaultOpen);
|
|
6900
7417
|
const open = openProp ?? _open;
|
|
6901
|
-
const setOpen =
|
|
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 =
|
|
7433
|
+
const toggleSidebar = React17.useCallback(() => {
|
|
6917
7434
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
6918
7435
|
}, [isMobile, setOpen]);
|
|
6919
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
9097
|
-
const videoRef =
|
|
9098
|
-
const hideTimerRef =
|
|
9099
|
-
const [playing, setPlaying] =
|
|
9100
|
-
const [currentTime, setCurrentTime] =
|
|
9101
|
-
const [duration, setDuration] =
|
|
9102
|
-
const [muted, setMuted] =
|
|
9103
|
-
const [fullscreen, setFullscreen] =
|
|
9104
|
-
const [controlsVisible, setControlsVisible] =
|
|
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 =
|
|
9511
|
+
const scheduleHide = React17.useCallback(() => {
|
|
9109
9512
|
clearHideTimer();
|
|
9110
9513
|
hideTimerRef.current = setTimeout(() => setControlsVisible(false), 2500);
|
|
9111
9514
|
}, []);
|
|
9112
|
-
|
|
9113
|
-
|
|
9515
|
+
React17.useEffect(() => () => clearHideTimer(), []);
|
|
9516
|
+
React17.useEffect(() => {
|
|
9114
9517
|
if (!playing) {
|
|
9115
9518
|
clearHideTimer();
|
|
9116
9519
|
setControlsVisible(true);
|
|
9117
9520
|
}
|
|
9118
9521
|
}, [playing]);
|
|
9119
|
-
|
|
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
|