@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.
Files changed (125) hide show
  1. package/README.md +2 -68
  2. package/package.json +4 -2
  3. package/dist/index.cjs.js +0 -4462
  4. package/dist/index.cjs.js.map +0 -1
  5. package/dist/index.es.js +0 -4423
  6. package/dist/index.es.js.map +0 -1
  7. package/dist/setup.css +0 -247
  8. package/dist/types/components/compounds/cookies_banner.d.ts +0 -15
  9. package/dist/types/components/compounds/cookies_banner.d.ts.map +0 -1
  10. package/dist/types/components/compounds/feedbackform.d.ts +0 -41
  11. package/dist/types/components/compounds/feedbackform.d.ts.map +0 -1
  12. package/dist/types/components/compounds/index.d.ts +0 -3
  13. package/dist/types/components/compounds/index.d.ts.map +0 -1
  14. package/dist/types/components/foundations/index.d.ts +0 -2
  15. package/dist/types/components/foundations/index.d.ts.map +0 -1
  16. package/dist/types/components/foundations/typography.d.ts +0 -16
  17. package/dist/types/components/foundations/typography.d.ts.map +0 -1
  18. package/dist/types/components/index.d.ts +0 -43
  19. package/dist/types/components/index.d.ts.map +0 -1
  20. package/dist/types/components/layout/content.d.ts +0 -8
  21. package/dist/types/components/layout/content.d.ts.map +0 -1
  22. package/dist/types/components/layout/footer.d.ts +0 -14
  23. package/dist/types/components/layout/footer.d.ts.map +0 -1
  24. package/dist/types/components/layout/header.d.ts +0 -20
  25. package/dist/types/components/layout/header.d.ts.map +0 -1
  26. package/dist/types/components/layout/index.d.ts +0 -4
  27. package/dist/types/components/layout/index.d.ts.map +0 -1
  28. package/dist/types/components/layout/sidebar.d.ts +0 -70
  29. package/dist/types/components/layout/sidebar.d.ts.map +0 -1
  30. package/dist/types/components/primitives/accordion.d.ts +0 -8
  31. package/dist/types/components/primitives/accordion.d.ts.map +0 -1
  32. package/dist/types/components/primitives/alert-dialog.d.ts +0 -15
  33. package/dist/types/components/primitives/alert-dialog.d.ts.map +0 -1
  34. package/dist/types/components/primitives/alert.d.ts +0 -10
  35. package/dist/types/components/primitives/alert.d.ts.map +0 -1
  36. package/dist/types/components/primitives/aspect-ratio.d.ts +0 -4
  37. package/dist/types/components/primitives/aspect-ratio.d.ts.map +0 -1
  38. package/dist/types/components/primitives/avatar.d.ts +0 -7
  39. package/dist/types/components/primitives/avatar.d.ts.map +0 -1
  40. package/dist/types/components/primitives/badge.d.ts +0 -10
  41. package/dist/types/components/primitives/badge.d.ts.map +0 -1
  42. package/dist/types/components/primitives/breadcrumb.d.ts +0 -12
  43. package/dist/types/components/primitives/breadcrumb.d.ts.map +0 -1
  44. package/dist/types/components/primitives/button.d.ts +0 -11
  45. package/dist/types/components/primitives/button.d.ts.map +0 -1
  46. package/dist/types/components/primitives/calendar.d.ts +0 -9
  47. package/dist/types/components/primitives/calendar.d.ts.map +0 -1
  48. package/dist/types/components/primitives/card.d.ts +0 -10
  49. package/dist/types/components/primitives/card.d.ts.map +0 -1
  50. package/dist/types/components/primitives/carousel.d.ts +0 -20
  51. package/dist/types/components/primitives/carousel.d.ts.map +0 -1
  52. package/dist/types/components/primitives/chart.d.ts +0 -65
  53. package/dist/types/components/primitives/chart.d.ts.map +0 -1
  54. package/dist/types/components/primitives/checkbox.d.ts +0 -5
  55. package/dist/types/components/primitives/checkbox.d.ts.map +0 -1
  56. package/dist/types/components/primitives/collapsible.d.ts +0 -6
  57. package/dist/types/components/primitives/collapsible.d.ts.map +0 -1
  58. package/dist/types/components/primitives/command.d.ts +0 -19
  59. package/dist/types/components/primitives/command.d.ts.map +0 -1
  60. package/dist/types/components/primitives/context-menu.d.ts +0 -26
  61. package/dist/types/components/primitives/context-menu.d.ts.map +0 -1
  62. package/dist/types/components/primitives/dialog.d.ts +0 -16
  63. package/dist/types/components/primitives/dialog.d.ts.map +0 -1
  64. package/dist/types/components/primitives/dropdown-menu.d.ts +0 -26
  65. package/dist/types/components/primitives/dropdown-menu.d.ts.map +0 -1
  66. package/dist/types/components/primitives/form.d.ts +0 -25
  67. package/dist/types/components/primitives/form.d.ts.map +0 -1
  68. package/dist/types/components/primitives/input.d.ts +0 -4
  69. package/dist/types/components/primitives/input.d.ts.map +0 -1
  70. package/dist/types/components/primitives/label.d.ts +0 -5
  71. package/dist/types/components/primitives/label.d.ts.map +0 -1
  72. package/dist/types/components/primitives/menubar.d.ts +0 -27
  73. package/dist/types/components/primitives/menubar.d.ts.map +0 -1
  74. package/dist/types/components/primitives/navigation-menu.d.ts +0 -15
  75. package/dist/types/components/primitives/navigation-menu.d.ts.map +0 -1
  76. package/dist/types/components/primitives/pagination.d.ts +0 -14
  77. package/dist/types/components/primitives/pagination.d.ts.map +0 -1
  78. package/dist/types/components/primitives/panel.d.ts +0 -9
  79. package/dist/types/components/primitives/panel.d.ts.map +0 -1
  80. package/dist/types/components/primitives/popover.d.ts +0 -8
  81. package/dist/types/components/primitives/popover.d.ts.map +0 -1
  82. package/dist/types/components/primitives/progress.d.ts +0 -5
  83. package/dist/types/components/primitives/progress.d.ts.map +0 -1
  84. package/dist/types/components/primitives/radio-group.d.ts +0 -6
  85. package/dist/types/components/primitives/radio-group.d.ts.map +0 -1
  86. package/dist/types/components/primitives/resizable.d.ts +0 -9
  87. package/dist/types/components/primitives/resizable.d.ts.map +0 -1
  88. package/dist/types/components/primitives/scroll-area.d.ts +0 -6
  89. package/dist/types/components/primitives/scroll-area.d.ts.map +0 -1
  90. package/dist/types/components/primitives/select.d.ts +0 -16
  91. package/dist/types/components/primitives/select.d.ts.map +0 -1
  92. package/dist/types/components/primitives/separator.d.ts +0 -5
  93. package/dist/types/components/primitives/separator.d.ts.map +0 -1
  94. package/dist/types/components/primitives/sheet.d.ts +0 -14
  95. package/dist/types/components/primitives/sheet.d.ts.map +0 -1
  96. package/dist/types/components/primitives/skeleton.d.ts +0 -3
  97. package/dist/types/components/primitives/skeleton.d.ts.map +0 -1
  98. package/dist/types/components/primitives/slider.d.ts +0 -5
  99. package/dist/types/components/primitives/slider.d.ts.map +0 -1
  100. package/dist/types/components/primitives/sonner.d.ts +0 -4
  101. package/dist/types/components/primitives/sonner.d.ts.map +0 -1
  102. package/dist/types/components/primitives/stepper.d.ts +0 -42
  103. package/dist/types/components/primitives/stepper.d.ts.map +0 -1
  104. package/dist/types/components/primitives/switch.d.ts +0 -5
  105. package/dist/types/components/primitives/switch.d.ts.map +0 -1
  106. package/dist/types/components/primitives/table.d.ts +0 -11
  107. package/dist/types/components/primitives/table.d.ts.map +0 -1
  108. package/dist/types/components/primitives/tabs.d.ts +0 -8
  109. package/dist/types/components/primitives/tabs.d.ts.map +0 -1
  110. package/dist/types/components/primitives/textarea.d.ts +0 -4
  111. package/dist/types/components/primitives/textarea.d.ts.map +0 -1
  112. package/dist/types/components/primitives/toggle-group.d.ts +0 -10
  113. package/dist/types/components/primitives/toggle-group.d.ts.map +0 -1
  114. package/dist/types/components/primitives/toggle.d.ts +0 -10
  115. package/dist/types/components/primitives/toggle.d.ts.map +0 -1
  116. package/dist/types/components/primitives/tooltip.d.ts +0 -8
  117. package/dist/types/components/primitives/tooltip.d.ts.map +0 -1
  118. package/dist/types/hooks/index.d.ts +0 -2
  119. package/dist/types/hooks/index.d.ts.map +0 -1
  120. package/dist/types/hooks/use-mobile.d.ts +0 -2
  121. package/dist/types/hooks/use-mobile.d.ts.map +0 -1
  122. package/dist/types/index.d.ts +0 -4
  123. package/dist/types/index.d.ts.map +0 -1
  124. package/dist/types/lib/utils.d.ts +0 -3
  125. 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