@e-infra/design-system 0.0.9 → 0.1.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/README.md +2 -68
- package/package.json +4 -2
- package/dist/index.cjs.js +0 -4462
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.es.js +0 -4423
- package/dist/index.es.js.map +0 -1
- package/dist/setup.css +0 -247
- package/dist/types/components/compounds/cookies_banner.d.ts +0 -15
- package/dist/types/components/compounds/cookies_banner.d.ts.map +0 -1
- package/dist/types/components/compounds/feedbackform.d.ts +0 -41
- package/dist/types/components/compounds/feedbackform.d.ts.map +0 -1
- package/dist/types/components/compounds/index.d.ts +0 -3
- package/dist/types/components/compounds/index.d.ts.map +0 -1
- package/dist/types/components/foundations/index.d.ts +0 -2
- package/dist/types/components/foundations/index.d.ts.map +0 -1
- package/dist/types/components/foundations/typography.d.ts +0 -16
- package/dist/types/components/foundations/typography.d.ts.map +0 -1
- package/dist/types/components/index.d.ts +0 -43
- package/dist/types/components/index.d.ts.map +0 -1
- package/dist/types/components/layout/content.d.ts +0 -8
- package/dist/types/components/layout/content.d.ts.map +0 -1
- package/dist/types/components/layout/footer.d.ts +0 -14
- package/dist/types/components/layout/footer.d.ts.map +0 -1
- package/dist/types/components/layout/header.d.ts +0 -20
- package/dist/types/components/layout/header.d.ts.map +0 -1
- package/dist/types/components/layout/index.d.ts +0 -4
- package/dist/types/components/layout/index.d.ts.map +0 -1
- package/dist/types/components/layout/sidebar.d.ts +0 -70
- package/dist/types/components/layout/sidebar.d.ts.map +0 -1
- package/dist/types/components/primitives/accordion.d.ts +0 -8
- package/dist/types/components/primitives/accordion.d.ts.map +0 -1
- package/dist/types/components/primitives/alert-dialog.d.ts +0 -15
- package/dist/types/components/primitives/alert-dialog.d.ts.map +0 -1
- package/dist/types/components/primitives/alert.d.ts +0 -10
- package/dist/types/components/primitives/alert.d.ts.map +0 -1
- package/dist/types/components/primitives/aspect-ratio.d.ts +0 -4
- package/dist/types/components/primitives/aspect-ratio.d.ts.map +0 -1
- package/dist/types/components/primitives/avatar.d.ts +0 -7
- package/dist/types/components/primitives/avatar.d.ts.map +0 -1
- package/dist/types/components/primitives/badge.d.ts +0 -10
- package/dist/types/components/primitives/badge.d.ts.map +0 -1
- package/dist/types/components/primitives/breadcrumb.d.ts +0 -12
- package/dist/types/components/primitives/breadcrumb.d.ts.map +0 -1
- package/dist/types/components/primitives/button.d.ts +0 -11
- package/dist/types/components/primitives/button.d.ts.map +0 -1
- package/dist/types/components/primitives/calendar.d.ts +0 -9
- package/dist/types/components/primitives/calendar.d.ts.map +0 -1
- package/dist/types/components/primitives/card.d.ts +0 -10
- package/dist/types/components/primitives/card.d.ts.map +0 -1
- package/dist/types/components/primitives/carousel.d.ts +0 -20
- package/dist/types/components/primitives/carousel.d.ts.map +0 -1
- package/dist/types/components/primitives/chart.d.ts +0 -65
- package/dist/types/components/primitives/chart.d.ts.map +0 -1
- package/dist/types/components/primitives/checkbox.d.ts +0 -5
- package/dist/types/components/primitives/checkbox.d.ts.map +0 -1
- package/dist/types/components/primitives/collapsible.d.ts +0 -6
- package/dist/types/components/primitives/collapsible.d.ts.map +0 -1
- package/dist/types/components/primitives/command.d.ts +0 -19
- package/dist/types/components/primitives/command.d.ts.map +0 -1
- package/dist/types/components/primitives/context-menu.d.ts +0 -26
- package/dist/types/components/primitives/context-menu.d.ts.map +0 -1
- package/dist/types/components/primitives/dialog.d.ts +0 -16
- package/dist/types/components/primitives/dialog.d.ts.map +0 -1
- package/dist/types/components/primitives/dropdown-menu.d.ts +0 -26
- package/dist/types/components/primitives/dropdown-menu.d.ts.map +0 -1
- package/dist/types/components/primitives/form.d.ts +0 -25
- package/dist/types/components/primitives/form.d.ts.map +0 -1
- package/dist/types/components/primitives/input.d.ts +0 -4
- package/dist/types/components/primitives/input.d.ts.map +0 -1
- package/dist/types/components/primitives/label.d.ts +0 -5
- package/dist/types/components/primitives/label.d.ts.map +0 -1
- package/dist/types/components/primitives/menubar.d.ts +0 -27
- package/dist/types/components/primitives/menubar.d.ts.map +0 -1
- package/dist/types/components/primitives/navigation-menu.d.ts +0 -15
- package/dist/types/components/primitives/navigation-menu.d.ts.map +0 -1
- package/dist/types/components/primitives/pagination.d.ts +0 -14
- package/dist/types/components/primitives/pagination.d.ts.map +0 -1
- package/dist/types/components/primitives/panel.d.ts +0 -9
- package/dist/types/components/primitives/panel.d.ts.map +0 -1
- package/dist/types/components/primitives/popover.d.ts +0 -8
- package/dist/types/components/primitives/popover.d.ts.map +0 -1
- package/dist/types/components/primitives/progress.d.ts +0 -5
- package/dist/types/components/primitives/progress.d.ts.map +0 -1
- package/dist/types/components/primitives/radio-group.d.ts +0 -6
- package/dist/types/components/primitives/radio-group.d.ts.map +0 -1
- package/dist/types/components/primitives/resizable.d.ts +0 -9
- package/dist/types/components/primitives/resizable.d.ts.map +0 -1
- package/dist/types/components/primitives/scroll-area.d.ts +0 -6
- package/dist/types/components/primitives/scroll-area.d.ts.map +0 -1
- package/dist/types/components/primitives/select.d.ts +0 -16
- package/dist/types/components/primitives/select.d.ts.map +0 -1
- package/dist/types/components/primitives/separator.d.ts +0 -5
- package/dist/types/components/primitives/separator.d.ts.map +0 -1
- package/dist/types/components/primitives/sheet.d.ts +0 -14
- package/dist/types/components/primitives/sheet.d.ts.map +0 -1
- package/dist/types/components/primitives/skeleton.d.ts +0 -3
- package/dist/types/components/primitives/skeleton.d.ts.map +0 -1
- package/dist/types/components/primitives/slider.d.ts +0 -5
- package/dist/types/components/primitives/slider.d.ts.map +0 -1
- package/dist/types/components/primitives/sonner.d.ts +0 -4
- package/dist/types/components/primitives/sonner.d.ts.map +0 -1
- package/dist/types/components/primitives/stepper.d.ts +0 -42
- package/dist/types/components/primitives/stepper.d.ts.map +0 -1
- package/dist/types/components/primitives/switch.d.ts +0 -5
- package/dist/types/components/primitives/switch.d.ts.map +0 -1
- package/dist/types/components/primitives/table.d.ts +0 -11
- package/dist/types/components/primitives/table.d.ts.map +0 -1
- package/dist/types/components/primitives/tabs.d.ts +0 -8
- package/dist/types/components/primitives/tabs.d.ts.map +0 -1
- package/dist/types/components/primitives/textarea.d.ts +0 -4
- package/dist/types/components/primitives/textarea.d.ts.map +0 -1
- package/dist/types/components/primitives/toggle-group.d.ts +0 -10
- package/dist/types/components/primitives/toggle-group.d.ts.map +0 -1
- package/dist/types/components/primitives/toggle.d.ts +0 -10
- package/dist/types/components/primitives/toggle.d.ts.map +0 -1
- package/dist/types/components/primitives/tooltip.d.ts +0 -8
- package/dist/types/components/primitives/tooltip.d.ts.map +0 -1
- package/dist/types/hooks/index.d.ts +0 -2
- package/dist/types/hooks/index.d.ts.map +0 -1
- package/dist/types/hooks/use-mobile.d.ts +0 -2
- package/dist/types/hooks/use-mobile.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/lib/utils.d.ts +0 -3
- package/dist/types/lib/utils.d.ts.map +0 -1
package/dist/index.cjs.js
DELETED
|
@@ -1,4462 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
"use client";
|
|
3
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
5
|
-
const React = require("react");
|
|
6
|
-
const AccordionPrimitive = require("@radix-ui/react-accordion");
|
|
7
|
-
const lucideReact = require("lucide-react");
|
|
8
|
-
const clsx = require("clsx");
|
|
9
|
-
const tailwindMerge = require("tailwind-merge");
|
|
10
|
-
const classVarianceAuthority = require("class-variance-authority");
|
|
11
|
-
const AlertDialogPrimitive = require("@radix-ui/react-alert-dialog");
|
|
12
|
-
const reactSlot = require("@radix-ui/react-slot");
|
|
13
|
-
const AspectRatioPrimitive = require("@radix-ui/react-aspect-ratio");
|
|
14
|
-
const AvatarPrimitive = require("@radix-ui/react-avatar");
|
|
15
|
-
const reactDayPicker = require("react-day-picker");
|
|
16
|
-
const useEmblaCarousel = require("embla-carousel-react");
|
|
17
|
-
const CheckboxPrimitive = require("@radix-ui/react-checkbox");
|
|
18
|
-
const CollapsiblePrimitive = require("@radix-ui/react-collapsible");
|
|
19
|
-
const DialogPrimitive = require("@radix-ui/react-dialog");
|
|
20
|
-
const DropdownMenuPrimitive = require("@radix-ui/react-dropdown-menu");
|
|
21
|
-
const reactHookForm = require("react-hook-form");
|
|
22
|
-
const LabelPrimitive = require("@radix-ui/react-label");
|
|
23
|
-
const MenubarPrimitive = require("@radix-ui/react-menubar");
|
|
24
|
-
const NavigationMenuPrimitive = require("@radix-ui/react-navigation-menu");
|
|
25
|
-
const ProgressPrimitive = require("@radix-ui/react-progress");
|
|
26
|
-
const RadioGroupPrimitive = require("@radix-ui/react-radio-group");
|
|
27
|
-
const ScrollAreaPrimitive = require("@radix-ui/react-scroll-area");
|
|
28
|
-
const SelectPrimitive = require("@radix-ui/react-select");
|
|
29
|
-
const SeparatorPrimitive = require("@radix-ui/react-separator");
|
|
30
|
-
const TooltipPrimitive = require("@radix-ui/react-tooltip");
|
|
31
|
-
const SliderPrimitive = require("@radix-ui/react-slider");
|
|
32
|
-
const nextThemes = require("next-themes");
|
|
33
|
-
const sonner = require("sonner");
|
|
34
|
-
const SwitchPrimitive = require("@radix-ui/react-switch");
|
|
35
|
-
const TabsPrimitive = require("@radix-ui/react-tabs");
|
|
36
|
-
const TogglePrimitive = require("@radix-ui/react-toggle");
|
|
37
|
-
const ToggleGroupPrimitive = require("@radix-ui/react-toggle-group");
|
|
38
|
-
function _interopNamespaceDefault(e) {
|
|
39
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
40
|
-
if (e) {
|
|
41
|
-
for (const k in e) {
|
|
42
|
-
if (k !== "default") {
|
|
43
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
44
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
45
|
-
enumerable: true,
|
|
46
|
-
get: () => e[k]
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
n.default = e;
|
|
52
|
-
return Object.freeze(n);
|
|
53
|
-
}
|
|
54
|
-
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
55
|
-
const AccordionPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AccordionPrimitive);
|
|
56
|
-
const AlertDialogPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AlertDialogPrimitive);
|
|
57
|
-
const AspectRatioPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AspectRatioPrimitive);
|
|
58
|
-
const AvatarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AvatarPrimitive);
|
|
59
|
-
const CheckboxPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CheckboxPrimitive);
|
|
60
|
-
const CollapsiblePrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CollapsiblePrimitive);
|
|
61
|
-
const DialogPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DialogPrimitive);
|
|
62
|
-
const DropdownMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DropdownMenuPrimitive);
|
|
63
|
-
const LabelPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(LabelPrimitive);
|
|
64
|
-
const MenubarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(MenubarPrimitive);
|
|
65
|
-
const NavigationMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(NavigationMenuPrimitive);
|
|
66
|
-
const ProgressPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ProgressPrimitive);
|
|
67
|
-
const RadioGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(RadioGroupPrimitive);
|
|
68
|
-
const ScrollAreaPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ScrollAreaPrimitive);
|
|
69
|
-
const SelectPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SelectPrimitive);
|
|
70
|
-
const SeparatorPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SeparatorPrimitive);
|
|
71
|
-
const TooltipPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TooltipPrimitive);
|
|
72
|
-
const SliderPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SliderPrimitive);
|
|
73
|
-
const SwitchPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SwitchPrimitive);
|
|
74
|
-
const TabsPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TabsPrimitive);
|
|
75
|
-
const TogglePrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TogglePrimitive);
|
|
76
|
-
const ToggleGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ToggleGroupPrimitive);
|
|
77
|
-
function cn(...inputs) {
|
|
78
|
-
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
79
|
-
}
|
|
80
|
-
function Accordion({
|
|
81
|
-
...props
|
|
82
|
-
}) {
|
|
83
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Root, { "data-slot": "accordion", ...props });
|
|
84
|
-
}
|
|
85
|
-
function AccordionItem({
|
|
86
|
-
className,
|
|
87
|
-
...props
|
|
88
|
-
}) {
|
|
89
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
90
|
-
AccordionPrimitive__namespace.Item,
|
|
91
|
-
{
|
|
92
|
-
"data-slot": "accordion-item",
|
|
93
|
-
className: cn("border-b last:border-b-0", className),
|
|
94
|
-
...props
|
|
95
|
-
}
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
function AccordionTrigger({
|
|
99
|
-
className,
|
|
100
|
-
children,
|
|
101
|
-
...props
|
|
102
|
-
}) {
|
|
103
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Header, { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
104
|
-
AccordionPrimitive__namespace.Trigger,
|
|
105
|
-
{
|
|
106
|
-
"data-slot": "accordion-trigger",
|
|
107
|
-
className: cn(
|
|
108
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
|
|
109
|
-
className
|
|
110
|
-
),
|
|
111
|
-
...props,
|
|
112
|
-
children: [
|
|
113
|
-
children,
|
|
114
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
|
|
115
|
-
]
|
|
116
|
-
}
|
|
117
|
-
) });
|
|
118
|
-
}
|
|
119
|
-
function AccordionContent({
|
|
120
|
-
className,
|
|
121
|
-
children,
|
|
122
|
-
...props
|
|
123
|
-
}) {
|
|
124
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
125
|
-
AccordionPrimitive__namespace.Content,
|
|
126
|
-
{
|
|
127
|
-
"data-slot": "accordion-content",
|
|
128
|
-
className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
|
|
129
|
-
...props,
|
|
130
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-0 pb-4", className), children })
|
|
131
|
-
}
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
const alertVariants = classVarianceAuthority.cva(
|
|
135
|
-
"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
|
|
136
|
-
{
|
|
137
|
-
variants: {
|
|
138
|
-
variant: {
|
|
139
|
-
default: "bg-tertiary/50 border-tertiary text-panel-foreground",
|
|
140
|
-
success: "bg-success/50 border-success text-success-foreground [&>svg]:text-success-foreground",
|
|
141
|
-
warning: "bg-warning/50 border-warning text-warning-foreground [&>svg]:text-warning-foreground",
|
|
142
|
-
error: "text-error-foreground bg-error/50 border-error [&>svg]:text-current *:data-[slot=alert-description]:text-error-foreground"
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
defaultVariants: {
|
|
146
|
-
variant: "default"
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
);
|
|
150
|
-
function Alert({
|
|
151
|
-
className,
|
|
152
|
-
variant,
|
|
153
|
-
...props
|
|
154
|
-
}) {
|
|
155
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
156
|
-
"div",
|
|
157
|
-
{
|
|
158
|
-
"data-slot": "alert",
|
|
159
|
-
role: "alert",
|
|
160
|
-
className: cn(alertVariants({ variant }), className),
|
|
161
|
-
...props
|
|
162
|
-
}
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
function AlertTitle({ className, ...props }) {
|
|
166
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
167
|
-
"div",
|
|
168
|
-
{
|
|
169
|
-
"data-slot": "alert-title",
|
|
170
|
-
className: cn(
|
|
171
|
-
"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
|
|
172
|
-
className
|
|
173
|
-
),
|
|
174
|
-
...props
|
|
175
|
-
}
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
function AlertDescription({
|
|
179
|
-
className,
|
|
180
|
-
...props
|
|
181
|
-
}) {
|
|
182
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
183
|
-
"div",
|
|
184
|
-
{
|
|
185
|
-
"data-slot": "alert-description",
|
|
186
|
-
className: cn(
|
|
187
|
-
"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
|
|
188
|
-
className
|
|
189
|
-
),
|
|
190
|
-
...props
|
|
191
|
-
}
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
const buttonVariants = classVarianceAuthority.cva(
|
|
195
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all duration-500 cursor-pointer hover:scale-105 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error",
|
|
196
|
-
{
|
|
197
|
-
variants: {
|
|
198
|
-
variant: {
|
|
199
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
200
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
201
|
-
tertiary: "bg-tertiary text-tertiary-foreground hover:bg-tertiary/80",
|
|
202
|
-
info: "bg-info text-info-foreground hover:bg-info/90 focus-visible:ring-info/20 dark:focus-visible:ring-info/40",
|
|
203
|
-
success: "bg-success text-success-foreground hover:bg-success/90 focus-visible:ring-success/20 dark:focus-visible:ring-success/40",
|
|
204
|
-
warning: "bg-warning text-warning-foreground hover:bg-warning/90 focus-visible:ring-warning/20 dark:focus-visible:ring-warning/40",
|
|
205
|
-
error: "bg-error text-error-foreground hover:bg-error/90 focus-visible:ring-error/20 dark:focus-visible:ring-error/40 dark:bg-error/60",
|
|
206
|
-
outline: "border bg-background shadow-xs hover:bg-tertiary hover:text-tertiary-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
207
|
-
ghost: "hover:bg-tertiary hover:text-tertiary-foreground dark:hover:bg-tertiary/50",
|
|
208
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
209
|
-
"animated-underline": "relative text-tertiary-foreground bg-transparent hover:scale-100 after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-0 after:bg-tertiary-foreground after:transition-all after:duration-300 hover:after:w-full"
|
|
210
|
-
},
|
|
211
|
-
size: {
|
|
212
|
-
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
213
|
-
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
214
|
-
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
215
|
-
icon: "size-9",
|
|
216
|
-
"icon-sm": "size-8",
|
|
217
|
-
"icon-lg": "size-10"
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
defaultVariants: {
|
|
221
|
-
variant: "default",
|
|
222
|
-
size: "default"
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
);
|
|
226
|
-
function Button({
|
|
227
|
-
className,
|
|
228
|
-
variant = "default",
|
|
229
|
-
size = "default",
|
|
230
|
-
asChild = false,
|
|
231
|
-
...props
|
|
232
|
-
}) {
|
|
233
|
-
const Comp = asChild ? reactSlot.Slot : "button";
|
|
234
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
235
|
-
Comp,
|
|
236
|
-
{
|
|
237
|
-
"data-slot": "button",
|
|
238
|
-
"data-variant": variant,
|
|
239
|
-
"data-size": size,
|
|
240
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
241
|
-
...props
|
|
242
|
-
}
|
|
243
|
-
);
|
|
244
|
-
}
|
|
245
|
-
function AlertDialog({
|
|
246
|
-
...props
|
|
247
|
-
}) {
|
|
248
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AlertDialogPrimitive__namespace.Root, { "data-slot": "alert-dialog", ...props });
|
|
249
|
-
}
|
|
250
|
-
function AlertDialogTrigger({
|
|
251
|
-
...props
|
|
252
|
-
}) {
|
|
253
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AlertDialogPrimitive__namespace.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
254
|
-
}
|
|
255
|
-
function AlertDialogPortal({
|
|
256
|
-
...props
|
|
257
|
-
}) {
|
|
258
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AlertDialogPrimitive__namespace.Portal, { "data-slot": "alert-dialog-portal", ...props });
|
|
259
|
-
}
|
|
260
|
-
function AlertDialogOverlay({
|
|
261
|
-
className,
|
|
262
|
-
...props
|
|
263
|
-
}) {
|
|
264
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
265
|
-
AlertDialogPrimitive__namespace.Overlay,
|
|
266
|
-
{
|
|
267
|
-
"data-slot": "alert-dialog-overlay",
|
|
268
|
-
className: cn(
|
|
269
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
|
270
|
-
className
|
|
271
|
-
),
|
|
272
|
-
...props
|
|
273
|
-
}
|
|
274
|
-
);
|
|
275
|
-
}
|
|
276
|
-
function AlertDialogContent({
|
|
277
|
-
className,
|
|
278
|
-
...props
|
|
279
|
-
}) {
|
|
280
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogPortal, { children: [
|
|
281
|
-
/* @__PURE__ */ jsxRuntime.jsx(AlertDialogOverlay, {}),
|
|
282
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
283
|
-
AlertDialogPrimitive__namespace.Content,
|
|
284
|
-
{
|
|
285
|
-
"data-slot": "alert-dialog-content",
|
|
286
|
-
className: cn(
|
|
287
|
-
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
|
|
288
|
-
className
|
|
289
|
-
),
|
|
290
|
-
...props
|
|
291
|
-
}
|
|
292
|
-
)
|
|
293
|
-
] });
|
|
294
|
-
}
|
|
295
|
-
function AlertDialogHeader({
|
|
296
|
-
className,
|
|
297
|
-
...props
|
|
298
|
-
}) {
|
|
299
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
300
|
-
"div",
|
|
301
|
-
{
|
|
302
|
-
"data-slot": "alert-dialog-header",
|
|
303
|
-
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
304
|
-
...props
|
|
305
|
-
}
|
|
306
|
-
);
|
|
307
|
-
}
|
|
308
|
-
function AlertDialogFooter({
|
|
309
|
-
className,
|
|
310
|
-
...props
|
|
311
|
-
}) {
|
|
312
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
313
|
-
"div",
|
|
314
|
-
{
|
|
315
|
-
"data-slot": "alert-dialog-footer",
|
|
316
|
-
className: cn(
|
|
317
|
-
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
318
|
-
className
|
|
319
|
-
),
|
|
320
|
-
...props
|
|
321
|
-
}
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
function AlertDialogTitle({
|
|
325
|
-
className,
|
|
326
|
-
...props
|
|
327
|
-
}) {
|
|
328
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
329
|
-
AlertDialogPrimitive__namespace.Title,
|
|
330
|
-
{
|
|
331
|
-
"data-slot": "alert-dialog-title",
|
|
332
|
-
className: cn("text-lg font-semibold", className),
|
|
333
|
-
...props
|
|
334
|
-
}
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
function AlertDialogDescription({
|
|
338
|
-
className,
|
|
339
|
-
...props
|
|
340
|
-
}) {
|
|
341
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
342
|
-
AlertDialogPrimitive__namespace.Description,
|
|
343
|
-
{
|
|
344
|
-
"data-slot": "alert-dialog-description",
|
|
345
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
346
|
-
...props
|
|
347
|
-
}
|
|
348
|
-
);
|
|
349
|
-
}
|
|
350
|
-
function AlertDialogAction({
|
|
351
|
-
className,
|
|
352
|
-
...props
|
|
353
|
-
}) {
|
|
354
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
355
|
-
AlertDialogPrimitive__namespace.Action,
|
|
356
|
-
{
|
|
357
|
-
className: cn(buttonVariants(), className),
|
|
358
|
-
...props
|
|
359
|
-
}
|
|
360
|
-
);
|
|
361
|
-
}
|
|
362
|
-
function AlertDialogCancel({
|
|
363
|
-
className,
|
|
364
|
-
...props
|
|
365
|
-
}) {
|
|
366
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
367
|
-
AlertDialogPrimitive__namespace.Cancel,
|
|
368
|
-
{
|
|
369
|
-
className: cn(buttonVariants({ variant: "outline" }), className),
|
|
370
|
-
...props
|
|
371
|
-
}
|
|
372
|
-
);
|
|
373
|
-
}
|
|
374
|
-
function AspectRatio({
|
|
375
|
-
...props
|
|
376
|
-
}) {
|
|
377
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AspectRatioPrimitive__namespace.Root, { "data-slot": "aspect-ratio", ...props });
|
|
378
|
-
}
|
|
379
|
-
function Avatar({
|
|
380
|
-
className,
|
|
381
|
-
...props
|
|
382
|
-
}) {
|
|
383
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
384
|
-
AvatarPrimitive__namespace.Root,
|
|
385
|
-
{
|
|
386
|
-
"data-slot": "avatar",
|
|
387
|
-
className: cn(
|
|
388
|
-
"relative flex size-8 shrink-0 overflow-hidden rounded-full",
|
|
389
|
-
className
|
|
390
|
-
),
|
|
391
|
-
...props
|
|
392
|
-
}
|
|
393
|
-
);
|
|
394
|
-
}
|
|
395
|
-
function AvatarImage({
|
|
396
|
-
className,
|
|
397
|
-
...props
|
|
398
|
-
}) {
|
|
399
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
400
|
-
AvatarPrimitive__namespace.Image,
|
|
401
|
-
{
|
|
402
|
-
"data-slot": "avatar-image",
|
|
403
|
-
className: cn("aspect-square size-full", className),
|
|
404
|
-
...props
|
|
405
|
-
}
|
|
406
|
-
);
|
|
407
|
-
}
|
|
408
|
-
function AvatarFallback({
|
|
409
|
-
className,
|
|
410
|
-
...props
|
|
411
|
-
}) {
|
|
412
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
413
|
-
AvatarPrimitive__namespace.Fallback,
|
|
414
|
-
{
|
|
415
|
-
"data-slot": "avatar-fallback",
|
|
416
|
-
className: cn(
|
|
417
|
-
"bg-muted flex size-full items-center justify-center rounded-full",
|
|
418
|
-
className
|
|
419
|
-
),
|
|
420
|
-
...props
|
|
421
|
-
}
|
|
422
|
-
);
|
|
423
|
-
}
|
|
424
|
-
const badgeVariants = classVarianceAuthority.cva(
|
|
425
|
-
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error transition-[color,box-shadow] overflow-hidden",
|
|
426
|
-
{
|
|
427
|
-
variants: {
|
|
428
|
-
variant: {
|
|
429
|
-
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
430
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
431
|
-
error: "border-transparent bg-error text-white [a&]:hover:bg-error/90 focus-visible:ring-error/20 dark:focus-visible:ring-error/40 dark:bg-error/60",
|
|
432
|
-
outline: "text-foreground [a&]:hover:bg-tertiary [a&]:hover:text-tertiary-foreground"
|
|
433
|
-
}
|
|
434
|
-
},
|
|
435
|
-
defaultVariants: {
|
|
436
|
-
variant: "default"
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
);
|
|
440
|
-
function Badge({
|
|
441
|
-
className,
|
|
442
|
-
variant,
|
|
443
|
-
asChild = false,
|
|
444
|
-
...props
|
|
445
|
-
}) {
|
|
446
|
-
const Comp = asChild ? reactSlot.Slot : "span";
|
|
447
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
448
|
-
Comp,
|
|
449
|
-
{
|
|
450
|
-
"data-slot": "badge",
|
|
451
|
-
className: cn(badgeVariants({ variant }), className),
|
|
452
|
-
...props
|
|
453
|
-
}
|
|
454
|
-
);
|
|
455
|
-
}
|
|
456
|
-
function Breadcrumb({ ...props }) {
|
|
457
|
-
return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
|
|
458
|
-
}
|
|
459
|
-
function BreadcrumbList({ className, ...props }) {
|
|
460
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
461
|
-
"ol",
|
|
462
|
-
{
|
|
463
|
-
"data-slot": "breadcrumb-list",
|
|
464
|
-
className: cn(
|
|
465
|
-
"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
|
|
466
|
-
className
|
|
467
|
-
),
|
|
468
|
-
...props
|
|
469
|
-
}
|
|
470
|
-
);
|
|
471
|
-
}
|
|
472
|
-
function BreadcrumbItem({ className, ...props }) {
|
|
473
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
474
|
-
"li",
|
|
475
|
-
{
|
|
476
|
-
"data-slot": "breadcrumb-item",
|
|
477
|
-
className: cn("inline-flex items-center gap-1.5", className),
|
|
478
|
-
...props
|
|
479
|
-
}
|
|
480
|
-
);
|
|
481
|
-
}
|
|
482
|
-
function BreadcrumbLink({
|
|
483
|
-
asChild,
|
|
484
|
-
className,
|
|
485
|
-
...props
|
|
486
|
-
}) {
|
|
487
|
-
const Comp = asChild ? reactSlot.Slot : "a";
|
|
488
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
489
|
-
Comp,
|
|
490
|
-
{
|
|
491
|
-
"data-slot": "breadcrumb-link",
|
|
492
|
-
className: cn("hover:text-foreground transition-colors", className),
|
|
493
|
-
...props
|
|
494
|
-
}
|
|
495
|
-
);
|
|
496
|
-
}
|
|
497
|
-
function BreadcrumbPage({ className, ...props }) {
|
|
498
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
499
|
-
"span",
|
|
500
|
-
{
|
|
501
|
-
"data-slot": "breadcrumb-page",
|
|
502
|
-
role: "link",
|
|
503
|
-
"aria-disabled": "true",
|
|
504
|
-
"aria-current": "page",
|
|
505
|
-
className: cn("text-foreground font-normal", className),
|
|
506
|
-
...props
|
|
507
|
-
}
|
|
508
|
-
);
|
|
509
|
-
}
|
|
510
|
-
function BreadcrumbSeparator({
|
|
511
|
-
children,
|
|
512
|
-
className,
|
|
513
|
-
...props
|
|
514
|
-
}) {
|
|
515
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
516
|
-
"li",
|
|
517
|
-
{
|
|
518
|
-
"data-slot": "breadcrumb-separator",
|
|
519
|
-
role: "presentation",
|
|
520
|
-
"aria-hidden": "true",
|
|
521
|
-
className: cn("[&>svg]:size-3.5", className),
|
|
522
|
-
...props,
|
|
523
|
-
children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
|
|
524
|
-
}
|
|
525
|
-
);
|
|
526
|
-
}
|
|
527
|
-
function BreadcrumbEllipsis({
|
|
528
|
-
className,
|
|
529
|
-
...props
|
|
530
|
-
}) {
|
|
531
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
532
|
-
"span",
|
|
533
|
-
{
|
|
534
|
-
"data-slot": "breadcrumb-ellipsis",
|
|
535
|
-
role: "presentation",
|
|
536
|
-
"aria-hidden": "true",
|
|
537
|
-
className: cn("flex size-9 items-center justify-center", className),
|
|
538
|
-
...props,
|
|
539
|
-
children: [
|
|
540
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" }),
|
|
541
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More" })
|
|
542
|
-
]
|
|
543
|
-
}
|
|
544
|
-
);
|
|
545
|
-
}
|
|
546
|
-
function Calendar({
|
|
547
|
-
className,
|
|
548
|
-
classNames,
|
|
549
|
-
showOutsideDays = true,
|
|
550
|
-
captionLayout = "label",
|
|
551
|
-
buttonVariant = "ghost",
|
|
552
|
-
formatters,
|
|
553
|
-
components,
|
|
554
|
-
...props
|
|
555
|
-
}) {
|
|
556
|
-
const defaultClassNames = reactDayPicker.getDefaultClassNames();
|
|
557
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
558
|
-
reactDayPicker.DayPicker,
|
|
559
|
-
{
|
|
560
|
-
showOutsideDays,
|
|
561
|
-
className: cn(
|
|
562
|
-
"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
|
|
563
|
-
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
564
|
-
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
565
|
-
className
|
|
566
|
-
),
|
|
567
|
-
captionLayout,
|
|
568
|
-
formatters: {
|
|
569
|
-
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
|
|
570
|
-
...formatters
|
|
571
|
-
},
|
|
572
|
-
classNames: {
|
|
573
|
-
root: cn("w-fit", defaultClassNames.root),
|
|
574
|
-
months: cn(
|
|
575
|
-
"flex gap-4 flex-col md:flex-row relative",
|
|
576
|
-
defaultClassNames.months
|
|
577
|
-
),
|
|
578
|
-
month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
|
|
579
|
-
nav: cn(
|
|
580
|
-
"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
|
|
581
|
-
defaultClassNames.nav
|
|
582
|
-
),
|
|
583
|
-
button_previous: cn(
|
|
584
|
-
buttonVariants({ variant: buttonVariant }),
|
|
585
|
-
"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
|
|
586
|
-
defaultClassNames.button_previous
|
|
587
|
-
),
|
|
588
|
-
button_next: cn(
|
|
589
|
-
buttonVariants({ variant: buttonVariant }),
|
|
590
|
-
"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
|
|
591
|
-
defaultClassNames.button_next
|
|
592
|
-
),
|
|
593
|
-
month_caption: cn(
|
|
594
|
-
"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",
|
|
595
|
-
defaultClassNames.month_caption
|
|
596
|
-
),
|
|
597
|
-
dropdowns: cn(
|
|
598
|
-
"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",
|
|
599
|
-
defaultClassNames.dropdowns
|
|
600
|
-
),
|
|
601
|
-
dropdown_root: cn(
|
|
602
|
-
"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
|
|
603
|
-
defaultClassNames.dropdown_root
|
|
604
|
-
),
|
|
605
|
-
dropdown: cn(
|
|
606
|
-
"absolute bg-popover inset-0 opacity-0",
|
|
607
|
-
defaultClassNames.dropdown
|
|
608
|
-
),
|
|
609
|
-
caption_label: cn(
|
|
610
|
-
"select-none font-medium",
|
|
611
|
-
captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5",
|
|
612
|
-
defaultClassNames.caption_label
|
|
613
|
-
),
|
|
614
|
-
table: "w-full border-collapse",
|
|
615
|
-
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
616
|
-
weekday: cn(
|
|
617
|
-
"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",
|
|
618
|
-
defaultClassNames.weekday
|
|
619
|
-
),
|
|
620
|
-
week: cn("flex w-full mt-2", defaultClassNames.week),
|
|
621
|
-
week_number_header: cn(
|
|
622
|
-
"select-none w-(--cell-size)",
|
|
623
|
-
defaultClassNames.week_number_header
|
|
624
|
-
),
|
|
625
|
-
week_number: cn(
|
|
626
|
-
"text-[0.8rem] select-none text-muted-foreground",
|
|
627
|
-
defaultClassNames.week_number
|
|
628
|
-
),
|
|
629
|
-
day: cn(
|
|
630
|
-
"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
|
|
631
|
-
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md",
|
|
632
|
-
defaultClassNames.day
|
|
633
|
-
),
|
|
634
|
-
range_start: cn(
|
|
635
|
-
"rounded-l-md bg-tertiary",
|
|
636
|
-
defaultClassNames.range_start
|
|
637
|
-
),
|
|
638
|
-
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
639
|
-
range_end: cn("rounded-r-md bg-tertiary", defaultClassNames.range_end),
|
|
640
|
-
today: cn(
|
|
641
|
-
"bg-tertiary text-tertiary-foreground rounded-md data-[selected=true]:rounded-none",
|
|
642
|
-
defaultClassNames.today
|
|
643
|
-
),
|
|
644
|
-
outside: cn(
|
|
645
|
-
"text-muted-foreground aria-selected:text-muted-foreground",
|
|
646
|
-
defaultClassNames.outside
|
|
647
|
-
),
|
|
648
|
-
disabled: cn(
|
|
649
|
-
"text-muted-foreground opacity-50",
|
|
650
|
-
defaultClassNames.disabled
|
|
651
|
-
),
|
|
652
|
-
hidden: cn("invisible", defaultClassNames.hidden),
|
|
653
|
-
...classNames
|
|
654
|
-
},
|
|
655
|
-
components: {
|
|
656
|
-
Root: ({ className: className2, rootRef, ...props2 }) => {
|
|
657
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
658
|
-
"div",
|
|
659
|
-
{
|
|
660
|
-
"data-slot": "calendar",
|
|
661
|
-
ref: rootRef,
|
|
662
|
-
className: cn(className2),
|
|
663
|
-
...props2
|
|
664
|
-
}
|
|
665
|
-
);
|
|
666
|
-
},
|
|
667
|
-
Chevron: ({ className: className2, orientation, ...props2 }) => {
|
|
668
|
-
if (orientation === "left") {
|
|
669
|
-
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
|
|
670
|
-
}
|
|
671
|
-
if (orientation === "right") {
|
|
672
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
673
|
-
lucideReact.ChevronRightIcon,
|
|
674
|
-
{
|
|
675
|
-
className: cn("size-4", className2),
|
|
676
|
-
...props2
|
|
677
|
-
}
|
|
678
|
-
);
|
|
679
|
-
}
|
|
680
|
-
return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
|
|
681
|
-
},
|
|
682
|
-
DayButton: CalendarDayButton,
|
|
683
|
-
WeekNumber: ({ children, ...props2 }) => {
|
|
684
|
-
return /* @__PURE__ */ jsxRuntime.jsx("td", { ...props2, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
|
|
685
|
-
},
|
|
686
|
-
...components
|
|
687
|
-
},
|
|
688
|
-
...props
|
|
689
|
-
}
|
|
690
|
-
);
|
|
691
|
-
}
|
|
692
|
-
function CalendarDayButton({
|
|
693
|
-
className,
|
|
694
|
-
day,
|
|
695
|
-
modifiers,
|
|
696
|
-
...props
|
|
697
|
-
}) {
|
|
698
|
-
const defaultClassNames = reactDayPicker.getDefaultClassNames();
|
|
699
|
-
const ref = React__namespace.useRef(null);
|
|
700
|
-
React__namespace.useEffect(() => {
|
|
701
|
-
if (modifiers.focused) ref.current?.focus();
|
|
702
|
-
}, [modifiers.focused]);
|
|
703
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
704
|
-
Button,
|
|
705
|
-
{
|
|
706
|
-
ref,
|
|
707
|
-
variant: "ghost",
|
|
708
|
-
size: "icon",
|
|
709
|
-
"data-day": day.date.toLocaleDateString(),
|
|
710
|
-
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
711
|
-
"data-range-start": modifiers.range_start,
|
|
712
|
-
"data-range-end": modifiers.range_end,
|
|
713
|
-
"data-range-middle": modifiers.range_middle,
|
|
714
|
-
className: cn(
|
|
715
|
-
"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-tertiary data-[range-middle=true]:text-tertiary-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-tertiary-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70",
|
|
716
|
-
defaultClassNames.day,
|
|
717
|
-
className
|
|
718
|
-
),
|
|
719
|
-
...props
|
|
720
|
-
}
|
|
721
|
-
);
|
|
722
|
-
}
|
|
723
|
-
function Card({ className, ...props }) {
|
|
724
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
725
|
-
"div",
|
|
726
|
-
{
|
|
727
|
-
"data-slot": "card",
|
|
728
|
-
className: cn(
|
|
729
|
-
"bg-card text-card-foreground flex flex-col gap-6 rounded border py-6 shadow-sm hover:bg-primary/12 transition-all duration-500 hover:scale-102",
|
|
730
|
-
className
|
|
731
|
-
),
|
|
732
|
-
...props
|
|
733
|
-
}
|
|
734
|
-
);
|
|
735
|
-
}
|
|
736
|
-
function CardHeader({ className, ...props }) {
|
|
737
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
738
|
-
"div",
|
|
739
|
-
{
|
|
740
|
-
"data-slot": "card-header",
|
|
741
|
-
className: cn(
|
|
742
|
-
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
743
|
-
className
|
|
744
|
-
),
|
|
745
|
-
...props
|
|
746
|
-
}
|
|
747
|
-
);
|
|
748
|
-
}
|
|
749
|
-
function CardTitle({ className, ...props }) {
|
|
750
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
751
|
-
"div",
|
|
752
|
-
{
|
|
753
|
-
"data-slot": "card-title",
|
|
754
|
-
className: cn("leading-none font-semibold", className),
|
|
755
|
-
...props
|
|
756
|
-
}
|
|
757
|
-
);
|
|
758
|
-
}
|
|
759
|
-
function CardDescription({ className, ...props }) {
|
|
760
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
761
|
-
"div",
|
|
762
|
-
{
|
|
763
|
-
"data-slot": "card-description",
|
|
764
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
765
|
-
...props
|
|
766
|
-
}
|
|
767
|
-
);
|
|
768
|
-
}
|
|
769
|
-
function CardAction({ className, ...props }) {
|
|
770
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
771
|
-
"div",
|
|
772
|
-
{
|
|
773
|
-
"data-slot": "card-action",
|
|
774
|
-
className: cn(
|
|
775
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
776
|
-
className
|
|
777
|
-
),
|
|
778
|
-
...props
|
|
779
|
-
}
|
|
780
|
-
);
|
|
781
|
-
}
|
|
782
|
-
function CardContent({ className, ...props }) {
|
|
783
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
784
|
-
"div",
|
|
785
|
-
{
|
|
786
|
-
"data-slot": "card-content",
|
|
787
|
-
className: cn("px-6", className),
|
|
788
|
-
...props
|
|
789
|
-
}
|
|
790
|
-
);
|
|
791
|
-
}
|
|
792
|
-
function CardFooter({ className, ...props }) {
|
|
793
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
794
|
-
"div",
|
|
795
|
-
{
|
|
796
|
-
"data-slot": "card-footer",
|
|
797
|
-
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
798
|
-
...props
|
|
799
|
-
}
|
|
800
|
-
);
|
|
801
|
-
}
|
|
802
|
-
const CarouselContext = React__namespace.createContext(null);
|
|
803
|
-
function useCarousel() {
|
|
804
|
-
const context = React__namespace.useContext(CarouselContext);
|
|
805
|
-
if (!context) {
|
|
806
|
-
throw new Error("useCarousel must be used within a <Carousel />");
|
|
807
|
-
}
|
|
808
|
-
return context;
|
|
809
|
-
}
|
|
810
|
-
function Carousel({
|
|
811
|
-
orientation = "horizontal",
|
|
812
|
-
opts,
|
|
813
|
-
setApi,
|
|
814
|
-
plugins,
|
|
815
|
-
className,
|
|
816
|
-
children,
|
|
817
|
-
...props
|
|
818
|
-
}) {
|
|
819
|
-
const [carouselRef, api] = useEmblaCarousel(
|
|
820
|
-
{
|
|
821
|
-
...opts,
|
|
822
|
-
axis: orientation === "horizontal" ? "x" : "y"
|
|
823
|
-
},
|
|
824
|
-
plugins
|
|
825
|
-
);
|
|
826
|
-
const [canScrollPrev, setCanScrollPrev] = React__namespace.useState(false);
|
|
827
|
-
const [canScrollNext, setCanScrollNext] = React__namespace.useState(false);
|
|
828
|
-
const onSelect = React__namespace.useCallback((api2) => {
|
|
829
|
-
if (!api2) return;
|
|
830
|
-
setCanScrollPrev(api2.canScrollPrev());
|
|
831
|
-
setCanScrollNext(api2.canScrollNext());
|
|
832
|
-
}, []);
|
|
833
|
-
const scrollPrev = React__namespace.useCallback(() => {
|
|
834
|
-
api?.scrollPrev();
|
|
835
|
-
}, [api]);
|
|
836
|
-
const scrollNext = React__namespace.useCallback(() => {
|
|
837
|
-
api?.scrollNext();
|
|
838
|
-
}, [api]);
|
|
839
|
-
const handleKeyDown = React__namespace.useCallback(
|
|
840
|
-
(event) => {
|
|
841
|
-
if (event.key === "ArrowLeft") {
|
|
842
|
-
event.preventDefault();
|
|
843
|
-
scrollPrev();
|
|
844
|
-
} else if (event.key === "ArrowRight") {
|
|
845
|
-
event.preventDefault();
|
|
846
|
-
scrollNext();
|
|
847
|
-
}
|
|
848
|
-
},
|
|
849
|
-
[scrollPrev, scrollNext]
|
|
850
|
-
);
|
|
851
|
-
React__namespace.useEffect(() => {
|
|
852
|
-
if (!api || !setApi) return;
|
|
853
|
-
setApi(api);
|
|
854
|
-
}, [api, setApi]);
|
|
855
|
-
React__namespace.useEffect(() => {
|
|
856
|
-
if (!api) return;
|
|
857
|
-
onSelect(api);
|
|
858
|
-
api.on("reInit", onSelect);
|
|
859
|
-
api.on("select", onSelect);
|
|
860
|
-
return () => {
|
|
861
|
-
api?.off("select", onSelect);
|
|
862
|
-
};
|
|
863
|
-
}, [api, onSelect]);
|
|
864
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
865
|
-
CarouselContext.Provider,
|
|
866
|
-
{
|
|
867
|
-
value: {
|
|
868
|
-
carouselRef,
|
|
869
|
-
api,
|
|
870
|
-
opts,
|
|
871
|
-
orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
|
|
872
|
-
scrollPrev,
|
|
873
|
-
scrollNext,
|
|
874
|
-
canScrollPrev,
|
|
875
|
-
canScrollNext
|
|
876
|
-
},
|
|
877
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
878
|
-
"div",
|
|
879
|
-
{
|
|
880
|
-
onKeyDownCapture: handleKeyDown,
|
|
881
|
-
className: cn("relative", className),
|
|
882
|
-
role: "region",
|
|
883
|
-
"aria-roledescription": "carousel",
|
|
884
|
-
"data-slot": "carousel",
|
|
885
|
-
...props,
|
|
886
|
-
children
|
|
887
|
-
}
|
|
888
|
-
)
|
|
889
|
-
}
|
|
890
|
-
);
|
|
891
|
-
}
|
|
892
|
-
function CarouselContent({ className, ...props }) {
|
|
893
|
-
const { carouselRef, orientation } = useCarousel();
|
|
894
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
895
|
-
"div",
|
|
896
|
-
{
|
|
897
|
-
ref: carouselRef,
|
|
898
|
-
className: "overflow-hidden",
|
|
899
|
-
"data-slot": "carousel-content",
|
|
900
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
901
|
-
"div",
|
|
902
|
-
{
|
|
903
|
-
className: cn(
|
|
904
|
-
"flex",
|
|
905
|
-
orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
|
|
906
|
-
className
|
|
907
|
-
),
|
|
908
|
-
...props
|
|
909
|
-
}
|
|
910
|
-
)
|
|
911
|
-
}
|
|
912
|
-
);
|
|
913
|
-
}
|
|
914
|
-
function CarouselItem({ className, ...props }) {
|
|
915
|
-
const { orientation } = useCarousel();
|
|
916
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
917
|
-
"div",
|
|
918
|
-
{
|
|
919
|
-
role: "group",
|
|
920
|
-
"aria-roledescription": "slide",
|
|
921
|
-
"data-slot": "carousel-item",
|
|
922
|
-
className: cn(
|
|
923
|
-
"min-w-0 shrink-0 grow-0 basis-full",
|
|
924
|
-
orientation === "horizontal" ? "pl-4" : "pt-4",
|
|
925
|
-
className
|
|
926
|
-
),
|
|
927
|
-
...props
|
|
928
|
-
}
|
|
929
|
-
);
|
|
930
|
-
}
|
|
931
|
-
function CarouselPrevious({
|
|
932
|
-
className,
|
|
933
|
-
variant = "outline",
|
|
934
|
-
size = "icon",
|
|
935
|
-
...props
|
|
936
|
-
}) {
|
|
937
|
-
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
938
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
939
|
-
Button,
|
|
940
|
-
{
|
|
941
|
-
"data-slot": "carousel-previous",
|
|
942
|
-
variant,
|
|
943
|
-
size,
|
|
944
|
-
className: cn(
|
|
945
|
-
"absolute size-8 rounded-full",
|
|
946
|
-
orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
|
|
947
|
-
className
|
|
948
|
-
),
|
|
949
|
-
disabled: !canScrollPrev,
|
|
950
|
-
onClick: scrollPrev,
|
|
951
|
-
...props,
|
|
952
|
-
children: [
|
|
953
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, {}),
|
|
954
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Previous slide" })
|
|
955
|
-
]
|
|
956
|
-
}
|
|
957
|
-
);
|
|
958
|
-
}
|
|
959
|
-
function CarouselNext({
|
|
960
|
-
className,
|
|
961
|
-
variant = "outline",
|
|
962
|
-
size = "icon",
|
|
963
|
-
...props
|
|
964
|
-
}) {
|
|
965
|
-
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
966
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
967
|
-
Button,
|
|
968
|
-
{
|
|
969
|
-
"data-slot": "carousel-next",
|
|
970
|
-
variant,
|
|
971
|
-
size,
|
|
972
|
-
className: cn(
|
|
973
|
-
"absolute size-8 rounded-full",
|
|
974
|
-
orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
|
|
975
|
-
className
|
|
976
|
-
),
|
|
977
|
-
disabled: !canScrollNext,
|
|
978
|
-
onClick: scrollNext,
|
|
979
|
-
...props,
|
|
980
|
-
children: [
|
|
981
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, {}),
|
|
982
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Next slide" })
|
|
983
|
-
]
|
|
984
|
-
}
|
|
985
|
-
);
|
|
986
|
-
}
|
|
987
|
-
function Checkbox({
|
|
988
|
-
className,
|
|
989
|
-
...props
|
|
990
|
-
}) {
|
|
991
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
992
|
-
CheckboxPrimitive__namespace.Root,
|
|
993
|
-
{
|
|
994
|
-
"data-slot": "checkbox",
|
|
995
|
-
className: cn(
|
|
996
|
-
"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
|
|
997
|
-
className
|
|
998
|
-
),
|
|
999
|
-
...props,
|
|
1000
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1001
|
-
CheckboxPrimitive__namespace.Indicator,
|
|
1002
|
-
{
|
|
1003
|
-
"data-slot": "checkbox-indicator",
|
|
1004
|
-
className: "grid place-content-center text-current transition-none",
|
|
1005
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-3.5" })
|
|
1006
|
-
}
|
|
1007
|
-
)
|
|
1008
|
-
}
|
|
1009
|
-
);
|
|
1010
|
-
}
|
|
1011
|
-
function Collapsible({
|
|
1012
|
-
...props
|
|
1013
|
-
}) {
|
|
1014
|
-
return /* @__PURE__ */ jsxRuntime.jsx(CollapsiblePrimitive__namespace.Root, { "data-slot": "collapsible", ...props });
|
|
1015
|
-
}
|
|
1016
|
-
function CollapsibleTrigger({
|
|
1017
|
-
...props
|
|
1018
|
-
}) {
|
|
1019
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1020
|
-
CollapsiblePrimitive__namespace.CollapsibleTrigger,
|
|
1021
|
-
{
|
|
1022
|
-
"data-slot": "collapsible-trigger",
|
|
1023
|
-
...props
|
|
1024
|
-
}
|
|
1025
|
-
);
|
|
1026
|
-
}
|
|
1027
|
-
function CollapsibleContent({
|
|
1028
|
-
...props
|
|
1029
|
-
}) {
|
|
1030
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1031
|
-
CollapsiblePrimitive__namespace.CollapsibleContent,
|
|
1032
|
-
{
|
|
1033
|
-
"data-slot": "collapsible-content",
|
|
1034
|
-
...props
|
|
1035
|
-
}
|
|
1036
|
-
);
|
|
1037
|
-
}
|
|
1038
|
-
function Dialog({
|
|
1039
|
-
...props
|
|
1040
|
-
}) {
|
|
1041
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { "data-slot": "dialog", ...props });
|
|
1042
|
-
}
|
|
1043
|
-
function DialogTrigger({
|
|
1044
|
-
...props
|
|
1045
|
-
}) {
|
|
1046
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
1047
|
-
}
|
|
1048
|
-
function DialogPortal({
|
|
1049
|
-
...props
|
|
1050
|
-
}) {
|
|
1051
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, { "data-slot": "dialog-portal", ...props });
|
|
1052
|
-
}
|
|
1053
|
-
function DialogClose({
|
|
1054
|
-
...props
|
|
1055
|
-
}) {
|
|
1056
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "data-slot": "dialog-close", ...props });
|
|
1057
|
-
}
|
|
1058
|
-
function DialogOverlay({
|
|
1059
|
-
className,
|
|
1060
|
-
...props
|
|
1061
|
-
}) {
|
|
1062
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1063
|
-
DialogPrimitive__namespace.Overlay,
|
|
1064
|
-
{
|
|
1065
|
-
"data-slot": "dialog-overlay",
|
|
1066
|
-
className: cn(
|
|
1067
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
|
1068
|
-
className
|
|
1069
|
-
),
|
|
1070
|
-
...props
|
|
1071
|
-
}
|
|
1072
|
-
);
|
|
1073
|
-
}
|
|
1074
|
-
function DialogContent({
|
|
1075
|
-
className,
|
|
1076
|
-
children,
|
|
1077
|
-
showCloseButton = true,
|
|
1078
|
-
...props
|
|
1079
|
-
}) {
|
|
1080
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
|
|
1081
|
-
/* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
|
|
1082
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1083
|
-
DialogPrimitive__namespace.Content,
|
|
1084
|
-
{
|
|
1085
|
-
"data-slot": "dialog-content",
|
|
1086
|
-
className: cn(
|
|
1087
|
-
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
|
|
1088
|
-
className
|
|
1089
|
-
),
|
|
1090
|
-
...props,
|
|
1091
|
-
children: [
|
|
1092
|
-
children,
|
|
1093
|
-
showCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1094
|
-
DialogPrimitive__namespace.Close,
|
|
1095
|
-
{
|
|
1096
|
-
"data-slot": "dialog-close",
|
|
1097
|
-
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-tertiary data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1098
|
-
children: [
|
|
1099
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, {}),
|
|
1100
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
1101
|
-
]
|
|
1102
|
-
}
|
|
1103
|
-
)
|
|
1104
|
-
]
|
|
1105
|
-
}
|
|
1106
|
-
)
|
|
1107
|
-
] });
|
|
1108
|
-
}
|
|
1109
|
-
function DialogHeader({ className, ...props }) {
|
|
1110
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
|
-
"div",
|
|
1112
|
-
{
|
|
1113
|
-
"data-slot": "dialog-header",
|
|
1114
|
-
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
1115
|
-
...props
|
|
1116
|
-
}
|
|
1117
|
-
);
|
|
1118
|
-
}
|
|
1119
|
-
function DialogFooter({ className, ...props }) {
|
|
1120
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1121
|
-
"div",
|
|
1122
|
-
{
|
|
1123
|
-
"data-slot": "dialog-footer",
|
|
1124
|
-
className: cn(
|
|
1125
|
-
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
1126
|
-
className
|
|
1127
|
-
),
|
|
1128
|
-
...props
|
|
1129
|
-
}
|
|
1130
|
-
);
|
|
1131
|
-
}
|
|
1132
|
-
function DialogTitle({
|
|
1133
|
-
className,
|
|
1134
|
-
...props
|
|
1135
|
-
}) {
|
|
1136
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1137
|
-
DialogPrimitive__namespace.Title,
|
|
1138
|
-
{
|
|
1139
|
-
"data-slot": "dialog-title",
|
|
1140
|
-
className: cn("text-lg leading-none font-semibold", className),
|
|
1141
|
-
...props
|
|
1142
|
-
}
|
|
1143
|
-
);
|
|
1144
|
-
}
|
|
1145
|
-
function DialogDescription({
|
|
1146
|
-
className,
|
|
1147
|
-
...props
|
|
1148
|
-
}) {
|
|
1149
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1150
|
-
DialogPrimitive__namespace.Description,
|
|
1151
|
-
{
|
|
1152
|
-
"data-slot": "dialog-description",
|
|
1153
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
1154
|
-
...props
|
|
1155
|
-
}
|
|
1156
|
-
);
|
|
1157
|
-
}
|
|
1158
|
-
function DropdownMenu({
|
|
1159
|
-
...props
|
|
1160
|
-
}) {
|
|
1161
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Root, { "data-slot": "dropdown-menu", ...props });
|
|
1162
|
-
}
|
|
1163
|
-
function DropdownMenuPortal({
|
|
1164
|
-
...props
|
|
1165
|
-
}) {
|
|
1166
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
1167
|
-
}
|
|
1168
|
-
function DropdownMenuTrigger({
|
|
1169
|
-
...props
|
|
1170
|
-
}) {
|
|
1171
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1172
|
-
DropdownMenuPrimitive__namespace.Trigger,
|
|
1173
|
-
{
|
|
1174
|
-
"data-slot": "dropdown-menu-trigger",
|
|
1175
|
-
...props
|
|
1176
|
-
}
|
|
1177
|
-
);
|
|
1178
|
-
}
|
|
1179
|
-
function DropdownMenuContent({
|
|
1180
|
-
className,
|
|
1181
|
-
sideOffset = 4,
|
|
1182
|
-
...props
|
|
1183
|
-
}) {
|
|
1184
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1185
|
-
DropdownMenuPrimitive__namespace.Content,
|
|
1186
|
-
{
|
|
1187
|
-
"data-slot": "dropdown-menu-content",
|
|
1188
|
-
sideOffset,
|
|
1189
|
-
className: cn(
|
|
1190
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
|
|
1191
|
-
className
|
|
1192
|
-
),
|
|
1193
|
-
...props
|
|
1194
|
-
}
|
|
1195
|
-
) });
|
|
1196
|
-
}
|
|
1197
|
-
function DropdownMenuGroup({
|
|
1198
|
-
...props
|
|
1199
|
-
}) {
|
|
1200
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
1201
|
-
}
|
|
1202
|
-
function DropdownMenuItem({
|
|
1203
|
-
className,
|
|
1204
|
-
inset,
|
|
1205
|
-
variant = "default",
|
|
1206
|
-
...props
|
|
1207
|
-
}) {
|
|
1208
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1209
|
-
DropdownMenuPrimitive__namespace.Item,
|
|
1210
|
-
{
|
|
1211
|
-
"data-slot": "dropdown-menu-item",
|
|
1212
|
-
"data-inset": inset,
|
|
1213
|
-
"data-variant": variant,
|
|
1214
|
-
className: cn(
|
|
1215
|
-
"focus:bg-tertiary focus:text-tertiary-foreground data-[variant=error]:text-error data-[variant=error]:focus:bg-error/10 dark:data-[variant=error]:focus:bg-error/20 data-[variant=error]:focus:text-error data-[variant=error]:*:[svg]:!text-error [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1216
|
-
className
|
|
1217
|
-
),
|
|
1218
|
-
...props
|
|
1219
|
-
}
|
|
1220
|
-
);
|
|
1221
|
-
}
|
|
1222
|
-
function DropdownMenuCheckboxItem({
|
|
1223
|
-
className,
|
|
1224
|
-
children,
|
|
1225
|
-
checked,
|
|
1226
|
-
...props
|
|
1227
|
-
}) {
|
|
1228
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1229
|
-
DropdownMenuPrimitive__namespace.CheckboxItem,
|
|
1230
|
-
{
|
|
1231
|
-
"data-slot": "dropdown-menu-checkbox-item",
|
|
1232
|
-
className: cn(
|
|
1233
|
-
"focus:bg-tertiary focus:text-tertiary-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1234
|
-
className
|
|
1235
|
-
),
|
|
1236
|
-
checked,
|
|
1237
|
-
...props,
|
|
1238
|
-
children: [
|
|
1239
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-4" }) }) }),
|
|
1240
|
-
children
|
|
1241
|
-
]
|
|
1242
|
-
}
|
|
1243
|
-
);
|
|
1244
|
-
}
|
|
1245
|
-
function DropdownMenuRadioGroup({
|
|
1246
|
-
...props
|
|
1247
|
-
}) {
|
|
1248
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1249
|
-
DropdownMenuPrimitive__namespace.RadioGroup,
|
|
1250
|
-
{
|
|
1251
|
-
"data-slot": "dropdown-menu-radio-group",
|
|
1252
|
-
...props
|
|
1253
|
-
}
|
|
1254
|
-
);
|
|
1255
|
-
}
|
|
1256
|
-
function DropdownMenuRadioItem({
|
|
1257
|
-
className,
|
|
1258
|
-
children,
|
|
1259
|
-
...props
|
|
1260
|
-
}) {
|
|
1261
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1262
|
-
DropdownMenuPrimitive__namespace.RadioItem,
|
|
1263
|
-
{
|
|
1264
|
-
"data-slot": "dropdown-menu-radio-item",
|
|
1265
|
-
className: cn(
|
|
1266
|
-
"focus:bg-tertiary focus:text-tertiary-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1267
|
-
className
|
|
1268
|
-
),
|
|
1269
|
-
...props,
|
|
1270
|
-
children: [
|
|
1271
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
1272
|
-
children
|
|
1273
|
-
]
|
|
1274
|
-
}
|
|
1275
|
-
);
|
|
1276
|
-
}
|
|
1277
|
-
function DropdownMenuLabel({
|
|
1278
|
-
className,
|
|
1279
|
-
inset,
|
|
1280
|
-
...props
|
|
1281
|
-
}) {
|
|
1282
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1283
|
-
DropdownMenuPrimitive__namespace.Label,
|
|
1284
|
-
{
|
|
1285
|
-
"data-slot": "dropdown-menu-label",
|
|
1286
|
-
"data-inset": inset,
|
|
1287
|
-
className: cn(
|
|
1288
|
-
"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
|
|
1289
|
-
className
|
|
1290
|
-
),
|
|
1291
|
-
...props
|
|
1292
|
-
}
|
|
1293
|
-
);
|
|
1294
|
-
}
|
|
1295
|
-
function DropdownMenuSeparator({
|
|
1296
|
-
className,
|
|
1297
|
-
...props
|
|
1298
|
-
}) {
|
|
1299
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1300
|
-
DropdownMenuPrimitive__namespace.Separator,
|
|
1301
|
-
{
|
|
1302
|
-
"data-slot": "dropdown-menu-separator",
|
|
1303
|
-
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
1304
|
-
...props
|
|
1305
|
-
}
|
|
1306
|
-
);
|
|
1307
|
-
}
|
|
1308
|
-
function DropdownMenuShortcut({
|
|
1309
|
-
className,
|
|
1310
|
-
...props
|
|
1311
|
-
}) {
|
|
1312
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1313
|
-
"span",
|
|
1314
|
-
{
|
|
1315
|
-
"data-slot": "dropdown-menu-shortcut",
|
|
1316
|
-
className: cn(
|
|
1317
|
-
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
1318
|
-
className
|
|
1319
|
-
),
|
|
1320
|
-
...props
|
|
1321
|
-
}
|
|
1322
|
-
);
|
|
1323
|
-
}
|
|
1324
|
-
function DropdownMenuSub({
|
|
1325
|
-
...props
|
|
1326
|
-
}) {
|
|
1327
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
1328
|
-
}
|
|
1329
|
-
function DropdownMenuSubTrigger({
|
|
1330
|
-
className,
|
|
1331
|
-
inset,
|
|
1332
|
-
children,
|
|
1333
|
-
...props
|
|
1334
|
-
}) {
|
|
1335
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1336
|
-
DropdownMenuPrimitive__namespace.SubTrigger,
|
|
1337
|
-
{
|
|
1338
|
-
"data-slot": "dropdown-menu-sub-trigger",
|
|
1339
|
-
"data-inset": inset,
|
|
1340
|
-
className: cn(
|
|
1341
|
-
"focus:bg-tertiary focus:text-tertiary-foreground data-[state=open]:bg-tertiary data-[state=open]:text-tertiary-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1342
|
-
className
|
|
1343
|
-
),
|
|
1344
|
-
...props,
|
|
1345
|
-
children: [
|
|
1346
|
-
children,
|
|
1347
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
1348
|
-
]
|
|
1349
|
-
}
|
|
1350
|
-
);
|
|
1351
|
-
}
|
|
1352
|
-
function DropdownMenuSubContent({
|
|
1353
|
-
className,
|
|
1354
|
-
...props
|
|
1355
|
-
}) {
|
|
1356
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1357
|
-
DropdownMenuPrimitive__namespace.SubContent,
|
|
1358
|
-
{
|
|
1359
|
-
"data-slot": "dropdown-menu-sub-content",
|
|
1360
|
-
className: cn(
|
|
1361
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
|
1362
|
-
className
|
|
1363
|
-
),
|
|
1364
|
-
...props
|
|
1365
|
-
}
|
|
1366
|
-
);
|
|
1367
|
-
}
|
|
1368
|
-
function Label({
|
|
1369
|
-
className,
|
|
1370
|
-
...props
|
|
1371
|
-
}) {
|
|
1372
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1373
|
-
LabelPrimitive__namespace.Root,
|
|
1374
|
-
{
|
|
1375
|
-
"data-slot": "label",
|
|
1376
|
-
className: cn(
|
|
1377
|
-
"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
1378
|
-
className
|
|
1379
|
-
),
|
|
1380
|
-
...props
|
|
1381
|
-
}
|
|
1382
|
-
);
|
|
1383
|
-
}
|
|
1384
|
-
const Form = reactHookForm.FormProvider;
|
|
1385
|
-
const FormFieldContext = React__namespace.createContext(
|
|
1386
|
-
{}
|
|
1387
|
-
);
|
|
1388
|
-
const FormField = ({
|
|
1389
|
-
...props
|
|
1390
|
-
}) => {
|
|
1391
|
-
return /* @__PURE__ */ jsxRuntime.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.Controller, { ...props }) });
|
|
1392
|
-
};
|
|
1393
|
-
const useFormField = () => {
|
|
1394
|
-
const fieldContext = React__namespace.useContext(FormFieldContext);
|
|
1395
|
-
const itemContext = React__namespace.useContext(FormItemContext);
|
|
1396
|
-
const { getFieldState } = reactHookForm.useFormContext();
|
|
1397
|
-
const formState = reactHookForm.useFormState({ name: fieldContext.name });
|
|
1398
|
-
const fieldState = getFieldState(fieldContext.name, formState);
|
|
1399
|
-
if (!fieldContext) {
|
|
1400
|
-
throw new Error("useFormField should be used within <FormField>");
|
|
1401
|
-
}
|
|
1402
|
-
const { id } = itemContext;
|
|
1403
|
-
return {
|
|
1404
|
-
id,
|
|
1405
|
-
name: fieldContext.name,
|
|
1406
|
-
formItemId: `${id}-form-item`,
|
|
1407
|
-
formDescriptionId: `${id}-form-item-description`,
|
|
1408
|
-
formMessageId: `${id}-form-item-message`,
|
|
1409
|
-
...fieldState
|
|
1410
|
-
};
|
|
1411
|
-
};
|
|
1412
|
-
const FormItemContext = React__namespace.createContext(
|
|
1413
|
-
{}
|
|
1414
|
-
);
|
|
1415
|
-
function FormItem({ className, ...props }) {
|
|
1416
|
-
const id = React__namespace.useId();
|
|
1417
|
-
return /* @__PURE__ */ jsxRuntime.jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1418
|
-
"div",
|
|
1419
|
-
{
|
|
1420
|
-
"data-slot": "form-item",
|
|
1421
|
-
className: cn("grid gap-2", className),
|
|
1422
|
-
...props
|
|
1423
|
-
}
|
|
1424
|
-
) });
|
|
1425
|
-
}
|
|
1426
|
-
function FormLabel({
|
|
1427
|
-
className,
|
|
1428
|
-
...props
|
|
1429
|
-
}) {
|
|
1430
|
-
const { error, formItemId } = useFormField();
|
|
1431
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1432
|
-
Label,
|
|
1433
|
-
{
|
|
1434
|
-
"data-slot": "form-label",
|
|
1435
|
-
"data-error": !!error,
|
|
1436
|
-
className: cn("data-[error=true]:text-error", className),
|
|
1437
|
-
htmlFor: formItemId,
|
|
1438
|
-
...props
|
|
1439
|
-
}
|
|
1440
|
-
);
|
|
1441
|
-
}
|
|
1442
|
-
function FormControl({ ...props }) {
|
|
1443
|
-
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
1444
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1445
|
-
reactSlot.Slot,
|
|
1446
|
-
{
|
|
1447
|
-
"data-slot": "form-control",
|
|
1448
|
-
id: formItemId,
|
|
1449
|
-
"aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
|
|
1450
|
-
"aria-invalid": !!error,
|
|
1451
|
-
...props
|
|
1452
|
-
}
|
|
1453
|
-
);
|
|
1454
|
-
}
|
|
1455
|
-
function FormDescription({ className, ...props }) {
|
|
1456
|
-
const { formDescriptionId } = useFormField();
|
|
1457
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1458
|
-
"p",
|
|
1459
|
-
{
|
|
1460
|
-
"data-slot": "form-description",
|
|
1461
|
-
id: formDescriptionId,
|
|
1462
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
1463
|
-
...props
|
|
1464
|
-
}
|
|
1465
|
-
);
|
|
1466
|
-
}
|
|
1467
|
-
function FormMessage({ className, ...props }) {
|
|
1468
|
-
const { error, formMessageId } = useFormField();
|
|
1469
|
-
const body = error ? String(error?.message ?? "") : props.children;
|
|
1470
|
-
if (!body) {
|
|
1471
|
-
return null;
|
|
1472
|
-
}
|
|
1473
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1474
|
-
"p",
|
|
1475
|
-
{
|
|
1476
|
-
"data-slot": "form-message",
|
|
1477
|
-
id: formMessageId,
|
|
1478
|
-
className: cn("text-error text-sm", className),
|
|
1479
|
-
...props,
|
|
1480
|
-
children: body
|
|
1481
|
-
}
|
|
1482
|
-
);
|
|
1483
|
-
}
|
|
1484
|
-
function Input({ className, type, ...props }) {
|
|
1485
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1486
|
-
"input",
|
|
1487
|
-
{
|
|
1488
|
-
type,
|
|
1489
|
-
"data-slot": "input",
|
|
1490
|
-
className: cn(
|
|
1491
|
-
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
1492
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
1493
|
-
"aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error",
|
|
1494
|
-
className
|
|
1495
|
-
),
|
|
1496
|
-
...props
|
|
1497
|
-
}
|
|
1498
|
-
);
|
|
1499
|
-
}
|
|
1500
|
-
function Menubar({
|
|
1501
|
-
className,
|
|
1502
|
-
...props
|
|
1503
|
-
}) {
|
|
1504
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1505
|
-
MenubarPrimitive__namespace.Root,
|
|
1506
|
-
{
|
|
1507
|
-
"data-slot": "menubar",
|
|
1508
|
-
className: cn(
|
|
1509
|
-
"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
|
|
1510
|
-
className
|
|
1511
|
-
),
|
|
1512
|
-
...props
|
|
1513
|
-
}
|
|
1514
|
-
);
|
|
1515
|
-
}
|
|
1516
|
-
function MenubarMenu({
|
|
1517
|
-
...props
|
|
1518
|
-
}) {
|
|
1519
|
-
return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Menu, { "data-slot": "menubar-menu", ...props });
|
|
1520
|
-
}
|
|
1521
|
-
function MenubarGroup({
|
|
1522
|
-
...props
|
|
1523
|
-
}) {
|
|
1524
|
-
return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Group, { "data-slot": "menubar-group", ...props });
|
|
1525
|
-
}
|
|
1526
|
-
function MenubarPortal({
|
|
1527
|
-
...props
|
|
1528
|
-
}) {
|
|
1529
|
-
return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { "data-slot": "menubar-portal", ...props });
|
|
1530
|
-
}
|
|
1531
|
-
function MenubarRadioGroup({
|
|
1532
|
-
...props
|
|
1533
|
-
}) {
|
|
1534
|
-
return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
1535
|
-
}
|
|
1536
|
-
function MenubarTrigger({
|
|
1537
|
-
className,
|
|
1538
|
-
...props
|
|
1539
|
-
}) {
|
|
1540
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1541
|
-
MenubarPrimitive__namespace.Trigger,
|
|
1542
|
-
{
|
|
1543
|
-
"data-slot": "menubar-trigger",
|
|
1544
|
-
className: cn(
|
|
1545
|
-
"focus:bg-tertiary focus:text-tertiary-foreground data-[state=open]:bg-tertiary data-[state=open]:text-tertiary-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
|
|
1546
|
-
className
|
|
1547
|
-
),
|
|
1548
|
-
...props
|
|
1549
|
-
}
|
|
1550
|
-
);
|
|
1551
|
-
}
|
|
1552
|
-
function MenubarContent({
|
|
1553
|
-
className,
|
|
1554
|
-
align = "start",
|
|
1555
|
-
alignOffset = -4,
|
|
1556
|
-
sideOffset = 8,
|
|
1557
|
-
...props
|
|
1558
|
-
}) {
|
|
1559
|
-
return /* @__PURE__ */ jsxRuntime.jsx(MenubarPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1560
|
-
MenubarPrimitive__namespace.Content,
|
|
1561
|
-
{
|
|
1562
|
-
"data-slot": "menubar-content",
|
|
1563
|
-
align,
|
|
1564
|
-
alignOffset,
|
|
1565
|
-
sideOffset,
|
|
1566
|
-
className: cn(
|
|
1567
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md",
|
|
1568
|
-
className
|
|
1569
|
-
),
|
|
1570
|
-
...props
|
|
1571
|
-
}
|
|
1572
|
-
) });
|
|
1573
|
-
}
|
|
1574
|
-
function MenubarItem({
|
|
1575
|
-
className,
|
|
1576
|
-
inset,
|
|
1577
|
-
variant = "default",
|
|
1578
|
-
...props
|
|
1579
|
-
}) {
|
|
1580
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1581
|
-
MenubarPrimitive__namespace.Item,
|
|
1582
|
-
{
|
|
1583
|
-
"data-slot": "menubar-item",
|
|
1584
|
-
"data-inset": inset,
|
|
1585
|
-
"data-variant": variant,
|
|
1586
|
-
className: cn(
|
|
1587
|
-
"focus:bg-tertiary focus:text-tertiary-foreground data-[variant=error]:text-error data-[variant=error]:focus:bg-error/10 dark:data-[variant=error]:focus:bg-error/20 data-[variant=error]:focus:text-error data-[variant=error]:*:[svg]:!text-error [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1588
|
-
className
|
|
1589
|
-
),
|
|
1590
|
-
...props
|
|
1591
|
-
}
|
|
1592
|
-
);
|
|
1593
|
-
}
|
|
1594
|
-
function MenubarCheckboxItem({
|
|
1595
|
-
className,
|
|
1596
|
-
children,
|
|
1597
|
-
checked,
|
|
1598
|
-
...props
|
|
1599
|
-
}) {
|
|
1600
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1601
|
-
MenubarPrimitive__namespace.CheckboxItem,
|
|
1602
|
-
{
|
|
1603
|
-
"data-slot": "menubar-checkbox-item",
|
|
1604
|
-
className: cn(
|
|
1605
|
-
"focus:bg-tertiary focus:text-tertiary-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1606
|
-
className
|
|
1607
|
-
),
|
|
1608
|
-
checked,
|
|
1609
|
-
...props,
|
|
1610
|
-
children: [
|
|
1611
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-4" }) }) }),
|
|
1612
|
-
children
|
|
1613
|
-
]
|
|
1614
|
-
}
|
|
1615
|
-
);
|
|
1616
|
-
}
|
|
1617
|
-
function MenubarRadioItem({
|
|
1618
|
-
className,
|
|
1619
|
-
children,
|
|
1620
|
-
...props
|
|
1621
|
-
}) {
|
|
1622
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1623
|
-
MenubarPrimitive__namespace.RadioItem,
|
|
1624
|
-
{
|
|
1625
|
-
"data-slot": "menubar-radio-item",
|
|
1626
|
-
className: cn(
|
|
1627
|
-
"focus:bg-tertiary focus:text-tertiary-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1628
|
-
className
|
|
1629
|
-
),
|
|
1630
|
-
...props,
|
|
1631
|
-
children: [
|
|
1632
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
1633
|
-
children
|
|
1634
|
-
]
|
|
1635
|
-
}
|
|
1636
|
-
);
|
|
1637
|
-
}
|
|
1638
|
-
function MenubarLabel({
|
|
1639
|
-
className,
|
|
1640
|
-
inset,
|
|
1641
|
-
...props
|
|
1642
|
-
}) {
|
|
1643
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1644
|
-
MenubarPrimitive__namespace.Label,
|
|
1645
|
-
{
|
|
1646
|
-
"data-slot": "menubar-label",
|
|
1647
|
-
"data-inset": inset,
|
|
1648
|
-
className: cn(
|
|
1649
|
-
"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
|
|
1650
|
-
className
|
|
1651
|
-
),
|
|
1652
|
-
...props
|
|
1653
|
-
}
|
|
1654
|
-
);
|
|
1655
|
-
}
|
|
1656
|
-
function MenubarSeparator({
|
|
1657
|
-
className,
|
|
1658
|
-
...props
|
|
1659
|
-
}) {
|
|
1660
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1661
|
-
MenubarPrimitive__namespace.Separator,
|
|
1662
|
-
{
|
|
1663
|
-
"data-slot": "menubar-separator",
|
|
1664
|
-
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
1665
|
-
...props
|
|
1666
|
-
}
|
|
1667
|
-
);
|
|
1668
|
-
}
|
|
1669
|
-
function MenubarShortcut({
|
|
1670
|
-
className,
|
|
1671
|
-
...props
|
|
1672
|
-
}) {
|
|
1673
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1674
|
-
"span",
|
|
1675
|
-
{
|
|
1676
|
-
"data-slot": "menubar-shortcut",
|
|
1677
|
-
className: cn(
|
|
1678
|
-
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
1679
|
-
className
|
|
1680
|
-
),
|
|
1681
|
-
...props
|
|
1682
|
-
}
|
|
1683
|
-
);
|
|
1684
|
-
}
|
|
1685
|
-
function MenubarSub({
|
|
1686
|
-
...props
|
|
1687
|
-
}) {
|
|
1688
|
-
return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Sub, { "data-slot": "menubar-sub", ...props });
|
|
1689
|
-
}
|
|
1690
|
-
function MenubarSubTrigger({
|
|
1691
|
-
className,
|
|
1692
|
-
inset,
|
|
1693
|
-
children,
|
|
1694
|
-
...props
|
|
1695
|
-
}) {
|
|
1696
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1697
|
-
MenubarPrimitive__namespace.SubTrigger,
|
|
1698
|
-
{
|
|
1699
|
-
"data-slot": "menubar-sub-trigger",
|
|
1700
|
-
"data-inset": inset,
|
|
1701
|
-
className: cn(
|
|
1702
|
-
"focus:bg-tertiary focus:text-tertiary-foreground data-[state=open]:bg-tertiary data-[state=open]:text-tertiary-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8",
|
|
1703
|
-
className
|
|
1704
|
-
),
|
|
1705
|
-
...props,
|
|
1706
|
-
children: [
|
|
1707
|
-
children,
|
|
1708
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, { className: "ml-auto h-4 w-4" })
|
|
1709
|
-
]
|
|
1710
|
-
}
|
|
1711
|
-
);
|
|
1712
|
-
}
|
|
1713
|
-
function MenubarSubContent({
|
|
1714
|
-
className,
|
|
1715
|
-
...props
|
|
1716
|
-
}) {
|
|
1717
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1718
|
-
MenubarPrimitive__namespace.SubContent,
|
|
1719
|
-
{
|
|
1720
|
-
"data-slot": "menubar-sub-content",
|
|
1721
|
-
className: cn(
|
|
1722
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
|
1723
|
-
className
|
|
1724
|
-
),
|
|
1725
|
-
...props
|
|
1726
|
-
}
|
|
1727
|
-
);
|
|
1728
|
-
}
|
|
1729
|
-
function NavigationMenu({
|
|
1730
|
-
className,
|
|
1731
|
-
children,
|
|
1732
|
-
viewport = true,
|
|
1733
|
-
...props
|
|
1734
|
-
}) {
|
|
1735
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1736
|
-
NavigationMenuPrimitive__namespace.Root,
|
|
1737
|
-
{
|
|
1738
|
-
"data-slot": "navigation-menu",
|
|
1739
|
-
"data-viewport": viewport,
|
|
1740
|
-
className: cn(
|
|
1741
|
-
"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
|
|
1742
|
-
className
|
|
1743
|
-
),
|
|
1744
|
-
...props,
|
|
1745
|
-
children: [
|
|
1746
|
-
children,
|
|
1747
|
-
viewport && /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuViewport, {})
|
|
1748
|
-
]
|
|
1749
|
-
}
|
|
1750
|
-
);
|
|
1751
|
-
}
|
|
1752
|
-
function NavigationMenuList({
|
|
1753
|
-
className,
|
|
1754
|
-
...props
|
|
1755
|
-
}) {
|
|
1756
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1757
|
-
NavigationMenuPrimitive__namespace.List,
|
|
1758
|
-
{
|
|
1759
|
-
"data-slot": "navigation-menu-list",
|
|
1760
|
-
className: cn(
|
|
1761
|
-
"group flex flex-1 list-none items-center justify-center gap-1",
|
|
1762
|
-
className
|
|
1763
|
-
),
|
|
1764
|
-
...props
|
|
1765
|
-
}
|
|
1766
|
-
);
|
|
1767
|
-
}
|
|
1768
|
-
function NavigationMenuItem({
|
|
1769
|
-
className,
|
|
1770
|
-
...props
|
|
1771
|
-
}) {
|
|
1772
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1773
|
-
NavigationMenuPrimitive__namespace.Item,
|
|
1774
|
-
{
|
|
1775
|
-
"data-slot": "navigation-menu-item",
|
|
1776
|
-
className: cn(
|
|
1777
|
-
"relative after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-0 after:bg-tertiary-foreground after:transition-all after:duration-300 hover:after:w-full hover:text-tertiary-foreground transition-colors",
|
|
1778
|
-
className
|
|
1779
|
-
),
|
|
1780
|
-
...props
|
|
1781
|
-
}
|
|
1782
|
-
);
|
|
1783
|
-
}
|
|
1784
|
-
const navigationMenuTriggerStyle = classVarianceAuthority.cva(
|
|
1785
|
-
"group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
|
|
1786
|
-
);
|
|
1787
|
-
function NavigationMenuTrigger({
|
|
1788
|
-
className,
|
|
1789
|
-
children,
|
|
1790
|
-
...props
|
|
1791
|
-
}) {
|
|
1792
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1793
|
-
NavigationMenuPrimitive__namespace.Trigger,
|
|
1794
|
-
{
|
|
1795
|
-
"data-slot": "navigation-menu-trigger",
|
|
1796
|
-
className: cn(navigationMenuTriggerStyle(), "group", className),
|
|
1797
|
-
...props,
|
|
1798
|
-
children: [
|
|
1799
|
-
children,
|
|
1800
|
-
" ",
|
|
1801
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1802
|
-
lucideReact.ChevronDownIcon,
|
|
1803
|
-
{
|
|
1804
|
-
className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
1805
|
-
"aria-hidden": "true"
|
|
1806
|
-
}
|
|
1807
|
-
)
|
|
1808
|
-
]
|
|
1809
|
-
}
|
|
1810
|
-
);
|
|
1811
|
-
}
|
|
1812
|
-
function NavigationMenuContent({
|
|
1813
|
-
className,
|
|
1814
|
-
...props
|
|
1815
|
-
}) {
|
|
1816
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1817
|
-
NavigationMenuPrimitive__namespace.Content,
|
|
1818
|
-
{
|
|
1819
|
-
"data-slot": "navigation-menu-content",
|
|
1820
|
-
className: cn(
|
|
1821
|
-
"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
|
|
1822
|
-
"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
|
|
1823
|
-
className
|
|
1824
|
-
),
|
|
1825
|
-
...props
|
|
1826
|
-
}
|
|
1827
|
-
);
|
|
1828
|
-
}
|
|
1829
|
-
function NavigationMenuViewport({
|
|
1830
|
-
className,
|
|
1831
|
-
...props
|
|
1832
|
-
}) {
|
|
1833
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1834
|
-
"div",
|
|
1835
|
-
{
|
|
1836
|
-
className: cn(
|
|
1837
|
-
"absolute top-full left-0 isolate z-50 flex justify-center"
|
|
1838
|
-
),
|
|
1839
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1840
|
-
NavigationMenuPrimitive__namespace.Viewport,
|
|
1841
|
-
{
|
|
1842
|
-
"data-slot": "navigation-menu-viewport",
|
|
1843
|
-
className: cn(
|
|
1844
|
-
"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
|
|
1845
|
-
className
|
|
1846
|
-
),
|
|
1847
|
-
...props
|
|
1848
|
-
}
|
|
1849
|
-
)
|
|
1850
|
-
}
|
|
1851
|
-
);
|
|
1852
|
-
}
|
|
1853
|
-
function NavigationMenuLink({
|
|
1854
|
-
className,
|
|
1855
|
-
...props
|
|
1856
|
-
}) {
|
|
1857
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1858
|
-
NavigationMenuPrimitive__namespace.Link,
|
|
1859
|
-
{
|
|
1860
|
-
"data-slot": "navigation-menu-link",
|
|
1861
|
-
className: cn(
|
|
1862
|
-
"relative data-[active=true]:bg-tertiary/50 data-[active=true]:text-tertiary-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4 after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-0 after:bg-tertiary-foreground after:transition-all after:duration-300 hover:after:w-full",
|
|
1863
|
-
className
|
|
1864
|
-
),
|
|
1865
|
-
...props
|
|
1866
|
-
}
|
|
1867
|
-
);
|
|
1868
|
-
}
|
|
1869
|
-
function NavigationMenuIndicator({
|
|
1870
|
-
className,
|
|
1871
|
-
...props
|
|
1872
|
-
}) {
|
|
1873
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1874
|
-
NavigationMenuPrimitive__namespace.Indicator,
|
|
1875
|
-
{
|
|
1876
|
-
"data-slot": "navigation-menu-indicator",
|
|
1877
|
-
className: cn(
|
|
1878
|
-
"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden",
|
|
1879
|
-
className
|
|
1880
|
-
),
|
|
1881
|
-
...props,
|
|
1882
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
1883
|
-
}
|
|
1884
|
-
);
|
|
1885
|
-
}
|
|
1886
|
-
function Progress({
|
|
1887
|
-
className,
|
|
1888
|
-
value,
|
|
1889
|
-
...props
|
|
1890
|
-
}) {
|
|
1891
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1892
|
-
ProgressPrimitive__namespace.Root,
|
|
1893
|
-
{
|
|
1894
|
-
"data-slot": "progress",
|
|
1895
|
-
className: cn(
|
|
1896
|
-
"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
|
|
1897
|
-
className
|
|
1898
|
-
),
|
|
1899
|
-
...props,
|
|
1900
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1901
|
-
ProgressPrimitive__namespace.Indicator,
|
|
1902
|
-
{
|
|
1903
|
-
"data-slot": "progress-indicator",
|
|
1904
|
-
className: "bg-primary h-full w-full flex-1 transition-all",
|
|
1905
|
-
style: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
1906
|
-
}
|
|
1907
|
-
)
|
|
1908
|
-
}
|
|
1909
|
-
);
|
|
1910
|
-
}
|
|
1911
|
-
function RadioGroup({
|
|
1912
|
-
className,
|
|
1913
|
-
...props
|
|
1914
|
-
}) {
|
|
1915
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1916
|
-
RadioGroupPrimitive__namespace.Root,
|
|
1917
|
-
{
|
|
1918
|
-
"data-slot": "radio-group",
|
|
1919
|
-
className: cn("grid gap-3", className),
|
|
1920
|
-
...props
|
|
1921
|
-
}
|
|
1922
|
-
);
|
|
1923
|
-
}
|
|
1924
|
-
function RadioGroupItem({
|
|
1925
|
-
className,
|
|
1926
|
-
...props
|
|
1927
|
-
}) {
|
|
1928
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1929
|
-
RadioGroupPrimitive__namespace.Item,
|
|
1930
|
-
{
|
|
1931
|
-
"data-slot": "radio-group-item",
|
|
1932
|
-
className: cn(
|
|
1933
|
-
"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
|
|
1934
|
-
className
|
|
1935
|
-
),
|
|
1936
|
-
...props,
|
|
1937
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1938
|
-
RadioGroupPrimitive__namespace.Indicator,
|
|
1939
|
-
{
|
|
1940
|
-
"data-slot": "radio-group-indicator",
|
|
1941
|
-
className: "relative flex items-center justify-center",
|
|
1942
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
|
|
1943
|
-
}
|
|
1944
|
-
)
|
|
1945
|
-
}
|
|
1946
|
-
);
|
|
1947
|
-
}
|
|
1948
|
-
function ScrollArea({
|
|
1949
|
-
className,
|
|
1950
|
-
children,
|
|
1951
|
-
...props
|
|
1952
|
-
}) {
|
|
1953
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1954
|
-
ScrollAreaPrimitive__namespace.Root,
|
|
1955
|
-
{
|
|
1956
|
-
"data-slot": "scroll-area",
|
|
1957
|
-
className: cn("relative", className),
|
|
1958
|
-
...props,
|
|
1959
|
-
children: [
|
|
1960
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1961
|
-
ScrollAreaPrimitive__namespace.Viewport,
|
|
1962
|
-
{
|
|
1963
|
-
"data-slot": "scroll-area-viewport",
|
|
1964
|
-
className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
|
|
1965
|
-
children
|
|
1966
|
-
}
|
|
1967
|
-
),
|
|
1968
|
-
/* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
|
|
1969
|
-
/* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
|
|
1970
|
-
]
|
|
1971
|
-
}
|
|
1972
|
-
);
|
|
1973
|
-
}
|
|
1974
|
-
function ScrollBar({
|
|
1975
|
-
className,
|
|
1976
|
-
orientation = "vertical",
|
|
1977
|
-
...props
|
|
1978
|
-
}) {
|
|
1979
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1980
|
-
ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
|
|
1981
|
-
{
|
|
1982
|
-
"data-slot": "scroll-area-scrollbar",
|
|
1983
|
-
orientation,
|
|
1984
|
-
className: cn(
|
|
1985
|
-
"flex touch-none p-px transition-colors select-none",
|
|
1986
|
-
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
|
|
1987
|
-
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
|
|
1988
|
-
className
|
|
1989
|
-
),
|
|
1990
|
-
...props,
|
|
1991
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1992
|
-
ScrollAreaPrimitive__namespace.ScrollAreaThumb,
|
|
1993
|
-
{
|
|
1994
|
-
"data-slot": "scroll-area-thumb",
|
|
1995
|
-
className: "bg-border relative flex-1 rounded-full"
|
|
1996
|
-
}
|
|
1997
|
-
)
|
|
1998
|
-
}
|
|
1999
|
-
);
|
|
2000
|
-
}
|
|
2001
|
-
function Select({
|
|
2002
|
-
...props
|
|
2003
|
-
}) {
|
|
2004
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Root, { "data-slot": "select", ...props });
|
|
2005
|
-
}
|
|
2006
|
-
function SelectGroup({
|
|
2007
|
-
...props
|
|
2008
|
-
}) {
|
|
2009
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Group, { "data-slot": "select-group", ...props });
|
|
2010
|
-
}
|
|
2011
|
-
function SelectValue({
|
|
2012
|
-
...props
|
|
2013
|
-
}) {
|
|
2014
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { "data-slot": "select-value", ...props });
|
|
2015
|
-
}
|
|
2016
|
-
function SelectTrigger({
|
|
2017
|
-
className,
|
|
2018
|
-
size = "default",
|
|
2019
|
-
children,
|
|
2020
|
-
...props
|
|
2021
|
-
}) {
|
|
2022
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2023
|
-
SelectPrimitive__namespace.Trigger,
|
|
2024
|
-
{
|
|
2025
|
-
"data-slot": "select-trigger",
|
|
2026
|
-
"data-size": size,
|
|
2027
|
-
className: cn(
|
|
2028
|
-
"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
2029
|
-
className
|
|
2030
|
-
),
|
|
2031
|
-
...props,
|
|
2032
|
-
children: [
|
|
2033
|
-
children,
|
|
2034
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
2035
|
-
]
|
|
2036
|
-
}
|
|
2037
|
-
);
|
|
2038
|
-
}
|
|
2039
|
-
function SelectContent({
|
|
2040
|
-
className,
|
|
2041
|
-
children,
|
|
2042
|
-
position = "item-aligned",
|
|
2043
|
-
align = "center",
|
|
2044
|
-
...props
|
|
2045
|
-
}) {
|
|
2046
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2047
|
-
SelectPrimitive__namespace.Content,
|
|
2048
|
-
{
|
|
2049
|
-
"data-slot": "select-content",
|
|
2050
|
-
className: cn(
|
|
2051
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
|
|
2052
|
-
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
2053
|
-
className
|
|
2054
|
-
),
|
|
2055
|
-
position,
|
|
2056
|
-
align,
|
|
2057
|
-
...props,
|
|
2058
|
-
children: [
|
|
2059
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
|
|
2060
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2061
|
-
SelectPrimitive__namespace.Viewport,
|
|
2062
|
-
{
|
|
2063
|
-
className: cn(
|
|
2064
|
-
"p-1",
|
|
2065
|
-
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
|
|
2066
|
-
),
|
|
2067
|
-
children
|
|
2068
|
-
}
|
|
2069
|
-
),
|
|
2070
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
|
|
2071
|
-
]
|
|
2072
|
-
}
|
|
2073
|
-
) });
|
|
2074
|
-
}
|
|
2075
|
-
function SelectLabel({
|
|
2076
|
-
className,
|
|
2077
|
-
...props
|
|
2078
|
-
}) {
|
|
2079
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2080
|
-
SelectPrimitive__namespace.Label,
|
|
2081
|
-
{
|
|
2082
|
-
"data-slot": "select-label",
|
|
2083
|
-
className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
|
|
2084
|
-
...props
|
|
2085
|
-
}
|
|
2086
|
-
);
|
|
2087
|
-
}
|
|
2088
|
-
function SelectItem({
|
|
2089
|
-
className,
|
|
2090
|
-
children,
|
|
2091
|
-
...props
|
|
2092
|
-
}) {
|
|
2093
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2094
|
-
SelectPrimitive__namespace.Item,
|
|
2095
|
-
{
|
|
2096
|
-
"data-slot": "select-item",
|
|
2097
|
-
className: cn(
|
|
2098
|
-
"focus:bg-tertiary focus:text-tertiary-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
2099
|
-
className
|
|
2100
|
-
),
|
|
2101
|
-
...props,
|
|
2102
|
-
children: [
|
|
2103
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2104
|
-
"span",
|
|
2105
|
-
{
|
|
2106
|
-
"data-slot": "select-item-indicator",
|
|
2107
|
-
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
2108
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-4" }) })
|
|
2109
|
-
}
|
|
2110
|
-
),
|
|
2111
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
|
|
2112
|
-
]
|
|
2113
|
-
}
|
|
2114
|
-
);
|
|
2115
|
-
}
|
|
2116
|
-
function SelectSeparator({
|
|
2117
|
-
className,
|
|
2118
|
-
...props
|
|
2119
|
-
}) {
|
|
2120
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2121
|
-
SelectPrimitive__namespace.Separator,
|
|
2122
|
-
{
|
|
2123
|
-
"data-slot": "select-separator",
|
|
2124
|
-
className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
|
|
2125
|
-
...props
|
|
2126
|
-
}
|
|
2127
|
-
);
|
|
2128
|
-
}
|
|
2129
|
-
function SelectScrollUpButton({
|
|
2130
|
-
className,
|
|
2131
|
-
...props
|
|
2132
|
-
}) {
|
|
2133
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2134
|
-
SelectPrimitive__namespace.ScrollUpButton,
|
|
2135
|
-
{
|
|
2136
|
-
"data-slot": "select-scroll-up-button",
|
|
2137
|
-
className: cn(
|
|
2138
|
-
"flex cursor-default items-center justify-center py-1",
|
|
2139
|
-
className
|
|
2140
|
-
),
|
|
2141
|
-
...props,
|
|
2142
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUpIcon, { className: "size-4" })
|
|
2143
|
-
}
|
|
2144
|
-
);
|
|
2145
|
-
}
|
|
2146
|
-
function SelectScrollDownButton({
|
|
2147
|
-
className,
|
|
2148
|
-
...props
|
|
2149
|
-
}) {
|
|
2150
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2151
|
-
SelectPrimitive__namespace.ScrollDownButton,
|
|
2152
|
-
{
|
|
2153
|
-
"data-slot": "select-scroll-down-button",
|
|
2154
|
-
className: cn(
|
|
2155
|
-
"flex cursor-default items-center justify-center py-1",
|
|
2156
|
-
className
|
|
2157
|
-
),
|
|
2158
|
-
...props,
|
|
2159
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "size-4" })
|
|
2160
|
-
}
|
|
2161
|
-
);
|
|
2162
|
-
}
|
|
2163
|
-
function Separator({
|
|
2164
|
-
className,
|
|
2165
|
-
orientation = "horizontal",
|
|
2166
|
-
decorative = true,
|
|
2167
|
-
...props
|
|
2168
|
-
}) {
|
|
2169
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2170
|
-
SeparatorPrimitive__namespace.Root,
|
|
2171
|
-
{
|
|
2172
|
-
"data-slot": "separator",
|
|
2173
|
-
decorative,
|
|
2174
|
-
orientation,
|
|
2175
|
-
className: cn(
|
|
2176
|
-
"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
2177
|
-
className
|
|
2178
|
-
),
|
|
2179
|
-
...props
|
|
2180
|
-
}
|
|
2181
|
-
);
|
|
2182
|
-
}
|
|
2183
|
-
function Sheet({ ...props }) {
|
|
2184
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { "data-slot": "sheet", ...props });
|
|
2185
|
-
}
|
|
2186
|
-
function SheetTrigger({
|
|
2187
|
-
...props
|
|
2188
|
-
}) {
|
|
2189
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
2190
|
-
}
|
|
2191
|
-
function SheetClose({
|
|
2192
|
-
...props
|
|
2193
|
-
}) {
|
|
2194
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "data-slot": "sheet-close", ...props });
|
|
2195
|
-
}
|
|
2196
|
-
function SheetPortal({
|
|
2197
|
-
...props
|
|
2198
|
-
}) {
|
|
2199
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, { "data-slot": "sheet-portal", ...props });
|
|
2200
|
-
}
|
|
2201
|
-
function SheetOverlay({
|
|
2202
|
-
className,
|
|
2203
|
-
...props
|
|
2204
|
-
}) {
|
|
2205
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2206
|
-
DialogPrimitive__namespace.Overlay,
|
|
2207
|
-
{
|
|
2208
|
-
"data-slot": "sheet-overlay",
|
|
2209
|
-
className: cn(
|
|
2210
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
|
2211
|
-
className
|
|
2212
|
-
),
|
|
2213
|
-
...props
|
|
2214
|
-
}
|
|
2215
|
-
);
|
|
2216
|
-
}
|
|
2217
|
-
function SheetContent({
|
|
2218
|
-
className,
|
|
2219
|
-
children,
|
|
2220
|
-
side = "right",
|
|
2221
|
-
...props
|
|
2222
|
-
}) {
|
|
2223
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
|
|
2224
|
-
/* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
|
|
2225
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2226
|
-
DialogPrimitive__namespace.Content,
|
|
2227
|
-
{
|
|
2228
|
-
"data-slot": "sheet-content",
|
|
2229
|
-
className: cn(
|
|
2230
|
-
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
2231
|
-
side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
|
|
2232
|
-
side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
|
|
2233
|
-
side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
|
|
2234
|
-
side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
|
|
2235
|
-
className
|
|
2236
|
-
),
|
|
2237
|
-
...props,
|
|
2238
|
-
children: [
|
|
2239
|
-
children,
|
|
2240
|
-
/* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
2241
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "size-4" }),
|
|
2242
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
2243
|
-
] })
|
|
2244
|
-
]
|
|
2245
|
-
}
|
|
2246
|
-
)
|
|
2247
|
-
] });
|
|
2248
|
-
}
|
|
2249
|
-
function SheetHeader({ className, ...props }) {
|
|
2250
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2251
|
-
"div",
|
|
2252
|
-
{
|
|
2253
|
-
"data-slot": "sheet-header",
|
|
2254
|
-
className: cn("flex flex-col gap-1.5 p-4", className),
|
|
2255
|
-
...props
|
|
2256
|
-
}
|
|
2257
|
-
);
|
|
2258
|
-
}
|
|
2259
|
-
function SheetFooter({ className, ...props }) {
|
|
2260
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2261
|
-
"div",
|
|
2262
|
-
{
|
|
2263
|
-
"data-slot": "sheet-footer",
|
|
2264
|
-
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
2265
|
-
...props
|
|
2266
|
-
}
|
|
2267
|
-
);
|
|
2268
|
-
}
|
|
2269
|
-
function SheetTitle({
|
|
2270
|
-
className,
|
|
2271
|
-
...props
|
|
2272
|
-
}) {
|
|
2273
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2274
|
-
DialogPrimitive__namespace.Title,
|
|
2275
|
-
{
|
|
2276
|
-
"data-slot": "sheet-title",
|
|
2277
|
-
className: cn("text-foreground font-semibold", className),
|
|
2278
|
-
...props
|
|
2279
|
-
}
|
|
2280
|
-
);
|
|
2281
|
-
}
|
|
2282
|
-
function SheetDescription({
|
|
2283
|
-
className,
|
|
2284
|
-
...props
|
|
2285
|
-
}) {
|
|
2286
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2287
|
-
DialogPrimitive__namespace.Description,
|
|
2288
|
-
{
|
|
2289
|
-
"data-slot": "sheet-description",
|
|
2290
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
2291
|
-
...props
|
|
2292
|
-
}
|
|
2293
|
-
);
|
|
2294
|
-
}
|
|
2295
|
-
const MOBILE_BREAKPOINT = 768;
|
|
2296
|
-
function useIsMobile() {
|
|
2297
|
-
const [isMobile, setIsMobile] = React__namespace.useState(
|
|
2298
|
-
void 0
|
|
2299
|
-
);
|
|
2300
|
-
React__namespace.useEffect(() => {
|
|
2301
|
-
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
2302
|
-
const onChange = () => {
|
|
2303
|
-
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
2304
|
-
};
|
|
2305
|
-
mql.addEventListener("change", onChange);
|
|
2306
|
-
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
2307
|
-
return () => mql.removeEventListener("change", onChange);
|
|
2308
|
-
}, []);
|
|
2309
|
-
return !!isMobile;
|
|
2310
|
-
}
|
|
2311
|
-
function Skeleton({ className, ...props }) {
|
|
2312
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2313
|
-
"div",
|
|
2314
|
-
{
|
|
2315
|
-
"data-slot": "skeleton",
|
|
2316
|
-
className: cn("bg-secondary animate-pulse rounded-md", className),
|
|
2317
|
-
...props
|
|
2318
|
-
}
|
|
2319
|
-
);
|
|
2320
|
-
}
|
|
2321
|
-
function TooltipProvider({
|
|
2322
|
-
delayDuration = 0,
|
|
2323
|
-
...props
|
|
2324
|
-
}) {
|
|
2325
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2326
|
-
TooltipPrimitive__namespace.Provider,
|
|
2327
|
-
{
|
|
2328
|
-
"data-slot": "tooltip-provider",
|
|
2329
|
-
delayDuration,
|
|
2330
|
-
...props
|
|
2331
|
-
}
|
|
2332
|
-
);
|
|
2333
|
-
}
|
|
2334
|
-
function Tooltip({
|
|
2335
|
-
...props
|
|
2336
|
-
}) {
|
|
2337
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, { "data-slot": "tooltip", ...props }) });
|
|
2338
|
-
}
|
|
2339
|
-
function TooltipTrigger({
|
|
2340
|
-
...props
|
|
2341
|
-
}) {
|
|
2342
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
2343
|
-
}
|
|
2344
|
-
function TooltipContent({
|
|
2345
|
-
className,
|
|
2346
|
-
sideOffset = 0,
|
|
2347
|
-
children,
|
|
2348
|
-
...props
|
|
2349
|
-
}) {
|
|
2350
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2351
|
-
TooltipPrimitive__namespace.Content,
|
|
2352
|
-
{
|
|
2353
|
-
"data-slot": "tooltip-content",
|
|
2354
|
-
sideOffset,
|
|
2355
|
-
className: cn(
|
|
2356
|
-
"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
|
|
2357
|
-
className
|
|
2358
|
-
),
|
|
2359
|
-
...props,
|
|
2360
|
-
children: [
|
|
2361
|
-
children,
|
|
2362
|
-
/* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
2363
|
-
]
|
|
2364
|
-
}
|
|
2365
|
-
) });
|
|
2366
|
-
}
|
|
2367
|
-
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
2368
|
-
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
2369
|
-
const SIDEBAR_WIDTH = "16rem";
|
|
2370
|
-
const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
2371
|
-
const SIDEBAR_WIDTH_ICON = "3rem";
|
|
2372
|
-
const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
2373
|
-
const SidebarContext = React__namespace.createContext(null);
|
|
2374
|
-
function useSidebar() {
|
|
2375
|
-
const context = React__namespace.useContext(SidebarContext);
|
|
2376
|
-
if (!context) {
|
|
2377
|
-
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
2378
|
-
}
|
|
2379
|
-
return context;
|
|
2380
|
-
}
|
|
2381
|
-
function SidebarProvider({
|
|
2382
|
-
defaultOpen = true,
|
|
2383
|
-
open: openProp,
|
|
2384
|
-
onOpenChange: setOpenProp,
|
|
2385
|
-
className,
|
|
2386
|
-
style,
|
|
2387
|
-
children,
|
|
2388
|
-
...props
|
|
2389
|
-
}) {
|
|
2390
|
-
const isMobile = useIsMobile();
|
|
2391
|
-
const [openMobile, setOpenMobile] = React__namespace.useState(false);
|
|
2392
|
-
const [_open, _setOpen] = React__namespace.useState(defaultOpen);
|
|
2393
|
-
const open = openProp ?? _open;
|
|
2394
|
-
const setOpen = React__namespace.useCallback(
|
|
2395
|
-
(value) => {
|
|
2396
|
-
const openState = typeof value === "function" ? value(open) : value;
|
|
2397
|
-
if (setOpenProp) {
|
|
2398
|
-
setOpenProp(openState);
|
|
2399
|
-
} else {
|
|
2400
|
-
_setOpen(openState);
|
|
2401
|
-
}
|
|
2402
|
-
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
2403
|
-
},
|
|
2404
|
-
[setOpenProp, open]
|
|
2405
|
-
);
|
|
2406
|
-
const toggleSidebar = React__namespace.useCallback(() => {
|
|
2407
|
-
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
2408
|
-
}, [isMobile, setOpen, setOpenMobile]);
|
|
2409
|
-
React__namespace.useEffect(() => {
|
|
2410
|
-
const handleKeyDown = (event) => {
|
|
2411
|
-
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
2412
|
-
event.preventDefault();
|
|
2413
|
-
toggleSidebar();
|
|
2414
|
-
}
|
|
2415
|
-
};
|
|
2416
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
2417
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
2418
|
-
}, [toggleSidebar]);
|
|
2419
|
-
const state = open ? "expanded" : "collapsed";
|
|
2420
|
-
const contextValue = React__namespace.useMemo(
|
|
2421
|
-
() => ({
|
|
2422
|
-
state,
|
|
2423
|
-
open,
|
|
2424
|
-
setOpen,
|
|
2425
|
-
isMobile,
|
|
2426
|
-
openMobile,
|
|
2427
|
-
setOpenMobile,
|
|
2428
|
-
toggleSidebar
|
|
2429
|
-
}),
|
|
2430
|
-
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
2431
|
-
);
|
|
2432
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2433
|
-
"div",
|
|
2434
|
-
{
|
|
2435
|
-
"data-slot": "sidebar-wrapper",
|
|
2436
|
-
style: {
|
|
2437
|
-
"--sidebar-width": SIDEBAR_WIDTH,
|
|
2438
|
-
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
2439
|
-
...style
|
|
2440
|
-
},
|
|
2441
|
-
className: cn(
|
|
2442
|
-
"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
|
|
2443
|
-
className
|
|
2444
|
-
),
|
|
2445
|
-
...props,
|
|
2446
|
-
children
|
|
2447
|
-
}
|
|
2448
|
-
) }) });
|
|
2449
|
-
}
|
|
2450
|
-
function Sidebar({
|
|
2451
|
-
side = "left",
|
|
2452
|
-
variant = "sidebar",
|
|
2453
|
-
collapsible = "offcanvas",
|
|
2454
|
-
className,
|
|
2455
|
-
children,
|
|
2456
|
-
...props
|
|
2457
|
-
}) {
|
|
2458
|
-
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
2459
|
-
if (collapsible === "none") {
|
|
2460
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2461
|
-
"div",
|
|
2462
|
-
{
|
|
2463
|
-
"data-slot": "sidebar",
|
|
2464
|
-
className: cn(
|
|
2465
|
-
"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",
|
|
2466
|
-
className
|
|
2467
|
-
),
|
|
2468
|
-
...props,
|
|
2469
|
-
children
|
|
2470
|
-
}
|
|
2471
|
-
);
|
|
2472
|
-
}
|
|
2473
|
-
if (isMobile) {
|
|
2474
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2475
|
-
SheetContent,
|
|
2476
|
-
{
|
|
2477
|
-
"data-sidebar": "sidebar",
|
|
2478
|
-
"data-slot": "sidebar",
|
|
2479
|
-
"data-mobile": "true",
|
|
2480
|
-
className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
|
|
2481
|
-
style: {
|
|
2482
|
-
"--sidebar-width": SIDEBAR_WIDTH_MOBILE
|
|
2483
|
-
},
|
|
2484
|
-
side,
|
|
2485
|
-
children: [
|
|
2486
|
-
/* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { className: "sr-only", children: [
|
|
2487
|
-
/* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: "Sidebar" }),
|
|
2488
|
-
/* @__PURE__ */ jsxRuntime.jsx(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
2489
|
-
] }),
|
|
2490
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full flex-col", children })
|
|
2491
|
-
]
|
|
2492
|
-
}
|
|
2493
|
-
) });
|
|
2494
|
-
}
|
|
2495
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2496
|
-
"div",
|
|
2497
|
-
{
|
|
2498
|
-
className: "group peer text-sidebar-foreground hidden md:block",
|
|
2499
|
-
"data-state": state,
|
|
2500
|
-
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
2501
|
-
"data-variant": variant,
|
|
2502
|
-
"data-side": side,
|
|
2503
|
-
"data-slot": "sidebar",
|
|
2504
|
-
children: [
|
|
2505
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2506
|
-
"div",
|
|
2507
|
-
{
|
|
2508
|
-
"data-slot": "sidebar-gap",
|
|
2509
|
-
className: cn(
|
|
2510
|
-
"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
|
|
2511
|
-
"group-data-[collapsible=offcanvas]:w-0",
|
|
2512
|
-
"group-data-[side=right]:rotate-180",
|
|
2513
|
-
variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
|
|
2514
|
-
)
|
|
2515
|
-
}
|
|
2516
|
-
),
|
|
2517
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2518
|
-
"div",
|
|
2519
|
-
{
|
|
2520
|
-
"data-slot": "sidebar-container",
|
|
2521
|
-
className: cn(
|
|
2522
|
-
"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
|
|
2523
|
-
side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
|
|
2524
|
-
// Adjust the padding for floating and inset variants.
|
|
2525
|
-
variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
2526
|
-
className
|
|
2527
|
-
),
|
|
2528
|
-
...props,
|
|
2529
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2530
|
-
"div",
|
|
2531
|
-
{
|
|
2532
|
-
"data-sidebar": "sidebar",
|
|
2533
|
-
"data-slot": "sidebar-inner",
|
|
2534
|
-
className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",
|
|
2535
|
-
children
|
|
2536
|
-
}
|
|
2537
|
-
)
|
|
2538
|
-
}
|
|
2539
|
-
)
|
|
2540
|
-
]
|
|
2541
|
-
}
|
|
2542
|
-
);
|
|
2543
|
-
}
|
|
2544
|
-
function SidebarTrigger({
|
|
2545
|
-
className,
|
|
2546
|
-
onClick,
|
|
2547
|
-
...props
|
|
2548
|
-
}) {
|
|
2549
|
-
const { toggleSidebar } = useSidebar();
|
|
2550
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2551
|
-
Button,
|
|
2552
|
-
{
|
|
2553
|
-
"data-sidebar": "trigger",
|
|
2554
|
-
"data-slot": "sidebar-trigger",
|
|
2555
|
-
variant: "ghost",
|
|
2556
|
-
size: "icon",
|
|
2557
|
-
className: cn("size-7", className),
|
|
2558
|
-
onClick: (event) => {
|
|
2559
|
-
onClick?.(event);
|
|
2560
|
-
toggleSidebar();
|
|
2561
|
-
},
|
|
2562
|
-
...props,
|
|
2563
|
-
children: [
|
|
2564
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeftIcon, {}),
|
|
2565
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
2566
|
-
]
|
|
2567
|
-
}
|
|
2568
|
-
);
|
|
2569
|
-
}
|
|
2570
|
-
function SidebarRail({ className, ...props }) {
|
|
2571
|
-
const { toggleSidebar } = useSidebar();
|
|
2572
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2573
|
-
"button",
|
|
2574
|
-
{
|
|
2575
|
-
"data-sidebar": "rail",
|
|
2576
|
-
"data-slot": "sidebar-rail",
|
|
2577
|
-
"aria-label": "Toggle Sidebar",
|
|
2578
|
-
tabIndex: -1,
|
|
2579
|
-
onClick: toggleSidebar,
|
|
2580
|
-
title: "Toggle Sidebar",
|
|
2581
|
-
className: cn(
|
|
2582
|
-
"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex",
|
|
2583
|
-
"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
|
|
2584
|
-
"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
|
|
2585
|
-
"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full",
|
|
2586
|
-
"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
|
|
2587
|
-
"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
|
|
2588
|
-
className
|
|
2589
|
-
),
|
|
2590
|
-
...props
|
|
2591
|
-
}
|
|
2592
|
-
);
|
|
2593
|
-
}
|
|
2594
|
-
function SidebarInset({ className, ...props }) {
|
|
2595
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2596
|
-
"main",
|
|
2597
|
-
{
|
|
2598
|
-
"data-slot": "sidebar-inset",
|
|
2599
|
-
className: cn(
|
|
2600
|
-
"bg-background relative flex w-full flex-1 flex-col",
|
|
2601
|
-
"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
|
|
2602
|
-
className
|
|
2603
|
-
),
|
|
2604
|
-
...props
|
|
2605
|
-
}
|
|
2606
|
-
);
|
|
2607
|
-
}
|
|
2608
|
-
function SidebarInput({
|
|
2609
|
-
className,
|
|
2610
|
-
...props
|
|
2611
|
-
}) {
|
|
2612
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2613
|
-
Input,
|
|
2614
|
-
{
|
|
2615
|
-
"data-slot": "sidebar-input",
|
|
2616
|
-
"data-sidebar": "input",
|
|
2617
|
-
className: cn("bg-background h-8 w-full shadow-none", className),
|
|
2618
|
-
...props
|
|
2619
|
-
}
|
|
2620
|
-
);
|
|
2621
|
-
}
|
|
2622
|
-
function SidebarHeader({ className, ...props }) {
|
|
2623
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2624
|
-
"div",
|
|
2625
|
-
{
|
|
2626
|
-
"data-slot": "sidebar-header",
|
|
2627
|
-
"data-sidebar": "header",
|
|
2628
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
2629
|
-
...props
|
|
2630
|
-
}
|
|
2631
|
-
);
|
|
2632
|
-
}
|
|
2633
|
-
function SidebarFooter({ className, ...props }) {
|
|
2634
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2635
|
-
"div",
|
|
2636
|
-
{
|
|
2637
|
-
"data-slot": "sidebar-footer",
|
|
2638
|
-
"data-sidebar": "footer",
|
|
2639
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
2640
|
-
...props
|
|
2641
|
-
}
|
|
2642
|
-
);
|
|
2643
|
-
}
|
|
2644
|
-
function SidebarSeparator({
|
|
2645
|
-
className,
|
|
2646
|
-
...props
|
|
2647
|
-
}) {
|
|
2648
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2649
|
-
Separator,
|
|
2650
|
-
{
|
|
2651
|
-
"data-slot": "sidebar-separator",
|
|
2652
|
-
"data-sidebar": "separator",
|
|
2653
|
-
className: cn("bg-sidebar-border mx-2 w-auto", className),
|
|
2654
|
-
...props
|
|
2655
|
-
}
|
|
2656
|
-
);
|
|
2657
|
-
}
|
|
2658
|
-
function SidebarContent({ className, ...props }) {
|
|
2659
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2660
|
-
"div",
|
|
2661
|
-
{
|
|
2662
|
-
"data-slot": "sidebar-content",
|
|
2663
|
-
"data-sidebar": "content",
|
|
2664
|
-
className: cn(
|
|
2665
|
-
"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
|
|
2666
|
-
className
|
|
2667
|
-
),
|
|
2668
|
-
...props
|
|
2669
|
-
}
|
|
2670
|
-
);
|
|
2671
|
-
}
|
|
2672
|
-
function SidebarGroup({ className, ...props }) {
|
|
2673
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2674
|
-
"div",
|
|
2675
|
-
{
|
|
2676
|
-
"data-slot": "sidebar-group",
|
|
2677
|
-
"data-sidebar": "group",
|
|
2678
|
-
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
2679
|
-
...props
|
|
2680
|
-
}
|
|
2681
|
-
);
|
|
2682
|
-
}
|
|
2683
|
-
function SidebarGroupLabel({
|
|
2684
|
-
className,
|
|
2685
|
-
asChild = false,
|
|
2686
|
-
...props
|
|
2687
|
-
}) {
|
|
2688
|
-
const Comp = asChild ? reactSlot.Slot : "div";
|
|
2689
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2690
|
-
Comp,
|
|
2691
|
-
{
|
|
2692
|
-
"data-slot": "sidebar-group-label",
|
|
2693
|
-
"data-sidebar": "group-label",
|
|
2694
|
-
className: cn(
|
|
2695
|
-
"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2696
|
-
"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
|
|
2697
|
-
className
|
|
2698
|
-
),
|
|
2699
|
-
...props
|
|
2700
|
-
}
|
|
2701
|
-
);
|
|
2702
|
-
}
|
|
2703
|
-
function SidebarGroupAction({
|
|
2704
|
-
className,
|
|
2705
|
-
asChild = false,
|
|
2706
|
-
...props
|
|
2707
|
-
}) {
|
|
2708
|
-
const Comp = asChild ? reactSlot.Slot : "button";
|
|
2709
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2710
|
-
Comp,
|
|
2711
|
-
{
|
|
2712
|
-
"data-slot": "sidebar-group-action",
|
|
2713
|
-
"data-sidebar": "group-action",
|
|
2714
|
-
className: cn(
|
|
2715
|
-
"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-tertiary hover:text-sidebar-tertiary-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2716
|
-
// Increases the hit area of the button on mobile.
|
|
2717
|
-
"after:absolute after:-inset-2 md:after:hidden",
|
|
2718
|
-
"group-data-[collapsible=icon]:hidden",
|
|
2719
|
-
className
|
|
2720
|
-
),
|
|
2721
|
-
...props
|
|
2722
|
-
}
|
|
2723
|
-
);
|
|
2724
|
-
}
|
|
2725
|
-
function SidebarGroupContent({
|
|
2726
|
-
className,
|
|
2727
|
-
...props
|
|
2728
|
-
}) {
|
|
2729
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2730
|
-
"div",
|
|
2731
|
-
{
|
|
2732
|
-
"data-slot": "sidebar-group-content",
|
|
2733
|
-
"data-sidebar": "group-content",
|
|
2734
|
-
className: cn("w-full text-sm", className),
|
|
2735
|
-
...props
|
|
2736
|
-
}
|
|
2737
|
-
);
|
|
2738
|
-
}
|
|
2739
|
-
function SidebarMenu({ className, ...props }) {
|
|
2740
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2741
|
-
"ul",
|
|
2742
|
-
{
|
|
2743
|
-
"data-slot": "sidebar-menu",
|
|
2744
|
-
"data-sidebar": "menu",
|
|
2745
|
-
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
2746
|
-
...props
|
|
2747
|
-
}
|
|
2748
|
-
);
|
|
2749
|
-
}
|
|
2750
|
-
function SidebarMenuItem({ className, ...props }) {
|
|
2751
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2752
|
-
"li",
|
|
2753
|
-
{
|
|
2754
|
-
"data-slot": "sidebar-menu-item",
|
|
2755
|
-
"data-sidebar": "menu-item",
|
|
2756
|
-
className: cn("group/menu-item relative", className),
|
|
2757
|
-
...props
|
|
2758
|
-
}
|
|
2759
|
-
);
|
|
2760
|
-
}
|
|
2761
|
-
const sidebarMenuButtonVariants = classVarianceAuthority.cva(
|
|
2762
|
-
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-tertiary hover:text-sidebar-tertiary-foreground focus-visible:ring-2 active:bg-sidebar-tertiary active:text-sidebar-tertiary-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-tertiary data-[active=true]:font-medium data-[active=true]:text-sidebar-tertiary-foreground data-[state=open]:hover:bg-sidebar-tertiary data-[state=open]:hover:text-sidebar-tertiary-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2763
|
-
{
|
|
2764
|
-
variants: {
|
|
2765
|
-
variant: {
|
|
2766
|
-
default: "hover:bg-sidebar-tertiary hover:text-sidebar-tertiary-foreground",
|
|
2767
|
-
outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-tertiary hover:text-sidebar-tertiary-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-tertiary))]"
|
|
2768
|
-
},
|
|
2769
|
-
size: {
|
|
2770
|
-
default: "h-8 text-sm",
|
|
2771
|
-
sm: "h-7 text-xs",
|
|
2772
|
-
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
|
|
2773
|
-
}
|
|
2774
|
-
},
|
|
2775
|
-
defaultVariants: {
|
|
2776
|
-
variant: "default",
|
|
2777
|
-
size: "default"
|
|
2778
|
-
}
|
|
2779
|
-
}
|
|
2780
|
-
);
|
|
2781
|
-
function SidebarMenuButton({
|
|
2782
|
-
asChild = false,
|
|
2783
|
-
isActive = false,
|
|
2784
|
-
variant = "default",
|
|
2785
|
-
size = "default",
|
|
2786
|
-
tooltip,
|
|
2787
|
-
className,
|
|
2788
|
-
...props
|
|
2789
|
-
}) {
|
|
2790
|
-
const Comp = asChild ? reactSlot.Slot : "button";
|
|
2791
|
-
const { isMobile, state } = useSidebar();
|
|
2792
|
-
const button = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2793
|
-
Comp,
|
|
2794
|
-
{
|
|
2795
|
-
"data-slot": "sidebar-menu-button",
|
|
2796
|
-
"data-sidebar": "menu-button",
|
|
2797
|
-
"data-size": size,
|
|
2798
|
-
"data-active": isActive,
|
|
2799
|
-
className: cn(sidebarMenuButtonVariants({ variant, size }), className),
|
|
2800
|
-
...props
|
|
2801
|
-
}
|
|
2802
|
-
);
|
|
2803
|
-
if (!tooltip) {
|
|
2804
|
-
return button;
|
|
2805
|
-
}
|
|
2806
|
-
if (typeof tooltip === "string") {
|
|
2807
|
-
tooltip = {
|
|
2808
|
-
children: tooltip
|
|
2809
|
-
};
|
|
2810
|
-
}
|
|
2811
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
|
|
2812
|
-
/* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: button }),
|
|
2813
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2814
|
-
TooltipContent,
|
|
2815
|
-
{
|
|
2816
|
-
side: "right",
|
|
2817
|
-
align: "center",
|
|
2818
|
-
hidden: state !== "collapsed" || isMobile,
|
|
2819
|
-
...tooltip
|
|
2820
|
-
}
|
|
2821
|
-
)
|
|
2822
|
-
] });
|
|
2823
|
-
}
|
|
2824
|
-
function SidebarMenuAction({
|
|
2825
|
-
className,
|
|
2826
|
-
asChild = false,
|
|
2827
|
-
showOnHover = false,
|
|
2828
|
-
...props
|
|
2829
|
-
}) {
|
|
2830
|
-
const Comp = asChild ? reactSlot.Slot : "button";
|
|
2831
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2832
|
-
Comp,
|
|
2833
|
-
{
|
|
2834
|
-
"data-slot": "sidebar-menu-action",
|
|
2835
|
-
"data-sidebar": "menu-action",
|
|
2836
|
-
className: cn(
|
|
2837
|
-
"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-tertiary hover:text-sidebar-tertiary-foreground peer-hover/menu-button:text-sidebar-tertiary-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2838
|
-
// Increases the hit area of the button on mobile.
|
|
2839
|
-
"after:absolute after:-inset-2 md:after:hidden",
|
|
2840
|
-
"peer-data-[size=sm]/menu-button:top-1",
|
|
2841
|
-
"peer-data-[size=default]/menu-button:top-1.5",
|
|
2842
|
-
"peer-data-[size=lg]/menu-button:top-2.5",
|
|
2843
|
-
"group-data-[collapsible=icon]:hidden",
|
|
2844
|
-
showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-tertiary-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
|
|
2845
|
-
className
|
|
2846
|
-
),
|
|
2847
|
-
...props
|
|
2848
|
-
}
|
|
2849
|
-
);
|
|
2850
|
-
}
|
|
2851
|
-
function SidebarMenuBadge({
|
|
2852
|
-
className,
|
|
2853
|
-
...props
|
|
2854
|
-
}) {
|
|
2855
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2856
|
-
"div",
|
|
2857
|
-
{
|
|
2858
|
-
"data-slot": "sidebar-menu-badge",
|
|
2859
|
-
"data-sidebar": "menu-badge",
|
|
2860
|
-
className: cn(
|
|
2861
|
-
"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none",
|
|
2862
|
-
"peer-hover/menu-button:text-sidebar-tertiary-foreground peer-data-[active=true]/menu-button:text-sidebar-tertiary-foreground",
|
|
2863
|
-
"peer-data-[size=sm]/menu-button:top-1",
|
|
2864
|
-
"peer-data-[size=default]/menu-button:top-1.5",
|
|
2865
|
-
"peer-data-[size=lg]/menu-button:top-2.5",
|
|
2866
|
-
"group-data-[collapsible=icon]:hidden",
|
|
2867
|
-
className
|
|
2868
|
-
),
|
|
2869
|
-
...props
|
|
2870
|
-
}
|
|
2871
|
-
);
|
|
2872
|
-
}
|
|
2873
|
-
function SidebarMenuSkeleton({
|
|
2874
|
-
className,
|
|
2875
|
-
showIcon = false,
|
|
2876
|
-
...props
|
|
2877
|
-
}) {
|
|
2878
|
-
const widthRef = React__namespace.useState(
|
|
2879
|
-
() => `${Math.floor(Math.random() * 40) + 50}%`
|
|
2880
|
-
)[0];
|
|
2881
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2882
|
-
"div",
|
|
2883
|
-
{
|
|
2884
|
-
"data-slot": "sidebar-menu-skeleton",
|
|
2885
|
-
"data-sidebar": "menu-skeleton",
|
|
2886
|
-
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
2887
|
-
...props,
|
|
2888
|
-
children: [
|
|
2889
|
-
showIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2890
|
-
Skeleton,
|
|
2891
|
-
{
|
|
2892
|
-
className: "size-4 rounded-md",
|
|
2893
|
-
"data-sidebar": "menu-skeleton-icon"
|
|
2894
|
-
}
|
|
2895
|
-
),
|
|
2896
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2897
|
-
Skeleton,
|
|
2898
|
-
{
|
|
2899
|
-
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
2900
|
-
"data-sidebar": "menu-skeleton-text",
|
|
2901
|
-
style: {
|
|
2902
|
-
"--skeleton-width": widthRef
|
|
2903
|
-
}
|
|
2904
|
-
}
|
|
2905
|
-
)
|
|
2906
|
-
]
|
|
2907
|
-
}
|
|
2908
|
-
);
|
|
2909
|
-
}
|
|
2910
|
-
function SidebarMenuSub({ className, ...props }) {
|
|
2911
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2912
|
-
"ul",
|
|
2913
|
-
{
|
|
2914
|
-
"data-slot": "sidebar-menu-sub",
|
|
2915
|
-
"data-sidebar": "menu-sub",
|
|
2916
|
-
className: cn(
|
|
2917
|
-
"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5",
|
|
2918
|
-
"group-data-[collapsible=icon]:hidden",
|
|
2919
|
-
className
|
|
2920
|
-
),
|
|
2921
|
-
...props
|
|
2922
|
-
}
|
|
2923
|
-
);
|
|
2924
|
-
}
|
|
2925
|
-
function SidebarMenuSubItem({
|
|
2926
|
-
className,
|
|
2927
|
-
...props
|
|
2928
|
-
}) {
|
|
2929
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2930
|
-
"li",
|
|
2931
|
-
{
|
|
2932
|
-
"data-slot": "sidebar-menu-sub-item",
|
|
2933
|
-
"data-sidebar": "menu-sub-item",
|
|
2934
|
-
className: cn("group/menu-sub-item relative", className),
|
|
2935
|
-
...props
|
|
2936
|
-
}
|
|
2937
|
-
);
|
|
2938
|
-
}
|
|
2939
|
-
function SidebarMenuSubButton({
|
|
2940
|
-
asChild = false,
|
|
2941
|
-
size = "md",
|
|
2942
|
-
isActive = false,
|
|
2943
|
-
className,
|
|
2944
|
-
...props
|
|
2945
|
-
}) {
|
|
2946
|
-
const Comp = asChild ? reactSlot.Slot : "a";
|
|
2947
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2948
|
-
Comp,
|
|
2949
|
-
{
|
|
2950
|
-
"data-slot": "sidebar-menu-sub-button",
|
|
2951
|
-
"data-sidebar": "menu-sub-button",
|
|
2952
|
-
"data-size": size,
|
|
2953
|
-
"data-active": isActive,
|
|
2954
|
-
className: cn(
|
|
2955
|
-
"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-tertiary hover:text-sidebar-tertiary-foreground active:bg-sidebar-tertiary active:text-sidebar-tertiary-foreground [&>svg]:text-sidebar-tertiary-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2956
|
-
"data-[active=true]:bg-sidebar-tertiary data-[active=true]:text-sidebar-tertiary-foreground",
|
|
2957
|
-
size === "sm" && "text-xs",
|
|
2958
|
-
size === "md" && "text-sm",
|
|
2959
|
-
"group-data-[collapsible=icon]:hidden",
|
|
2960
|
-
className
|
|
2961
|
-
),
|
|
2962
|
-
...props
|
|
2963
|
-
}
|
|
2964
|
-
);
|
|
2965
|
-
}
|
|
2966
|
-
function Slider({
|
|
2967
|
-
className,
|
|
2968
|
-
defaultValue,
|
|
2969
|
-
value,
|
|
2970
|
-
min = 0,
|
|
2971
|
-
max = 100,
|
|
2972
|
-
...props
|
|
2973
|
-
}) {
|
|
2974
|
-
const _values = React__namespace.useMemo(
|
|
2975
|
-
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
2976
|
-
[value, defaultValue, min, max]
|
|
2977
|
-
);
|
|
2978
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2979
|
-
SliderPrimitive__namespace.Root,
|
|
2980
|
-
{
|
|
2981
|
-
"data-slot": "slider",
|
|
2982
|
-
defaultValue,
|
|
2983
|
-
value,
|
|
2984
|
-
min,
|
|
2985
|
-
max,
|
|
2986
|
-
className: cn(
|
|
2987
|
-
"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
|
|
2988
|
-
className
|
|
2989
|
-
),
|
|
2990
|
-
...props,
|
|
2991
|
-
children: [
|
|
2992
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2993
|
-
SliderPrimitive__namespace.Track,
|
|
2994
|
-
{
|
|
2995
|
-
"data-slot": "slider-track",
|
|
2996
|
-
className: cn(
|
|
2997
|
-
"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
|
|
2998
|
-
),
|
|
2999
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3000
|
-
SliderPrimitive__namespace.Range,
|
|
3001
|
-
{
|
|
3002
|
-
"data-slot": "slider-range",
|
|
3003
|
-
className: cn(
|
|
3004
|
-
"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
|
|
3005
|
-
)
|
|
3006
|
-
}
|
|
3007
|
-
)
|
|
3008
|
-
}
|
|
3009
|
-
),
|
|
3010
|
-
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3011
|
-
SliderPrimitive__namespace.Thumb,
|
|
3012
|
-
{
|
|
3013
|
-
"data-slot": "slider-thumb",
|
|
3014
|
-
className: "border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
|
|
3015
|
-
},
|
|
3016
|
-
index
|
|
3017
|
-
))
|
|
3018
|
-
]
|
|
3019
|
-
}
|
|
3020
|
-
);
|
|
3021
|
-
}
|
|
3022
|
-
const Toaster = ({ ...props }) => {
|
|
3023
|
-
const { theme = "system" } = nextThemes.useTheme();
|
|
3024
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3025
|
-
sonner.Toaster,
|
|
3026
|
-
{
|
|
3027
|
-
theme,
|
|
3028
|
-
className: "toaster group",
|
|
3029
|
-
icons: {
|
|
3030
|
-
success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheckIcon, { className: "size-4" }),
|
|
3031
|
-
info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InfoIcon, { className: "size-4" }),
|
|
3032
|
-
warning: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlertIcon, { className: "size-4" }),
|
|
3033
|
-
error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.OctagonXIcon, { className: "size-4" }),
|
|
3034
|
-
loading: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2Icon, { className: "size-4 animate-spin" })
|
|
3035
|
-
},
|
|
3036
|
-
style: {
|
|
3037
|
-
"--normal-bg": "var(--popover)",
|
|
3038
|
-
"--normal-text": "var(--popover-foreground)",
|
|
3039
|
-
"--normal-border": "var(--border)",
|
|
3040
|
-
"--border-radius": "var(--radius)"
|
|
3041
|
-
},
|
|
3042
|
-
toastOptions: {
|
|
3043
|
-
classNames: {
|
|
3044
|
-
description: "!text-popover-foreground"
|
|
3045
|
-
}
|
|
3046
|
-
},
|
|
3047
|
-
...props
|
|
3048
|
-
}
|
|
3049
|
-
);
|
|
3050
|
-
};
|
|
3051
|
-
const StepperContext = React__namespace.createContext(
|
|
3052
|
-
void 0
|
|
3053
|
-
);
|
|
3054
|
-
function useStepper() {
|
|
3055
|
-
const context = React__namespace.useContext(StepperContext);
|
|
3056
|
-
if (!context) {
|
|
3057
|
-
throw new Error("useStepper must be used within a Stepper");
|
|
3058
|
-
}
|
|
3059
|
-
return context;
|
|
3060
|
-
}
|
|
3061
|
-
function Stepper({
|
|
3062
|
-
children,
|
|
3063
|
-
initialStep = 0,
|
|
3064
|
-
totalSteps: totalStepsProp,
|
|
3065
|
-
onStepChange
|
|
3066
|
-
}) {
|
|
3067
|
-
const [currentStep, setCurrentStep] = React__namespace.useState(initialStep);
|
|
3068
|
-
const steps = React__namespace.Children.toArray(children);
|
|
3069
|
-
const totalSteps = totalStepsProp ?? steps.length;
|
|
3070
|
-
const nextStep = React__namespace.useCallback(() => {
|
|
3071
|
-
setCurrentStep((prev) => {
|
|
3072
|
-
const next = Math.min(prev + 1, totalSteps - 1);
|
|
3073
|
-
onStepChange?.(next);
|
|
3074
|
-
return next;
|
|
3075
|
-
});
|
|
3076
|
-
}, [totalSteps, onStepChange]);
|
|
3077
|
-
const previousStep = React__namespace.useCallback(() => {
|
|
3078
|
-
setCurrentStep((prev) => {
|
|
3079
|
-
const next = Math.max(prev - 1, 0);
|
|
3080
|
-
onStepChange?.(next);
|
|
3081
|
-
return next;
|
|
3082
|
-
});
|
|
3083
|
-
}, [onStepChange]);
|
|
3084
|
-
const goToStep = React__namespace.useCallback(
|
|
3085
|
-
(step) => {
|
|
3086
|
-
const validStep = Math.max(0, Math.min(step, totalSteps - 1));
|
|
3087
|
-
setCurrentStep(validStep);
|
|
3088
|
-
onStepChange?.(validStep);
|
|
3089
|
-
},
|
|
3090
|
-
[totalSteps, onStepChange]
|
|
3091
|
-
);
|
|
3092
|
-
React__namespace.useEffect(() => {
|
|
3093
|
-
if (initialStep !== currentStep) {
|
|
3094
|
-
setCurrentStep(initialStep);
|
|
3095
|
-
}
|
|
3096
|
-
}, [initialStep, currentStep]);
|
|
3097
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3098
|
-
StepperContext.Provider,
|
|
3099
|
-
{
|
|
3100
|
-
value: {
|
|
3101
|
-
currentStep,
|
|
3102
|
-
totalSteps,
|
|
3103
|
-
nextStep,
|
|
3104
|
-
previousStep,
|
|
3105
|
-
goToStep
|
|
3106
|
-
},
|
|
3107
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", children })
|
|
3108
|
-
}
|
|
3109
|
-
);
|
|
3110
|
-
}
|
|
3111
|
-
function StepperHeader({ steps, className }) {
|
|
3112
|
-
const { currentStep, previousStep, nextStep, totalSteps } = useStepper();
|
|
3113
|
-
const progressPercentage = (currentStep + 1) / totalSteps * 100;
|
|
3114
|
-
return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Progress", className: cn("mb-8", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 items-center", children: [
|
|
3115
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-10 w-full justify-center", children: [
|
|
3116
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3117
|
-
Button,
|
|
3118
|
-
{
|
|
3119
|
-
variant: "secondary",
|
|
3120
|
-
size: "sm",
|
|
3121
|
-
onClick: previousStep,
|
|
3122
|
-
disabled: currentStep === 0,
|
|
3123
|
-
className: "gap-1.5",
|
|
3124
|
-
children: [
|
|
3125
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-3.5 w-3.5" }),
|
|
3126
|
-
"Previous"
|
|
3127
|
-
]
|
|
3128
|
-
}
|
|
3129
|
-
),
|
|
3130
|
-
/* @__PURE__ */ jsxRuntime.jsx(Progress, { value: progressPercentage, className: "w-105" }),
|
|
3131
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3132
|
-
Button,
|
|
3133
|
-
{
|
|
3134
|
-
variant: "secondary",
|
|
3135
|
-
size: "sm",
|
|
3136
|
-
onClick: nextStep,
|
|
3137
|
-
disabled: currentStep === totalSteps - 1,
|
|
3138
|
-
className: "gap-1.5",
|
|
3139
|
-
children: [
|
|
3140
|
-
"Next",
|
|
3141
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-3.5 w-3.5" })
|
|
3142
|
-
]
|
|
3143
|
-
}
|
|
3144
|
-
)
|
|
3145
|
-
] }),
|
|
3146
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center justify-center gap-5", children: [
|
|
3147
|
-
steps.map((_, index) => {
|
|
3148
|
-
if (index === 0) return null;
|
|
3149
|
-
const isComplete = index <= currentStep;
|
|
3150
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3151
|
-
"div",
|
|
3152
|
-
{
|
|
3153
|
-
className: cn(
|
|
3154
|
-
"absolute h-px w-[133px]",
|
|
3155
|
-
"top-2",
|
|
3156
|
-
isComplete ? "bg-slate-700" : "bg-border"
|
|
3157
|
-
),
|
|
3158
|
-
style: {
|
|
3159
|
-
left: `calc(${(index - 1) * 25}% + ${56 + (index - 1) * 20}px)`
|
|
3160
|
-
}
|
|
3161
|
-
},
|
|
3162
|
-
`connector-${index}`
|
|
3163
|
-
);
|
|
3164
|
-
}),
|
|
3165
|
-
steps.map((step, index) => {
|
|
3166
|
-
const isComplete = index < currentStep;
|
|
3167
|
-
const isCurrent = index === currentStep;
|
|
3168
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3169
|
-
"div",
|
|
3170
|
-
{
|
|
3171
|
-
className: "flex flex-col items-center gap-1 w-28 relative z-10",
|
|
3172
|
-
children: [
|
|
3173
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3174
|
-
"button",
|
|
3175
|
-
{
|
|
3176
|
-
onClick: () => {
|
|
3177
|
-
},
|
|
3178
|
-
className: cn(
|
|
3179
|
-
"flex items-center justify-center w-4 h-4 rounded-full text-white text-[11px] font-semibold transition-colors",
|
|
3180
|
-
isComplete && "bg-[#36a769]",
|
|
3181
|
-
isCurrent && "bg-[#c9a224]",
|
|
3182
|
-
!isComplete && !isCurrent && "bg-[#999]"
|
|
3183
|
-
),
|
|
3184
|
-
children: index + 1
|
|
3185
|
-
}
|
|
3186
|
-
),
|
|
3187
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground text-center leading-tight", children: step.label })
|
|
3188
|
-
]
|
|
3189
|
-
},
|
|
3190
|
-
step.label
|
|
3191
|
-
);
|
|
3192
|
-
})
|
|
3193
|
-
] })
|
|
3194
|
-
] }) });
|
|
3195
|
-
}
|
|
3196
|
-
function StepperContent({ children, className }) {
|
|
3197
|
-
const { currentStep } = useStepper();
|
|
3198
|
-
const steps = React__namespace.Children.toArray(children);
|
|
3199
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("py-4", className), children: steps[currentStep] || null });
|
|
3200
|
-
}
|
|
3201
|
-
function StepperFooter({
|
|
3202
|
-
children,
|
|
3203
|
-
className,
|
|
3204
|
-
showDefaultButtons = true,
|
|
3205
|
-
nextLabel = "Next",
|
|
3206
|
-
previousLabel = "Previous",
|
|
3207
|
-
finishLabel = "Finish",
|
|
3208
|
-
onFinish
|
|
3209
|
-
}) {
|
|
3210
|
-
const { currentStep, totalSteps, nextStep, previousStep } = useStepper();
|
|
3211
|
-
const isFirstStep = currentStep === 0;
|
|
3212
|
-
const isLastStep = currentStep === totalSteps - 1;
|
|
3213
|
-
if (children) {
|
|
3214
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-between", className), children });
|
|
3215
|
-
}
|
|
3216
|
-
if (!showDefaultButtons) return null;
|
|
3217
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-8 flex justify-between", className), children: [
|
|
3218
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: previousStep, disabled: isFirstStep, children: previousLabel }),
|
|
3219
|
-
isLastStep ? /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onFinish, children: finishLabel }) : /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: nextStep, children: nextLabel })
|
|
3220
|
-
] });
|
|
3221
|
-
}
|
|
3222
|
-
function Switch({
|
|
3223
|
-
className,
|
|
3224
|
-
...props
|
|
3225
|
-
}) {
|
|
3226
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3227
|
-
SwitchPrimitive__namespace.Root,
|
|
3228
|
-
{
|
|
3229
|
-
"data-slot": "switch",
|
|
3230
|
-
className: cn(
|
|
3231
|
-
"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
|
|
3232
|
-
className
|
|
3233
|
-
),
|
|
3234
|
-
...props,
|
|
3235
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3236
|
-
SwitchPrimitive__namespace.Thumb,
|
|
3237
|
-
{
|
|
3238
|
-
"data-slot": "switch-thumb",
|
|
3239
|
-
className: cn(
|
|
3240
|
-
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
|
|
3241
|
-
)
|
|
3242
|
-
}
|
|
3243
|
-
)
|
|
3244
|
-
}
|
|
3245
|
-
);
|
|
3246
|
-
}
|
|
3247
|
-
function Table({ className, ...props }) {
|
|
3248
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3249
|
-
"div",
|
|
3250
|
-
{
|
|
3251
|
-
"data-slot": "table-container",
|
|
3252
|
-
className: "relative w-full overflow-x-auto",
|
|
3253
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3254
|
-
"table",
|
|
3255
|
-
{
|
|
3256
|
-
"data-slot": "table",
|
|
3257
|
-
className: cn("w-full caption-bottom text-sm", className),
|
|
3258
|
-
...props
|
|
3259
|
-
}
|
|
3260
|
-
)
|
|
3261
|
-
}
|
|
3262
|
-
);
|
|
3263
|
-
}
|
|
3264
|
-
function TableHeader({ className, ...props }) {
|
|
3265
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3266
|
-
"thead",
|
|
3267
|
-
{
|
|
3268
|
-
"data-slot": "table-header",
|
|
3269
|
-
className: cn("[&_tr]:border-b", className),
|
|
3270
|
-
...props
|
|
3271
|
-
}
|
|
3272
|
-
);
|
|
3273
|
-
}
|
|
3274
|
-
function TableBody({ className, ...props }) {
|
|
3275
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3276
|
-
"tbody",
|
|
3277
|
-
{
|
|
3278
|
-
"data-slot": "table-body",
|
|
3279
|
-
className: cn("[&_tr:last-child]:border-0", className),
|
|
3280
|
-
...props
|
|
3281
|
-
}
|
|
3282
|
-
);
|
|
3283
|
-
}
|
|
3284
|
-
function TableFooter({ className, ...props }) {
|
|
3285
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3286
|
-
"tfoot",
|
|
3287
|
-
{
|
|
3288
|
-
"data-slot": "table-footer",
|
|
3289
|
-
className: cn(
|
|
3290
|
-
"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",
|
|
3291
|
-
className
|
|
3292
|
-
),
|
|
3293
|
-
...props
|
|
3294
|
-
}
|
|
3295
|
-
);
|
|
3296
|
-
}
|
|
3297
|
-
function TableRow({ className, ...props }) {
|
|
3298
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3299
|
-
"tr",
|
|
3300
|
-
{
|
|
3301
|
-
"data-slot": "table-row",
|
|
3302
|
-
className: cn(
|
|
3303
|
-
"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
|
|
3304
|
-
className
|
|
3305
|
-
),
|
|
3306
|
-
...props
|
|
3307
|
-
}
|
|
3308
|
-
);
|
|
3309
|
-
}
|
|
3310
|
-
function TableHead({ className, ...props }) {
|
|
3311
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3312
|
-
"th",
|
|
3313
|
-
{
|
|
3314
|
-
"data-slot": "table-head",
|
|
3315
|
-
className: cn(
|
|
3316
|
-
"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
|
|
3317
|
-
className
|
|
3318
|
-
),
|
|
3319
|
-
...props
|
|
3320
|
-
}
|
|
3321
|
-
);
|
|
3322
|
-
}
|
|
3323
|
-
function TableCell({ className, ...props }) {
|
|
3324
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3325
|
-
"td",
|
|
3326
|
-
{
|
|
3327
|
-
"data-slot": "table-cell",
|
|
3328
|
-
className: cn(
|
|
3329
|
-
"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
|
|
3330
|
-
className
|
|
3331
|
-
),
|
|
3332
|
-
...props
|
|
3333
|
-
}
|
|
3334
|
-
);
|
|
3335
|
-
}
|
|
3336
|
-
function TableCaption({
|
|
3337
|
-
className,
|
|
3338
|
-
...props
|
|
3339
|
-
}) {
|
|
3340
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3341
|
-
"caption",
|
|
3342
|
-
{
|
|
3343
|
-
"data-slot": "table-caption",
|
|
3344
|
-
className: cn("text-muted-foreground mt-4 text-sm", className),
|
|
3345
|
-
...props
|
|
3346
|
-
}
|
|
3347
|
-
);
|
|
3348
|
-
}
|
|
3349
|
-
function Tabs({
|
|
3350
|
-
className,
|
|
3351
|
-
...props
|
|
3352
|
-
}) {
|
|
3353
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3354
|
-
TabsPrimitive__namespace.Root,
|
|
3355
|
-
{
|
|
3356
|
-
"data-slot": "tabs",
|
|
3357
|
-
className: cn("flex flex-col gap-2", className),
|
|
3358
|
-
...props
|
|
3359
|
-
}
|
|
3360
|
-
);
|
|
3361
|
-
}
|
|
3362
|
-
function TabsList({
|
|
3363
|
-
className,
|
|
3364
|
-
...props
|
|
3365
|
-
}) {
|
|
3366
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3367
|
-
TabsPrimitive__namespace.List,
|
|
3368
|
-
{
|
|
3369
|
-
"data-slot": "tabs-list",
|
|
3370
|
-
className: cn(
|
|
3371
|
-
"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
|
|
3372
|
-
className
|
|
3373
|
-
),
|
|
3374
|
-
...props
|
|
3375
|
-
}
|
|
3376
|
-
);
|
|
3377
|
-
}
|
|
3378
|
-
function TabsTrigger({
|
|
3379
|
-
className,
|
|
3380
|
-
...props
|
|
3381
|
-
}) {
|
|
3382
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3383
|
-
TabsPrimitive__namespace.Trigger,
|
|
3384
|
-
{
|
|
3385
|
-
"data-slot": "tabs-trigger",
|
|
3386
|
-
className: cn(
|
|
3387
|
-
"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3388
|
-
className
|
|
3389
|
-
),
|
|
3390
|
-
...props
|
|
3391
|
-
}
|
|
3392
|
-
);
|
|
3393
|
-
}
|
|
3394
|
-
function TabsContent({
|
|
3395
|
-
className,
|
|
3396
|
-
...props
|
|
3397
|
-
}) {
|
|
3398
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3399
|
-
TabsPrimitive__namespace.Content,
|
|
3400
|
-
{
|
|
3401
|
-
"data-slot": "tabs-content",
|
|
3402
|
-
className: cn("flex-1 outline-none", className),
|
|
3403
|
-
...props
|
|
3404
|
-
}
|
|
3405
|
-
);
|
|
3406
|
-
}
|
|
3407
|
-
function Textarea({ className, ...props }) {
|
|
3408
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3409
|
-
"textarea",
|
|
3410
|
-
{
|
|
3411
|
-
"data-slot": "textarea",
|
|
3412
|
-
className: cn(
|
|
3413
|
-
"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
3414
|
-
className
|
|
3415
|
-
),
|
|
3416
|
-
...props
|
|
3417
|
-
}
|
|
3418
|
-
);
|
|
3419
|
-
}
|
|
3420
|
-
const toggleVariants = classVarianceAuthority.cva(
|
|
3421
|
-
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-tertiary data-[state=on]:text-tertiary-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error whitespace-nowrap",
|
|
3422
|
-
{
|
|
3423
|
-
variants: {
|
|
3424
|
-
variant: {
|
|
3425
|
-
default: "bg-transparent",
|
|
3426
|
-
outline: "border border-input bg-transparent shadow-xs hover:bg-tertiary hover:text-tertiary-foreground"
|
|
3427
|
-
},
|
|
3428
|
-
size: {
|
|
3429
|
-
default: "h-9 px-2 min-w-9",
|
|
3430
|
-
sm: "h-8 px-1.5 min-w-8",
|
|
3431
|
-
lg: "h-10 px-2.5 min-w-10"
|
|
3432
|
-
}
|
|
3433
|
-
},
|
|
3434
|
-
defaultVariants: {
|
|
3435
|
-
variant: "default",
|
|
3436
|
-
size: "default"
|
|
3437
|
-
}
|
|
3438
|
-
}
|
|
3439
|
-
);
|
|
3440
|
-
function Toggle({
|
|
3441
|
-
className,
|
|
3442
|
-
variant,
|
|
3443
|
-
size,
|
|
3444
|
-
...props
|
|
3445
|
-
}) {
|
|
3446
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3447
|
-
TogglePrimitive__namespace.Root,
|
|
3448
|
-
{
|
|
3449
|
-
"data-slot": "toggle",
|
|
3450
|
-
className: cn(toggleVariants({ variant, size, className })),
|
|
3451
|
-
...props
|
|
3452
|
-
}
|
|
3453
|
-
);
|
|
3454
|
-
}
|
|
3455
|
-
const ToggleGroupContext = React__namespace.createContext({
|
|
3456
|
-
size: "default",
|
|
3457
|
-
variant: "default",
|
|
3458
|
-
spacing: 0
|
|
3459
|
-
});
|
|
3460
|
-
function ToggleGroup({
|
|
3461
|
-
className,
|
|
3462
|
-
variant,
|
|
3463
|
-
size,
|
|
3464
|
-
spacing = 0,
|
|
3465
|
-
children,
|
|
3466
|
-
...props
|
|
3467
|
-
}) {
|
|
3468
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3469
|
-
ToggleGroupPrimitive__namespace.Root,
|
|
3470
|
-
{
|
|
3471
|
-
"data-slot": "toggle-group",
|
|
3472
|
-
"data-variant": variant,
|
|
3473
|
-
"data-size": size,
|
|
3474
|
-
"data-spacing": spacing,
|
|
3475
|
-
style: { "--gap": spacing },
|
|
3476
|
-
className: cn(
|
|
3477
|
-
"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs",
|
|
3478
|
-
className
|
|
3479
|
-
),
|
|
3480
|
-
...props,
|
|
3481
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
|
|
3482
|
-
}
|
|
3483
|
-
);
|
|
3484
|
-
}
|
|
3485
|
-
function ToggleGroupItem({
|
|
3486
|
-
className,
|
|
3487
|
-
children,
|
|
3488
|
-
variant,
|
|
3489
|
-
size,
|
|
3490
|
-
...props
|
|
3491
|
-
}) {
|
|
3492
|
-
const context = React__namespace.useContext(ToggleGroupContext);
|
|
3493
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3494
|
-
ToggleGroupPrimitive__namespace.Item,
|
|
3495
|
-
{
|
|
3496
|
-
"data-slot": "toggle-group-item",
|
|
3497
|
-
"data-variant": context.variant || variant,
|
|
3498
|
-
"data-size": context.size || size,
|
|
3499
|
-
"data-spacing": context.spacing,
|
|
3500
|
-
className: cn(
|
|
3501
|
-
toggleVariants({
|
|
3502
|
-
variant: context.variant || variant,
|
|
3503
|
-
size: context.size || size
|
|
3504
|
-
}),
|
|
3505
|
-
"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10",
|
|
3506
|
-
"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l",
|
|
3507
|
-
className
|
|
3508
|
-
),
|
|
3509
|
-
...props,
|
|
3510
|
-
children
|
|
3511
|
-
}
|
|
3512
|
-
);
|
|
3513
|
-
}
|
|
3514
|
-
function Panel({ className, ...props }) {
|
|
3515
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3516
|
-
"div",
|
|
3517
|
-
{
|
|
3518
|
-
"data-slot": "panel",
|
|
3519
|
-
className: cn(
|
|
3520
|
-
"bg-panel text-foreground rounded-xl border p-6 shadow-sm",
|
|
3521
|
-
className
|
|
3522
|
-
),
|
|
3523
|
-
...props
|
|
3524
|
-
}
|
|
3525
|
-
);
|
|
3526
|
-
}
|
|
3527
|
-
function PanelHeader({ className, ...props }) {
|
|
3528
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3529
|
-
"div",
|
|
3530
|
-
{
|
|
3531
|
-
"data-slot": "panel-header",
|
|
3532
|
-
className: cn(
|
|
3533
|
-
"@container/panel-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 has-data-[slot=panel-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
3534
|
-
className
|
|
3535
|
-
),
|
|
3536
|
-
...props
|
|
3537
|
-
}
|
|
3538
|
-
);
|
|
3539
|
-
}
|
|
3540
|
-
function PanelTitle({ className, ...props }) {
|
|
3541
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3542
|
-
"div",
|
|
3543
|
-
{
|
|
3544
|
-
"data-slot": "panel-title",
|
|
3545
|
-
className: cn("text-xl leading-none font-semibold", className),
|
|
3546
|
-
...props
|
|
3547
|
-
}
|
|
3548
|
-
);
|
|
3549
|
-
}
|
|
3550
|
-
function PanelDescription({
|
|
3551
|
-
className,
|
|
3552
|
-
...props
|
|
3553
|
-
}) {
|
|
3554
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3555
|
-
"div",
|
|
3556
|
-
{
|
|
3557
|
-
"data-slot": "panel-description",
|
|
3558
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
3559
|
-
...props
|
|
3560
|
-
}
|
|
3561
|
-
);
|
|
3562
|
-
}
|
|
3563
|
-
function PanelContent({ className, ...props }) {
|
|
3564
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3565
|
-
"div",
|
|
3566
|
-
{
|
|
3567
|
-
"data-slot": "panel-content",
|
|
3568
|
-
className: cn("pt-6 text-base", className),
|
|
3569
|
-
...props
|
|
3570
|
-
}
|
|
3571
|
-
);
|
|
3572
|
-
}
|
|
3573
|
-
function PanelFooter({ className, ...props }) {
|
|
3574
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3575
|
-
"div",
|
|
3576
|
-
{
|
|
3577
|
-
"data-slot": "panel-footer",
|
|
3578
|
-
className: cn("flex items-center pt-6", className),
|
|
3579
|
-
...props
|
|
3580
|
-
}
|
|
3581
|
-
);
|
|
3582
|
-
}
|
|
3583
|
-
const H1 = React__namespace.forwardRef(function H12({ className, ...props }, ref) {
|
|
3584
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3585
|
-
"h1",
|
|
3586
|
-
{
|
|
3587
|
-
ref,
|
|
3588
|
-
className: cn("text-4xl font-bold tracking-tight", className),
|
|
3589
|
-
...props
|
|
3590
|
-
}
|
|
3591
|
-
);
|
|
3592
|
-
});
|
|
3593
|
-
const H2 = React__namespace.forwardRef(function H22({ className, ...props }, ref) {
|
|
3594
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3595
|
-
"h2",
|
|
3596
|
-
{
|
|
3597
|
-
ref,
|
|
3598
|
-
className: cn("text-3xl font-semibold tracking-tight", className),
|
|
3599
|
-
...props
|
|
3600
|
-
}
|
|
3601
|
-
);
|
|
3602
|
-
});
|
|
3603
|
-
function H3({
|
|
3604
|
-
className,
|
|
3605
|
-
...props
|
|
3606
|
-
}) {
|
|
3607
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3608
|
-
"h3",
|
|
3609
|
-
{
|
|
3610
|
-
className: cn("text-2xl font-semibold tracking-tight", className),
|
|
3611
|
-
...props
|
|
3612
|
-
}
|
|
3613
|
-
);
|
|
3614
|
-
}
|
|
3615
|
-
function H4({
|
|
3616
|
-
className,
|
|
3617
|
-
...props
|
|
3618
|
-
}) {
|
|
3619
|
-
return /* @__PURE__ */ jsxRuntime.jsx("h4", { className: cn("text-xl font-semibold", className), ...props });
|
|
3620
|
-
}
|
|
3621
|
-
function P({
|
|
3622
|
-
className,
|
|
3623
|
-
...props
|
|
3624
|
-
}) {
|
|
3625
|
-
return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-base leading-7", className), ...props });
|
|
3626
|
-
}
|
|
3627
|
-
function Lead({
|
|
3628
|
-
className,
|
|
3629
|
-
...props
|
|
3630
|
-
}) {
|
|
3631
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3632
|
-
"p",
|
|
3633
|
-
{
|
|
3634
|
-
className: cn("text-lg leading-8 text-muted-foreground", className),
|
|
3635
|
-
...props
|
|
3636
|
-
}
|
|
3637
|
-
);
|
|
3638
|
-
}
|
|
3639
|
-
function Strong({
|
|
3640
|
-
className,
|
|
3641
|
-
...props
|
|
3642
|
-
}) {
|
|
3643
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3644
|
-
"p",
|
|
3645
|
-
{
|
|
3646
|
-
className: cn("text-base font-semibold leading-7", className),
|
|
3647
|
-
...props
|
|
3648
|
-
}
|
|
3649
|
-
);
|
|
3650
|
-
}
|
|
3651
|
-
function Small({
|
|
3652
|
-
className,
|
|
3653
|
-
...props
|
|
3654
|
-
}) {
|
|
3655
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3656
|
-
"p",
|
|
3657
|
-
{
|
|
3658
|
-
className: cn("text-sm text-muted-foreground leading-6", className),
|
|
3659
|
-
...props
|
|
3660
|
-
}
|
|
3661
|
-
);
|
|
3662
|
-
}
|
|
3663
|
-
function Muted({
|
|
3664
|
-
className,
|
|
3665
|
-
...props
|
|
3666
|
-
}) {
|
|
3667
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3668
|
-
"p",
|
|
3669
|
-
{
|
|
3670
|
-
className: cn("text-xs text-muted-foreground leading-5", className),
|
|
3671
|
-
...props
|
|
3672
|
-
}
|
|
3673
|
-
);
|
|
3674
|
-
}
|
|
3675
|
-
function Code({
|
|
3676
|
-
className,
|
|
3677
|
-
...props
|
|
3678
|
-
}) {
|
|
3679
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3680
|
-
"code",
|
|
3681
|
-
{
|
|
3682
|
-
className: cn("text-sm font-mono bg-muted px-2 py-1 rounded", className),
|
|
3683
|
-
...props
|
|
3684
|
-
}
|
|
3685
|
-
);
|
|
3686
|
-
}
|
|
3687
|
-
function Link({
|
|
3688
|
-
className,
|
|
3689
|
-
...props
|
|
3690
|
-
}) {
|
|
3691
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3692
|
-
"a",
|
|
3693
|
-
{
|
|
3694
|
-
className: cn("text-primary underline hover:no-underline", className),
|
|
3695
|
-
...props
|
|
3696
|
-
}
|
|
3697
|
-
);
|
|
3698
|
-
}
|
|
3699
|
-
function Blockquote({
|
|
3700
|
-
className,
|
|
3701
|
-
...props
|
|
3702
|
-
}) {
|
|
3703
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3704
|
-
"blockquote",
|
|
3705
|
-
{
|
|
3706
|
-
className: cn("border-l-4 border-primary pl-4 italic", className),
|
|
3707
|
-
...props
|
|
3708
|
-
}
|
|
3709
|
-
);
|
|
3710
|
-
}
|
|
3711
|
-
function List({
|
|
3712
|
-
className,
|
|
3713
|
-
...props
|
|
3714
|
-
}) {
|
|
3715
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3716
|
-
"ul",
|
|
3717
|
-
{
|
|
3718
|
-
className: cn("list-disc list-inside space-y-2", className),
|
|
3719
|
-
...props
|
|
3720
|
-
}
|
|
3721
|
-
);
|
|
3722
|
-
}
|
|
3723
|
-
function OrderedList({
|
|
3724
|
-
className,
|
|
3725
|
-
...props
|
|
3726
|
-
}) {
|
|
3727
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3728
|
-
"ol",
|
|
3729
|
-
{
|
|
3730
|
-
className: cn("list-decimal list-inside space-y-2", className),
|
|
3731
|
-
...props
|
|
3732
|
-
}
|
|
3733
|
-
);
|
|
3734
|
-
}
|
|
3735
|
-
const ContentContainer = React__namespace.forwardRef(({ className, children, ...props }, ref) => {
|
|
3736
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("space-y-8 py-8 px-4", className), ...props, children });
|
|
3737
|
-
});
|
|
3738
|
-
ContentContainer.displayName = "Content";
|
|
3739
|
-
const ContentHeading = React__namespace.forwardRef(({ className, children, ...props }, ref) => {
|
|
3740
|
-
return /* @__PURE__ */ jsxRuntime.jsx(H1, { ref, className, ...props, children });
|
|
3741
|
-
});
|
|
3742
|
-
ContentHeading.displayName = "Content.Heading";
|
|
3743
|
-
const ContentSubheading = React__namespace.forwardRef(({ className, children, ...props }, ref) => {
|
|
3744
|
-
return /* @__PURE__ */ jsxRuntime.jsx(H2, { ref, className, ...props, children });
|
|
3745
|
-
});
|
|
3746
|
-
ContentSubheading.displayName = "Content.Subheading";
|
|
3747
|
-
const ContentBody = React__namespace.forwardRef(({ className, children, ...props }, ref) => {
|
|
3748
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("space-y-4", className), ...props, children });
|
|
3749
|
-
});
|
|
3750
|
-
ContentBody.displayName = "Content.Body";
|
|
3751
|
-
const Content = Object.assign(ContentContainer, {
|
|
3752
|
-
Heading: ContentHeading,
|
|
3753
|
-
Subheading: ContentSubheading,
|
|
3754
|
-
Body: ContentBody
|
|
3755
|
-
});
|
|
3756
|
-
function ContentExample() {
|
|
3757
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Content, { children: [
|
|
3758
|
-
/* @__PURE__ */ jsxRuntime.jsx(Content.Heading, { children: "Welcome to Our Platform" }),
|
|
3759
|
-
/* @__PURE__ */ jsxRuntime.jsx(Content.Subheading, { children: "Getting Started" }),
|
|
3760
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Content.Body, { children: [
|
|
3761
|
-
/* @__PURE__ */ jsxRuntime.jsx(P, { children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." }),
|
|
3762
|
-
/* @__PURE__ */ jsxRuntime.jsx(P, { children: "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." })
|
|
3763
|
-
] }),
|
|
3764
|
-
/* @__PURE__ */ jsxRuntime.jsx(Content.Subheading, { children: "Features Overview" }),
|
|
3765
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Content.Body, { children: [
|
|
3766
|
-
/* @__PURE__ */ jsxRuntime.jsx(P, { children: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." }),
|
|
3767
|
-
/* @__PURE__ */ jsxRuntime.jsx(P, { children: "Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt." })
|
|
3768
|
-
] })
|
|
3769
|
-
] });
|
|
3770
|
-
}
|
|
3771
|
-
const eInfraLogoDefault = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACPEAAAUeCAYAAAAVIja8AAAACXBIWXMAAAsSAAALEgHS3X78AAAgAElEQVR4nOzdz3HbWLrG4TNTs29nYC2xM24EVgajLVZWR2BNBC1HMOoIWlpxeeUMqAguuONSzkCKwFOYPryX12N36w/AFySfpwqlarfLBg/AlX/1fX/5+vVrAQAAAAAAAAAAcv7q7AEAAAAAAAAAIEvEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAAAAAAgDARDwAAAAAAAAAAhIl4AAAAAAAAAAAgTMQDAAAAAAAAAABhIh4AAAAAAAAAAAgT8QAAAAAAAAAAQJiIBwAAAAAAAAAAwkQ8AAAAAAAAAAAQJuIBAAAAAAAAAIAwEQ8AAAAAAAAAAISJeAAAAAAAAAAAIEzEAwAAAAAAAAAAYSIeAAAAAAAAAAAIE/EAAAAAAAAAAECYiAcAAAAAAAAAAMJEPAAAAAAAAAAAECbiAQAAAAAAAACAMBEPAAAAAAAAAACEiXgAAAAAAAAAACBMxAMAAAAAAAAAAGEiHgAAAAAAAAAACBPxAAAAAAAAAABAmIgHAAAAAAAAAADCRDwAAAAAAAAAABAm4gEAAAAA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gJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQEziAQAAAAAAAACAmMQDAAAAAAAAAAAxiQcAAAAAAAAAAGISDwAAAAAAAAAAxCQeAAAAAAAAAACISTwAAAAAAAAAABCTeAAAAAAAAAAAICbxAAAAAAAAAABATOIBAAAAAAAAAICYxAMAAAAAAAAAADGJBwAAAAAAAAAAYhIPAAAAAAAAAADEJB4AAAAAAAAAAIhJPAAAAAAAAAAAEJN4AAAAAAAAAAAgJvEAAAAAAAAAAEBM4gEAAAAAAAAAgJjEAwAAAAAAAAAAMYkHAAAAAAAAAABiEg8AAAAAAAAAAMQkHgAAAAAAAAAAiEk8AAAAAAAAAAAQk3gAAAAAAAAAACAm8QAAAAAAAAAAQGnbAZodrzfBqpZpAAAAAElFTkSuQmCC";
|
|
3772
|
-
function resolveLogoSrc$1(logo) {
|
|
3773
|
-
return typeof logo === "string" ? logo : logo.src;
|
|
3774
|
-
}
|
|
3775
|
-
function Header({
|
|
3776
|
-
children,
|
|
3777
|
-
className,
|
|
3778
|
-
variant = "navigation",
|
|
3779
|
-
navigationItems = [],
|
|
3780
|
-
logo = eInfraLogoDefault,
|
|
3781
|
-
logoAlt = "e-INFRA Logo"
|
|
3782
|
-
}) {
|
|
3783
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3784
|
-
"header",
|
|
3785
|
-
{
|
|
3786
|
-
className: cn(
|
|
3787
|
-
"sticky top-0 z-50 w-full bg-background/95 shadow-lg shadow-secondary/20 backdrop-blur supports-backdrop-filter:bg-background/60",
|
|
3788
|
-
className
|
|
3789
|
-
),
|
|
3790
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3791
|
-
"div",
|
|
3792
|
-
{
|
|
3793
|
-
className: cn(
|
|
3794
|
-
"flex h-16 items-center justify-between px-4 mx-auto",
|
|
3795
|
-
variant === "navigation" && "container"
|
|
3796
|
-
),
|
|
3797
|
-
children: [
|
|
3798
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
3799
|
-
variant === "sidebar" && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelRight, {}),
|
|
3800
|
-
/* @__PURE__ */ jsxRuntime.jsx("a", { href: "/", className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3801
|
-
"img",
|
|
3802
|
-
{
|
|
3803
|
-
src: resolveLogoSrc$1(logo),
|
|
3804
|
-
alt: logoAlt,
|
|
3805
|
-
className: "h-20 w-auto"
|
|
3806
|
-
}
|
|
3807
|
-
) }),
|
|
3808
|
-
variant === "navigation" && navigationItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenu, { children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { children: navigationItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuLink, { href: item.href, children: item.label }) }, item.href)) }) }) })
|
|
3809
|
-
] }),
|
|
3810
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children })
|
|
3811
|
-
]
|
|
3812
|
-
}
|
|
3813
|
-
)
|
|
3814
|
-
}
|
|
3815
|
-
);
|
|
3816
|
-
}
|
|
3817
|
-
const Version = Date.now();
|
|
3818
|
-
function resolveLogoSrc(logo) {
|
|
3819
|
-
return typeof logo === "string" ? logo : logo.src;
|
|
3820
|
-
}
|
|
3821
|
-
const RedirectListItem = ({ href, text }) => {
|
|
3822
|
-
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href, className: "text-fd-primary flex items-center gap-2", children: [
|
|
3823
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoveRight, { className: "pt-[3px]" }),
|
|
3824
|
-
text
|
|
3825
|
-
] }) });
|
|
3826
|
-
};
|
|
3827
|
-
const Footer = ({
|
|
3828
|
-
logo = eInfraLogoDefault,
|
|
3829
|
-
logoAlt = "e-INFRA CZ Logo"
|
|
3830
|
-
}) => {
|
|
3831
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("footer", { className: "flex flex-col mt-0 items-center px-5 bg-gray-100 border-t border-gray-300 pb-5", children: [
|
|
3832
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col md:flex-row justify-between items-center md:items-start max-w-[1100px] w-full mx-auto", children: [
|
|
3833
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 px-6 mt-8 flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center md:text-left", children: [
|
|
3834
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold mb-3", children: "e-INFRA CZ" }),
|
|
3835
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { children: /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-fd-muted-foreground", children: [
|
|
3836
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: "CERIT-SC" }),
|
|
3837
|
-
",",
|
|
3838
|
-
" ",
|
|
3839
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: "CESNET" }),
|
|
3840
|
-
", and",
|
|
3841
|
-
" ",
|
|
3842
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: "IT4Innovations" }),
|
|
3843
|
-
" are the three",
|
|
3844
|
-
" ",
|
|
3845
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: "e-infrastructures" }),
|
|
3846
|
-
" ",
|
|
3847
|
-
"that constitute the national",
|
|
3848
|
-
" ",
|
|
3849
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: "e-INFRA CZ" }),
|
|
3850
|
-
" research infrastructure."
|
|
3851
|
-
] }) }) })
|
|
3852
|
-
] }) }),
|
|
3853
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden md:block w-px bg-gray-300 self-stretch my-8" }),
|
|
3854
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 px-6 mt-8 flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center md:text-left", children: [
|
|
3855
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold mb-2", children: "General information" }),
|
|
3856
|
-
/* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "inline-flex flex-col items-center md:items-start", children: [
|
|
3857
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3858
|
-
RedirectListItem,
|
|
3859
|
-
{
|
|
3860
|
-
href: "https://blog.e-infra.cz/",
|
|
3861
|
-
text: "e-INFRA CZ Blog"
|
|
3862
|
-
}
|
|
3863
|
-
),
|
|
3864
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3865
|
-
RedirectListItem,
|
|
3866
|
-
{
|
|
3867
|
-
href: "https://e-infra.cz/",
|
|
3868
|
-
text: "e-INFRA CZ Website"
|
|
3869
|
-
}
|
|
3870
|
-
)
|
|
3871
|
-
] })
|
|
3872
|
-
] }) }),
|
|
3873
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden md:block w-px bg-gray-300 self-stretch my-8" }),
|
|
3874
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 px-6 mt-8 flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center md:text-left", children: [
|
|
3875
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold mb-2", children: "e-INFRA CZ Support" }),
|
|
3876
|
-
/* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "inline-flex flex-col items-center md:items-start", children: [
|
|
3877
|
-
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2", children: [
|
|
3878
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: "w-4 pt-[2px] h-4 text-fd-primary" }),
|
|
3879
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-fd-muted-foreground", children: "Available non-stop" })
|
|
3880
|
-
] }),
|
|
3881
|
-
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex pt-[2px] items-center gap-2", children: [
|
|
3882
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "w-4 h-4 text-fd-primary" }),
|
|
3883
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3884
|
-
"a",
|
|
3885
|
-
{
|
|
3886
|
-
href: "mailto:support@e-infra.cz",
|
|
3887
|
-
className: "text-fd-primary hover:underline",
|
|
3888
|
-
children: "support@e-infra.cz"
|
|
3889
|
-
}
|
|
3890
|
-
)
|
|
3891
|
-
] }),
|
|
3892
|
-
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex pt-[2px] items-center gap-2", children: [
|
|
3893
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "w-4 h-4 text-fd-primary" }),
|
|
3894
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-fd-muted-foreground", children: "+420 234 680 222" })
|
|
3895
|
-
] })
|
|
3896
|
-
] })
|
|
3897
|
-
] }) })
|
|
3898
|
-
] }),
|
|
3899
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center items-center mt-4 max-w-[1100px] w-full mx-auto", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: resolveLogoSrc(logo), alt: logoAlt, className: "h-22 w-auto" }) }),
|
|
3900
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col md:flex-row justify-center md:justify-between items-center max-w-[1100px] w-full mx-auto", children: [
|
|
3901
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center md:justify-start gap-1", children: [
|
|
3902
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-fd-muted-foreground", children: "Copyright © 2025 e-INFRA CZ" }),
|
|
3903
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-fd-muted-foreground px-1 pb-[1px]", children: "|" }),
|
|
3904
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3905
|
-
"a",
|
|
3906
|
-
{
|
|
3907
|
-
href: "https://www.e-infra.cz/en/personal-data-processing",
|
|
3908
|
-
className: "text-sm text-fd-primary hover:underline",
|
|
3909
|
-
children: "Privacy Policy"
|
|
3910
|
-
}
|
|
3911
|
-
)
|
|
3912
|
-
] }),
|
|
3913
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center md:justify-end gap-1 pt-4 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-fd-muted-foreground", children: [
|
|
3914
|
-
"Version: ",
|
|
3915
|
-
new Date(Version).toLocaleDateString("cs-CS")
|
|
3916
|
-
] }) })
|
|
3917
|
-
] })
|
|
3918
|
-
] });
|
|
3919
|
-
};
|
|
3920
|
-
const defaultMessage = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3921
|
-
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "We use cookies" }),
|
|
3922
|
-
" to improve your experience and analyze site usage. You can choose which cookies to accept.",
|
|
3923
|
-
" "
|
|
3924
|
-
] });
|
|
3925
|
-
const defaultLearnMoreLink = /* @__PURE__ */ jsxRuntime.jsx(
|
|
3926
|
-
"a",
|
|
3927
|
-
{
|
|
3928
|
-
href: "/cookies",
|
|
3929
|
-
className: "text-primary hover:text-primary-600 underline font-medium transition-colors duration-200",
|
|
3930
|
-
children: "Learn more"
|
|
3931
|
-
}
|
|
3932
|
-
);
|
|
3933
|
-
function CookiesBanner({
|
|
3934
|
-
className,
|
|
3935
|
-
message = defaultMessage,
|
|
3936
|
-
learnMoreLink = defaultLearnMoreLink,
|
|
3937
|
-
onReject,
|
|
3938
|
-
onFunctional,
|
|
3939
|
-
onAccept,
|
|
3940
|
-
...props
|
|
3941
|
-
}) {
|
|
3942
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3943
|
-
"div",
|
|
3944
|
-
{
|
|
3945
|
-
"data-slot": "cookies-banner",
|
|
3946
|
-
className: cn(
|
|
3947
|
-
"fixed bottom-0 left-0 right-0 bg-card border-t border-border shadow-lg z-50",
|
|
3948
|
-
className
|
|
3949
|
-
),
|
|
3950
|
-
...props,
|
|
3951
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4 py-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4", children: [
|
|
3952
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(Small, { className: "text-foreground", children: [
|
|
3953
|
-
message,
|
|
3954
|
-
learnMoreLink
|
|
3955
|
-
] }) }),
|
|
3956
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row gap-2 shrink-0", children: [
|
|
3957
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", type: "button", onClick: onReject, children: "Reject" }),
|
|
3958
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3959
|
-
Button,
|
|
3960
|
-
{
|
|
3961
|
-
variant: "ghost",
|
|
3962
|
-
size: "sm",
|
|
3963
|
-
type: "button",
|
|
3964
|
-
onClick: onFunctional,
|
|
3965
|
-
children: "Only Functional"
|
|
3966
|
-
}
|
|
3967
|
-
),
|
|
3968
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3969
|
-
Button,
|
|
3970
|
-
{
|
|
3971
|
-
variant: "default",
|
|
3972
|
-
size: "sm",
|
|
3973
|
-
type: "button",
|
|
3974
|
-
onClick: onAccept,
|
|
3975
|
-
children: "Accept All"
|
|
3976
|
-
}
|
|
3977
|
-
)
|
|
3978
|
-
] })
|
|
3979
|
-
] }) })
|
|
3980
|
-
}
|
|
3981
|
-
);
|
|
3982
|
-
}
|
|
3983
|
-
function FeedbackButton({
|
|
3984
|
-
onClick,
|
|
3985
|
-
position = "bottom-right"
|
|
3986
|
-
}) {
|
|
3987
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3988
|
-
"button",
|
|
3989
|
-
{
|
|
3990
|
-
onClick,
|
|
3991
|
-
type: "button",
|
|
3992
|
-
className: cn(
|
|
3993
|
-
"group fixed z-50 px-3.5 flex items-center justify-center bg-primary hover:bg-primary-700 text-white rounded-full shadow-lg transition-all duration-300 cursor-pointer w-12 h-12 hover:w-44 overflow-hidden",
|
|
3994
|
-
position === "bottom-right" ? "bottom-6 right-6" : "bottom-6 left-6"
|
|
3995
|
-
),
|
|
3996
|
-
"aria-label": "Leave feedback",
|
|
3997
|
-
children: [
|
|
3998
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "overflow-hidden whitespace-nowrap text-sm font-medium opacity-0 group-hover:opacity-100 transition-opacity duration-300", children: "Leave feedback?" }),
|
|
3999
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircle, { className: "ms-auto w-5 h-5 shrink-0" })
|
|
4000
|
-
]
|
|
4001
|
-
}
|
|
4002
|
-
);
|
|
4003
|
-
}
|
|
4004
|
-
function FeedbackModal({
|
|
4005
|
-
isOpen,
|
|
4006
|
-
onClose,
|
|
4007
|
-
onSubmit,
|
|
4008
|
-
title = "Leave us Feedback",
|
|
4009
|
-
description = "Help us improve by sharing your experience.",
|
|
4010
|
-
satisfactionLabel = "Were you satisfied?",
|
|
4011
|
-
recommendationsLabel = "Do you have any recommendations for improving? If you are open to follow-up, please leave your contact details.",
|
|
4012
|
-
recommendationsPlaceholder = "Share your thoughts...",
|
|
4013
|
-
submitButtonText = "Submit Feedback",
|
|
4014
|
-
successMessage = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-success", children: [
|
|
4015
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "w-5 h-5" }),
|
|
4016
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: "Thank you for your feedback!" })
|
|
4017
|
-
] }),
|
|
4018
|
-
autoCloseOnSuccess = true,
|
|
4019
|
-
autoCloseDelay = 3e3
|
|
4020
|
-
}) {
|
|
4021
|
-
const [satisfaction, setSatisfaction] = React__namespace.useState(
|
|
4022
|
-
null
|
|
4023
|
-
);
|
|
4024
|
-
const [recommendations, setRecommendations] = React__namespace.useState("");
|
|
4025
|
-
const [isSubmitting, setIsSubmitting] = React__namespace.useState(false);
|
|
4026
|
-
const [submitStatus, setSubmitStatus] = React__namespace.useState("idle");
|
|
4027
|
-
const [errorMessage, setErrorMessage] = React__namespace.useState("");
|
|
4028
|
-
const [progress, setProgress] = React__namespace.useState(0);
|
|
4029
|
-
const progressIntervalRef = React__namespace.useRef(null);
|
|
4030
|
-
React__namespace.useEffect(() => {
|
|
4031
|
-
if (!isOpen) {
|
|
4032
|
-
setSatisfaction(null);
|
|
4033
|
-
setRecommendations("");
|
|
4034
|
-
setSubmitStatus("idle");
|
|
4035
|
-
setErrorMessage("");
|
|
4036
|
-
setProgress(0);
|
|
4037
|
-
if (progressIntervalRef.current) {
|
|
4038
|
-
clearInterval(progressIntervalRef.current);
|
|
4039
|
-
progressIntervalRef.current = null;
|
|
4040
|
-
}
|
|
4041
|
-
}
|
|
4042
|
-
}, [isOpen]);
|
|
4043
|
-
const handleSubmit = async () => {
|
|
4044
|
-
setIsSubmitting(true);
|
|
4045
|
-
setSubmitStatus("idle");
|
|
4046
|
-
setErrorMessage("");
|
|
4047
|
-
try {
|
|
4048
|
-
const result = await onSubmit?.({
|
|
4049
|
-
satisfaction: satisfaction || void 0,
|
|
4050
|
-
recommendations: recommendations || void 0
|
|
4051
|
-
});
|
|
4052
|
-
if (result?.success) {
|
|
4053
|
-
setSubmitStatus("success");
|
|
4054
|
-
if (autoCloseOnSuccess) {
|
|
4055
|
-
setProgress(0);
|
|
4056
|
-
const updateInterval = 50;
|
|
4057
|
-
const progressIncrement = 100 / (autoCloseDelay / updateInterval);
|
|
4058
|
-
progressIntervalRef.current = setInterval(() => {
|
|
4059
|
-
setProgress((prevProgress) => {
|
|
4060
|
-
const newProgress = prevProgress + progressIncrement;
|
|
4061
|
-
if (newProgress >= 100) {
|
|
4062
|
-
clearInterval(progressIntervalRef.current ?? void 0);
|
|
4063
|
-
requestAnimationFrame(() => onClose());
|
|
4064
|
-
return 100;
|
|
4065
|
-
}
|
|
4066
|
-
return newProgress;
|
|
4067
|
-
});
|
|
4068
|
-
}, updateInterval);
|
|
4069
|
-
}
|
|
4070
|
-
} else {
|
|
4071
|
-
setSubmitStatus("error");
|
|
4072
|
-
setErrorMessage(result?.message || "Failed to submit feedback");
|
|
4073
|
-
}
|
|
4074
|
-
} catch (error) {
|
|
4075
|
-
setSubmitStatus("error");
|
|
4076
|
-
setErrorMessage(
|
|
4077
|
-
error instanceof Error ? error.message : "An unexpected error occurred"
|
|
4078
|
-
);
|
|
4079
|
-
} finally {
|
|
4080
|
-
setIsSubmitting(false);
|
|
4081
|
-
}
|
|
4082
|
-
};
|
|
4083
|
-
React__namespace.useEffect(() => {
|
|
4084
|
-
return () => {
|
|
4085
|
-
if (progressIntervalRef.current) {
|
|
4086
|
-
clearInterval(progressIntervalRef.current);
|
|
4087
|
-
}
|
|
4088
|
-
};
|
|
4089
|
-
}, []);
|
|
4090
|
-
if (!isOpen) {
|
|
4091
|
-
return null;
|
|
4092
|
-
}
|
|
4093
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex items-end sm:items-center justify-center sm:justify-end sm:bottom-3 sm:right-3 sm:inset-auto", children: [
|
|
4094
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4095
|
-
"div",
|
|
4096
|
-
{
|
|
4097
|
-
className: "fixed inset-0 bg-black/50 sm:hidden",
|
|
4098
|
-
onClick: onClose,
|
|
4099
|
-
"aria-hidden": "true"
|
|
4100
|
-
}
|
|
4101
|
-
),
|
|
4102
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full sm:w-96 bg-card border-t sm:border border-border shadow-lg sm:rounded-2xl overflow-hidden animate-slideUp", children: [
|
|
4103
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4104
|
-
Button,
|
|
4105
|
-
{
|
|
4106
|
-
onClick: onClose,
|
|
4107
|
-
variant: "ghost",
|
|
4108
|
-
size: "icon-sm",
|
|
4109
|
-
className: "absolute top-3 right-3 rounded-full",
|
|
4110
|
-
"aria-label": "Close",
|
|
4111
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "w-4 h-4" })
|
|
4112
|
-
}
|
|
4113
|
-
),
|
|
4114
|
-
submitStatus === "success" && autoCloseOnSuccess && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-muted overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4115
|
-
"div",
|
|
4116
|
-
{
|
|
4117
|
-
className: "h-full bg-primary transition-all duration-50 ease-linear",
|
|
4118
|
-
style: { width: `${progress}%` }
|
|
4119
|
-
}
|
|
4120
|
-
) }),
|
|
4121
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6", children: [
|
|
4122
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-foreground mb-1", children: title }),
|
|
4123
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: description }),
|
|
4124
|
-
submitStatus === "success" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4", children: successMessage }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4125
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4126
|
-
/* @__PURE__ */ jsxRuntime.jsx(Small, { className: "block mb-4", children: satisfactionLabel }),
|
|
4127
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-2", children: [
|
|
4128
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4129
|
-
Button,
|
|
4130
|
-
{
|
|
4131
|
-
type: "button",
|
|
4132
|
-
variant: satisfaction === "yes" ? "default" : "secondary",
|
|
4133
|
-
size: "sm",
|
|
4134
|
-
onClick: () => setSatisfaction("yes"),
|
|
4135
|
-
children: "Yes"
|
|
4136
|
-
}
|
|
4137
|
-
),
|
|
4138
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4139
|
-
Button,
|
|
4140
|
-
{
|
|
4141
|
-
type: "button",
|
|
4142
|
-
variant: satisfaction === "no" ? "default" : "secondary",
|
|
4143
|
-
size: "sm",
|
|
4144
|
-
onClick: () => setSatisfaction("no"),
|
|
4145
|
-
children: "No"
|
|
4146
|
-
}
|
|
4147
|
-
)
|
|
4148
|
-
] })
|
|
4149
|
-
] }),
|
|
4150
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4151
|
-
/* @__PURE__ */ jsxRuntime.jsx(Small, { className: "block mb-4", children: recommendationsLabel }),
|
|
4152
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4153
|
-
Textarea,
|
|
4154
|
-
{
|
|
4155
|
-
value: recommendations,
|
|
4156
|
-
onChange: (e) => setRecommendations(e.target.value),
|
|
4157
|
-
rows: 4,
|
|
4158
|
-
placeholder: recommendationsPlaceholder
|
|
4159
|
-
}
|
|
4160
|
-
)
|
|
4161
|
-
] }),
|
|
4162
|
-
submitStatus === "error" && /* @__PURE__ */ jsxRuntime.jsxs(Alert, { variant: "error", children: [
|
|
4163
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-4 w-4" }),
|
|
4164
|
-
/* @__PURE__ */ jsxRuntime.jsxs(AlertDescription, { children: [
|
|
4165
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: "Failed to submit feedback" }),
|
|
4166
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs", children: errorMessage })
|
|
4167
|
-
] })
|
|
4168
|
-
] })
|
|
4169
|
-
] }),
|
|
4170
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: submitStatus !== "success" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4171
|
-
Button,
|
|
4172
|
-
{
|
|
4173
|
-
type: "button",
|
|
4174
|
-
onClick: handleSubmit,
|
|
4175
|
-
disabled: isSubmitting,
|
|
4176
|
-
className: "w-full sm:w-auto",
|
|
4177
|
-
children: isSubmitting ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4178
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "w-4 h-4 mr-2 animate-spin" }),
|
|
4179
|
-
"Submitting..."
|
|
4180
|
-
] }) : submitButtonText
|
|
4181
|
-
}
|
|
4182
|
-
) })
|
|
4183
|
-
] })
|
|
4184
|
-
] })
|
|
4185
|
-
] });
|
|
4186
|
-
}
|
|
4187
|
-
function FeedbackForm({
|
|
4188
|
-
isOpen: controlledIsOpen,
|
|
4189
|
-
onOpen,
|
|
4190
|
-
onClose,
|
|
4191
|
-
onSubmit,
|
|
4192
|
-
title,
|
|
4193
|
-
description,
|
|
4194
|
-
satisfactionLabel,
|
|
4195
|
-
recommendationsLabel,
|
|
4196
|
-
recommendationsPlaceholder,
|
|
4197
|
-
submitButtonText,
|
|
4198
|
-
successMessage,
|
|
4199
|
-
showFeedbackButton = true,
|
|
4200
|
-
feedbackButtonPosition = "bottom-right",
|
|
4201
|
-
autoCloseOnSuccess,
|
|
4202
|
-
autoCloseDelay
|
|
4203
|
-
}) {
|
|
4204
|
-
const [internalIsOpen, setInternalIsOpen] = React__namespace.useState(false);
|
|
4205
|
-
const isOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalIsOpen;
|
|
4206
|
-
const handleOpen = () => {
|
|
4207
|
-
if (controlledIsOpen === void 0) {
|
|
4208
|
-
setInternalIsOpen(true);
|
|
4209
|
-
}
|
|
4210
|
-
onOpen?.();
|
|
4211
|
-
};
|
|
4212
|
-
const handleClose = () => {
|
|
4213
|
-
if (controlledIsOpen === void 0) {
|
|
4214
|
-
setInternalIsOpen(false);
|
|
4215
|
-
}
|
|
4216
|
-
onClose?.();
|
|
4217
|
-
};
|
|
4218
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4219
|
-
showFeedbackButton && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4220
|
-
FeedbackButton,
|
|
4221
|
-
{
|
|
4222
|
-
onClick: handleOpen,
|
|
4223
|
-
position: feedbackButtonPosition
|
|
4224
|
-
}
|
|
4225
|
-
),
|
|
4226
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4227
|
-
FeedbackModal,
|
|
4228
|
-
{
|
|
4229
|
-
isOpen,
|
|
4230
|
-
onClose: handleClose,
|
|
4231
|
-
onSubmit,
|
|
4232
|
-
title,
|
|
4233
|
-
description,
|
|
4234
|
-
satisfactionLabel,
|
|
4235
|
-
recommendationsLabel,
|
|
4236
|
-
recommendationsPlaceholder,
|
|
4237
|
-
submitButtonText,
|
|
4238
|
-
successMessage,
|
|
4239
|
-
autoCloseOnSuccess,
|
|
4240
|
-
autoCloseDelay
|
|
4241
|
-
}
|
|
4242
|
-
)
|
|
4243
|
-
] });
|
|
4244
|
-
}
|
|
4245
|
-
exports.Accordion = Accordion;
|
|
4246
|
-
exports.AccordionContent = AccordionContent;
|
|
4247
|
-
exports.AccordionItem = AccordionItem;
|
|
4248
|
-
exports.AccordionTrigger = AccordionTrigger;
|
|
4249
|
-
exports.Alert = Alert;
|
|
4250
|
-
exports.AlertDescription = AlertDescription;
|
|
4251
|
-
exports.AlertDialog = AlertDialog;
|
|
4252
|
-
exports.AlertDialogAction = AlertDialogAction;
|
|
4253
|
-
exports.AlertDialogCancel = AlertDialogCancel;
|
|
4254
|
-
exports.AlertDialogContent = AlertDialogContent;
|
|
4255
|
-
exports.AlertDialogDescription = AlertDialogDescription;
|
|
4256
|
-
exports.AlertDialogFooter = AlertDialogFooter;
|
|
4257
|
-
exports.AlertDialogHeader = AlertDialogHeader;
|
|
4258
|
-
exports.AlertDialogOverlay = AlertDialogOverlay;
|
|
4259
|
-
exports.AlertDialogPortal = AlertDialogPortal;
|
|
4260
|
-
exports.AlertDialogTitle = AlertDialogTitle;
|
|
4261
|
-
exports.AlertDialogTrigger = AlertDialogTrigger;
|
|
4262
|
-
exports.AlertTitle = AlertTitle;
|
|
4263
|
-
exports.AspectRatio = AspectRatio;
|
|
4264
|
-
exports.Avatar = Avatar;
|
|
4265
|
-
exports.AvatarFallback = AvatarFallback;
|
|
4266
|
-
exports.AvatarImage = AvatarImage;
|
|
4267
|
-
exports.Badge = Badge;
|
|
4268
|
-
exports.Blockquote = Blockquote;
|
|
4269
|
-
exports.Breadcrumb = Breadcrumb;
|
|
4270
|
-
exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
|
|
4271
|
-
exports.BreadcrumbItem = BreadcrumbItem;
|
|
4272
|
-
exports.BreadcrumbLink = BreadcrumbLink;
|
|
4273
|
-
exports.BreadcrumbList = BreadcrumbList;
|
|
4274
|
-
exports.BreadcrumbPage = BreadcrumbPage;
|
|
4275
|
-
exports.BreadcrumbSeparator = BreadcrumbSeparator;
|
|
4276
|
-
exports.Button = Button;
|
|
4277
|
-
exports.Calendar = Calendar;
|
|
4278
|
-
exports.CalendarDayButton = CalendarDayButton;
|
|
4279
|
-
exports.Card = Card;
|
|
4280
|
-
exports.CardAction = CardAction;
|
|
4281
|
-
exports.CardContent = CardContent;
|
|
4282
|
-
exports.CardDescription = CardDescription;
|
|
4283
|
-
exports.CardFooter = CardFooter;
|
|
4284
|
-
exports.CardHeader = CardHeader;
|
|
4285
|
-
exports.CardTitle = CardTitle;
|
|
4286
|
-
exports.Carousel = Carousel;
|
|
4287
|
-
exports.CarouselContent = CarouselContent;
|
|
4288
|
-
exports.CarouselItem = CarouselItem;
|
|
4289
|
-
exports.CarouselNext = CarouselNext;
|
|
4290
|
-
exports.CarouselPrevious = CarouselPrevious;
|
|
4291
|
-
exports.Checkbox = Checkbox;
|
|
4292
|
-
exports.Code = Code;
|
|
4293
|
-
exports.Collapsible = Collapsible;
|
|
4294
|
-
exports.CollapsibleContent = CollapsibleContent;
|
|
4295
|
-
exports.CollapsibleTrigger = CollapsibleTrigger;
|
|
4296
|
-
exports.Content = Content;
|
|
4297
|
-
exports.ContentExample = ContentExample;
|
|
4298
|
-
exports.CookiesBanner = CookiesBanner;
|
|
4299
|
-
exports.Dialog = Dialog;
|
|
4300
|
-
exports.DialogClose = DialogClose;
|
|
4301
|
-
exports.DialogContent = DialogContent;
|
|
4302
|
-
exports.DialogDescription = DialogDescription;
|
|
4303
|
-
exports.DialogFooter = DialogFooter;
|
|
4304
|
-
exports.DialogHeader = DialogHeader;
|
|
4305
|
-
exports.DialogOverlay = DialogOverlay;
|
|
4306
|
-
exports.DialogPortal = DialogPortal;
|
|
4307
|
-
exports.DialogTitle = DialogTitle;
|
|
4308
|
-
exports.DialogTrigger = DialogTrigger;
|
|
4309
|
-
exports.DropdownMenu = DropdownMenu;
|
|
4310
|
-
exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
|
|
4311
|
-
exports.DropdownMenuContent = DropdownMenuContent;
|
|
4312
|
-
exports.DropdownMenuGroup = DropdownMenuGroup;
|
|
4313
|
-
exports.DropdownMenuItem = DropdownMenuItem;
|
|
4314
|
-
exports.DropdownMenuLabel = DropdownMenuLabel;
|
|
4315
|
-
exports.DropdownMenuPortal = DropdownMenuPortal;
|
|
4316
|
-
exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
|
|
4317
|
-
exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
|
|
4318
|
-
exports.DropdownMenuSeparator = DropdownMenuSeparator;
|
|
4319
|
-
exports.DropdownMenuShortcut = DropdownMenuShortcut;
|
|
4320
|
-
exports.DropdownMenuSub = DropdownMenuSub;
|
|
4321
|
-
exports.DropdownMenuSubContent = DropdownMenuSubContent;
|
|
4322
|
-
exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
|
|
4323
|
-
exports.DropdownMenuTrigger = DropdownMenuTrigger;
|
|
4324
|
-
exports.FeedbackForm = FeedbackForm;
|
|
4325
|
-
exports.Footer = Footer;
|
|
4326
|
-
exports.Form = Form;
|
|
4327
|
-
exports.FormControl = FormControl;
|
|
4328
|
-
exports.FormDescription = FormDescription;
|
|
4329
|
-
exports.FormField = FormField;
|
|
4330
|
-
exports.FormItem = FormItem;
|
|
4331
|
-
exports.FormLabel = FormLabel;
|
|
4332
|
-
exports.FormMessage = FormMessage;
|
|
4333
|
-
exports.H1 = H1;
|
|
4334
|
-
exports.H2 = H2;
|
|
4335
|
-
exports.H3 = H3;
|
|
4336
|
-
exports.H4 = H4;
|
|
4337
|
-
exports.Header = Header;
|
|
4338
|
-
exports.Input = Input;
|
|
4339
|
-
exports.Label = Label;
|
|
4340
|
-
exports.Lead = Lead;
|
|
4341
|
-
exports.Link = Link;
|
|
4342
|
-
exports.List = List;
|
|
4343
|
-
exports.Menubar = Menubar;
|
|
4344
|
-
exports.MenubarCheckboxItem = MenubarCheckboxItem;
|
|
4345
|
-
exports.MenubarContent = MenubarContent;
|
|
4346
|
-
exports.MenubarGroup = MenubarGroup;
|
|
4347
|
-
exports.MenubarItem = MenubarItem;
|
|
4348
|
-
exports.MenubarLabel = MenubarLabel;
|
|
4349
|
-
exports.MenubarMenu = MenubarMenu;
|
|
4350
|
-
exports.MenubarPortal = MenubarPortal;
|
|
4351
|
-
exports.MenubarRadioGroup = MenubarRadioGroup;
|
|
4352
|
-
exports.MenubarRadioItem = MenubarRadioItem;
|
|
4353
|
-
exports.MenubarSeparator = MenubarSeparator;
|
|
4354
|
-
exports.MenubarShortcut = MenubarShortcut;
|
|
4355
|
-
exports.MenubarSub = MenubarSub;
|
|
4356
|
-
exports.MenubarSubContent = MenubarSubContent;
|
|
4357
|
-
exports.MenubarSubTrigger = MenubarSubTrigger;
|
|
4358
|
-
exports.MenubarTrigger = MenubarTrigger;
|
|
4359
|
-
exports.Muted = Muted;
|
|
4360
|
-
exports.NavigationMenu = NavigationMenu;
|
|
4361
|
-
exports.NavigationMenuContent = NavigationMenuContent;
|
|
4362
|
-
exports.NavigationMenuIndicator = NavigationMenuIndicator;
|
|
4363
|
-
exports.NavigationMenuItem = NavigationMenuItem;
|
|
4364
|
-
exports.NavigationMenuLink = NavigationMenuLink;
|
|
4365
|
-
exports.NavigationMenuList = NavigationMenuList;
|
|
4366
|
-
exports.NavigationMenuTrigger = NavigationMenuTrigger;
|
|
4367
|
-
exports.NavigationMenuViewport = NavigationMenuViewport;
|
|
4368
|
-
exports.OrderedList = OrderedList;
|
|
4369
|
-
exports.P = P;
|
|
4370
|
-
exports.Panel = Panel;
|
|
4371
|
-
exports.PanelContent = PanelContent;
|
|
4372
|
-
exports.PanelDescription = PanelDescription;
|
|
4373
|
-
exports.PanelFooter = PanelFooter;
|
|
4374
|
-
exports.PanelHeader = PanelHeader;
|
|
4375
|
-
exports.PanelTitle = PanelTitle;
|
|
4376
|
-
exports.Progress = Progress;
|
|
4377
|
-
exports.RadioGroup = RadioGroup;
|
|
4378
|
-
exports.RadioGroupItem = RadioGroupItem;
|
|
4379
|
-
exports.ScrollArea = ScrollArea;
|
|
4380
|
-
exports.ScrollBar = ScrollBar;
|
|
4381
|
-
exports.Select = Select;
|
|
4382
|
-
exports.SelectContent = SelectContent;
|
|
4383
|
-
exports.SelectGroup = SelectGroup;
|
|
4384
|
-
exports.SelectItem = SelectItem;
|
|
4385
|
-
exports.SelectLabel = SelectLabel;
|
|
4386
|
-
exports.SelectScrollDownButton = SelectScrollDownButton;
|
|
4387
|
-
exports.SelectScrollUpButton = SelectScrollUpButton;
|
|
4388
|
-
exports.SelectSeparator = SelectSeparator;
|
|
4389
|
-
exports.SelectTrigger = SelectTrigger;
|
|
4390
|
-
exports.SelectValue = SelectValue;
|
|
4391
|
-
exports.Separator = Separator;
|
|
4392
|
-
exports.Sheet = Sheet;
|
|
4393
|
-
exports.SheetClose = SheetClose;
|
|
4394
|
-
exports.SheetContent = SheetContent;
|
|
4395
|
-
exports.SheetDescription = SheetDescription;
|
|
4396
|
-
exports.SheetFooter = SheetFooter;
|
|
4397
|
-
exports.SheetHeader = SheetHeader;
|
|
4398
|
-
exports.SheetTitle = SheetTitle;
|
|
4399
|
-
exports.SheetTrigger = SheetTrigger;
|
|
4400
|
-
exports.Sidebar = Sidebar;
|
|
4401
|
-
exports.SidebarContent = SidebarContent;
|
|
4402
|
-
exports.SidebarFooter = SidebarFooter;
|
|
4403
|
-
exports.SidebarGroup = SidebarGroup;
|
|
4404
|
-
exports.SidebarGroupAction = SidebarGroupAction;
|
|
4405
|
-
exports.SidebarGroupContent = SidebarGroupContent;
|
|
4406
|
-
exports.SidebarGroupLabel = SidebarGroupLabel;
|
|
4407
|
-
exports.SidebarHeader = SidebarHeader;
|
|
4408
|
-
exports.SidebarInput = SidebarInput;
|
|
4409
|
-
exports.SidebarInset = SidebarInset;
|
|
4410
|
-
exports.SidebarMenu = SidebarMenu;
|
|
4411
|
-
exports.SidebarMenuAction = SidebarMenuAction;
|
|
4412
|
-
exports.SidebarMenuBadge = SidebarMenuBadge;
|
|
4413
|
-
exports.SidebarMenuButton = SidebarMenuButton;
|
|
4414
|
-
exports.SidebarMenuItem = SidebarMenuItem;
|
|
4415
|
-
exports.SidebarMenuSkeleton = SidebarMenuSkeleton;
|
|
4416
|
-
exports.SidebarMenuSub = SidebarMenuSub;
|
|
4417
|
-
exports.SidebarMenuSubButton = SidebarMenuSubButton;
|
|
4418
|
-
exports.SidebarMenuSubItem = SidebarMenuSubItem;
|
|
4419
|
-
exports.SidebarProvider = SidebarProvider;
|
|
4420
|
-
exports.SidebarRail = SidebarRail;
|
|
4421
|
-
exports.SidebarSeparator = SidebarSeparator;
|
|
4422
|
-
exports.SidebarTrigger = SidebarTrigger;
|
|
4423
|
-
exports.Skeleton = Skeleton;
|
|
4424
|
-
exports.Slider = Slider;
|
|
4425
|
-
exports.Small = Small;
|
|
4426
|
-
exports.Stepper = Stepper;
|
|
4427
|
-
exports.StepperContent = StepperContent;
|
|
4428
|
-
exports.StepperFooter = StepperFooter;
|
|
4429
|
-
exports.StepperHeader = StepperHeader;
|
|
4430
|
-
exports.Strong = Strong;
|
|
4431
|
-
exports.Switch = Switch;
|
|
4432
|
-
exports.Table = Table;
|
|
4433
|
-
exports.TableBody = TableBody;
|
|
4434
|
-
exports.TableCaption = TableCaption;
|
|
4435
|
-
exports.TableCell = TableCell;
|
|
4436
|
-
exports.TableFooter = TableFooter;
|
|
4437
|
-
exports.TableHead = TableHead;
|
|
4438
|
-
exports.TableHeader = TableHeader;
|
|
4439
|
-
exports.TableRow = TableRow;
|
|
4440
|
-
exports.Tabs = Tabs;
|
|
4441
|
-
exports.TabsContent = TabsContent;
|
|
4442
|
-
exports.TabsList = TabsList;
|
|
4443
|
-
exports.TabsTrigger = TabsTrigger;
|
|
4444
|
-
exports.Textarea = Textarea;
|
|
4445
|
-
exports.Toaster = Toaster;
|
|
4446
|
-
exports.Toggle = Toggle;
|
|
4447
|
-
exports.ToggleGroup = ToggleGroup;
|
|
4448
|
-
exports.ToggleGroupItem = ToggleGroupItem;
|
|
4449
|
-
exports.Tooltip = Tooltip;
|
|
4450
|
-
exports.TooltipContent = TooltipContent;
|
|
4451
|
-
exports.TooltipProvider = TooltipProvider;
|
|
4452
|
-
exports.TooltipTrigger = TooltipTrigger;
|
|
4453
|
-
exports.badgeVariants = badgeVariants;
|
|
4454
|
-
exports.buttonVariants = buttonVariants;
|
|
4455
|
-
exports.cn = cn;
|
|
4456
|
-
exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
|
|
4457
|
-
exports.toggleVariants = toggleVariants;
|
|
4458
|
-
exports.useFormField = useFormField;
|
|
4459
|
-
exports.useIsMobile = useIsMobile;
|
|
4460
|
-
exports.useSidebar = useSidebar;
|
|
4461
|
-
exports.useStepper = useStepper;
|
|
4462
|
-
//# sourceMappingURL=index.cjs.js.map
|