@hai3/uikit 0.1.0-alpha.6 → 0.1.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs DELETED
@@ -1,3838 +0,0 @@
1
- 'use strict';
2
-
3
- var AspectRatioPrimitive = require('@radix-ui/react-aspect-ratio');
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var React20 = require('react');
6
- var AvatarPrimitive = require('@radix-ui/react-avatar');
7
- var clsx = require('clsx');
8
- var tailwindMerge = require('tailwind-merge');
9
- var reactSlot = require('@radix-ui/react-slot');
10
- var classVarianceAuthority = require('class-variance-authority');
11
- var uikitContracts = require('@hai3/uikit-contracts');
12
- var reactDayPicker = require('react-day-picker');
13
- var CheckboxPrimitive = require('@radix-ui/react-checkbox');
14
- var RadioGroupPrimitive = require('@radix-ui/react-radio-group');
15
- var inputOtp = require('input-otp');
16
- var LabelPrimitive = require('@radix-ui/react-label');
17
- var SwitchPrimitives = require('@radix-ui/react-switch');
18
- var lucideReact = require('lucide-react');
19
- var lodash = require('lodash');
20
- var SliderPrimitive = require('@radix-ui/react-slider');
21
- var ProgressPrimitive = require('@radix-ui/react-progress');
22
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
23
- var PopoverPrimitive = require('@radix-ui/react-popover');
24
- var HoverCardPrimitive = require('@radix-ui/react-hover-card');
25
- var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
26
- var MenubarPrimitive = require('@radix-ui/react-menubar');
27
- var TabsPrimitive = require('@radix-ui/react-tabs');
28
- var SheetPrimitive = require('@radix-ui/react-dialog');
29
- var vaul = require('vaul');
30
- var ResizablePrimitive = require('react-resizable-panels');
31
- var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
32
- var SeparatorPrimitive = require('@radix-ui/react-separator');
33
- var AccordionPrimitive = require('@radix-ui/react-accordion');
34
- var useEmblaCarousel = require('embla-carousel-react');
35
- var CollapsiblePrimitive = require('@radix-ui/react-collapsible');
36
- var recharts = require('recharts');
37
- var SelectPrimitive = require('@radix-ui/react-select');
38
- var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
39
- var ContextMenuPrimitive = require('@radix-ui/react-context-menu');
40
-
41
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
42
-
43
- function _interopNamespace(e) {
44
- if (e && e.__esModule) return e;
45
- var n = Object.create(null);
46
- if (e) {
47
- Object.keys(e).forEach(function (k) {
48
- if (k !== 'default') {
49
- var d = Object.getOwnPropertyDescriptor(e, k);
50
- Object.defineProperty(n, k, d.get ? d : {
51
- enumerable: true,
52
- get: function () { return e[k]; }
53
- });
54
- }
55
- });
56
- }
57
- n.default = e;
58
- return Object.freeze(n);
59
- }
60
-
61
- var AspectRatioPrimitive__namespace = /*#__PURE__*/_interopNamespace(AspectRatioPrimitive);
62
- var React20__namespace = /*#__PURE__*/_interopNamespace(React20);
63
- var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
64
- var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
65
- var RadioGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(RadioGroupPrimitive);
66
- var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
67
- var SwitchPrimitives__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitives);
68
- var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
69
- var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
70
- var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
71
- var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
72
- var HoverCardPrimitive__namespace = /*#__PURE__*/_interopNamespace(HoverCardPrimitive);
73
- var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
74
- var MenubarPrimitive__namespace = /*#__PURE__*/_interopNamespace(MenubarPrimitive);
75
- var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
76
- var SheetPrimitive__namespace = /*#__PURE__*/_interopNamespace(SheetPrimitive);
77
- var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespace(ResizablePrimitive);
78
- var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
79
- var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
80
- var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
81
- var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
82
- var CollapsiblePrimitive__namespace = /*#__PURE__*/_interopNamespace(CollapsiblePrimitive);
83
- var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
84
- var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
85
- var ContextMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(ContextMenuPrimitive);
86
-
87
- // src/base/aspect-ratio.tsx
88
- function AspectRatio({
89
- ...props
90
- }) {
91
- return /* @__PURE__ */ jsxRuntime.jsx(AspectRatioPrimitive__namespace.Root, { "data-slot": "aspect-ratio", ...props });
92
- }
93
- function cn(...inputs) {
94
- return tailwindMerge.twMerge(clsx.clsx(inputs));
95
- }
96
- var Avatar = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
97
- AvatarPrimitive__namespace.Root,
98
- {
99
- ref,
100
- className: cn(
101
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
102
- className
103
- ),
104
- ...props
105
- }
106
- ));
107
- Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
108
- var AvatarImage = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
109
- AvatarPrimitive__namespace.Image,
110
- {
111
- ref,
112
- className: cn("aspect-square h-full w-full", className),
113
- ...props
114
- }
115
- ));
116
- AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
117
- var AvatarFallback = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
118
- AvatarPrimitive__namespace.Fallback,
119
- {
120
- ref,
121
- className: cn(
122
- "flex h-full w-full items-center justify-center rounded-full bg-muted",
123
- className
124
- ),
125
- ...props
126
- }
127
- ));
128
- AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
129
- var buttonVariants = classVarianceAuthority.cva(
130
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
131
- {
132
- variants: {
133
- variant: {
134
- [uikitContracts.ButtonVariant.Default]: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
135
- [uikitContracts.ButtonVariant.Destructive]: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
136
- [uikitContracts.ButtonVariant.Outline]: "border border-input bg-background shadow-sm hover:bg-accent data-[state=open]:bg-accent",
137
- [uikitContracts.ButtonVariant.Secondary]: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
138
- [uikitContracts.ButtonVariant.Ghost]: "hover:bg-accent data-[state=open]:bg-accent",
139
- [uikitContracts.ButtonVariant.Link]: "text-primary underline-offset-4 hover:underline"
140
- },
141
- size: {
142
- [uikitContracts.ButtonSize.Default]: "h-9 px-4 py-2",
143
- [uikitContracts.ButtonSize.Sm]: "h-8 rounded-md px-3 text-xs",
144
- [uikitContracts.ButtonSize.Lg]: "h-10 rounded-md px-8",
145
- [uikitContracts.ButtonSize.Icon]: "h-9 w-9"
146
- }
147
- },
148
- defaultVariants: {
149
- variant: uikitContracts.ButtonVariant.Default,
150
- size: uikitContracts.ButtonSize.Default
151
- }
152
- }
153
- );
154
- var Button = React20__namespace.forwardRef(
155
- ({ className, variant, size, asChild = false, ...props }, ref) => {
156
- const Comp = asChild ? reactSlot.Slot : "button";
157
- return /* @__PURE__ */ jsxRuntime.jsx(
158
- Comp,
159
- {
160
- className: cn(buttonVariants({ variant, size, className })),
161
- ref,
162
- ...props
163
- }
164
- );
165
- }
166
- );
167
- Button.displayName = "Button";
168
- var badgeVariants = classVarianceAuthority.cva(
169
- "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-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
170
- {
171
- variants: {
172
- variant: {
173
- default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
174
- secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
175
- destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
176
- outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
177
- }
178
- },
179
- defaultVariants: {
180
- variant: "default"
181
- }
182
- }
183
- );
184
- function Badge({
185
- className,
186
- variant,
187
- asChild = false,
188
- ...props
189
- }) {
190
- const Comp = asChild ? reactSlot.Slot : "span";
191
- return /* @__PURE__ */ jsxRuntime.jsx(
192
- Comp,
193
- {
194
- className: cn(badgeVariants({ variant }), className),
195
- ...props
196
- }
197
- );
198
- }
199
- var ChevronDownIcon = ({
200
- className = "",
201
- ...props
202
- }) => {
203
- return /* @__PURE__ */ jsxRuntime.jsx(
204
- "svg",
205
- {
206
- className,
207
- width: "16",
208
- height: "16",
209
- viewBox: "0 0 24 24",
210
- fill: "none",
211
- stroke: "currentColor",
212
- strokeWidth: "2",
213
- strokeLinecap: "round",
214
- strokeLinejoin: "round",
215
- ...props,
216
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m6 9 6 6 6-6" })
217
- }
218
- );
219
- };
220
- var ChevronLeftIcon = ({ className = "" }) => {
221
- return /* @__PURE__ */ jsxRuntime.jsx(
222
- "svg",
223
- {
224
- className,
225
- width: "16",
226
- height: "16",
227
- viewBox: "0 0 24 24",
228
- fill: "none",
229
- stroke: "currentColor",
230
- strokeWidth: "2",
231
- strokeLinecap: "round",
232
- strokeLinejoin: "round",
233
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m15 18-6-6 6-6" })
234
- }
235
- );
236
- };
237
- var ChevronRightIcon = ({ className = "" }) => {
238
- return /* @__PURE__ */ jsxRuntime.jsx(
239
- "svg",
240
- {
241
- className,
242
- width: "16",
243
- height: "16",
244
- viewBox: "0 0 24 24",
245
- fill: "none",
246
- stroke: "currentColor",
247
- strokeWidth: "2",
248
- strokeLinecap: "round",
249
- strokeLinejoin: "round",
250
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9 18 6-6-6-6" })
251
- }
252
- );
253
- };
254
- function Calendar({
255
- className,
256
- classNames,
257
- showOutsideDays = true,
258
- captionLayout = "label",
259
- buttonVariant = uikitContracts.ButtonVariant.Ghost,
260
- formatters,
261
- components,
262
- ...props
263
- }) {
264
- const defaultClassNames = reactDayPicker.getDefaultClassNames();
265
- return /* @__PURE__ */ jsxRuntime.jsx(
266
- reactDayPicker.DayPicker,
267
- {
268
- showOutsideDays,
269
- className: cn(
270
- "bg-background group/calendar p-3 [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
271
- String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
272
- String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
273
- className
274
- ),
275
- captionLayout,
276
- formatters: {
277
- formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
278
- ...formatters
279
- },
280
- classNames: {
281
- root: cn("w-fit", defaultClassNames.root),
282
- months: cn(
283
- "flex gap-4 flex-col md:flex-row relative",
284
- defaultClassNames.months
285
- ),
286
- month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
287
- nav: cn(
288
- "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
289
- defaultClassNames.nav
290
- ),
291
- button_previous: cn(
292
- buttonVariants({ variant: buttonVariant }),
293
- "size-9 md:size-10 aria-disabled:opacity-50 p-0 select-none",
294
- defaultClassNames.button_previous
295
- ),
296
- button_next: cn(
297
- buttonVariants({ variant: buttonVariant }),
298
- "size-9 md:size-10 aria-disabled:opacity-50 p-0 select-none",
299
- defaultClassNames.button_next
300
- ),
301
- month_caption: cn(
302
- "flex items-center justify-center h-9 md:h-10 w-full px-9 md:px-10",
303
- defaultClassNames.month_caption
304
- ),
305
- dropdowns: cn(
306
- "w-full flex items-center text-sm font-medium justify-center h-9 md:h-10 gap-1.5",
307
- defaultClassNames.dropdowns
308
- ),
309
- dropdown_root: cn(
310
- "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
311
- defaultClassNames.dropdown_root
312
- ),
313
- dropdown: cn(
314
- "absolute bg-popover inset-0 opacity-0",
315
- defaultClassNames.dropdown
316
- ),
317
- caption_label: cn(
318
- "select-none font-medium",
319
- 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",
320
- defaultClassNames.caption_label
321
- ),
322
- table: "w-full border-collapse",
323
- weekdays: cn("flex", defaultClassNames.weekdays),
324
- weekday: cn(
325
- "text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",
326
- defaultClassNames.weekday
327
- ),
328
- week: cn("flex w-full mt-2", defaultClassNames.week),
329
- week_number_header: cn(
330
- "select-none w-9 md:w-10",
331
- defaultClassNames.week_number_header
332
- ),
333
- week_number: cn(
334
- "text-[0.8rem] select-none text-muted-foreground",
335
- defaultClassNames.week_number
336
- ),
337
- day: cn(
338
- "relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
339
- props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md",
340
- defaultClassNames.day
341
- ),
342
- range_start: cn(
343
- "rounded-l-md bg-accent",
344
- defaultClassNames.range_start
345
- ),
346
- range_middle: cn("rounded-none", defaultClassNames.range_middle),
347
- range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
348
- today: cn(
349
- "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
350
- defaultClassNames.today
351
- ),
352
- outside: cn(
353
- "text-muted-foreground aria-selected:text-muted-foreground",
354
- defaultClassNames.outside
355
- ),
356
- disabled: cn(
357
- "text-muted-foreground opacity-50",
358
- defaultClassNames.disabled
359
- ),
360
- hidden: cn("invisible", defaultClassNames.hidden),
361
- ...classNames
362
- },
363
- components: {
364
- Root: ({ className: className2, rootRef, ...props2 }) => {
365
- return /* @__PURE__ */ jsxRuntime.jsx(
366
- "div",
367
- {
368
- "data-slot": "calendar",
369
- ref: rootRef,
370
- className: cn(className2),
371
- ...props2
372
- }
373
- );
374
- },
375
- Chevron: ({ className: className2, orientation, ...props2 }) => {
376
- if (orientation === "left") {
377
- return /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
378
- }
379
- if (orientation === "right") {
380
- return /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: cn("size-4", className2), ...props2 });
381
- }
382
- return /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
383
- },
384
- DayButton: CalendarDayButton,
385
- WeekNumber: ({ children, ...props2 }) => {
386
- return /* @__PURE__ */ jsxRuntime.jsx("td", { ...props2, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-9 md:size-10 items-center justify-center text-center", children }) });
387
- },
388
- ...components
389
- },
390
- ...props
391
- }
392
- );
393
- }
394
- function CalendarDayButton({
395
- className,
396
- day,
397
- modifiers,
398
- ...props
399
- }) {
400
- const defaultClassNames = reactDayPicker.getDefaultClassNames();
401
- const ref = React20__namespace.useRef(null);
402
- React20__namespace.useEffect(() => {
403
- if (modifiers.focused) ref.current?.focus();
404
- }, [modifiers.focused]);
405
- return /* @__PURE__ */ jsxRuntime.jsx(
406
- Button,
407
- {
408
- ref,
409
- variant: uikitContracts.ButtonVariant.Ghost,
410
- size: uikitContracts.ButtonSize.Icon,
411
- "data-day": day.date.toLocaleDateString(),
412
- "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
413
- "data-range-start": modifiers.range_start,
414
- "data-range-end": modifiers.range_end,
415
- "data-range-middle": modifiers.range_middle,
416
- className: cn(
417
- "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-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-accent-foreground flex aspect-square size-auto w-full min-w-9 md:min-w-10 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",
418
- defaultClassNames.day,
419
- className
420
- ),
421
- ...props
422
- }
423
- );
424
- }
425
- var CheckIcon = ({ className = "" }) => {
426
- return /* @__PURE__ */ jsxRuntime.jsx(
427
- "svg",
428
- {
429
- className,
430
- width: "16",
431
- height: "16",
432
- viewBox: "0 0 24 24",
433
- fill: "none",
434
- stroke: "currentColor",
435
- strokeWidth: "2",
436
- strokeLinecap: "round",
437
- strokeLinejoin: "round",
438
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 6 9 17l-5-5" })
439
- }
440
- );
441
- };
442
- function Checkbox({
443
- className,
444
- ...props
445
- }) {
446
- return /* @__PURE__ */ jsxRuntime.jsx(
447
- CheckboxPrimitive__namespace.Root,
448
- {
449
- "data-slot": "checkbox",
450
- className: cn(
451
- "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-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
452
- className
453
- ),
454
- ...props,
455
- children: /* @__PURE__ */ jsxRuntime.jsx(
456
- CheckboxPrimitive__namespace.Indicator,
457
- {
458
- "data-slot": "checkbox-indicator",
459
- className: "grid place-content-center text-current transition-none",
460
- children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "size-3.5" })
461
- }
462
- )
463
- }
464
- );
465
- }
466
- var CircleIcon = ({ className = "" }) => {
467
- return /* @__PURE__ */ jsxRuntime.jsx(
468
- "svg",
469
- {
470
- className,
471
- width: "16",
472
- height: "16",
473
- viewBox: "0 0 24 24",
474
- fill: "none",
475
- stroke: "currentColor",
476
- strokeWidth: "2",
477
- strokeLinecap: "round",
478
- strokeLinejoin: "round",
479
- children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" })
480
- }
481
- );
482
- };
483
- function RadioGroup({
484
- className,
485
- ...props
486
- }) {
487
- return /* @__PURE__ */ jsxRuntime.jsx(
488
- RadioGroupPrimitive__namespace.Root,
489
- {
490
- "data-slot": "radio-group",
491
- className: cn("grid gap-3", className),
492
- ...props
493
- }
494
- );
495
- }
496
- function RadioGroupItem({
497
- className,
498
- ...props
499
- }) {
500
- return /* @__PURE__ */ jsxRuntime.jsx(
501
- RadioGroupPrimitive__namespace.Item,
502
- {
503
- "data-slot": "radio-group-item",
504
- className: cn(
505
- "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive 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",
506
- className
507
- ),
508
- ...props,
509
- children: /* @__PURE__ */ jsxRuntime.jsx(
510
- RadioGroupPrimitive__namespace.Indicator,
511
- {
512
- "data-slot": "radio-group-indicator",
513
- className: "relative flex items-center justify-center",
514
- children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, { className: "fill-current absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
515
- }
516
- )
517
- }
518
- );
519
- }
520
- function NativeSelect({ className, ...props }) {
521
- return /* @__PURE__ */ jsxRuntime.jsxs(
522
- "div",
523
- {
524
- className: "group/native-select relative w-fit has-[select:disabled]:opacity-50",
525
- "data-slot": "native-select-wrapper",
526
- children: [
527
- /* @__PURE__ */ jsxRuntime.jsx(
528
- "select",
529
- {
530
- "data-slot": "native-select",
531
- className: cn(
532
- "border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed",
533
- "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
534
- "aria-[invalid=true]:ring-2 aria-[invalid=true]:ring-destructive/30 aria-[invalid=true]:border-destructive",
535
- className
536
- ),
537
- ...props
538
- }
539
- ),
540
- /* @__PURE__ */ jsxRuntime.jsx(
541
- ChevronDownIcon,
542
- {
543
- className: "text-muted-foreground pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 opacity-50 select-none",
544
- "aria-hidden": "true",
545
- "data-slot": "native-select-icon"
546
- }
547
- )
548
- ]
549
- }
550
- );
551
- }
552
- function NativeSelectOption({ ...props }) {
553
- return /* @__PURE__ */ jsxRuntime.jsx("option", { "data-slot": "native-select-option", ...props });
554
- }
555
- function NativeSelectOptGroup({
556
- className,
557
- ...props
558
- }) {
559
- return /* @__PURE__ */ jsxRuntime.jsx(
560
- "optgroup",
561
- {
562
- "data-slot": "native-select-optgroup",
563
- className: cn(className),
564
- ...props
565
- }
566
- );
567
- }
568
- var MinusIcon = ({
569
- className = "",
570
- ...props
571
- }) => {
572
- return /* @__PURE__ */ jsxRuntime.jsx(
573
- "svg",
574
- {
575
- className,
576
- width: "16",
577
- height: "16",
578
- viewBox: "0 0 24 24",
579
- fill: "none",
580
- stroke: "currentColor",
581
- strokeWidth: "2",
582
- strokeLinecap: "round",
583
- strokeLinejoin: "round",
584
- ...props,
585
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12h14" })
586
- }
587
- );
588
- };
589
- function InputOTP({
590
- className,
591
- containerClassName,
592
- ...props
593
- }) {
594
- return /* @__PURE__ */ jsxRuntime.jsx(
595
- inputOtp.OTPInput,
596
- {
597
- "data-slot": "input-otp",
598
- containerClassName: cn(
599
- "flex items-center gap-2 has-disabled:opacity-50",
600
- containerClassName
601
- ),
602
- className: cn("disabled:cursor-not-allowed", className),
603
- ...props
604
- }
605
- );
606
- }
607
- function InputOTPGroup({ className, ...props }) {
608
- return /* @__PURE__ */ jsxRuntime.jsx(
609
- "div",
610
- {
611
- "data-slot": "input-otp-group",
612
- className: cn("flex items-center", className),
613
- ...props
614
- }
615
- );
616
- }
617
- function InputOTPSlot({
618
- index,
619
- className,
620
- ...props
621
- }) {
622
- const inputOTPContext = React20__namespace.useContext(inputOtp.OTPInputContext);
623
- const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
624
- return /* @__PURE__ */ jsxRuntime.jsxs(
625
- "div",
626
- {
627
- "data-slot": "input-otp-slot",
628
- "data-active": isActive,
629
- className: cn(
630
- "data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",
631
- className
632
- ),
633
- ...props,
634
- children: [
635
- char,
636
- hasFakeCaret && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
637
- ]
638
- }
639
- );
640
- }
641
- function InputOTPSeparator({ ...props }) {
642
- return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, {}) });
643
- }
644
- var Input = React20__namespace.forwardRef(
645
- ({ className, type, ...props }, ref) => {
646
- return /* @__PURE__ */ jsxRuntime.jsx(
647
- "input",
648
- {
649
- type,
650
- className: cn(
651
- "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
652
- className
653
- ),
654
- ref,
655
- ...props
656
- }
657
- );
658
- }
659
- );
660
- Input.displayName = "Input";
661
- function Label({
662
- className,
663
- ...props
664
- }) {
665
- return /* @__PURE__ */ jsxRuntime.jsx(
666
- LabelPrimitive__namespace.Root,
667
- {
668
- "data-slot": "label",
669
- className: cn(
670
- "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",
671
- className
672
- ),
673
- ...props
674
- }
675
- );
676
- }
677
- var Textarea = React20__namespace.forwardRef(
678
- ({ className, autoResize = false, minHeight = 50, maxHeight = 350, size = "default", onChange, ...props }, ref) => {
679
- const internalRef = React20__namespace.useRef(null);
680
- React20__namespace.useImperativeHandle(ref, () => internalRef.current);
681
- const sizeClasses = {
682
- sm: "min-h-11 h-11",
683
- // 44px / 2.75rem - exact height
684
- default: "min-h-[60px]",
685
- // 60px / 3.75rem
686
- lg: "min-h-20"
687
- // 80px / 5rem
688
- };
689
- const paddingClasses = {
690
- sm: "py-3",
691
- // 12px top + 12px bottom + 20px line-height = 44px
692
- default: "py-2",
693
- // 8px top + 8px bottom (default)
694
- lg: "py-2"
695
- // 8px top + 8px bottom (default)
696
- };
697
- const handleResize = React20__namespace.useCallback(() => {
698
- if (autoResize && size !== "sm" && internalRef.current) {
699
- const textarea = internalRef.current;
700
- textarea.style.height = "auto";
701
- const scrollHeight = textarea.scrollHeight;
702
- textarea.style.height = `${Math.min(Math.max(scrollHeight, minHeight), maxHeight)}px`;
703
- }
704
- }, [autoResize, size, minHeight, maxHeight]);
705
- React20__namespace.useEffect(() => {
706
- handleResize();
707
- }, [handleResize, props.value]);
708
- const handleChange = React20__namespace.useCallback(
709
- (e) => {
710
- handleResize();
711
- onChange?.(e);
712
- },
713
- [onChange, handleResize]
714
- );
715
- return /* @__PURE__ */ jsxRuntime.jsx(
716
- "textarea",
717
- {
718
- className: cn(
719
- "flex w-full rounded-md border border-input bg-transparent px-3 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
720
- sizeClasses[size],
721
- paddingClasses[size],
722
- className
723
- ),
724
- ref: internalRef,
725
- onChange: handleChange,
726
- ...props
727
- }
728
- );
729
- }
730
- );
731
- Textarea.displayName = "Textarea";
732
- var Switch = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
733
- SwitchPrimitives__namespace.Root,
734
- {
735
- className: cn(
736
- "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
737
- className
738
- ),
739
- ...props,
740
- ref,
741
- children: /* @__PURE__ */ jsxRuntime.jsx(
742
- SwitchPrimitives__namespace.Thumb,
743
- {
744
- className: cn(
745
- "pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform",
746
- "data-[state=checked]:ltr:translate-x-4 data-[state=checked]:rtl:-translate-x-4",
747
- "data-[state=unchecked]:translate-x-0"
748
- )
749
- }
750
- )
751
- }
752
- ));
753
- Switch.displayName = SwitchPrimitives__namespace.Root.displayName;
754
- function Skeleton({
755
- className,
756
- inheritColor = false,
757
- ...props
758
- }) {
759
- return /* @__PURE__ */ jsxRuntime.jsx(
760
- "div",
761
- {
762
- className: cn(
763
- "animate-pulse rounded-md",
764
- inheritColor ? "bg-current opacity-20" : "bg-muted",
765
- className
766
- ),
767
- ...props
768
- }
769
- );
770
- }
771
- var Spinner = React20__namespace.forwardRef(
772
- ({ className, icon: Icon2 = lucideReact.Loader2, size = "size-4", ...props }, ref) => {
773
- const textColorClasses = className?.match(/\btext-\S+/g)?.join(" ") || "";
774
- const wrapperClasses = lodash.trim(className?.replace(/\btext-\S+/g, "") || "");
775
- return /* @__PURE__ */ jsxRuntime.jsx(
776
- "div",
777
- {
778
- ref,
779
- className: cn("inline-flex items-center justify-center", wrapperClasses),
780
- ...props,
781
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: cn("animate-spin", size, textColorClasses) })
782
- }
783
- );
784
- }
785
- );
786
- Spinner.displayName = "Spinner";
787
- var Slider = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
788
- SliderPrimitive__namespace.Root,
789
- {
790
- ref,
791
- className: cn(
792
- "relative flex w-full touch-none select-none items-center",
793
- className
794
- ),
795
- ...props
796
- }
797
- ));
798
- Slider.displayName = SliderPrimitive__namespace.Root.displayName;
799
- var SliderTrack = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
800
- SliderPrimitive__namespace.Track,
801
- {
802
- ref,
803
- className: cn(
804
- "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",
805
- className
806
- ),
807
- ...props
808
- }
809
- ));
810
- SliderTrack.displayName = SliderPrimitive__namespace.Track.displayName;
811
- var SliderRange = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
812
- SliderPrimitive__namespace.Range,
813
- {
814
- ref,
815
- className: cn("absolute h-full bg-primary", className),
816
- ...props
817
- }
818
- ));
819
- SliderRange.displayName = SliderPrimitive__namespace.Range.displayName;
820
- var SliderThumb = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
821
- SliderPrimitive__namespace.Thumb,
822
- {
823
- ref,
824
- className: cn(
825
- "block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
826
- className
827
- ),
828
- ...props
829
- }
830
- ));
831
- SliderThumb.displayName = SliderPrimitive__namespace.Thumb.displayName;
832
- var Progress = React20__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
833
- ProgressPrimitive__namespace.Root,
834
- {
835
- ref,
836
- className: cn(
837
- "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
838
- className
839
- ),
840
- ...props,
841
- children: /* @__PURE__ */ jsxRuntime.jsx(
842
- ProgressPrimitive__namespace.Indicator,
843
- {
844
- className: "h-full w-full flex-1 bg-primary transition-all",
845
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
846
- }
847
- )
848
- }
849
- ));
850
- Progress.displayName = ProgressPrimitive__namespace.Root.displayName;
851
- var TooltipProvider = ({
852
- delayDuration = 0,
853
- ...props
854
- }) => /* @__PURE__ */ jsxRuntime.jsx(
855
- TooltipPrimitive__namespace.Provider,
856
- {
857
- delayDuration,
858
- ...props
859
- }
860
- );
861
- TooltipProvider.displayName = TooltipPrimitive__namespace.Provider.displayName;
862
- var Tooltip = ({
863
- ...props
864
- }) => /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, { ...props }) });
865
- Tooltip.displayName = TooltipPrimitive__namespace.Root.displayName;
866
- var TooltipTrigger = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, { ref, ...props }));
867
- TooltipTrigger.displayName = TooltipPrimitive__namespace.Trigger.displayName;
868
- var TooltipContent = React20__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
869
- TooltipPrimitive__namespace.Content,
870
- {
871
- ref,
872
- sideOffset,
873
- className: cn(
874
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground 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",
875
- className
876
- ),
877
- ...props
878
- }
879
- ) }));
880
- TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
881
- var Popover = PopoverPrimitive__namespace.Root;
882
- Popover.displayName = "Popover";
883
- var PopoverTrigger = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
884
- PopoverPrimitive__namespace.Trigger,
885
- {
886
- ref,
887
- "data-slot": "popover-trigger",
888
- ...props
889
- }
890
- ));
891
- PopoverTrigger.displayName = "PopoverTrigger";
892
- var PopoverContent = React20__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
893
- PopoverPrimitive__namespace.Content,
894
- {
895
- ref,
896
- "data-slot": "popover-content",
897
- align,
898
- sideOffset,
899
- className: cn(
900
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden 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",
901
- className
902
- ),
903
- ...props
904
- }
905
- ) }));
906
- PopoverContent.displayName = "PopoverContent";
907
- var PopoverAnchor = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
908
- PopoverPrimitive__namespace.Anchor,
909
- {
910
- ref,
911
- "data-slot": "popover-anchor",
912
- ...props
913
- }
914
- ));
915
- PopoverAnchor.displayName = "PopoverAnchor";
916
- var HoverCard = HoverCardPrimitive__namespace.Root;
917
- HoverCard.displayName = "HoverCard";
918
- var HoverCardTrigger = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
919
- HoverCardPrimitive__namespace.Trigger,
920
- {
921
- ref,
922
- "data-slot": "hover-card-trigger",
923
- ...props
924
- }
925
- ));
926
- HoverCardTrigger.displayName = "HoverCardTrigger";
927
- var HoverCardContent = React20__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsxRuntime.jsx(
928
- HoverCardPrimitive__namespace.Content,
929
- {
930
- ref,
931
- "data-slot": "hover-card-content",
932
- align,
933
- sideOffset,
934
- className: cn(
935
- "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden 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",
936
- className
937
- ),
938
- ...props
939
- }
940
- ) }));
941
- HoverCardContent.displayName = "HoverCardContent";
942
- var Card = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
943
- "div",
944
- {
945
- ref,
946
- className: cn(
947
- "rounded-xl border bg-card text-card-foreground shadow",
948
- className
949
- ),
950
- ...props
951
- }
952
- ));
953
- Card.displayName = "Card";
954
- var CardHeader = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
955
- "div",
956
- {
957
- ref,
958
- className: cn("flex flex-col space-y-1.5 p-6", className),
959
- ...props
960
- }
961
- ));
962
- CardHeader.displayName = "CardHeader";
963
- var CardTitle = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
964
- "div",
965
- {
966
- ref,
967
- className: cn("font-semibold leading-none tracking-tight", className),
968
- ...props
969
- }
970
- ));
971
- CardTitle.displayName = "CardTitle";
972
- var CardDescription = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
973
- "div",
974
- {
975
- ref,
976
- className: cn("text-sm text-muted-foreground", className),
977
- ...props
978
- }
979
- ));
980
- CardDescription.displayName = "CardDescription";
981
- var CardContent = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
982
- CardContent.displayName = "CardContent";
983
- var CardFooter = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
984
- "div",
985
- {
986
- ref,
987
- className: cn("flex items-center p-6 pt-0", className),
988
- ...props
989
- }
990
- ));
991
- CardFooter.displayName = "CardFooter";
992
- var Header = React20__namespace.default.forwardRef(
993
- ({ children, className }, ref) => {
994
- return /* @__PURE__ */ jsxRuntime.jsx(
995
- "header",
996
- {
997
- ref,
998
- className: cn(
999
- "flex items-center justify-end px-6 py-4 bg-background border-b border-border h-16 w-full",
1000
- className
1001
- ),
1002
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-4", children })
1003
- }
1004
- );
1005
- }
1006
- );
1007
- Header.displayName = "Header";
1008
- var NavigationMenu = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1009
- NavigationMenuPrimitive__namespace.Root,
1010
- {
1011
- ref,
1012
- className: cn(
1013
- "relative z-10 flex max-w-max flex-1 items-center justify-center",
1014
- className
1015
- ),
1016
- ...props,
1017
- children: [
1018
- children,
1019
- /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuViewport, {})
1020
- ]
1021
- }
1022
- ));
1023
- NavigationMenu.displayName = NavigationMenuPrimitive__namespace.Root.displayName;
1024
- var NavigationMenuList = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1025
- NavigationMenuPrimitive__namespace.List,
1026
- {
1027
- ref,
1028
- className: cn(
1029
- "group flex flex-1 list-none items-center justify-center space-x-1",
1030
- className
1031
- ),
1032
- ...props
1033
- }
1034
- ));
1035
- NavigationMenuList.displayName = NavigationMenuPrimitive__namespace.List.displayName;
1036
- var NavigationMenuItem = NavigationMenuPrimitive__namespace.Item;
1037
- var navigationMenuTriggerStyle = classVarianceAuthority.cva(
1038
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
1039
- );
1040
- var NavigationMenuTrigger = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1041
- NavigationMenuPrimitive__namespace.Trigger,
1042
- {
1043
- ref,
1044
- className: cn(navigationMenuTriggerStyle(), "group", className),
1045
- ...props,
1046
- children: [
1047
- children,
1048
- " ",
1049
- /* @__PURE__ */ jsxRuntime.jsx(
1050
- ChevronDownIcon,
1051
- {
1052
- className: "relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180",
1053
- "aria-hidden": "true"
1054
- }
1055
- )
1056
- ]
1057
- }
1058
- ));
1059
- NavigationMenuTrigger.displayName = NavigationMenuPrimitive__namespace.Trigger.displayName;
1060
- var NavigationMenuContent = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1061
- NavigationMenuPrimitive__namespace.Content,
1062
- {
1063
- ref,
1064
- className: cn(
1065
- "left-0 top-0 w-full 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 md:absolute md:w-auto ",
1066
- className
1067
- ),
1068
- ...props
1069
- }
1070
- ));
1071
- NavigationMenuContent.displayName = NavigationMenuPrimitive__namespace.Content.displayName;
1072
- var NavigationMenuLink = NavigationMenuPrimitive__namespace.Link;
1073
- var NavigationMenuViewport = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsxRuntime.jsx(
1074
- NavigationMenuPrimitive__namespace.Viewport,
1075
- {
1076
- className: cn(
1077
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
1078
- className
1079
- ),
1080
- ref,
1081
- ...props
1082
- }
1083
- ) }));
1084
- NavigationMenuViewport.displayName = NavigationMenuPrimitive__namespace.Viewport.displayName;
1085
- var NavigationMenuIndicator = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1086
- NavigationMenuPrimitive__namespace.Indicator,
1087
- {
1088
- ref,
1089
- className: cn(
1090
- "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
1091
- className
1092
- ),
1093
- ...props,
1094
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
1095
- }
1096
- ));
1097
- NavigationMenuIndicator.displayName = NavigationMenuPrimitive__namespace.Indicator.displayName;
1098
- function Breadcrumb({ ...props }) {
1099
- return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
1100
- }
1101
- function BreadcrumbList({ className, ...props }) {
1102
- return /* @__PURE__ */ jsxRuntime.jsx(
1103
- "ol",
1104
- {
1105
- "data-slot": "breadcrumb-list",
1106
- className: cn(
1107
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
1108
- className
1109
- ),
1110
- ...props
1111
- }
1112
- );
1113
- }
1114
- function BreadcrumbItem({ className, ...props }) {
1115
- return /* @__PURE__ */ jsxRuntime.jsx(
1116
- "li",
1117
- {
1118
- "data-slot": "breadcrumb-item",
1119
- className: cn("inline-flex items-center gap-1.5", className),
1120
- ...props
1121
- }
1122
- );
1123
- }
1124
- function BreadcrumbLink({
1125
- asChild,
1126
- className,
1127
- ...props
1128
- }) {
1129
- const Comp = asChild ? reactSlot.Slot : "a";
1130
- return /* @__PURE__ */ jsxRuntime.jsx(
1131
- Comp,
1132
- {
1133
- "data-slot": "breadcrumb-link",
1134
- className: cn("hover:text-foreground transition-colors", className),
1135
- ...props
1136
- }
1137
- );
1138
- }
1139
- function BreadcrumbPage({ className, ...props }) {
1140
- return /* @__PURE__ */ jsxRuntime.jsx(
1141
- "span",
1142
- {
1143
- "data-slot": "breadcrumb-page",
1144
- role: "link",
1145
- "aria-disabled": "true",
1146
- "aria-current": "page",
1147
- className: cn("text-foreground font-normal", className),
1148
- ...props
1149
- }
1150
- );
1151
- }
1152
- function BreadcrumbSeparator({
1153
- children,
1154
- className,
1155
- ...props
1156
- }) {
1157
- return /* @__PURE__ */ jsxRuntime.jsx(
1158
- "li",
1159
- {
1160
- "data-slot": "breadcrumb-separator",
1161
- role: "presentation",
1162
- "aria-hidden": "true",
1163
- className: cn("[&>svg]:size-3.5", className),
1164
- ...props,
1165
- children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
1166
- }
1167
- );
1168
- }
1169
- function BreadcrumbEllipsis({
1170
- className,
1171
- ...props
1172
- }) {
1173
- return /* @__PURE__ */ jsxRuntime.jsxs(
1174
- "span",
1175
- {
1176
- "data-slot": "breadcrumb-ellipsis",
1177
- role: "presentation",
1178
- "aria-hidden": "true",
1179
- className: cn("flex size-9 items-center justify-center", className),
1180
- ...props,
1181
- children: [
1182
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" }),
1183
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More" })
1184
- ]
1185
- }
1186
- );
1187
- }
1188
- function Menubar({
1189
- className,
1190
- ...props
1191
- }) {
1192
- return /* @__PURE__ */ jsxRuntime.jsx(
1193
- MenubarPrimitive__namespace.Root,
1194
- {
1195
- "data-slot": "menubar",
1196
- className: cn(
1197
- "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
1198
- className
1199
- ),
1200
- ...props
1201
- }
1202
- );
1203
- }
1204
- function MenubarMenu({
1205
- ...props
1206
- }) {
1207
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Menu, { "data-slot": "menubar-menu", ...props });
1208
- }
1209
- function MenubarGroup({
1210
- ...props
1211
- }) {
1212
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Group, { "data-slot": "menubar-group", ...props });
1213
- }
1214
- function MenubarPortal({
1215
- ...props
1216
- }) {
1217
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { "data-slot": "menubar-portal", ...props });
1218
- }
1219
- function MenubarRadioGroup({
1220
- ...props
1221
- }) {
1222
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
1223
- }
1224
- function MenubarTrigger({
1225
- className,
1226
- ...props
1227
- }) {
1228
- return /* @__PURE__ */ jsxRuntime.jsx(
1229
- MenubarPrimitive__namespace.Trigger,
1230
- {
1231
- "data-slot": "menubar-trigger",
1232
- className: cn(
1233
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
1234
- className
1235
- ),
1236
- ...props
1237
- }
1238
- );
1239
- }
1240
- function MenubarContent({
1241
- className,
1242
- align = "start",
1243
- alignOffset = -4,
1244
- sideOffset = 8,
1245
- ...props
1246
- }) {
1247
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
1248
- MenubarPrimitive__namespace.Content,
1249
- {
1250
- "data-slot": "menubar-content",
1251
- align,
1252
- alignOffset,
1253
- sideOffset,
1254
- className: cn(
1255
- "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",
1256
- className
1257
- ),
1258
- ...props
1259
- }
1260
- ) });
1261
- }
1262
- function MenubarItem({
1263
- className,
1264
- inset,
1265
- variant = "default",
1266
- ...props
1267
- }) {
1268
- return /* @__PURE__ */ jsxRuntime.jsx(
1269
- MenubarPrimitive__namespace.Item,
1270
- {
1271
- "data-slot": "menubar-item",
1272
- "data-inset": inset,
1273
- "data-variant": variant,
1274
- className: cn(
1275
- "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_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",
1276
- className
1277
- ),
1278
- ...props
1279
- }
1280
- );
1281
- }
1282
- function MenubarCheckboxItem({
1283
- className,
1284
- children,
1285
- checked,
1286
- ...props
1287
- }) {
1288
- return /* @__PURE__ */ jsxRuntime.jsxs(
1289
- MenubarPrimitive__namespace.CheckboxItem,
1290
- {
1291
- "data-slot": "menubar-checkbox-item",
1292
- className: cn(
1293
- "focus:bg-accent focus:text-accent-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",
1294
- className
1295
- ),
1296
- checked,
1297
- ...props,
1298
- children: [
1299
- /* @__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(CheckIcon, { className: "size-4" }) }) }),
1300
- children
1301
- ]
1302
- }
1303
- );
1304
- }
1305
- function MenubarRadioItem({
1306
- className,
1307
- children,
1308
- ...props
1309
- }) {
1310
- return /* @__PURE__ */ jsxRuntime.jsxs(
1311
- MenubarPrimitive__namespace.RadioItem,
1312
- {
1313
- "data-slot": "menubar-radio-item",
1314
- className: cn(
1315
- "focus:bg-accent focus:text-accent-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",
1316
- className
1317
- ),
1318
- ...props,
1319
- children: [
1320
- /* @__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(CircleIcon, { className: "size-2 fill-current" }) }) }),
1321
- children
1322
- ]
1323
- }
1324
- );
1325
- }
1326
- function MenubarLabel({
1327
- className,
1328
- inset,
1329
- ...props
1330
- }) {
1331
- return /* @__PURE__ */ jsxRuntime.jsx(
1332
- MenubarPrimitive__namespace.Label,
1333
- {
1334
- "data-slot": "menubar-label",
1335
- "data-inset": inset,
1336
- className: cn(
1337
- "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
1338
- className
1339
- ),
1340
- ...props
1341
- }
1342
- );
1343
- }
1344
- function MenubarSeparator({
1345
- className,
1346
- ...props
1347
- }) {
1348
- return /* @__PURE__ */ jsxRuntime.jsx(
1349
- MenubarPrimitive__namespace.Separator,
1350
- {
1351
- "data-slot": "menubar-separator",
1352
- className: cn("bg-border -mx-1 my-1 h-px", className),
1353
- ...props
1354
- }
1355
- );
1356
- }
1357
- function MenubarShortcut({
1358
- className,
1359
- ...props
1360
- }) {
1361
- return /* @__PURE__ */ jsxRuntime.jsx(
1362
- "span",
1363
- {
1364
- "data-slot": "menubar-shortcut",
1365
- className: cn(
1366
- "text-muted-foreground ml-auto text-xs tracking-widest",
1367
- className
1368
- ),
1369
- ...props
1370
- }
1371
- );
1372
- }
1373
- function MenubarSub({
1374
- ...props
1375
- }) {
1376
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Sub, { "data-slot": "menubar-sub", ...props });
1377
- }
1378
- function MenubarSubTrigger({
1379
- className,
1380
- inset,
1381
- children,
1382
- ...props
1383
- }) {
1384
- return /* @__PURE__ */ jsxRuntime.jsxs(
1385
- MenubarPrimitive__namespace.SubTrigger,
1386
- {
1387
- "data-slot": "menubar-sub-trigger",
1388
- "data-inset": inset,
1389
- className: cn(
1390
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8",
1391
- className
1392
- ),
1393
- ...props,
1394
- children: [
1395
- children,
1396
- /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })
1397
- ]
1398
- }
1399
- );
1400
- }
1401
- function MenubarSubContent({
1402
- className,
1403
- ...props
1404
- }) {
1405
- return /* @__PURE__ */ jsxRuntime.jsx(
1406
- MenubarPrimitive__namespace.SubContent,
1407
- {
1408
- "data-slot": "menubar-sub-content",
1409
- className: cn(
1410
- "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",
1411
- className
1412
- ),
1413
- ...props
1414
- }
1415
- );
1416
- }
1417
- var MoreHorizontalIcon = ({ className = "" }) => {
1418
- return /* @__PURE__ */ jsxRuntime.jsxs(
1419
- "svg",
1420
- {
1421
- className,
1422
- width: "16",
1423
- height: "16",
1424
- viewBox: "0 0 24 24",
1425
- fill: "none",
1426
- stroke: "currentColor",
1427
- strokeWidth: "2",
1428
- strokeLinecap: "round",
1429
- strokeLinejoin: "round",
1430
- children: [
1431
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "1" }),
1432
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "12", r: "1" }),
1433
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "12", r: "1" })
1434
- ]
1435
- }
1436
- );
1437
- };
1438
- function Pagination({ className, ...props }) {
1439
- return /* @__PURE__ */ jsxRuntime.jsx(
1440
- "nav",
1441
- {
1442
- role: "navigation",
1443
- "aria-label": "pagination",
1444
- "data-slot": "pagination",
1445
- className: cn("mx-auto flex w-full justify-center", className),
1446
- ...props
1447
- }
1448
- );
1449
- }
1450
- function PaginationContent({
1451
- className,
1452
- ...props
1453
- }) {
1454
- return /* @__PURE__ */ jsxRuntime.jsx(
1455
- "ul",
1456
- {
1457
- "data-slot": "pagination-content",
1458
- className: cn("flex flex-row items-center gap-1", className),
1459
- ...props
1460
- }
1461
- );
1462
- }
1463
- function PaginationItem({ ...props }) {
1464
- return /* @__PURE__ */ jsxRuntime.jsx("li", { "data-slot": "pagination-item", ...props });
1465
- }
1466
- function PaginationLink({
1467
- className,
1468
- isActive,
1469
- size = uikitContracts.ButtonSize.Icon,
1470
- asChild,
1471
- ...props
1472
- }) {
1473
- const Comp = asChild ? reactSlot.Slot : "a";
1474
- return /* @__PURE__ */ jsxRuntime.jsx(
1475
- Comp,
1476
- {
1477
- "aria-current": isActive ? "page" : void 0,
1478
- "data-slot": "pagination-link",
1479
- "data-active": isActive,
1480
- className: cn(
1481
- buttonVariants({
1482
- variant: isActive ? uikitContracts.ButtonVariant.Outline : uikitContracts.ButtonVariant.Ghost,
1483
- size
1484
- }),
1485
- className
1486
- ),
1487
- ...props
1488
- }
1489
- );
1490
- }
1491
- function PaginationPrevious({
1492
- className,
1493
- children,
1494
- ...props
1495
- }) {
1496
- return /* @__PURE__ */ jsxRuntime.jsxs(
1497
- PaginationLink,
1498
- {
1499
- "aria-label": "Go to previous page",
1500
- size: uikitContracts.ButtonSize.Default,
1501
- className: cn("gap-1 px-2.5 sm:pl-2.5", className),
1502
- ...props,
1503
- children: [
1504
- /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { className: "h-4 w-4" }),
1505
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:block", children: children ?? "Previous" })
1506
- ]
1507
- }
1508
- );
1509
- }
1510
- function PaginationNext({
1511
- className,
1512
- children,
1513
- ...props
1514
- }) {
1515
- return /* @__PURE__ */ jsxRuntime.jsxs(
1516
- PaginationLink,
1517
- {
1518
- "aria-label": "Go to next page",
1519
- size: uikitContracts.ButtonSize.Default,
1520
- className: cn("gap-1 px-2.5 sm:pr-2.5", className),
1521
- ...props,
1522
- children: [
1523
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:block", children: children ?? "Next" }),
1524
- /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: "h-4 w-4" })
1525
- ]
1526
- }
1527
- );
1528
- }
1529
- function PaginationEllipsis({
1530
- className,
1531
- ...props
1532
- }) {
1533
- return /* @__PURE__ */ jsxRuntime.jsxs(
1534
- "span",
1535
- {
1536
- "aria-hidden": true,
1537
- "data-slot": "pagination-ellipsis",
1538
- className: cn("flex size-9 items-center justify-center", className),
1539
- ...props,
1540
- children: [
1541
- /* @__PURE__ */ jsxRuntime.jsx(MoreHorizontalIcon, { className: "h-4 w-4" }),
1542
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More pages" })
1543
- ]
1544
- }
1545
- );
1546
- }
1547
- function Tabs({
1548
- className,
1549
- ...props
1550
- }) {
1551
- return /* @__PURE__ */ jsxRuntime.jsx(
1552
- TabsPrimitive__namespace.Root,
1553
- {
1554
- "data-slot": "tabs",
1555
- className: cn("flex flex-col gap-2", className),
1556
- ...props
1557
- }
1558
- );
1559
- }
1560
- function TabsList({
1561
- className,
1562
- ...props
1563
- }) {
1564
- return /* @__PURE__ */ jsxRuntime.jsx(
1565
- TabsPrimitive__namespace.List,
1566
- {
1567
- "data-slot": "tabs-list",
1568
- className: cn(
1569
- "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
1570
- className
1571
- ),
1572
- ...props
1573
- }
1574
- );
1575
- }
1576
- function TabsTrigger({
1577
- className,
1578
- ...props
1579
- }) {
1580
- return /* @__PURE__ */ jsxRuntime.jsx(
1581
- TabsPrimitive__namespace.Trigger,
1582
- {
1583
- "data-slot": "tabs-trigger",
1584
- className: cn(
1585
- "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",
1586
- className
1587
- ),
1588
- ...props
1589
- }
1590
- );
1591
- }
1592
- function TabsContent({
1593
- className,
1594
- ...props
1595
- }) {
1596
- return /* @__PURE__ */ jsxRuntime.jsx(
1597
- TabsPrimitive__namespace.Content,
1598
- {
1599
- "data-slot": "tabs-content",
1600
- className: cn("flex-1 outline-none", className),
1601
- ...props
1602
- }
1603
- );
1604
- }
1605
- var Sheet = SheetPrimitive__namespace.Root;
1606
- var SheetTrigger = SheetPrimitive__namespace.Trigger;
1607
- var SheetClose = SheetPrimitive__namespace.Close;
1608
- var SheetPortal = SheetPrimitive__namespace.Portal;
1609
- var SheetOverlay = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1610
- SheetPrimitive__namespace.Overlay,
1611
- {
1612
- className: cn(
1613
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1614
- className
1615
- ),
1616
- ...props,
1617
- ref
1618
- }
1619
- ));
1620
- SheetOverlay.displayName = SheetPrimitive__namespace.Overlay.displayName;
1621
- var sheetVariants = classVarianceAuthority.cva(
1622
- "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
1623
- {
1624
- variants: {
1625
- side: {
1626
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1627
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1628
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
1629
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
1630
- }
1631
- },
1632
- defaultVariants: {
1633
- side: "right"
1634
- }
1635
- }
1636
- );
1637
- var SheetContent = React20__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
1638
- /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
1639
- /* @__PURE__ */ jsxRuntime.jsxs(
1640
- SheetPrimitive__namespace.Content,
1641
- {
1642
- ref,
1643
- className: cn(sheetVariants({ side }), className),
1644
- ...props,
1645
- children: [
1646
- /* @__PURE__ */ jsxRuntime.jsxs(SheetPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1647
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
1648
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1649
- ] }),
1650
- children
1651
- ]
1652
- }
1653
- )
1654
- ] }));
1655
- SheetContent.displayName = SheetPrimitive__namespace.Content.displayName;
1656
- var SheetHeader = ({
1657
- className,
1658
- ...props
1659
- }) => /* @__PURE__ */ jsxRuntime.jsx(
1660
- "div",
1661
- {
1662
- className: cn(
1663
- "flex flex-col space-y-2 text-center sm:text-left",
1664
- className
1665
- ),
1666
- ...props
1667
- }
1668
- );
1669
- SheetHeader.displayName = "SheetHeader";
1670
- var SheetFooter = ({
1671
- className,
1672
- ...props
1673
- }) => /* @__PURE__ */ jsxRuntime.jsx(
1674
- "div",
1675
- {
1676
- className: cn(
1677
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1678
- className
1679
- ),
1680
- ...props
1681
- }
1682
- );
1683
- SheetFooter.displayName = "SheetFooter";
1684
- var SheetTitle = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1685
- SheetPrimitive__namespace.Title,
1686
- {
1687
- ref,
1688
- className: cn("text-lg font-semibold text-foreground", className),
1689
- ...props
1690
- }
1691
- ));
1692
- SheetTitle.displayName = SheetPrimitive__namespace.Title.displayName;
1693
- var SheetDescription = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1694
- SheetPrimitive__namespace.Description,
1695
- {
1696
- ref,
1697
- className: cn("text-sm text-muted-foreground", className),
1698
- ...props
1699
- }
1700
- ));
1701
- SheetDescription.displayName = SheetPrimitive__namespace.Description.displayName;
1702
- var Dialog = SheetPrimitive__namespace.Root;
1703
- var DialogTrigger = SheetPrimitive__namespace.Trigger;
1704
- var DialogPortal = SheetPrimitive__namespace.Portal;
1705
- var DialogClose = SheetPrimitive__namespace.Close;
1706
- var DialogOverlay = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1707
- SheetPrimitive__namespace.Overlay,
1708
- {
1709
- ref,
1710
- className: cn(
1711
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1712
- className
1713
- ),
1714
- ...props
1715
- }
1716
- ));
1717
- DialogOverlay.displayName = SheetPrimitive__namespace.Overlay.displayName;
1718
- var DialogContent = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
1719
- /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
1720
- /* @__PURE__ */ jsxRuntime.jsxs(
1721
- SheetPrimitive__namespace.Content,
1722
- {
1723
- ref,
1724
- className: cn(
1725
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
1726
- className
1727
- ),
1728
- ...props,
1729
- children: [
1730
- children,
1731
- /* @__PURE__ */ jsxRuntime.jsxs(SheetPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
1732
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
1733
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1734
- ] })
1735
- ]
1736
- }
1737
- )
1738
- ] }));
1739
- DialogContent.displayName = SheetPrimitive__namespace.Content.displayName;
1740
- var DialogHeader = ({
1741
- className,
1742
- ...props
1743
- }) => /* @__PURE__ */ jsxRuntime.jsx(
1744
- "div",
1745
- {
1746
- className: cn(
1747
- "flex flex-col space-y-1.5 text-center sm:text-left",
1748
- className
1749
- ),
1750
- ...props
1751
- }
1752
- );
1753
- DialogHeader.displayName = "DialogHeader";
1754
- var DialogFooter = ({
1755
- className,
1756
- ...props
1757
- }) => /* @__PURE__ */ jsxRuntime.jsx(
1758
- "div",
1759
- {
1760
- className: cn(
1761
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1762
- className
1763
- ),
1764
- ...props
1765
- }
1766
- );
1767
- DialogFooter.displayName = "DialogFooter";
1768
- var DialogTitle = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1769
- SheetPrimitive__namespace.Title,
1770
- {
1771
- ref,
1772
- className: cn(
1773
- "text-lg font-semibold leading-none tracking-tight",
1774
- className
1775
- ),
1776
- ...props
1777
- }
1778
- ));
1779
- DialogTitle.displayName = SheetPrimitive__namespace.Title.displayName;
1780
- var DialogDescription = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1781
- SheetPrimitive__namespace.Description,
1782
- {
1783
- ref,
1784
- className: cn("text-sm text-muted-foreground", className),
1785
- ...props
1786
- }
1787
- ));
1788
- DialogDescription.displayName = SheetPrimitive__namespace.Description.displayName;
1789
- function Drawer({
1790
- ...props
1791
- }) {
1792
- return /* @__PURE__ */ jsxRuntime.jsx(vaul.Drawer.Root, { "data-slot": "drawer", ...props });
1793
- }
1794
- function DrawerTrigger({
1795
- ...props
1796
- }) {
1797
- return /* @__PURE__ */ jsxRuntime.jsx(vaul.Drawer.Trigger, { "data-slot": "drawer-trigger", ...props });
1798
- }
1799
- function DrawerPortal({
1800
- ...props
1801
- }) {
1802
- return /* @__PURE__ */ jsxRuntime.jsx(vaul.Drawer.Portal, { "data-slot": "drawer-portal", ...props });
1803
- }
1804
- function DrawerClose({
1805
- ...props
1806
- }) {
1807
- return /* @__PURE__ */ jsxRuntime.jsx(vaul.Drawer.Close, { "data-slot": "drawer-close", ...props });
1808
- }
1809
- function DrawerOverlay({
1810
- className,
1811
- ...props
1812
- }) {
1813
- return /* @__PURE__ */ jsxRuntime.jsx(
1814
- vaul.Drawer.Overlay,
1815
- {
1816
- "data-slot": "drawer-overlay",
1817
- className: cn(
1818
- "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",
1819
- className
1820
- ),
1821
- ...props
1822
- }
1823
- );
1824
- }
1825
- function DrawerContent({
1826
- className,
1827
- children,
1828
- ...props
1829
- }) {
1830
- return /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
1831
- /* @__PURE__ */ jsxRuntime.jsx(DrawerOverlay, {}),
1832
- /* @__PURE__ */ jsxRuntime.jsxs(
1833
- vaul.Drawer.Content,
1834
- {
1835
- "data-slot": "drawer-content",
1836
- className: cn(
1837
- "group/drawer-content bg-background fixed z-50 flex h-auto flex-col",
1838
- "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
1839
- "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
1840
- "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
1841
- "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",
1842
- className
1843
- ),
1844
- ...props,
1845
- children: [
1846
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
1847
- children
1848
- ]
1849
- }
1850
- )
1851
- ] });
1852
- }
1853
- function DrawerHeader({ className, ...props }) {
1854
- return /* @__PURE__ */ jsxRuntime.jsx(
1855
- "div",
1856
- {
1857
- "data-slot": "drawer-header",
1858
- className: cn(
1859
- "flex flex-col gap-1.5 p-4 text-center sm:text-left",
1860
- className
1861
- ),
1862
- ...props
1863
- }
1864
- );
1865
- }
1866
- function DrawerFooter({ className, ...props }) {
1867
- return /* @__PURE__ */ jsxRuntime.jsx(
1868
- "div",
1869
- {
1870
- "data-slot": "drawer-footer",
1871
- className: cn("mt-auto flex flex-col gap-2 p-4", className),
1872
- ...props
1873
- }
1874
- );
1875
- }
1876
- function DrawerTitle({
1877
- className,
1878
- ...props
1879
- }) {
1880
- return /* @__PURE__ */ jsxRuntime.jsx(
1881
- vaul.Drawer.Title,
1882
- {
1883
- "data-slot": "drawer-title",
1884
- className: cn("text-lg font-semibold text-foreground", className),
1885
- ...props
1886
- }
1887
- );
1888
- }
1889
- function DrawerDescription({
1890
- className,
1891
- ...props
1892
- }) {
1893
- return /* @__PURE__ */ jsxRuntime.jsx(
1894
- vaul.Drawer.Description,
1895
- {
1896
- "data-slot": "drawer-description",
1897
- className: cn("text-sm text-muted-foreground", className),
1898
- ...props
1899
- }
1900
- );
1901
- }
1902
- function ResizablePanelGroup({
1903
- className,
1904
- ...props
1905
- }) {
1906
- return /* @__PURE__ */ jsxRuntime.jsx(
1907
- ResizablePrimitive__namespace.PanelGroup,
1908
- {
1909
- "data-slot": "resizable-panel-group",
1910
- className: cn(
1911
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
1912
- className
1913
- ),
1914
- ...props
1915
- }
1916
- );
1917
- }
1918
- function ResizablePanel({
1919
- ...props
1920
- }) {
1921
- return /* @__PURE__ */ jsxRuntime.jsx(ResizablePrimitive__namespace.Panel, { "data-slot": "resizable-panel", ...props });
1922
- }
1923
- function ResizableHandle({
1924
- withHandle,
1925
- className,
1926
- ...props
1927
- }) {
1928
- return /* @__PURE__ */ jsxRuntime.jsx(
1929
- ResizablePrimitive__namespace.PanelResizeHandle,
1930
- {
1931
- "data-slot": "resizable-handle",
1932
- className: cn(
1933
- "bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
1934
- className
1935
- ),
1936
- ...props,
1937
- children: withHandle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GripVertical, { className: "size-2.5" }) })
1938
- }
1939
- );
1940
- }
1941
- function ScrollArea({
1942
- className,
1943
- children,
1944
- ...props
1945
- }) {
1946
- return /* @__PURE__ */ jsxRuntime.jsxs(
1947
- ScrollAreaPrimitive__namespace.Root,
1948
- {
1949
- "data-slot": "scroll-area",
1950
- className: cn("relative", className),
1951
- ...props,
1952
- children: [
1953
- /* @__PURE__ */ jsxRuntime.jsx(
1954
- ScrollAreaPrimitive__namespace.Viewport,
1955
- {
1956
- "data-slot": "scroll-area-viewport",
1957
- className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
1958
- children
1959
- }
1960
- ),
1961
- /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
1962
- /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
1963
- ]
1964
- }
1965
- );
1966
- }
1967
- function ScrollBar({
1968
- className,
1969
- orientation = "vertical",
1970
- ...props
1971
- }) {
1972
- return /* @__PURE__ */ jsxRuntime.jsx(
1973
- ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
1974
- {
1975
- "data-slot": "scroll-area-scrollbar",
1976
- orientation,
1977
- className: cn(
1978
- "flex touch-none p-px transition-colors select-none",
1979
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
1980
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
1981
- className
1982
- ),
1983
- ...props,
1984
- children: /* @__PURE__ */ jsxRuntime.jsx(
1985
- ScrollAreaPrimitive__namespace.ScrollAreaThumb,
1986
- {
1987
- "data-slot": "scroll-area-thumb",
1988
- className: "bg-border relative flex-1 rounded-full"
1989
- }
1990
- )
1991
- }
1992
- );
1993
- }
1994
- function Separator2({
1995
- className,
1996
- orientation = "horizontal",
1997
- decorative = true,
1998
- ...props
1999
- }) {
2000
- return /* @__PURE__ */ jsxRuntime.jsx(
2001
- SeparatorPrimitive__namespace.Root,
2002
- {
2003
- "data-slot": "separator",
2004
- decorative,
2005
- orientation,
2006
- className: cn(
2007
- "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
2008
- className
2009
- ),
2010
- ...props
2011
- }
2012
- );
2013
- }
2014
- var Accordion = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2015
- AccordionPrimitive__namespace.Root,
2016
- {
2017
- ref,
2018
- "data-slot": "accordion",
2019
- ...props
2020
- }
2021
- ));
2022
- Accordion.displayName = "Accordion";
2023
- var AccordionItem = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2024
- AccordionPrimitive__namespace.Item,
2025
- {
2026
- ref,
2027
- "data-slot": "accordion-item",
2028
- className: cn("border-b last:border-b-0", className),
2029
- ...props
2030
- }
2031
- ));
2032
- AccordionItem.displayName = "AccordionItem";
2033
- var AccordionTrigger = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Header, { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs(
2034
- AccordionPrimitive__namespace.Trigger,
2035
- {
2036
- ref,
2037
- "data-slot": "accordion-trigger",
2038
- className: cn(
2039
- "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] focus-visible:border-ring focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
2040
- className
2041
- ),
2042
- ...props,
2043
- children: [
2044
- children,
2045
- /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
2046
- ]
2047
- }
2048
- ) }));
2049
- AccordionTrigger.displayName = "AccordionTrigger";
2050
- var AccordionContent = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2051
- AccordionPrimitive__namespace.Content,
2052
- {
2053
- ref,
2054
- "data-slot": "accordion-content",
2055
- className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
2056
- ...props,
2057
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-0 pb-4", className), children })
2058
- }
2059
- ));
2060
- AccordionContent.displayName = "AccordionContent";
2061
- var CarouselContext = React20__namespace.createContext(null);
2062
- function useCarousel() {
2063
- const context = React20__namespace.useContext(CarouselContext);
2064
- if (!context) {
2065
- throw new Error("useCarousel must be used within a <Carousel />");
2066
- }
2067
- return context;
2068
- }
2069
- var Carousel = React20__namespace.forwardRef(
2070
- ({
2071
- orientation = "horizontal",
2072
- opts,
2073
- setApi,
2074
- plugins,
2075
- className,
2076
- children,
2077
- ...props
2078
- }, ref) => {
2079
- const [carouselRef, api] = useEmblaCarousel__default.default(
2080
- {
2081
- ...opts,
2082
- axis: orientation === "horizontal" ? "x" : "y"
2083
- },
2084
- plugins
2085
- );
2086
- const [canScrollPrev, setCanScrollPrev] = React20__namespace.useState(false);
2087
- const [canScrollNext, setCanScrollNext] = React20__namespace.useState(false);
2088
- const onSelect = React20__namespace.useCallback((api2) => {
2089
- if (!api2) return;
2090
- setCanScrollPrev(api2.canScrollPrev());
2091
- setCanScrollNext(api2.canScrollNext());
2092
- }, []);
2093
- const scrollPrev = React20__namespace.useCallback(() => {
2094
- api?.scrollPrev();
2095
- }, [api]);
2096
- const scrollNext = React20__namespace.useCallback(() => {
2097
- api?.scrollNext();
2098
- }, [api]);
2099
- const handleKeyDown = React20__namespace.useCallback(
2100
- (event) => {
2101
- if (event.key === "ArrowLeft") {
2102
- event.preventDefault();
2103
- scrollPrev();
2104
- } else if (event.key === "ArrowRight") {
2105
- event.preventDefault();
2106
- scrollNext();
2107
- }
2108
- },
2109
- [scrollPrev, scrollNext]
2110
- );
2111
- React20__namespace.useEffect(() => {
2112
- if (!api || !setApi) return;
2113
- setApi(api);
2114
- }, [api, setApi]);
2115
- React20__namespace.useEffect(() => {
2116
- if (!api) return;
2117
- onSelect(api);
2118
- api.on("reInit", onSelect);
2119
- api.on("select", onSelect);
2120
- return () => {
2121
- api?.off("select", onSelect);
2122
- };
2123
- }, [api, onSelect]);
2124
- return /* @__PURE__ */ jsxRuntime.jsx(
2125
- CarouselContext.Provider,
2126
- {
2127
- value: {
2128
- carouselRef,
2129
- api,
2130
- opts,
2131
- orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
2132
- scrollPrev,
2133
- scrollNext,
2134
- canScrollPrev,
2135
- canScrollNext
2136
- },
2137
- children: /* @__PURE__ */ jsxRuntime.jsx(
2138
- "div",
2139
- {
2140
- ref,
2141
- onKeyDownCapture: handleKeyDown,
2142
- className: cn("relative", className),
2143
- role: "region",
2144
- "aria-roledescription": "carousel",
2145
- "data-slot": "carousel",
2146
- ...props,
2147
- children
2148
- }
2149
- )
2150
- }
2151
- );
2152
- }
2153
- );
2154
- Carousel.displayName = "Carousel";
2155
- var CarouselContent = React20__namespace.forwardRef(({ className, ...props }, ref) => {
2156
- const { carouselRef, orientation } = useCarousel();
2157
- return /* @__PURE__ */ jsxRuntime.jsx(
2158
- "div",
2159
- {
2160
- ref: carouselRef,
2161
- className: "overflow-hidden",
2162
- "data-slot": "carousel-content",
2163
- children: /* @__PURE__ */ jsxRuntime.jsx(
2164
- "div",
2165
- {
2166
- ref,
2167
- className: cn(
2168
- "flex",
2169
- orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
2170
- className
2171
- ),
2172
- ...props
2173
- }
2174
- )
2175
- }
2176
- );
2177
- });
2178
- CarouselContent.displayName = "CarouselContent";
2179
- var CarouselItem = React20__namespace.forwardRef(({ className, ...props }, ref) => {
2180
- const { orientation } = useCarousel();
2181
- return /* @__PURE__ */ jsxRuntime.jsx(
2182
- "div",
2183
- {
2184
- ref,
2185
- role: "group",
2186
- "aria-roledescription": "slide",
2187
- "data-slot": "carousel-item",
2188
- className: cn(
2189
- "min-w-0 shrink-0 grow-0 basis-full",
2190
- orientation === "horizontal" ? "pl-4" : "pt-4",
2191
- className
2192
- ),
2193
- ...props
2194
- }
2195
- );
2196
- });
2197
- CarouselItem.displayName = "CarouselItem";
2198
- var CarouselPrevious = React20__namespace.forwardRef(({ className, variant = uikitContracts.ButtonVariant.Outline, size = uikitContracts.ButtonSize.Icon, ...props }, ref) => {
2199
- const { orientation, scrollPrev, canScrollPrev } = useCarousel();
2200
- return /* @__PURE__ */ jsxRuntime.jsxs(
2201
- Button,
2202
- {
2203
- ref,
2204
- "data-slot": "carousel-previous",
2205
- variant,
2206
- size,
2207
- className: cn(
2208
- "absolute h-8 w-8 rounded-full",
2209
- orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
2210
- className
2211
- ),
2212
- disabled: !canScrollPrev,
2213
- onClick: scrollPrev,
2214
- ...props,
2215
- children: [
2216
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "h-4 w-4" }),
2217
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Previous slide" })
2218
- ]
2219
- }
2220
- );
2221
- });
2222
- CarouselPrevious.displayName = "CarouselPrevious";
2223
- var CarouselNext = React20__namespace.forwardRef(({ className, variant = uikitContracts.ButtonVariant.Outline, size = uikitContracts.ButtonSize.Icon, ...props }, ref) => {
2224
- const { orientation, scrollNext, canScrollNext } = useCarousel();
2225
- return /* @__PURE__ */ jsxRuntime.jsxs(
2226
- Button,
2227
- {
2228
- ref,
2229
- "data-slot": "carousel-next",
2230
- variant,
2231
- size,
2232
- className: cn(
2233
- "absolute h-8 w-8 rounded-full",
2234
- orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
2235
- className
2236
- ),
2237
- disabled: !canScrollNext,
2238
- onClick: scrollNext,
2239
- ...props,
2240
- children: [
2241
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { className: "h-4 w-4" }),
2242
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Next slide" })
2243
- ]
2244
- }
2245
- );
2246
- });
2247
- CarouselNext.displayName = "CarouselNext";
2248
- var Collapsible = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2249
- CollapsiblePrimitive__namespace.Root,
2250
- {
2251
- ref,
2252
- "data-slot": "collapsible",
2253
- ...props
2254
- }
2255
- ));
2256
- Collapsible.displayName = "Collapsible";
2257
- var CollapsibleTrigger2 = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2258
- CollapsiblePrimitive__namespace.CollapsibleTrigger,
2259
- {
2260
- ref,
2261
- "data-slot": "collapsible-trigger",
2262
- ...props
2263
- }
2264
- ));
2265
- CollapsibleTrigger2.displayName = "CollapsibleTrigger";
2266
- var CollapsibleContent2 = React20__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2267
- CollapsiblePrimitive__namespace.CollapsibleContent,
2268
- {
2269
- ref,
2270
- "data-slot": "collapsible-content",
2271
- ...props
2272
- }
2273
- ));
2274
- CollapsibleContent2.displayName = "CollapsibleContent";
2275
- function ChartContainer({
2276
- className,
2277
- children,
2278
- width = "100%",
2279
- height = 350
2280
- }) {
2281
- return /* @__PURE__ */ jsxRuntime.jsx(
2282
- "div",
2283
- {
2284
- "data-slot": "chart-container",
2285
- className: cn("w-full", className),
2286
- style: { width, height: typeof height === "number" ? `${height}px` : height },
2287
- children
2288
- }
2289
- );
2290
- }
2291
- function ChartTooltipContent({
2292
- className,
2293
- label,
2294
- payload,
2295
- active
2296
- }) {
2297
- if (!active || !payload || payload.length === 0) {
2298
- return null;
2299
- }
2300
- return /* @__PURE__ */ jsxRuntime.jsxs(
2301
- "div",
2302
- {
2303
- "data-slot": "chart-tooltip-content",
2304
- className: cn(
2305
- "bg-background border-border text-foreground rounded-lg border p-2 shadow-md",
2306
- className
2307
- ),
2308
- children: [
2309
- label && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-xs font-medium text-muted-foreground", children: label }),
2310
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1", children: payload.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
2311
- /* @__PURE__ */ jsxRuntime.jsx(
2312
- "div",
2313
- {
2314
- className: "h-2 w-2 rounded-full",
2315
- style: { backgroundColor: item.color }
2316
- }
2317
- ),
2318
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium", children: [
2319
- item.name,
2320
- ":"
2321
- ] }),
2322
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: item.value })
2323
- ] }, index)) })
2324
- ]
2325
- }
2326
- );
2327
- }
2328
- function ChartLegendContent({
2329
- className,
2330
- payload
2331
- }) {
2332
- if (!payload || payload.length === 0) {
2333
- return null;
2334
- }
2335
- return /* @__PURE__ */ jsxRuntime.jsx(
2336
- "div",
2337
- {
2338
- "data-slot": "chart-legend-content",
2339
- className: cn("flex items-center justify-center gap-4 text-sm pt-4", className),
2340
- children: payload.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2341
- /* @__PURE__ */ jsxRuntime.jsx(
2342
- "div",
2343
- {
2344
- className: "h-3 w-3 rounded-sm",
2345
- style: { backgroundColor: item.color }
2346
- }
2347
- ),
2348
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: item.value })
2349
- ] }, index))
2350
- }
2351
- );
2352
- }
2353
- var ChevronUpIcon = ({
2354
- className = "",
2355
- ...props
2356
- }) => {
2357
- return /* @__PURE__ */ jsxRuntime.jsx(
2358
- "svg",
2359
- {
2360
- className,
2361
- width: "16",
2362
- height: "16",
2363
- viewBox: "0 0 24 24",
2364
- fill: "none",
2365
- stroke: "currentColor",
2366
- strokeWidth: "2",
2367
- strokeLinecap: "round",
2368
- strokeLinejoin: "round",
2369
- ...props,
2370
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m18 15-6-6-6 6" })
2371
- }
2372
- );
2373
- };
2374
- var Select = SelectPrimitive__namespace.Root;
2375
- var SelectGroup = SelectPrimitive__namespace.Group;
2376
- var SelectValue = SelectPrimitive__namespace.Value;
2377
- var SelectTrigger = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2378
- SelectPrimitive__namespace.Trigger,
2379
- {
2380
- ref,
2381
- className: cn(
2382
- // HAI3 customization: bg-background and hover states for consistency with Button Outline
2383
- "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm ring-offset-background hover:bg-accent hover:text-bg-accent-foreground data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2384
- className
2385
- ),
2386
- ...props,
2387
- children: [
2388
- children,
2389
- /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { className: "h-4 w-4 opacity-50" }) })
2390
- ]
2391
- }
2392
- ));
2393
- SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
2394
- var SelectScrollUpButton = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2395
- SelectPrimitive__namespace.ScrollUpButton,
2396
- {
2397
- ref,
2398
- className: cn(
2399
- "flex cursor-default items-center justify-center py-1",
2400
- className
2401
- ),
2402
- ...props,
2403
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronUpIcon, { className: "h-4 w-4" })
2404
- }
2405
- ));
2406
- SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
2407
- var SelectScrollDownButton = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2408
- SelectPrimitive__namespace.ScrollDownButton,
2409
- {
2410
- ref,
2411
- className: cn(
2412
- "flex cursor-default items-center justify-center py-1",
2413
- className
2414
- ),
2415
- ...props,
2416
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { className: "h-4 w-4" })
2417
- }
2418
- ));
2419
- SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
2420
- var SelectContent = React20__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
2421
- SelectPrimitive__namespace.Content,
2422
- {
2423
- ref,
2424
- className: cn(
2425
- "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 origin-[--radix-select-content-transform-origin]",
2426
- 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",
2427
- className
2428
- ),
2429
- position,
2430
- ...props,
2431
- children: [
2432
- /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
2433
- /* @__PURE__ */ jsxRuntime.jsx(
2434
- SelectPrimitive__namespace.Viewport,
2435
- {
2436
- className: cn(
2437
- "p-1",
2438
- position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
2439
- ),
2440
- children
2441
- }
2442
- ),
2443
- /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
2444
- ]
2445
- }
2446
- ) }));
2447
- SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
2448
- var SelectLabel = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2449
- SelectPrimitive__namespace.Label,
2450
- {
2451
- ref,
2452
- className: cn("px-2 py-1.5 text-sm font-semibold", className),
2453
- ...props
2454
- }
2455
- ));
2456
- SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
2457
- var SelectItem = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2458
- SelectPrimitive__namespace.Item,
2459
- {
2460
- ref,
2461
- className: cn(
2462
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-bg-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2463
- className
2464
- ),
2465
- ...props,
2466
- children: [
2467
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "h-4 w-4" }) }) }),
2468
- /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
2469
- ]
2470
- }
2471
- ));
2472
- SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
2473
- var SelectSeparator = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2474
- SelectPrimitive__namespace.Separator,
2475
- {
2476
- ref,
2477
- className: cn("-mx-1 my-1 h-px bg-muted", className),
2478
- ...props
2479
- }
2480
- ));
2481
- SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
2482
- var DropdownMenu = ({ dir, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
2483
- DropdownMenuPrimitive__namespace.Root,
2484
- {
2485
- ...props,
2486
- dir
2487
- }
2488
- );
2489
- DropdownMenu.displayName = "DropdownMenu";
2490
- var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
2491
- var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
2492
- var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
2493
- var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
2494
- var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
2495
- var DropdownMenuSubTrigger = React20__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2496
- DropdownMenuPrimitive__namespace.SubTrigger,
2497
- {
2498
- ref,
2499
- className: cn(
2500
- "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2501
- inset && "pl-8",
2502
- className
2503
- ),
2504
- ...props,
2505
- children: [
2506
- children,
2507
- /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: "ms-auto rtl:rotate-180" })
2508
- ]
2509
- }
2510
- ));
2511
- DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
2512
- var DropdownMenuSubContent = React20__namespace.forwardRef(({ className, container, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsxRuntime.jsx(
2513
- DropdownMenuPrimitive__namespace.SubContent,
2514
- {
2515
- ref,
2516
- className: cn(
2517
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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 origin-[--radix-dropdown-menu-content-transform-origin]",
2518
- className
2519
- ),
2520
- ...props
2521
- }
2522
- ) }));
2523
- DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
2524
- var DropdownMenuContent = React20__namespace.forwardRef(({ className, sideOffset = 4, container, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsxRuntime.jsx(
2525
- DropdownMenuPrimitive__namespace.Content,
2526
- {
2527
- ref,
2528
- sideOffset,
2529
- className: cn(
2530
- "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
2531
- "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 origin-[--radix-dropdown-menu-content-transform-origin]",
2532
- className
2533
- ),
2534
- ...props
2535
- }
2536
- ) }));
2537
- DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
2538
- var DropdownMenuItem = React20__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2539
- DropdownMenuPrimitive__namespace.Item,
2540
- {
2541
- ref,
2542
- className: cn(
2543
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
2544
- inset && "pl-8",
2545
- className
2546
- ),
2547
- ...props
2548
- }
2549
- ));
2550
- DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
2551
- var DropdownMenuCheckboxItem = React20__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2552
- DropdownMenuPrimitive__namespace.CheckboxItem,
2553
- {
2554
- ref,
2555
- className: cn(
2556
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2557
- className
2558
- ),
2559
- checked,
2560
- ...props,
2561
- children: [
2562
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "h-4 w-4" }) }) }),
2563
- children
2564
- ]
2565
- }
2566
- ));
2567
- DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
2568
- var DropdownMenuRadioItem = React20__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2569
- DropdownMenuPrimitive__namespace.RadioItem,
2570
- {
2571
- ref,
2572
- className: cn(
2573
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2574
- className
2575
- ),
2576
- ...props,
2577
- children: [
2578
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, { className: "h-2 w-2 fill-current" }) }) }),
2579
- children
2580
- ]
2581
- }
2582
- ));
2583
- DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
2584
- var DropdownMenuLabel = React20__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2585
- DropdownMenuPrimitive__namespace.Label,
2586
- {
2587
- ref,
2588
- className: cn(
2589
- "px-2 py-1.5 text-sm font-semibold",
2590
- inset && "pl-8",
2591
- className
2592
- ),
2593
- ...props
2594
- }
2595
- ));
2596
- DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
2597
- var DropdownMenuSeparator = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2598
- DropdownMenuPrimitive__namespace.Separator,
2599
- {
2600
- ref,
2601
- className: cn("-mx-1 my-1 h-px bg-muted", className),
2602
- ...props
2603
- }
2604
- ));
2605
- DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
2606
- var DropdownMenuShortcut = ({
2607
- className,
2608
- ...props
2609
- }) => {
2610
- return /* @__PURE__ */ jsxRuntime.jsx(
2611
- "span",
2612
- {
2613
- className: cn("ml-auto text-xs tracking-widest opacity-60", className),
2614
- ...props
2615
- }
2616
- );
2617
- };
2618
- DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
2619
- function ContextMenu({
2620
- ...props
2621
- }) {
2622
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Root, { "data-slot": "context-menu", ...props });
2623
- }
2624
- function ContextMenuTrigger({
2625
- ...props
2626
- }) {
2627
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Trigger, { "data-slot": "context-menu-trigger", ...props });
2628
- }
2629
- function ContextMenuGroup({
2630
- ...props
2631
- }) {
2632
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Group, { "data-slot": "context-menu-group", ...props });
2633
- }
2634
- function ContextMenuPortal({
2635
- ...props
2636
- }) {
2637
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Portal, { "data-slot": "context-menu-portal", ...props });
2638
- }
2639
- function ContextMenuSub({
2640
- ...props
2641
- }) {
2642
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Sub, { "data-slot": "context-menu-sub", ...props });
2643
- }
2644
- function ContextMenuRadioGroup({
2645
- ...props
2646
- }) {
2647
- return /* @__PURE__ */ jsxRuntime.jsx(
2648
- ContextMenuPrimitive__namespace.RadioGroup,
2649
- {
2650
- "data-slot": "context-menu-radio-group",
2651
- ...props
2652
- }
2653
- );
2654
- }
2655
- function ContextMenuSubTrigger({
2656
- className,
2657
- inset,
2658
- children,
2659
- ...props
2660
- }) {
2661
- return /* @__PURE__ */ jsxRuntime.jsxs(
2662
- ContextMenuPrimitive__namespace.SubTrigger,
2663
- {
2664
- "data-slot": "context-menu-sub-trigger",
2665
- "data-inset": inset,
2666
- className: cn(
2667
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center 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",
2668
- className
2669
- ),
2670
- ...props,
2671
- children: [
2672
- children,
2673
- /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { className: "ml-auto" })
2674
- ]
2675
- }
2676
- );
2677
- }
2678
- function ContextMenuSubContent({
2679
- className,
2680
- ...props
2681
- }) {
2682
- return /* @__PURE__ */ jsxRuntime.jsx(
2683
- ContextMenuPrimitive__namespace.SubContent,
2684
- {
2685
- "data-slot": "context-menu-sub-content",
2686
- className: cn(
2687
- "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-[var(--radix-context-menu-content-transform-origin)] overflow-hidden rounded-md border p-1 shadow-lg",
2688
- className
2689
- ),
2690
- ...props
2691
- }
2692
- );
2693
- }
2694
- function ContextMenuContent({
2695
- className,
2696
- ...props
2697
- }) {
2698
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2699
- ContextMenuPrimitive__namespace.Content,
2700
- {
2701
- "data-slot": "context-menu-content",
2702
- className: cn(
2703
- "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-[var(--radix-context-menu-content-available-height)] min-w-[8rem] origin-[var(--radix-context-menu-content-transform-origin)] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
2704
- className
2705
- ),
2706
- ...props
2707
- }
2708
- ) });
2709
- }
2710
- function ContextMenuItem({
2711
- className,
2712
- inset,
2713
- variant = "default",
2714
- ...props
2715
- }) {
2716
- return /* @__PURE__ */ jsxRuntime.jsx(
2717
- ContextMenuPrimitive__namespace.Item,
2718
- {
2719
- "data-slot": "context-menu-item",
2720
- "data-inset": inset,
2721
- "data-variant": variant,
2722
- className: cn(
2723
- "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_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",
2724
- className
2725
- ),
2726
- ...props
2727
- }
2728
- );
2729
- }
2730
- function ContextMenuCheckboxItem({
2731
- className,
2732
- children,
2733
- checked,
2734
- ...props
2735
- }) {
2736
- return /* @__PURE__ */ jsxRuntime.jsxs(
2737
- ContextMenuPrimitive__namespace.CheckboxItem,
2738
- {
2739
- "data-slot": "context-menu-checkbox-item",
2740
- className: cn(
2741
- "focus:bg-accent focus:text-accent-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",
2742
- className
2743
- ),
2744
- checked,
2745
- ...props,
2746
- children: [
2747
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "size-4" }) }) }),
2748
- children
2749
- ]
2750
- }
2751
- );
2752
- }
2753
- function ContextMenuRadioItem({
2754
- className,
2755
- children,
2756
- ...props
2757
- }) {
2758
- return /* @__PURE__ */ jsxRuntime.jsxs(
2759
- ContextMenuPrimitive__namespace.RadioItem,
2760
- {
2761
- "data-slot": "context-menu-radio-item",
2762
- className: cn(
2763
- "focus:bg-accent focus:text-accent-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",
2764
- className
2765
- ),
2766
- ...props,
2767
- children: [
2768
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
2769
- children
2770
- ]
2771
- }
2772
- );
2773
- }
2774
- function ContextMenuLabel({
2775
- className,
2776
- inset,
2777
- ...props
2778
- }) {
2779
- return /* @__PURE__ */ jsxRuntime.jsx(
2780
- ContextMenuPrimitive__namespace.Label,
2781
- {
2782
- "data-slot": "context-menu-label",
2783
- "data-inset": inset,
2784
- className: cn(
2785
- "text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
2786
- className
2787
- ),
2788
- ...props
2789
- }
2790
- );
2791
- }
2792
- function ContextMenuSeparator({
2793
- className,
2794
- ...props
2795
- }) {
2796
- return /* @__PURE__ */ jsxRuntime.jsx(
2797
- ContextMenuPrimitive__namespace.Separator,
2798
- {
2799
- "data-slot": "context-menu-separator",
2800
- className: cn("bg-border -mx-1 my-1 h-px", className),
2801
- ...props
2802
- }
2803
- );
2804
- }
2805
- function ContextMenuShortcut({
2806
- className,
2807
- ...props
2808
- }) {
2809
- return /* @__PURE__ */ jsxRuntime.jsx(
2810
- "span",
2811
- {
2812
- "data-slot": "context-menu-shortcut",
2813
- className: cn(
2814
- "text-muted-foreground ml-auto text-xs tracking-widest",
2815
- className
2816
- ),
2817
- ...props
2818
- }
2819
- );
2820
- }
2821
- var IconButton = React20__namespace.default.forwardRef(
2822
- ({ variant = uikitContracts.ButtonVariant.Ghost, size = uikitContracts.IconButtonSize.Default, className, ...props }, ref) => {
2823
- const sizeStyles = {
2824
- [uikitContracts.IconButtonSize.Small]: "h-8 w-8",
2825
- [uikitContracts.IconButtonSize.Default]: "h-9 w-9",
2826
- [uikitContracts.IconButtonSize.Large]: "h-11 w-11"
2827
- };
2828
- return /* @__PURE__ */ jsxRuntime.jsx(
2829
- Button,
2830
- {
2831
- ref,
2832
- variant,
2833
- size: uikitContracts.ButtonSize.Icon,
2834
- className: cn(sizeStyles[size], className),
2835
- ...props
2836
- }
2837
- );
2838
- }
2839
- );
2840
- IconButton.displayName = "IconButton";
2841
- var DropdownButton = React20__namespace.default.forwardRef(({ children, variant = uikitContracts.ButtonVariant.Outline, className, ...props }, ref) => {
2842
- return /* @__PURE__ */ jsxRuntime.jsxs(
2843
- Button,
2844
- {
2845
- ref,
2846
- variant,
2847
- className: cn("min-w-40 justify-between rtl:flex-row-reverse", className),
2848
- ...props,
2849
- children: [
2850
- /* @__PURE__ */ jsxRuntime.jsx("span", { children }),
2851
- /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { className: "h-4 w-4" })
2852
- ]
2853
- }
2854
- );
2855
- });
2856
- DropdownButton.displayName = "DropdownButton";
2857
- var Sidebar = React20__namespace.forwardRef(({ collapsed = false, className, children, ...props }, ref) => {
2858
- return /* @__PURE__ */ jsxRuntime.jsx(
2859
- "aside",
2860
- {
2861
- ref,
2862
- "data-state": collapsed ? "collapsed" : "expanded",
2863
- "data-collapsible": collapsed ? "icon" : "",
2864
- className: cn(
2865
- "group flex flex-col border-r border-mainMenu-border transition-[width] duration-200 ease-linear",
2866
- "bg-mainMenu text-mainMenu-foreground",
2867
- collapsed ? "w-14" : "w-64",
2868
- className
2869
- ),
2870
- ...props,
2871
- children
2872
- }
2873
- );
2874
- });
2875
- Sidebar.displayName = "Sidebar";
2876
- var SidebarContent = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2877
- "div",
2878
- {
2879
- ref,
2880
- "data-sidebar": "content",
2881
- className: cn(
2882
- // HAI3 customization: gap and padding use rem-based spacing for theme scaling
2883
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",
2884
- className
2885
- ),
2886
- ...props
2887
- }
2888
- ));
2889
- SidebarContent.displayName = "SidebarContent";
2890
- var SidebarMenu = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2891
- "ul",
2892
- {
2893
- ref,
2894
- "data-sidebar": "menu",
2895
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
2896
- ...props
2897
- }
2898
- ));
2899
- SidebarMenu.displayName = "SidebarMenu";
2900
- var SidebarMenuItem = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2901
- "li",
2902
- {
2903
- ref,
2904
- "data-sidebar": "menu-item",
2905
- className: cn("group/menu-item relative", className),
2906
- ...props
2907
- }
2908
- ));
2909
- SidebarMenuItem.displayName = "SidebarMenuItem";
2910
- var sidebarMenuButtonVariants = classVarianceAuthority.cva(
2911
- // HAI3 customization: All sizing uses rem-based Tailwind classes for theme responsiveness
2912
- "peer/menu-button flex w-full items-center gap-2 rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>span:last-child]:overflow-hidden [&>svg]:size-5 [&>svg]:shrink-0 text-mainMenu-foreground hover:bg-mainMenu-hover data-[active=true]:bg-mainMenu-selected data-[active=true]:text-white data-[active=true]:font-medium",
2913
- {
2914
- variants: {
2915
- variant: {
2916
- default: "",
2917
- outline: "bg-background shadow-[0_0_0_1px_hsl(var(--border))] hover:bg-mainMenu-hover"
2918
- },
2919
- size: {
2920
- // HAI3 customization: All heights use rem-based Tailwind classes (h-10=2.5rem, h-7=1.75rem, h-12=3rem)
2921
- default: "h-10 text-sm",
2922
- sm: "h-7 text-xs",
2923
- lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
2924
- }
2925
- },
2926
- defaultVariants: {
2927
- variant: "default",
2928
- size: "default"
2929
- }
2930
- }
2931
- );
2932
- var SidebarMenuButton = React20__namespace.forwardRef(
2933
- ({
2934
- asChild = false,
2935
- isActive = false,
2936
- variant = "default",
2937
- size = "default",
2938
- tooltip,
2939
- className,
2940
- ...props
2941
- }, ref) => {
2942
- const Comp = asChild ? reactSlot.Slot : "button";
2943
- return /* @__PURE__ */ jsxRuntime.jsx(
2944
- Comp,
2945
- {
2946
- ref,
2947
- "data-sidebar": "menu-button",
2948
- "data-size": size,
2949
- "data-active": isActive,
2950
- title: tooltip,
2951
- className: cn(sidebarMenuButtonVariants({ variant, size }), className),
2952
- ...props
2953
- }
2954
- );
2955
- }
2956
- );
2957
- SidebarMenuButton.displayName = "SidebarMenuButton";
2958
- var SidebarMenuIcon = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2959
- "span",
2960
- {
2961
- ref,
2962
- className: cn("size-5 min-w-[1.5rem] flex-shrink-0 [&>svg]:w-full [&>svg]:h-full", className),
2963
- ...props
2964
- }
2965
- ));
2966
- SidebarMenuIcon.displayName = "SidebarMenuIcon";
2967
- var SidebarMenuLabel = React20__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2968
- "span",
2969
- {
2970
- ref,
2971
- className: cn(className),
2972
- ...props
2973
- }
2974
- ));
2975
- SidebarMenuLabel.displayName = "SidebarMenuLabel";
2976
- var SidebarHeader = React20__namespace.forwardRef(
2977
- ({ logo, logoText, collapsed = false, onClick, className, ...props }, ref) => {
2978
- return /* @__PURE__ */ jsxRuntime.jsxs(
2979
- "div",
2980
- {
2981
- ref,
2982
- className: cn(
2983
- "flex flex-col h-16",
2984
- className
2985
- ),
2986
- ...props,
2987
- children: [
2988
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center flex-1 px-2", children: /* @__PURE__ */ jsxRuntime.jsxs(SidebarMenuButton, { onClick, tooltip: collapsed ? "Expand menu" : "Collapse menu", children: [
2989
- logo && /* @__PURE__ */ jsxRuntime.jsx(SidebarMenuIcon, { children: logo }),
2990
- logoText && /* @__PURE__ */ jsxRuntime.jsx(SidebarMenuLabel, { className: "[&>svg]:h-5 [&>svg]:w-auto", children: logoText })
2991
- ] }) }),
2992
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-mainMenu-border mx-4" })
2993
- ]
2994
- }
2995
- );
2996
- }
2997
- );
2998
- SidebarHeader.displayName = "SidebarHeader";
2999
- var UserInfo = React20__namespace.default.forwardRef(
3000
- ({ displayName, email, avatarUrl, className, loading }, ref) => {
3001
- const getInitials = () => {
3002
- if (!displayName) return lodash.toUpper(email?.[0] || "") || "?";
3003
- const parts = lodash.trim(displayName).split(/\s+/);
3004
- if (parts.length >= 2) {
3005
- return lodash.toUpper(`${parts[0][0]}${parts[parts.length - 1][0]}`);
3006
- }
3007
- return lodash.toUpper(displayName.slice(0, 2));
3008
- };
3009
- const initials = getInitials();
3010
- const displayText = displayName || email || "User";
3011
- if (loading) {
3012
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("flex items-center gap-2 text-sm", className), children: [
3013
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-8 w-8 rounded-full" }),
3014
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-24" })
3015
- ] });
3016
- }
3017
- return /* @__PURE__ */ jsxRuntime.jsxs(
3018
- "div",
3019
- {
3020
- ref,
3021
- className: cn(
3022
- "flex items-center gap-2 text-sm text-muted-foreground",
3023
- className
3024
- ),
3025
- children: [
3026
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "h-8 w-8", children: [
3027
- avatarUrl && /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarUrl, alt: displayText }),
3028
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: initials })
3029
- ] }),
3030
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: displayText })
3031
- ]
3032
- }
3033
- );
3034
- }
3035
- );
3036
- UserInfo.displayName = "UserInfo";
3037
- var MessageType = /* @__PURE__ */ ((MessageType2) => {
3038
- MessageType2["User"] = "user";
3039
- MessageType2["Assistant"] = "assistant";
3040
- return MessageType2;
3041
- })(MessageType || {});
3042
- var MessageBubble = ({
3043
- type,
3044
- content,
3045
- className = "",
3046
- onCopy,
3047
- onEdit,
3048
- onDelete
3049
- }) => {
3050
- const isUser = type === "user" /* User */;
3051
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex gap-4 group ${className}`, children: [
3052
- /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "h-8 w-8 flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
3053
- AvatarFallback,
3054
- {
3055
- className: isUser ? "bg-blue-500 text-white" : "bg-green-500 text-white",
3056
- children: isUser ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Bot, { size: 16 })
3057
- }
3058
- ) }),
3059
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
3060
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-sm max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "leading-relaxed whitespace-pre-wrap", children: content }) }),
3061
- (onCopy || onEdit || onDelete) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 mt-2 opacity-0 group-hover:opacity-100 transition-opacity", children: [
3062
- onCopy && /* @__PURE__ */ jsxRuntime.jsx(
3063
- "button",
3064
- {
3065
- onClick: onCopy,
3066
- className: "p-1.5 hover:bg-muted rounded-lg transition-colors text-muted-foreground hover:text-foreground",
3067
- title: "Copy message",
3068
- children: /* @__PURE__ */ jsxRuntime.jsxs(
3069
- "svg",
3070
- {
3071
- width: "14",
3072
- height: "14",
3073
- viewBox: "0 0 24 24",
3074
- fill: "none",
3075
- stroke: "currentColor",
3076
- strokeWidth: "2",
3077
- strokeLinecap: "round",
3078
- strokeLinejoin: "round",
3079
- children: [
3080
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }),
3081
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
3082
- ]
3083
- }
3084
- )
3085
- }
3086
- ),
3087
- onEdit && /* @__PURE__ */ jsxRuntime.jsx(
3088
- "button",
3089
- {
3090
- onClick: onEdit,
3091
- className: "p-1.5 hover:bg-muted rounded-lg transition-colors text-muted-foreground hover:text-foreground",
3092
- title: "Edit message",
3093
- children: /* @__PURE__ */ jsxRuntime.jsxs(
3094
- "svg",
3095
- {
3096
- width: "14",
3097
- height: "14",
3098
- viewBox: "0 0 24 24",
3099
- fill: "none",
3100
- stroke: "currentColor",
3101
- strokeWidth: "2",
3102
- strokeLinecap: "round",
3103
- strokeLinejoin: "round",
3104
- children: [
3105
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
3106
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
3107
- ]
3108
- }
3109
- )
3110
- }
3111
- ),
3112
- onDelete && /* @__PURE__ */ jsxRuntime.jsx(
3113
- "button",
3114
- {
3115
- onClick: onDelete,
3116
- className: "p-1.5 hover:bg-destructive/10 rounded-lg transition-colors text-muted-foreground hover:text-destructive",
3117
- title: "Delete message",
3118
- children: /* @__PURE__ */ jsxRuntime.jsxs(
3119
- "svg",
3120
- {
3121
- width: "14",
3122
- height: "14",
3123
- viewBox: "0 0 24 24",
3124
- fill: "none",
3125
- stroke: "currentColor",
3126
- strokeWidth: "2",
3127
- strokeLinecap: "round",
3128
- strokeLinejoin: "round",
3129
- children: [
3130
- /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "3 6 5 6 21 6" }),
3131
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
3132
- ]
3133
- }
3134
- )
3135
- }
3136
- )
3137
- ] })
3138
- ] })
3139
- ] });
3140
- };
3141
- var ChatInput = ({
3142
- value,
3143
- onChange,
3144
- onSend,
3145
- onAttachFile,
3146
- placeholder = "Type a message...",
3147
- disabled = false,
3148
- maxRows = 14,
3149
- className = ""
3150
- }) => {
3151
- const handleKeyDown = (e) => {
3152
- if (e.key === "Enter" && !e.shiftKey) {
3153
- e.preventDefault();
3154
- if (!disabled && lodash.trim(value)) {
3155
- onSend();
3156
- }
3157
- }
3158
- };
3159
- const rows = Math.min(
3160
- Math.max(value.split("\n").length, 1),
3161
- maxRows
3162
- );
3163
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-end gap-2 ${className}`, children: [
3164
- onAttachFile && /* @__PURE__ */ jsxRuntime.jsx(
3165
- Button,
3166
- {
3167
- variant: uikitContracts.ButtonVariant.Ghost,
3168
- size: uikitContracts.ButtonSize.Icon,
3169
- onClick: onAttachFile,
3170
- disabled,
3171
- className: "flex-shrink-0",
3172
- "aria-label": "Attach file",
3173
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Paperclip, { size: 20 })
3174
- }
3175
- ),
3176
- /* @__PURE__ */ jsxRuntime.jsx(
3177
- "textarea",
3178
- {
3179
- value,
3180
- onChange: (e) => onChange(e.target.value),
3181
- onKeyDown: handleKeyDown,
3182
- placeholder,
3183
- disabled,
3184
- rows,
3185
- className: "flex-1 resize-none rounded-lg border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
3186
- }
3187
- ),
3188
- /* @__PURE__ */ jsxRuntime.jsx(
3189
- Button,
3190
- {
3191
- onClick: onSend,
3192
- disabled: disabled || !lodash.trim(value),
3193
- className: "flex-shrink-0",
3194
- "aria-label": "Send message",
3195
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Send, { size: 20 })
3196
- }
3197
- )
3198
- ] });
3199
- };
3200
- var ThreadList = ({
3201
- threads,
3202
- selectedThreadId,
3203
- onThreadSelect,
3204
- onNewThread,
3205
- onDeleteThread,
3206
- searchQuery = "",
3207
- onSearchChange,
3208
- loading = false,
3209
- className = ""
3210
- }) => {
3211
- if (loading) {
3212
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col h-full ${className}`, children: [
3213
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 border-b", children: [
3214
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-8 w-full mb-3" }),
3215
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-10 w-full" })
3216
- ] }),
3217
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto p-2", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-16 w-full mb-2" }, i)) })
3218
- ] });
3219
- }
3220
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col h-full ${className}`, children: [
3221
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 border-b", children: [
3222
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
3223
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold", children: "Recent Chats" }),
3224
- /* @__PURE__ */ jsxRuntime.jsx(
3225
- Button,
3226
- {
3227
- variant: uikitContracts.ButtonVariant.Ghost,
3228
- size: uikitContracts.ButtonSize.Icon,
3229
- onClick: onNewThread,
3230
- "aria-label": "New chat",
3231
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { size: 16 })
3232
- }
3233
- )
3234
- ] }),
3235
- onSearchChange && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
3236
- /* @__PURE__ */ jsxRuntime.jsx(
3237
- lucideReact.Search,
3238
- {
3239
- size: 16,
3240
- className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground"
3241
- }
3242
- ),
3243
- /* @__PURE__ */ jsxRuntime.jsx(
3244
- "input",
3245
- {
3246
- type: "text",
3247
- placeholder: "Search chats...",
3248
- value: searchQuery,
3249
- onChange: (e) => onSearchChange(e.target.value),
3250
- className: "w-full pl-9 pr-3 py-2 border border-input rounded-lg text-sm bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
3251
- }
3252
- )
3253
- ] })
3254
- ] }),
3255
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto", children: threads.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 text-center text-muted-foreground text-sm", children: "No chats yet. Start a new conversation!" }) : threads.map((thread) => /* @__PURE__ */ jsxRuntime.jsx(
3256
- "div",
3257
- {
3258
- onClick: () => onThreadSelect(thread.id),
3259
- className: `p-3 border-b cursor-pointer transition-colors hover:bg-muted/50 ${selectedThreadId === thread.id ? "bg-muted" : ""}`,
3260
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-2", children: [
3261
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
3262
- /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "font-medium text-sm truncate mb-1", children: [
3263
- thread.title,
3264
- thread.isTemporary && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-xs text-muted-foreground", children: "(Temporary)" })
3265
- ] }),
3266
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground truncate", children: thread.preview })
3267
- ] }),
3268
- onDeleteThread && /* @__PURE__ */ jsxRuntime.jsx(
3269
- "button",
3270
- {
3271
- onClick: (e) => {
3272
- e.stopPropagation();
3273
- onDeleteThread(thread.id);
3274
- },
3275
- className: "p-1 opacity-0 group-hover:opacity-100 hover:bg-destructive/10 rounded transition-opacity text-muted-foreground hover:text-destructive",
3276
- "aria-label": "Delete thread",
3277
- children: /* @__PURE__ */ jsxRuntime.jsxs(
3278
- "svg",
3279
- {
3280
- width: "14",
3281
- height: "14",
3282
- viewBox: "0 0 24 24",
3283
- fill: "none",
3284
- stroke: "currentColor",
3285
- strokeWidth: "2",
3286
- strokeLinecap: "round",
3287
- strokeLinejoin: "round",
3288
- children: [
3289
- /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "3 6 5 6 21 6" }),
3290
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
3291
- ]
3292
- }
3293
- )
3294
- }
3295
- )
3296
- ] })
3297
- },
3298
- thread.id
3299
- )) })
3300
- ] });
3301
- };
3302
- var MENU_ICON_ID = "menu";
3303
- var MenuIcon = ({ className = "" }) => {
3304
- return /* @__PURE__ */ jsxRuntime.jsxs(
3305
- "svg",
3306
- {
3307
- className,
3308
- width: "20",
3309
- height: "20",
3310
- viewBox: "0 0 24 24",
3311
- fill: "none",
3312
- stroke: "currentColor",
3313
- strokeWidth: "2",
3314
- strokeLinecap: "round",
3315
- strokeLinejoin: "round",
3316
- children: [
3317
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "3", y1: "12", x2: "21", y2: "12" }),
3318
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "3", y1: "6", x2: "21", y2: "6" }),
3319
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "3", y1: "18", x2: "21", y2: "18" })
3320
- ]
3321
- }
3322
- );
3323
- };
3324
- var CLOSE_ICON_ID = "close";
3325
- var CloseIcon = ({ className = "" }) => {
3326
- return /* @__PURE__ */ jsxRuntime.jsxs(
3327
- "svg",
3328
- {
3329
- className,
3330
- width: "20",
3331
- height: "20",
3332
- viewBox: "0 0 24 24",
3333
- fill: "none",
3334
- stroke: "currentColor",
3335
- strokeWidth: "2",
3336
- strokeLinecap: "round",
3337
- strokeLinejoin: "round",
3338
- children: [
3339
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
3340
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
3341
- ]
3342
- }
3343
- );
3344
- };
3345
- var CalendarIcon = ({
3346
- className = "",
3347
- ...props
3348
- }) => {
3349
- return /* @__PURE__ */ jsxRuntime.jsxs(
3350
- "svg",
3351
- {
3352
- className,
3353
- width: "16",
3354
- height: "16",
3355
- viewBox: "0 0 24 24",
3356
- fill: "none",
3357
- stroke: "currentColor",
3358
- strokeWidth: "2",
3359
- strokeLinecap: "round",
3360
- strokeLinejoin: "round",
3361
- ...props,
3362
- children: [
3363
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 2v4" }),
3364
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 2v4" }),
3365
- /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "18", height: "18", x: "3", y: "4", rx: "2" }),
3366
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 10h18" })
3367
- ]
3368
- }
3369
- );
3370
- };
3371
-
3372
- // src/styles/applyTheme.ts
3373
- var hslToVar = (color) => {
3374
- if (color === "transparent") {
3375
- return "transparent";
3376
- }
3377
- if (color.startsWith("hsl(")) {
3378
- return color.replace("hsl(", "").replace(")", "");
3379
- }
3380
- return color;
3381
- };
3382
- var applyTheme = (theme, themeName) => {
3383
- const root = document.documentElement;
3384
- if (themeName) {
3385
- root.setAttribute("data-theme", themeName);
3386
- }
3387
- root.style.setProperty("--background", hslToVar(theme.colors.background));
3388
- root.style.setProperty("--foreground", hslToVar(theme.colors.foreground));
3389
- root.style.setProperty("--card", hslToVar(theme.colors.background));
3390
- root.style.setProperty("--card-foreground", hslToVar(theme.colors.foreground));
3391
- root.style.setProperty("--popover", hslToVar(theme.colors.background));
3392
- root.style.setProperty("--popover-foreground", hslToVar(theme.colors.foreground));
3393
- root.style.setProperty("--primary", hslToVar(theme.colors.primary));
3394
- root.style.setProperty("--primary-foreground", hslToVar(theme.colors.background));
3395
- root.style.setProperty("--secondary", hslToVar(theme.colors.secondary));
3396
- root.style.setProperty("--secondary-foreground", hslToVar(theme.colors.foreground));
3397
- root.style.setProperty("--muted", hslToVar(theme.colors.muted));
3398
- root.style.setProperty("--muted-foreground", hslToVar(theme.colors.foreground));
3399
- root.style.setProperty("--accent", hslToVar(theme.colors.accent));
3400
- root.style.setProperty("--accent-foreground", hslToVar(theme.colors.background));
3401
- root.style.setProperty("--destructive", hslToVar(theme.colors.error));
3402
- root.style.setProperty("--destructive-foreground", hslToVar(theme.colors.foreground));
3403
- root.style.setProperty("--border", hslToVar(theme.colors.border));
3404
- root.style.setProperty("--input", hslToVar(theme.colors.border));
3405
- root.style.setProperty("--ring", hslToVar(theme.colors.primary));
3406
- root.style.setProperty("--error", hslToVar(theme.colors.error));
3407
- root.style.setProperty("--warning", hslToVar(theme.colors.warning));
3408
- root.style.setProperty("--success", hslToVar(theme.colors.success));
3409
- root.style.setProperty("--info", hslToVar(theme.colors.info));
3410
- root.style.setProperty("--chart-1", theme.colors.chart[1]);
3411
- root.style.setProperty("--chart-2", theme.colors.chart[2]);
3412
- root.style.setProperty("--chart-3", theme.colors.chart[3]);
3413
- root.style.setProperty("--chart-4", theme.colors.chart[4]);
3414
- root.style.setProperty("--chart-5", theme.colors.chart[5]);
3415
- root.style.setProperty("--left-menu", hslToVar(theme.colors.mainMenu.DEFAULT));
3416
- root.style.setProperty("--left-menu-foreground", hslToVar(theme.colors.mainMenu.foreground));
3417
- root.style.setProperty("--left-menu-hover", hslToVar(theme.colors.mainMenu.hover));
3418
- root.style.setProperty("--left-menu-selected", hslToVar(theme.colors.mainMenu.selected));
3419
- root.style.setProperty("--left-menu-border", hslToVar(theme.colors.mainMenu.border));
3420
- Object.entries(theme.spacing).forEach(([key, value]) => {
3421
- root.style.setProperty(`--spacing-${key}`, value);
3422
- });
3423
- Object.entries(theme.borderRadius).forEach(([key, value]) => {
3424
- root.style.setProperty(`--radius-${key}`, value);
3425
- });
3426
- Object.entries(theme.shadows).forEach(([key, value]) => {
3427
- root.style.setProperty(`--shadow-${key}`, value);
3428
- });
3429
- Object.entries(theme.transitions).forEach(([key, value]) => {
3430
- root.style.setProperty(`--transition-${key}`, value);
3431
- });
3432
- if (themeName?.endsWith("-large")) {
3433
- root.style.fontSize = "125%";
3434
- } else {
3435
- root.style.fontSize = "";
3436
- }
3437
- };
3438
-
3439
- Object.defineProperty(exports, "ButtonSize", {
3440
- enumerable: true,
3441
- get: function () { return uikitContracts.ButtonSize; }
3442
- });
3443
- Object.defineProperty(exports, "ButtonVariant", {
3444
- enumerable: true,
3445
- get: function () { return uikitContracts.ButtonVariant; }
3446
- });
3447
- Object.defineProperty(exports, "IconButtonSize", {
3448
- enumerable: true,
3449
- get: function () { return uikitContracts.IconButtonSize; }
3450
- });
3451
- Object.defineProperty(exports, "Area", {
3452
- enumerable: true,
3453
- get: function () { return recharts.Area; }
3454
- });
3455
- Object.defineProperty(exports, "AreaChart", {
3456
- enumerable: true,
3457
- get: function () { return recharts.AreaChart; }
3458
- });
3459
- Object.defineProperty(exports, "Bar", {
3460
- enumerable: true,
3461
- get: function () { return recharts.Bar; }
3462
- });
3463
- Object.defineProperty(exports, "BarChart", {
3464
- enumerable: true,
3465
- get: function () { return recharts.BarChart; }
3466
- });
3467
- Object.defineProperty(exports, "Brush", {
3468
- enumerable: true,
3469
- get: function () { return recharts.Brush; }
3470
- });
3471
- Object.defineProperty(exports, "CartesianGrid", {
3472
- enumerable: true,
3473
- get: function () { return recharts.CartesianGrid; }
3474
- });
3475
- Object.defineProperty(exports, "Cell", {
3476
- enumerable: true,
3477
- get: function () { return recharts.Cell; }
3478
- });
3479
- Object.defineProperty(exports, "ChartLabel", {
3480
- enumerable: true,
3481
- get: function () { return recharts.Label; }
3482
- });
3483
- Object.defineProperty(exports, "ChartLegend", {
3484
- enumerable: true,
3485
- get: function () { return recharts.Legend; }
3486
- });
3487
- Object.defineProperty(exports, "ChartTooltip", {
3488
- enumerable: true,
3489
- get: function () { return recharts.Tooltip; }
3490
- });
3491
- Object.defineProperty(exports, "ComposedChart", {
3492
- enumerable: true,
3493
- get: function () { return recharts.ComposedChart; }
3494
- });
3495
- Object.defineProperty(exports, "Cross", {
3496
- enumerable: true,
3497
- get: function () { return recharts.Cross; }
3498
- });
3499
- Object.defineProperty(exports, "Curve", {
3500
- enumerable: true,
3501
- get: function () { return recharts.Curve; }
3502
- });
3503
- Object.defineProperty(exports, "Customized", {
3504
- enumerable: true,
3505
- get: function () { return recharts.Customized; }
3506
- });
3507
- Object.defineProperty(exports, "Dot", {
3508
- enumerable: true,
3509
- get: function () { return recharts.Dot; }
3510
- });
3511
- Object.defineProperty(exports, "ErrorBar", {
3512
- enumerable: true,
3513
- get: function () { return recharts.ErrorBar; }
3514
- });
3515
- Object.defineProperty(exports, "Funnel", {
3516
- enumerable: true,
3517
- get: function () { return recharts.Funnel; }
3518
- });
3519
- Object.defineProperty(exports, "FunnelChart", {
3520
- enumerable: true,
3521
- get: function () { return recharts.FunnelChart; }
3522
- });
3523
- Object.defineProperty(exports, "LabelList", {
3524
- enumerable: true,
3525
- get: function () { return recharts.LabelList; }
3526
- });
3527
- Object.defineProperty(exports, "Line", {
3528
- enumerable: true,
3529
- get: function () { return recharts.Line; }
3530
- });
3531
- Object.defineProperty(exports, "LineChart", {
3532
- enumerable: true,
3533
- get: function () { return recharts.LineChart; }
3534
- });
3535
- Object.defineProperty(exports, "Pie", {
3536
- enumerable: true,
3537
- get: function () { return recharts.Pie; }
3538
- });
3539
- Object.defineProperty(exports, "PieChart", {
3540
- enumerable: true,
3541
- get: function () { return recharts.PieChart; }
3542
- });
3543
- Object.defineProperty(exports, "PolarAngleAxis", {
3544
- enumerable: true,
3545
- get: function () { return recharts.PolarAngleAxis; }
3546
- });
3547
- Object.defineProperty(exports, "PolarGrid", {
3548
- enumerable: true,
3549
- get: function () { return recharts.PolarGrid; }
3550
- });
3551
- Object.defineProperty(exports, "PolarRadiusAxis", {
3552
- enumerable: true,
3553
- get: function () { return recharts.PolarRadiusAxis; }
3554
- });
3555
- Object.defineProperty(exports, "Polygon", {
3556
- enumerable: true,
3557
- get: function () { return recharts.Polygon; }
3558
- });
3559
- Object.defineProperty(exports, "Radar", {
3560
- enumerable: true,
3561
- get: function () { return recharts.Radar; }
3562
- });
3563
- Object.defineProperty(exports, "RadarChart", {
3564
- enumerable: true,
3565
- get: function () { return recharts.RadarChart; }
3566
- });
3567
- Object.defineProperty(exports, "RadialBar", {
3568
- enumerable: true,
3569
- get: function () { return recharts.RadialBar; }
3570
- });
3571
- Object.defineProperty(exports, "RadialBarChart", {
3572
- enumerable: true,
3573
- get: function () { return recharts.RadialBarChart; }
3574
- });
3575
- Object.defineProperty(exports, "Rectangle", {
3576
- enumerable: true,
3577
- get: function () { return recharts.Rectangle; }
3578
- });
3579
- Object.defineProperty(exports, "ReferenceArea", {
3580
- enumerable: true,
3581
- get: function () { return recharts.ReferenceArea; }
3582
- });
3583
- Object.defineProperty(exports, "ReferenceDot", {
3584
- enumerable: true,
3585
- get: function () { return recharts.ReferenceDot; }
3586
- });
3587
- Object.defineProperty(exports, "ReferenceLine", {
3588
- enumerable: true,
3589
- get: function () { return recharts.ReferenceLine; }
3590
- });
3591
- Object.defineProperty(exports, "ResponsiveContainer", {
3592
- enumerable: true,
3593
- get: function () { return recharts.ResponsiveContainer; }
3594
- });
3595
- Object.defineProperty(exports, "Sankey", {
3596
- enumerable: true,
3597
- get: function () { return recharts.Sankey; }
3598
- });
3599
- Object.defineProperty(exports, "Scatter", {
3600
- enumerable: true,
3601
- get: function () { return recharts.Scatter; }
3602
- });
3603
- Object.defineProperty(exports, "ScatterChart", {
3604
- enumerable: true,
3605
- get: function () { return recharts.ScatterChart; }
3606
- });
3607
- Object.defineProperty(exports, "Sector", {
3608
- enumerable: true,
3609
- get: function () { return recharts.Sector; }
3610
- });
3611
- Object.defineProperty(exports, "Text", {
3612
- enumerable: true,
3613
- get: function () { return recharts.Text; }
3614
- });
3615
- Object.defineProperty(exports, "Treemap", {
3616
- enumerable: true,
3617
- get: function () { return recharts.Treemap; }
3618
- });
3619
- Object.defineProperty(exports, "XAxis", {
3620
- enumerable: true,
3621
- get: function () { return recharts.XAxis; }
3622
- });
3623
- Object.defineProperty(exports, "YAxis", {
3624
- enumerable: true,
3625
- get: function () { return recharts.YAxis; }
3626
- });
3627
- Object.defineProperty(exports, "ZAxis", {
3628
- enumerable: true,
3629
- get: function () { return recharts.ZAxis; }
3630
- });
3631
- exports.Accordion = Accordion;
3632
- exports.AccordionContent = AccordionContent;
3633
- exports.AccordionItem = AccordionItem;
3634
- exports.AccordionTrigger = AccordionTrigger;
3635
- exports.AspectRatio = AspectRatio;
3636
- exports.Avatar = Avatar;
3637
- exports.AvatarFallback = AvatarFallback;
3638
- exports.AvatarImage = AvatarImage;
3639
- exports.Badge = Badge;
3640
- exports.Breadcrumb = Breadcrumb;
3641
- exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
3642
- exports.BreadcrumbItem = BreadcrumbItem;
3643
- exports.BreadcrumbLink = BreadcrumbLink;
3644
- exports.BreadcrumbList = BreadcrumbList;
3645
- exports.BreadcrumbPage = BreadcrumbPage;
3646
- exports.BreadcrumbSeparator = BreadcrumbSeparator;
3647
- exports.Button = Button;
3648
- exports.CLOSE_ICON_ID = CLOSE_ICON_ID;
3649
- exports.Calendar = Calendar;
3650
- exports.CalendarDayButton = CalendarDayButton;
3651
- exports.CalendarIcon = CalendarIcon;
3652
- exports.Card = Card;
3653
- exports.CardContent = CardContent;
3654
- exports.CardDescription = CardDescription;
3655
- exports.CardFooter = CardFooter;
3656
- exports.CardHeader = CardHeader;
3657
- exports.CardTitle = CardTitle;
3658
- exports.Carousel = Carousel;
3659
- exports.CarouselContent = CarouselContent;
3660
- exports.CarouselItem = CarouselItem;
3661
- exports.CarouselNext = CarouselNext;
3662
- exports.CarouselPrevious = CarouselPrevious;
3663
- exports.ChartContainer = ChartContainer;
3664
- exports.ChartLegendContent = ChartLegendContent;
3665
- exports.ChartTooltipContent = ChartTooltipContent;
3666
- exports.ChatInput = ChatInput;
3667
- exports.Checkbox = Checkbox;
3668
- exports.ChevronDownIcon = ChevronDownIcon;
3669
- exports.ChevronLeftIcon = ChevronLeftIcon;
3670
- exports.ChevronRightIcon = ChevronRightIcon;
3671
- exports.ChevronUpIcon = ChevronUpIcon;
3672
- exports.CloseIcon = CloseIcon;
3673
- exports.Collapsible = Collapsible;
3674
- exports.CollapsibleContent = CollapsibleContent2;
3675
- exports.CollapsibleTrigger = CollapsibleTrigger2;
3676
- exports.ContextMenu = ContextMenu;
3677
- exports.ContextMenuCheckboxItem = ContextMenuCheckboxItem;
3678
- exports.ContextMenuContent = ContextMenuContent;
3679
- exports.ContextMenuGroup = ContextMenuGroup;
3680
- exports.ContextMenuItem = ContextMenuItem;
3681
- exports.ContextMenuLabel = ContextMenuLabel;
3682
- exports.ContextMenuPortal = ContextMenuPortal;
3683
- exports.ContextMenuRadioGroup = ContextMenuRadioGroup;
3684
- exports.ContextMenuRadioItem = ContextMenuRadioItem;
3685
- exports.ContextMenuSeparator = ContextMenuSeparator;
3686
- exports.ContextMenuShortcut = ContextMenuShortcut;
3687
- exports.ContextMenuSub = ContextMenuSub;
3688
- exports.ContextMenuSubContent = ContextMenuSubContent;
3689
- exports.ContextMenuSubTrigger = ContextMenuSubTrigger;
3690
- exports.ContextMenuTrigger = ContextMenuTrigger;
3691
- exports.Dialog = Dialog;
3692
- exports.DialogClose = DialogClose;
3693
- exports.DialogContent = DialogContent;
3694
- exports.DialogDescription = DialogDescription;
3695
- exports.DialogFooter = DialogFooter;
3696
- exports.DialogHeader = DialogHeader;
3697
- exports.DialogOverlay = DialogOverlay;
3698
- exports.DialogPortal = DialogPortal;
3699
- exports.DialogTitle = DialogTitle;
3700
- exports.DialogTrigger = DialogTrigger;
3701
- exports.Drawer = Drawer;
3702
- exports.DrawerClose = DrawerClose;
3703
- exports.DrawerContent = DrawerContent;
3704
- exports.DrawerDescription = DrawerDescription;
3705
- exports.DrawerFooter = DrawerFooter;
3706
- exports.DrawerHeader = DrawerHeader;
3707
- exports.DrawerOverlay = DrawerOverlay;
3708
- exports.DrawerPortal = DrawerPortal;
3709
- exports.DrawerTitle = DrawerTitle;
3710
- exports.DrawerTrigger = DrawerTrigger;
3711
- exports.DropdownButton = DropdownButton;
3712
- exports.DropdownMenu = DropdownMenu;
3713
- exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
3714
- exports.DropdownMenuContent = DropdownMenuContent;
3715
- exports.DropdownMenuGroup = DropdownMenuGroup;
3716
- exports.DropdownMenuItem = DropdownMenuItem;
3717
- exports.DropdownMenuLabel = DropdownMenuLabel;
3718
- exports.DropdownMenuPortal = DropdownMenuPortal;
3719
- exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
3720
- exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
3721
- exports.DropdownMenuSeparator = DropdownMenuSeparator;
3722
- exports.DropdownMenuShortcut = DropdownMenuShortcut;
3723
- exports.DropdownMenuSub = DropdownMenuSub;
3724
- exports.DropdownMenuSubContent = DropdownMenuSubContent;
3725
- exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
3726
- exports.DropdownMenuTrigger = DropdownMenuTrigger;
3727
- exports.Header = Header;
3728
- exports.HoverCard = HoverCard;
3729
- exports.HoverCardContent = HoverCardContent;
3730
- exports.HoverCardTrigger = HoverCardTrigger;
3731
- exports.IconButton = IconButton;
3732
- exports.Input = Input;
3733
- exports.InputOTP = InputOTP;
3734
- exports.InputOTPGroup = InputOTPGroup;
3735
- exports.InputOTPSeparator = InputOTPSeparator;
3736
- exports.InputOTPSlot = InputOTPSlot;
3737
- exports.Label = Label;
3738
- exports.MENU_ICON_ID = MENU_ICON_ID;
3739
- exports.MenuIcon = MenuIcon;
3740
- exports.Menubar = Menubar;
3741
- exports.MenubarCheckboxItem = MenubarCheckboxItem;
3742
- exports.MenubarContent = MenubarContent;
3743
- exports.MenubarGroup = MenubarGroup;
3744
- exports.MenubarItem = MenubarItem;
3745
- exports.MenubarLabel = MenubarLabel;
3746
- exports.MenubarMenu = MenubarMenu;
3747
- exports.MenubarPortal = MenubarPortal;
3748
- exports.MenubarRadioGroup = MenubarRadioGroup;
3749
- exports.MenubarRadioItem = MenubarRadioItem;
3750
- exports.MenubarSeparator = MenubarSeparator;
3751
- exports.MenubarShortcut = MenubarShortcut;
3752
- exports.MenubarSub = MenubarSub;
3753
- exports.MenubarSubContent = MenubarSubContent;
3754
- exports.MenubarSubTrigger = MenubarSubTrigger;
3755
- exports.MenubarTrigger = MenubarTrigger;
3756
- exports.MessageBubble = MessageBubble;
3757
- exports.MessageType = MessageType;
3758
- exports.NativeSelect = NativeSelect;
3759
- exports.NativeSelectOptGroup = NativeSelectOptGroup;
3760
- exports.NativeSelectOption = NativeSelectOption;
3761
- exports.NavigationMenu = NavigationMenu;
3762
- exports.NavigationMenuContent = NavigationMenuContent;
3763
- exports.NavigationMenuIndicator = NavigationMenuIndicator;
3764
- exports.NavigationMenuItem = NavigationMenuItem;
3765
- exports.NavigationMenuLink = NavigationMenuLink;
3766
- exports.NavigationMenuList = NavigationMenuList;
3767
- exports.NavigationMenuTrigger = NavigationMenuTrigger;
3768
- exports.NavigationMenuViewport = NavigationMenuViewport;
3769
- exports.Pagination = Pagination;
3770
- exports.PaginationContent = PaginationContent;
3771
- exports.PaginationEllipsis = PaginationEllipsis;
3772
- exports.PaginationItem = PaginationItem;
3773
- exports.PaginationLink = PaginationLink;
3774
- exports.PaginationNext = PaginationNext;
3775
- exports.PaginationPrevious = PaginationPrevious;
3776
- exports.Popover = Popover;
3777
- exports.PopoverAnchor = PopoverAnchor;
3778
- exports.PopoverContent = PopoverContent;
3779
- exports.PopoverTrigger = PopoverTrigger;
3780
- exports.Progress = Progress;
3781
- exports.RadioGroup = RadioGroup;
3782
- exports.RadioGroupItem = RadioGroupItem;
3783
- exports.ResizableHandle = ResizableHandle;
3784
- exports.ResizablePanel = ResizablePanel;
3785
- exports.ResizablePanelGroup = ResizablePanelGroup;
3786
- exports.ScrollArea = ScrollArea;
3787
- exports.ScrollBar = ScrollBar;
3788
- exports.Select = Select;
3789
- exports.SelectContent = SelectContent;
3790
- exports.SelectGroup = SelectGroup;
3791
- exports.SelectItem = SelectItem;
3792
- exports.SelectLabel = SelectLabel;
3793
- exports.SelectScrollDownButton = SelectScrollDownButton;
3794
- exports.SelectScrollUpButton = SelectScrollUpButton;
3795
- exports.SelectSeparator = SelectSeparator;
3796
- exports.SelectTrigger = SelectTrigger;
3797
- exports.SelectValue = SelectValue;
3798
- exports.Separator = Separator2;
3799
- exports.Sheet = Sheet;
3800
- exports.SheetClose = SheetClose;
3801
- exports.SheetContent = SheetContent;
3802
- exports.SheetDescription = SheetDescription;
3803
- exports.SheetFooter = SheetFooter;
3804
- exports.SheetHeader = SheetHeader;
3805
- exports.SheetOverlay = SheetOverlay;
3806
- exports.SheetPortal = SheetPortal;
3807
- exports.SheetTitle = SheetTitle;
3808
- exports.SheetTrigger = SheetTrigger;
3809
- exports.Sidebar = Sidebar;
3810
- exports.SidebarContent = SidebarContent;
3811
- exports.SidebarHeader = SidebarHeader;
3812
- exports.SidebarMenu = SidebarMenu;
3813
- exports.SidebarMenuButton = SidebarMenuButton;
3814
- exports.SidebarMenuIcon = SidebarMenuIcon;
3815
- exports.SidebarMenuItem = SidebarMenuItem;
3816
- exports.SidebarMenuLabel = SidebarMenuLabel;
3817
- exports.Skeleton = Skeleton;
3818
- exports.Slider = Slider;
3819
- exports.SliderRange = SliderRange;
3820
- exports.SliderThumb = SliderThumb;
3821
- exports.SliderTrack = SliderTrack;
3822
- exports.Spinner = Spinner;
3823
- exports.Switch = Switch;
3824
- exports.Tabs = Tabs;
3825
- exports.TabsContent = TabsContent;
3826
- exports.TabsList = TabsList;
3827
- exports.TabsTrigger = TabsTrigger;
3828
- exports.Textarea = Textarea;
3829
- exports.ThreadList = ThreadList;
3830
- exports.Tooltip = Tooltip;
3831
- exports.TooltipContent = TooltipContent;
3832
- exports.TooltipProvider = TooltipProvider;
3833
- exports.TooltipTrigger = TooltipTrigger;
3834
- exports.UserInfo = UserInfo;
3835
- exports.applyTheme = applyTheme;
3836
- exports.badgeVariants = badgeVariants;
3837
- //# sourceMappingURL=index.cjs.map
3838
- //# sourceMappingURL=index.cjs.map