@nextop-os/ui-system 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/AGENTS.md +30 -8
  2. package/README.md +11 -14
  3. package/agent/install-skill.mjs +65 -5
  4. package/agent/nextop-ui-system/SKILL.md +119 -8
  5. package/agent/nextop-ui-system/references/extract-base-component.md +50 -6
  6. package/agent/nextop-ui-system/references/maintain-inventory.md +5 -0
  7. package/agent/nextop-ui-system/references/promote-business-component.md +94 -208
  8. package/dist/chunk-GE5YVRTV.js +859 -0
  9. package/dist/chunk-GE5YVRTV.js.map +1 -0
  10. package/dist/chunk-KJQ366TA.js +70 -0
  11. package/dist/chunk-KJQ366TA.js.map +1 -0
  12. package/dist/chunk-LVHEV755.js +2553 -0
  13. package/dist/chunk-LVHEV755.js.map +1 -0
  14. package/dist/components/index.d.ts +162 -11
  15. package/dist/components/index.js +62 -2
  16. package/dist/date-format.d.ts +6 -0
  17. package/dist/date-format.js +11 -0
  18. package/dist/date-format.js.map +1 -0
  19. package/dist/dev-vite.js +12 -5
  20. package/dist/dev-vite.js.map +1 -1
  21. package/dist/icons/index.d.ts +90 -47
  22. package/dist/icons/index.js +91 -11
  23. package/dist/index.d.ts +3 -2
  24. package/dist/index.js +159 -11
  25. package/dist/metadata/components.json +1320 -265
  26. package/dist/metadata/components.schema.json +4 -0
  27. package/dist/metadata/index.d.ts +3 -1
  28. package/dist/metadata/index.js +1320 -265
  29. package/dist/metadata/index.js.map +1 -1
  30. package/dist/styles/base.css +85 -0
  31. package/dist/styles/index.css +1 -0
  32. package/dist/styles/semantic.css +7 -0
  33. package/dist/styles/theme.css +82 -1
  34. package/package.json +10 -3
  35. package/ui-system.md +640 -0
  36. package/UI_SYSTEM_GUIDELINES.md +0 -148
  37. package/dist/chunk-FT633NLJ.js +0 -1159
  38. package/dist/chunk-FT633NLJ.js.map +0 -1
  39. package/dist/chunk-NFSMZKML.js +0 -208
  40. package/dist/chunk-NFSMZKML.js.map +0 -1
@@ -1,1159 +0,0 @@
1
- import {
2
- CheckIcon,
3
- ChevronDownIcon,
4
- ChevronRightIcon,
5
- ChevronUpIcon,
6
- CloseIcon
7
- } from "./chunk-NFSMZKML.js";
8
- import {
9
- cn
10
- } from "./chunk-DGPY4WP3.js";
11
-
12
- // src/components/badge.tsx
13
- import { cva } from "class-variance-authority";
14
- import { Slot } from "radix-ui";
15
- import { jsx } from "react/jsx-runtime";
16
- var badgeVariants = cva(
17
- "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border border-transparent px-2 py-0.5 text-[0.72rem] font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow] focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
18
- {
19
- variants: {
20
- variant: {
21
- default: "bg-primary text-primary-foreground [a]:hover:bg-primary/92",
22
- secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/88",
23
- destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/18",
24
- outline: "border-border bg-card/90 text-foreground [a]:hover:bg-muted [a]:hover:text-foreground",
25
- ghost: "hover:bg-accent/80 hover:text-accent-foreground dark:hover:bg-muted/50",
26
- link: "text-primary underline-offset-4 hover:underline"
27
- }
28
- },
29
- defaultVariants: {
30
- variant: "default"
31
- }
32
- }
33
- );
34
- function Badge({
35
- className,
36
- variant = "default",
37
- asChild = false,
38
- ...props
39
- }) {
40
- const Comp = asChild ? Slot.Root : "span";
41
- return /* @__PURE__ */ jsx(
42
- Comp,
43
- {
44
- "data-slot": "badge",
45
- "data-variant": variant,
46
- className: cn(badgeVariants({ variant }), className),
47
- ...props
48
- }
49
- );
50
- }
51
-
52
- // src/components/button.tsx
53
- import { cva as cva2 } from "class-variance-authority";
54
- import { Slot as Slot2 } from "radix-ui";
55
- import { jsx as jsx2 } from "react/jsx-runtime";
56
- var buttonVariants = cva2(
57
- "group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,transform] outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
58
- {
59
- variants: {
60
- variant: {
61
- default: "bg-primary text-primary-foreground shadow-soft hover:bg-primary/92",
62
- outline: "border-border bg-card text-foreground hover:bg-muted/80 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
63
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/88 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
64
- ghost: "hover:bg-accent/80 hover:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-accent-foreground dark:hover:bg-muted/50",
65
- chrome: "border border-transparent bg-transparent text-muted-foreground shadow-none hover:border-transparent hover:bg-transparency-block hover:text-foreground active:bg-transparency-block-active active:text-foreground aria-expanded:border-transparent aria-expanded:bg-transparency-block aria-expanded:text-foreground disabled:pointer-events-auto disabled:cursor-not-allowed disabled:opacity-45",
66
- destructive: "bg-destructive/10 text-destructive hover:bg-destructive/18 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
67
- link: "text-primary underline-offset-4 hover:underline"
68
- },
69
- size: {
70
- default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
71
- xs: "h-6 gap-1 rounded-sm px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
72
- sm: "h-7 gap-1 rounded-sm px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
73
- lg: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5",
74
- icon: "size-8",
75
- "icon-xs": "size-6 rounded-sm in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
76
- "icon-sm": "size-7 rounded-sm in-data-[slot=button-group]:rounded-md",
77
- "icon-lg": "size-9"
78
- }
79
- },
80
- defaultVariants: {
81
- variant: "default",
82
- size: "default"
83
- },
84
- compoundVariants: [
85
- {
86
- variant: "chrome",
87
- size: "icon-sm",
88
- class: "rounded-[4px]"
89
- }
90
- ]
91
- }
92
- );
93
- function Button({
94
- className,
95
- variant = "default",
96
- size = "default",
97
- asChild = false,
98
- ...props
99
- }) {
100
- const Comp = asChild ? Slot2.Root : "button";
101
- return /* @__PURE__ */ jsx2(
102
- Comp,
103
- {
104
- "data-slot": "button",
105
- "data-variant": variant,
106
- "data-size": size,
107
- className: cn(buttonVariants({ variant, size, className })),
108
- ...props
109
- }
110
- );
111
- }
112
-
113
- // src/components/card.tsx
114
- import { jsx as jsx3 } from "react/jsx-runtime";
115
- function Card({
116
- className,
117
- size = "default",
118
- ...props
119
- }) {
120
- return /* @__PURE__ */ jsx3(
121
- "div",
122
- {
123
- "data-slot": "card",
124
- "data-size": size,
125
- className: cn(
126
- "group/card flex flex-col gap-4 overflow-hidden rounded-xl border border-border/70 bg-card py-4 text-sm text-card-foreground shadow-soft has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
127
- className
128
- ),
129
- ...props
130
- }
131
- );
132
- }
133
- function CardHeader({ className, ...props }) {
134
- return /* @__PURE__ */ jsx3(
135
- "div",
136
- {
137
- "data-slot": "card-header",
138
- className: cn(
139
- "group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:border-border/70 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",
140
- className
141
- ),
142
- ...props
143
- }
144
- );
145
- }
146
- function CardTitle({ className, ...props }) {
147
- return /* @__PURE__ */ jsx3(
148
- "div",
149
- {
150
- "data-slot": "card-title",
151
- className: cn(
152
- "text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
153
- className
154
- ),
155
- ...props
156
- }
157
- );
158
- }
159
- function CardDescription({ className, ...props }) {
160
- return /* @__PURE__ */ jsx3(
161
- "div",
162
- {
163
- "data-slot": "card-description",
164
- className: cn("text-sm text-muted-foreground", className),
165
- ...props
166
- }
167
- );
168
- }
169
- function CardAction({ className, ...props }) {
170
- return /* @__PURE__ */ jsx3(
171
- "div",
172
- {
173
- "data-slot": "card-action",
174
- className: cn(
175
- "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
176
- className
177
- ),
178
- ...props
179
- }
180
- );
181
- }
182
- function CardContent({ className, ...props }) {
183
- return /* @__PURE__ */ jsx3(
184
- "div",
185
- {
186
- "data-slot": "card-content",
187
- className: cn("px-4 group-data-[size=sm]/card:px-3", className),
188
- ...props
189
- }
190
- );
191
- }
192
- function CardFooter({ className, ...props }) {
193
- return /* @__PURE__ */ jsx3(
194
- "div",
195
- {
196
- "data-slot": "card-footer",
197
- className: cn(
198
- "flex items-center rounded-b-xl border-t border-border/70 bg-muted/42 p-4 group-data-[size=sm]/card:p-3",
199
- className
200
- ),
201
- ...props
202
- }
203
- );
204
- }
205
-
206
- // src/components/dialog.tsx
207
- import { Dialog as DialogPrimitive } from "radix-ui";
208
- import { Fragment, jsx as jsx4, jsxs } from "react/jsx-runtime";
209
- function Dialog({
210
- ...props
211
- }) {
212
- return /* @__PURE__ */ jsx4(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
213
- }
214
- function DialogTrigger({
215
- ...props
216
- }) {
217
- return /* @__PURE__ */ jsx4(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
218
- }
219
- function DialogPortal({
220
- ...props
221
- }) {
222
- return /* @__PURE__ */ jsx4(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
223
- }
224
- function DialogClose({
225
- ...props
226
- }) {
227
- return /* @__PURE__ */ jsx4(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
228
- }
229
- function DialogOverlay({
230
- className,
231
- style,
232
- ...props
233
- }) {
234
- return /* @__PURE__ */ jsx4(
235
- DialogPrimitive.Overlay,
236
- {
237
- "data-slot": "dialog-overlay",
238
- className: cn(
239
- "fixed inset-0 isolate bg-black/12 duration-150 supports-backdrop-filter:backdrop-blur-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
240
- className
241
- ),
242
- style: { zIndex: "var(--z-dialog-overlay)", ...style },
243
- ...props
244
- }
245
- );
246
- }
247
- function DialogContent({
248
- className,
249
- children,
250
- overlayClassName,
251
- portaled = true,
252
- showCloseButton = true,
253
- style,
254
- ...props
255
- }) {
256
- const content = /* @__PURE__ */ jsxs(Fragment, { children: [
257
- /* @__PURE__ */ jsx4(DialogOverlay, { className: overlayClassName }),
258
- /* @__PURE__ */ jsxs(
259
- DialogPrimitive.Content,
260
- {
261
- "data-slot": "dialog-content",
262
- className: cn(
263
- portaled ? "fixed" : "absolute",
264
- "top-1/2 left-1/2 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-5 rounded-2xl bg-popover/96 p-5 text-sm text-popover-foreground shadow-[0_24px_64px_rgba(15,23,42,0.14),0_8px_20px_rgba(15,23,42,0.1)] ring-1 ring-foreground/8 duration-150 outline-none supports-backdrop-filter:backdrop-blur-xl sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
265
- className
266
- ),
267
- style: { zIndex: "var(--z-dialog)", ...style },
268
- ...props,
269
- children: [
270
- children,
271
- showCloseButton && /* @__PURE__ */ jsx4(DialogPrimitive.Close, { "data-slot": "dialog-close", asChild: true, children: /* @__PURE__ */ jsxs(
272
- Button,
273
- {
274
- variant: "ghost",
275
- className: "absolute top-2 right-2",
276
- size: "icon-sm",
277
- children: [
278
- /* @__PURE__ */ jsx4(CloseIcon, {}),
279
- /* @__PURE__ */ jsx4("span", { className: "sr-only", children: "Close" })
280
- ]
281
- }
282
- ) })
283
- ]
284
- }
285
- )
286
- ] });
287
- if (!portaled) {
288
- return content;
289
- }
290
- return /* @__PURE__ */ jsx4(DialogPortal, { children: content });
291
- }
292
- function DialogHeader({ className, ...props }) {
293
- return /* @__PURE__ */ jsx4(
294
- "div",
295
- {
296
- "data-slot": "dialog-header",
297
- className: cn("flex flex-col gap-2", className),
298
- ...props
299
- }
300
- );
301
- }
302
- function DialogFooter({
303
- className,
304
- showCloseButton = false,
305
- children,
306
- ...props
307
- }) {
308
- return /* @__PURE__ */ jsxs(
309
- "div",
310
- {
311
- "data-slot": "dialog-footer",
312
- className: cn(
313
- "-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",
314
- className
315
- ),
316
- ...props,
317
- children: [
318
- children,
319
- showCloseButton && /* @__PURE__ */ jsx4(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx4(Button, { variant: "outline", children: "Close" }) })
320
- ]
321
- }
322
- );
323
- }
324
- function DialogTitle({
325
- className,
326
- ...props
327
- }) {
328
- return /* @__PURE__ */ jsx4(
329
- DialogPrimitive.Title,
330
- {
331
- "data-slot": "dialog-title",
332
- className: cn("text-base leading-none font-medium", className),
333
- ...props
334
- }
335
- );
336
- }
337
- function DialogDescription({
338
- className,
339
- ...props
340
- }) {
341
- return /* @__PURE__ */ jsx4(
342
- DialogPrimitive.Description,
343
- {
344
- "data-slot": "dialog-description",
345
- className: cn(
346
- "text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
347
- className
348
- ),
349
- ...props
350
- }
351
- );
352
- }
353
-
354
- // src/components/confirmation-dialog.tsx
355
- import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
356
- function confirmToneClassName(tone) {
357
- if (tone === "destructive") {
358
- return "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/92 focus-visible:border-destructive/40 focus-visible:ring-destructive/25";
359
- }
360
- return void 0;
361
- }
362
- function ConfirmationDialog({
363
- cancelLabel,
364
- children,
365
- className,
366
- confirmBusy = false,
367
- confirmDisabled = false,
368
- confirmLabel,
369
- description,
370
- disableCloseWhileBusy = true,
371
- footer,
372
- hideConfirmButton = false,
373
- onCancel,
374
- onConfirm,
375
- onOpenChange,
376
- open,
377
- overlayClassName,
378
- portaled = true,
379
- tone = "default",
380
- title
381
- }) {
382
- const isCloseDisabled = disableCloseWhileBusy && confirmBusy;
383
- return /* @__PURE__ */ jsx5(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs2(
384
- DialogContent,
385
- {
386
- className: cn(
387
- "max-w-[24.5rem] gap-4 rounded-[1.15rem] border-0 bg-popover/96 px-6 py-5 text-left shadow-[0_18px_48px_rgba(15,23,42,0.14),0_6px_18px_rgba(15,23,42,0.08)] backdrop-blur-xl sm:max-w-[24.5rem]",
388
- className
389
- ),
390
- overlayClassName: cn(
391
- "bg-black/12 supports-backdrop-filter:backdrop-blur-[10px]",
392
- overlayClassName
393
- ),
394
- portaled,
395
- showCloseButton: false,
396
- onEscapeKeyDown: (event) => {
397
- if (isCloseDisabled) {
398
- event.preventDefault();
399
- }
400
- },
401
- onInteractOutside: (event) => {
402
- if (isCloseDisabled) {
403
- event.preventDefault();
404
- }
405
- },
406
- children: [
407
- /* @__PURE__ */ jsxs2(DialogHeader, { className: "gap-2", children: [
408
- /* @__PURE__ */ jsx5(DialogTitle, { className: "text-base leading-6 font-semibold tracking-[-0.01em] text-foreground", children: title }),
409
- description ? /* @__PURE__ */ jsx5(DialogDescription, { className: "text-[0.94rem] leading-6 text-muted-foreground", children: description }) : null
410
- ] }),
411
- children ? /* @__PURE__ */ jsx5("div", { className: "text-[0.82rem] leading-5 text-muted-foreground", children }) : null,
412
- footer ?? /* @__PURE__ */ jsxs2("div", { className: "flex justify-end gap-2 pt-1", children: [
413
- /* @__PURE__ */ jsx5(
414
- Button,
415
- {
416
- disabled: confirmBusy,
417
- size: "lg",
418
- type: "button",
419
- variant: "outline",
420
- className: "min-w-[5.5rem]",
421
- onClick: () => {
422
- onCancel?.();
423
- onOpenChange(false);
424
- },
425
- children: cancelLabel
426
- }
427
- ),
428
- hideConfirmButton ? null : /* @__PURE__ */ jsx5(
429
- Button,
430
- {
431
- disabled: confirmBusy || confirmDisabled,
432
- size: "lg",
433
- type: "button",
434
- variant: tone === "default" ? "default" : "destructive",
435
- className: cn(
436
- "min-w-[7.5rem] font-medium shadow-none",
437
- confirmToneClassName(tone)
438
- ),
439
- onClick: () => {
440
- onConfirm?.();
441
- },
442
- children: confirmLabel
443
- }
444
- )
445
- ] })
446
- ]
447
- }
448
- ) });
449
- }
450
-
451
- // src/components/dropdown-menu.tsx
452
- import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
453
- import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
454
- function DropdownMenu({
455
- ...props
456
- }) {
457
- return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
458
- }
459
- function DropdownMenuPortal({
460
- ...props
461
- }) {
462
- return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
463
- }
464
- function DropdownMenuTrigger({
465
- ...props
466
- }) {
467
- return /* @__PURE__ */ jsx6(
468
- DropdownMenuPrimitive.Trigger,
469
- {
470
- "data-slot": "dropdown-menu-trigger",
471
- ...props
472
- }
473
- );
474
- }
475
- function DropdownMenuContent({
476
- className,
477
- align = "start",
478
- sideOffset = 4,
479
- style,
480
- ...props
481
- }) {
482
- return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx6(
483
- DropdownMenuPrimitive.Content,
484
- {
485
- "data-slot": "dropdown-menu-content",
486
- align,
487
- className: cn(
488
- "z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
489
- className
490
- ),
491
- sideOffset,
492
- style: { zIndex: "var(--z-popover)", ...style },
493
- ...props
494
- }
495
- ) });
496
- }
497
- function DropdownMenuGroup({
498
- ...props
499
- }) {
500
- return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
501
- }
502
- function DropdownMenuItem({
503
- className,
504
- inset,
505
- variant = "default",
506
- ...props
507
- }) {
508
- return /* @__PURE__ */ jsx6(
509
- DropdownMenuPrimitive.Item,
510
- {
511
- "data-inset": inset,
512
- "data-slot": "dropdown-menu-item",
513
- "data-variant": variant,
514
- className: cn(
515
- "group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
516
- className
517
- ),
518
- ...props
519
- }
520
- );
521
- }
522
- function DropdownMenuCheckboxItem({
523
- className,
524
- children,
525
- checked,
526
- inset,
527
- ...props
528
- }) {
529
- return /* @__PURE__ */ jsxs3(
530
- DropdownMenuPrimitive.CheckboxItem,
531
- {
532
- checked,
533
- "data-inset": inset,
534
- "data-slot": "dropdown-menu-checkbox-item",
535
- className: cn(
536
- "relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
537
- className
538
- ),
539
- ...props,
540
- children: [
541
- /* @__PURE__ */ jsx6(
542
- "span",
543
- {
544
- className: "pointer-events-none absolute right-2 flex items-center justify-center",
545
- "data-slot": "dropdown-menu-checkbox-item-indicator",
546
- children: /* @__PURE__ */ jsx6(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(CheckIcon, {}) })
547
- }
548
- ),
549
- children
550
- ]
551
- }
552
- );
553
- }
554
- function DropdownMenuRadioGroup({
555
- ...props
556
- }) {
557
- return /* @__PURE__ */ jsx6(
558
- DropdownMenuPrimitive.RadioGroup,
559
- {
560
- "data-slot": "dropdown-menu-radio-group",
561
- ...props
562
- }
563
- );
564
- }
565
- function DropdownMenuRadioItem({
566
- className,
567
- children,
568
- inset,
569
- ...props
570
- }) {
571
- return /* @__PURE__ */ jsxs3(
572
- DropdownMenuPrimitive.RadioItem,
573
- {
574
- "data-inset": inset,
575
- "data-slot": "dropdown-menu-radio-item",
576
- className: cn(
577
- "relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
578
- className
579
- ),
580
- ...props,
581
- children: [
582
- /* @__PURE__ */ jsx6(
583
- "span",
584
- {
585
- className: "pointer-events-none absolute right-2 flex items-center justify-center",
586
- "data-slot": "dropdown-menu-radio-item-indicator",
587
- children: /* @__PURE__ */ jsx6(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(CheckIcon, {}) })
588
- }
589
- ),
590
- children
591
- ]
592
- }
593
- );
594
- }
595
- function DropdownMenuLabel({
596
- className,
597
- inset,
598
- ...props
599
- }) {
600
- return /* @__PURE__ */ jsx6(
601
- DropdownMenuPrimitive.Label,
602
- {
603
- "data-inset": inset,
604
- "data-slot": "dropdown-menu-label",
605
- className: cn(
606
- "px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",
607
- className
608
- ),
609
- ...props
610
- }
611
- );
612
- }
613
- function DropdownMenuSeparator({
614
- className,
615
- ...props
616
- }) {
617
- return /* @__PURE__ */ jsx6(
618
- DropdownMenuPrimitive.Separator,
619
- {
620
- "data-slot": "dropdown-menu-separator",
621
- className: cn("-mx-1 my-1 h-px bg-border", className),
622
- ...props
623
- }
624
- );
625
- }
626
- function DropdownMenuShortcut({
627
- className,
628
- ...props
629
- }) {
630
- return /* @__PURE__ */ jsx6(
631
- "span",
632
- {
633
- "data-slot": "dropdown-menu-shortcut",
634
- className: cn(
635
- "ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground",
636
- className
637
- ),
638
- ...props
639
- }
640
- );
641
- }
642
- function DropdownMenuSub({
643
- ...props
644
- }) {
645
- return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
646
- }
647
- function DropdownMenuSubTrigger({
648
- className,
649
- inset,
650
- children,
651
- ...props
652
- }) {
653
- return /* @__PURE__ */ jsxs3(
654
- DropdownMenuPrimitive.SubTrigger,
655
- {
656
- "data-inset": inset,
657
- "data-slot": "dropdown-menu-sub-trigger",
658
- className: cn(
659
- "flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
660
- className
661
- ),
662
- ...props,
663
- children: [
664
- children,
665
- /* @__PURE__ */ jsx6(ChevronRightIcon, { className: "ml-auto" })
666
- ]
667
- }
668
- );
669
- }
670
- function DropdownMenuSubContent({
671
- className,
672
- style,
673
- ...props
674
- }) {
675
- return /* @__PURE__ */ jsx6(
676
- DropdownMenuPrimitive.SubContent,
677
- {
678
- "data-slot": "dropdown-menu-sub-content",
679
- className: cn(
680
- "z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
681
- className
682
- ),
683
- style: { zIndex: "var(--z-popover)", ...style },
684
- ...props
685
- }
686
- );
687
- }
688
-
689
- // src/components/input.tsx
690
- import { jsx as jsx7 } from "react/jsx-runtime";
691
- function Input({ className, type, ...props }) {
692
- return /* @__PURE__ */ jsx7(
693
- "input",
694
- {
695
- type,
696
- "data-slot": "input",
697
- className: cn(
698
- "h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
699
- className
700
- ),
701
- ...props
702
- }
703
- );
704
- }
705
-
706
- // src/components/resizable.tsx
707
- import * as ResizablePrimitive from "react-resizable-panels";
708
- import { jsx as jsx8 } from "react/jsx-runtime";
709
- function ResizablePanelGroup({
710
- className,
711
- orientation = "horizontal",
712
- ...props
713
- }) {
714
- return /* @__PURE__ */ jsx8(
715
- ResizablePrimitive.Group,
716
- {
717
- "data-orientation": orientation,
718
- "data-slot": "resizable-panel-group",
719
- className: cn(
720
- "flex h-full w-full data-[orientation=vertical]:flex-col",
721
- className
722
- ),
723
- ...props,
724
- orientation
725
- }
726
- );
727
- }
728
- function ResizablePanel(props) {
729
- return /* @__PURE__ */ jsx8(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
730
- }
731
- function ResizableHandle({
732
- className,
733
- withHandle,
734
- ...props
735
- }) {
736
- return /* @__PURE__ */ jsx8(
737
- ResizablePrimitive.Separator,
738
- {
739
- "data-slot": "resizable-handle",
740
- className: cn(
741
- "group relative flex items-center justify-center bg-transparent outline-none after:absolute after:bg-border/70 after:transition-colors hover:after:bg-border focus-visible:after:bg-ring aria-[orientation=horizontal]:h-2 aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:cursor-row-resize aria-[orientation=horizontal]:after:inset-x-0 aria-[orientation=horizontal]:after:top-1/2 aria-[orientation=horizontal]:after:h-px aria-[orientation=horizontal]:after:-translate-y-1/2 aria-[orientation=vertical]:h-full aria-[orientation=vertical]:w-2 aria-[orientation=vertical]:cursor-col-resize aria-[orientation=vertical]:after:inset-y-0 aria-[orientation=vertical]:after:left-1/2 aria-[orientation=vertical]:after:w-px aria-[orientation=vertical]:after:-translate-x-1/2",
742
- className
743
- ),
744
- ...props,
745
- children: withHandle ? /* @__PURE__ */ jsx8("div", { className: "z-10 flex items-center justify-center rounded-full bg-border/85 transition-colors group-hover:bg-border group-aria-[orientation=horizontal]:h-[3px] group-aria-[orientation=horizontal]:w-10 group-aria-[orientation=vertical]:h-10 group-aria-[orientation=vertical]:w-[3px]" }) : null
746
- }
747
- );
748
- }
749
-
750
- // src/components/scroll-area.tsx
751
- import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
752
- import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
753
- function ScrollArea({
754
- className,
755
- children,
756
- ...props
757
- }) {
758
- return /* @__PURE__ */ jsxs4(
759
- ScrollAreaPrimitive.Root,
760
- {
761
- "data-slot": "scroll-area",
762
- className: cn("relative", className),
763
- ...props,
764
- children: [
765
- /* @__PURE__ */ jsx9(
766
- ScrollAreaPrimitive.Viewport,
767
- {
768
- "data-slot": "scroll-area-viewport",
769
- className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
770
- children
771
- }
772
- ),
773
- /* @__PURE__ */ jsx9(ScrollBar, {}),
774
- /* @__PURE__ */ jsx9(ScrollAreaPrimitive.Corner, {})
775
- ]
776
- }
777
- );
778
- }
779
- function ScrollBar({
780
- className,
781
- orientation = "vertical",
782
- ...props
783
- }) {
784
- return /* @__PURE__ */ jsx9(
785
- ScrollAreaPrimitive.ScrollAreaScrollbar,
786
- {
787
- "data-slot": "scroll-area-scrollbar",
788
- "data-orientation": orientation,
789
- orientation,
790
- className: cn(
791
- "flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",
792
- className
793
- ),
794
- ...props,
795
- children: /* @__PURE__ */ jsx9(
796
- ScrollAreaPrimitive.ScrollAreaThumb,
797
- {
798
- "data-slot": "scroll-area-thumb",
799
- className: "relative flex-1 rounded-full bg-border"
800
- }
801
- )
802
- }
803
- );
804
- }
805
-
806
- // src/components/select.tsx
807
- import { Select as SelectPrimitive } from "radix-ui";
808
- import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
809
- function Select({
810
- ...props
811
- }) {
812
- return /* @__PURE__ */ jsx10(SelectPrimitive.Root, { "data-slot": "select", ...props });
813
- }
814
- function SelectGroup({
815
- className,
816
- ...props
817
- }) {
818
- return /* @__PURE__ */ jsx10(
819
- SelectPrimitive.Group,
820
- {
821
- "data-slot": "select-group",
822
- className: cn("scroll-my-1 p-1", className),
823
- ...props
824
- }
825
- );
826
- }
827
- function SelectValue({
828
- ...props
829
- }) {
830
- return /* @__PURE__ */ jsx10(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
831
- }
832
- function SelectTrigger({
833
- className,
834
- size = "default",
835
- children,
836
- ...props
837
- }) {
838
- return /* @__PURE__ */ jsxs5(
839
- SelectPrimitive.Trigger,
840
- {
841
- "data-slot": "select-trigger",
842
- "data-size": size,
843
- className: cn(
844
- "flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
845
- className
846
- ),
847
- ...props,
848
- children: [
849
- children,
850
- /* @__PURE__ */ jsx10(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx10(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })
851
- ]
852
- }
853
- );
854
- }
855
- function SelectContent({
856
- className,
857
- children,
858
- position = "item-aligned",
859
- align = "center",
860
- style,
861
- ...props
862
- }) {
863
- return /* @__PURE__ */ jsx10(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs5(
864
- SelectPrimitive.Content,
865
- {
866
- "data-slot": "select-content",
867
- "data-align-trigger": position === "item-aligned",
868
- className: cn(
869
- "relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
870
- 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",
871
- className
872
- ),
873
- position,
874
- align,
875
- style: { zIndex: "var(--z-popover)", ...style },
876
- ...props,
877
- children: [
878
- /* @__PURE__ */ jsx10(SelectScrollUpButton, {}),
879
- /* @__PURE__ */ jsx10(
880
- SelectPrimitive.Viewport,
881
- {
882
- "data-position": position,
883
- className: cn(
884
- "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
885
- position === "popper" && ""
886
- ),
887
- children
888
- }
889
- ),
890
- /* @__PURE__ */ jsx10(SelectScrollDownButton, {})
891
- ]
892
- }
893
- ) });
894
- }
895
- function SelectLabel({
896
- className,
897
- ...props
898
- }) {
899
- return /* @__PURE__ */ jsx10(
900
- SelectPrimitive.Label,
901
- {
902
- "data-slot": "select-label",
903
- className: cn("px-1.5 py-1 text-xs text-muted-foreground", className),
904
- ...props
905
- }
906
- );
907
- }
908
- function SelectItem({
909
- className,
910
- children,
911
- ...props
912
- }) {
913
- return /* @__PURE__ */ jsxs5(
914
- SelectPrimitive.Item,
915
- {
916
- "data-slot": "select-item",
917
- className: cn(
918
- "relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
919
- className
920
- ),
921
- ...props,
922
- children: [
923
- /* @__PURE__ */ jsx10("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx10(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx10(CheckIcon, { className: "pointer-events-none" }) }) }),
924
- /* @__PURE__ */ jsx10(SelectPrimitive.ItemText, { children })
925
- ]
926
- }
927
- );
928
- }
929
- function SelectSeparator({
930
- className,
931
- ...props
932
- }) {
933
- return /* @__PURE__ */ jsx10(
934
- SelectPrimitive.Separator,
935
- {
936
- "data-slot": "select-separator",
937
- className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
938
- ...props
939
- }
940
- );
941
- }
942
- function SelectScrollUpButton({
943
- className,
944
- ...props
945
- }) {
946
- return /* @__PURE__ */ jsx10(
947
- SelectPrimitive.ScrollUpButton,
948
- {
949
- "data-slot": "select-scroll-up-button",
950
- className: cn(
951
- "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
952
- className
953
- ),
954
- ...props,
955
- children: /* @__PURE__ */ jsx10(ChevronUpIcon, {})
956
- }
957
- );
958
- }
959
- function SelectScrollDownButton({
960
- className,
961
- ...props
962
- }) {
963
- return /* @__PURE__ */ jsx10(
964
- SelectPrimitive.ScrollDownButton,
965
- {
966
- "data-slot": "select-scroll-down-button",
967
- className: cn(
968
- "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
969
- className
970
- ),
971
- ...props,
972
- children: /* @__PURE__ */ jsx10(ChevronDownIcon, {})
973
- }
974
- );
975
- }
976
-
977
- // src/components/separator.tsx
978
- import { Separator as SeparatorPrimitive } from "radix-ui";
979
- import { jsx as jsx11 } from "react/jsx-runtime";
980
- function Separator2({
981
- className,
982
- orientation = "horizontal",
983
- decorative = true,
984
- ...props
985
- }) {
986
- return /* @__PURE__ */ jsx11(
987
- SeparatorPrimitive.Root,
988
- {
989
- "data-slot": "separator",
990
- decorative,
991
- orientation,
992
- className: cn(
993
- "shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
994
- className
995
- ),
996
- ...props
997
- }
998
- );
999
- }
1000
-
1001
- // src/components/toast.tsx
1002
- import { Toast as ToastPrimitive } from "radix-ui";
1003
- import { cva as cva3 } from "class-variance-authority";
1004
- import { jsx as jsx12 } from "react/jsx-runtime";
1005
- var ToastProvider = ToastPrimitive.Provider;
1006
- var toastVariants = cva3(
1007
- "group pointer-events-auto relative grid w-full min-w-0 gap-1 overflow-hidden rounded-lg border bg-popover px-4 py-3 pr-10 text-sm text-popover-foreground shadow-panel transition-all data-closed:fade-out-80 data-closed:slide-out-to-right-full data-open:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none sm:data-open:slide-in-from-bottom-full",
1008
- {
1009
- variants: {
1010
- variant: {
1011
- default: "border-border/70",
1012
- destructive: "border-destructive/30 bg-destructive/10 text-foreground"
1013
- }
1014
- },
1015
- defaultVariants: {
1016
- variant: "default"
1017
- }
1018
- }
1019
- );
1020
- function ToastRoot({
1021
- className,
1022
- variant,
1023
- ...props
1024
- }) {
1025
- return /* @__PURE__ */ jsx12(
1026
- ToastPrimitive.Root,
1027
- {
1028
- "data-slot": "toast",
1029
- className: cn(toastVariants({ variant }), className),
1030
- ...props
1031
- }
1032
- );
1033
- }
1034
- function ToastTitle({
1035
- className,
1036
- ...props
1037
- }) {
1038
- return /* @__PURE__ */ jsx12(
1039
- ToastPrimitive.Title,
1040
- {
1041
- "data-slot": "toast-title",
1042
- className: cn("text-sm font-semibold", className),
1043
- ...props
1044
- }
1045
- );
1046
- }
1047
- function ToastDescription({
1048
- className,
1049
- ...props
1050
- }) {
1051
- return /* @__PURE__ */ jsx12(
1052
- ToastPrimitive.Description,
1053
- {
1054
- "data-slot": "toast-description",
1055
- className: cn("text-xs leading-5 text-muted-foreground", className),
1056
- ...props
1057
- }
1058
- );
1059
- }
1060
- function ToastClose({
1061
- className,
1062
- ...props
1063
- }) {
1064
- return /* @__PURE__ */ jsx12(
1065
- ToastPrimitive.Close,
1066
- {
1067
- "data-slot": "toast-close",
1068
- className: cn(
1069
- "absolute right-2 top-2 inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35",
1070
- className
1071
- ),
1072
- ...props,
1073
- children: /* @__PURE__ */ jsx12(CloseIcon, { className: "size-4" })
1074
- }
1075
- );
1076
- }
1077
- function ToastViewport({
1078
- className,
1079
- style,
1080
- ...props
1081
- }) {
1082
- return /* @__PURE__ */ jsx12(
1083
- ToastPrimitive.Viewport,
1084
- {
1085
- "data-slot": "toast-viewport",
1086
- className: cn(
1087
- "fixed right-0 top-0 flex max-h-screen w-full flex-col-reverse gap-2 p-4 sm:bottom-0 sm:top-auto sm:max-w-sm",
1088
- className
1089
- ),
1090
- style: { zIndex: "var(--z-toast)", ...style },
1091
- ...props
1092
- }
1093
- );
1094
- }
1095
-
1096
- export {
1097
- badgeVariants,
1098
- Badge,
1099
- buttonVariants,
1100
- Button,
1101
- Card,
1102
- CardHeader,
1103
- CardTitle,
1104
- CardDescription,
1105
- CardAction,
1106
- CardContent,
1107
- CardFooter,
1108
- Dialog,
1109
- DialogTrigger,
1110
- DialogPortal,
1111
- DialogClose,
1112
- DialogOverlay,
1113
- DialogContent,
1114
- DialogHeader,
1115
- DialogFooter,
1116
- DialogTitle,
1117
- DialogDescription,
1118
- ConfirmationDialog,
1119
- DropdownMenu,
1120
- DropdownMenuPortal,
1121
- DropdownMenuTrigger,
1122
- DropdownMenuContent,
1123
- DropdownMenuGroup,
1124
- DropdownMenuItem,
1125
- DropdownMenuCheckboxItem,
1126
- DropdownMenuRadioGroup,
1127
- DropdownMenuRadioItem,
1128
- DropdownMenuLabel,
1129
- DropdownMenuSeparator,
1130
- DropdownMenuShortcut,
1131
- DropdownMenuSub,
1132
- DropdownMenuSubTrigger,
1133
- DropdownMenuSubContent,
1134
- Input,
1135
- ResizablePanelGroup,
1136
- ResizablePanel,
1137
- ResizableHandle,
1138
- ScrollArea,
1139
- ScrollBar,
1140
- Select,
1141
- SelectGroup,
1142
- SelectValue,
1143
- SelectTrigger,
1144
- SelectContent,
1145
- SelectLabel,
1146
- SelectItem,
1147
- SelectSeparator,
1148
- SelectScrollUpButton,
1149
- SelectScrollDownButton,
1150
- Separator2 as Separator,
1151
- ToastProvider,
1152
- toastVariants,
1153
- ToastRoot,
1154
- ToastTitle,
1155
- ToastDescription,
1156
- ToastClose,
1157
- ToastViewport
1158
- };
1159
- //# sourceMappingURL=chunk-FT633NLJ.js.map