@pactor-app/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1076 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/ui/index.ts
31
+ var ui_exports = {};
32
+ __export(ui_exports, {
33
+ Accordion: () => Accordion,
34
+ AccordionContent: () => AccordionContent,
35
+ AccordionItem: () => AccordionItem,
36
+ AccordionTrigger: () => AccordionTrigger,
37
+ Alert: () => Alert,
38
+ AlertDescription: () => AlertDescription,
39
+ AlertTitle: () => AlertTitle,
40
+ Badge: () => Badge,
41
+ Button: () => Button,
42
+ Card: () => Card,
43
+ CardAction: () => CardAction,
44
+ CardContent: () => CardContent,
45
+ CardDescription: () => CardDescription,
46
+ CardFooter: () => CardFooter,
47
+ CardHeader: () => CardHeader,
48
+ CardTitle: () => CardTitle,
49
+ Dialog: () => Dialog,
50
+ DialogClose: () => DialogClose,
51
+ DialogContent: () => DialogContent,
52
+ DialogDescription: () => DialogDescription,
53
+ DialogFooter: () => DialogFooter,
54
+ DialogHeader: () => DialogHeader,
55
+ DialogOverlay: () => DialogOverlay,
56
+ DialogPortal: () => DialogPortal,
57
+ DialogTitle: () => DialogTitle,
58
+ DialogTrigger: () => DialogTrigger,
59
+ Input: () => Input,
60
+ Label: () => Label,
61
+ Popover: () => Popover,
62
+ PopoverContent: () => PopoverContent,
63
+ PopoverTrigger: () => PopoverTrigger,
64
+ Select: () => Select,
65
+ SelectContent: () => SelectContent,
66
+ SelectGroup: () => SelectGroup,
67
+ SelectItem: () => SelectItem,
68
+ SelectLabel: () => SelectLabel,
69
+ SelectScrollDownButton: () => SelectScrollDownButton,
70
+ SelectScrollUpButton: () => SelectScrollUpButton,
71
+ SelectSeparator: () => SelectSeparator,
72
+ SelectTrigger: () => SelectTrigger,
73
+ SelectValue: () => SelectValue,
74
+ Separator: () => Separator,
75
+ Skeleton: () => Skeleton,
76
+ Table: () => Table,
77
+ TableBody: () => TableBody,
78
+ TableCaption: () => TableCaption,
79
+ TableCell: () => TableCell,
80
+ TableFooter: () => TableFooter,
81
+ TableHead: () => TableHead,
82
+ TableHeader: () => TableHeader,
83
+ TableRow: () => TableRow,
84
+ Tabs: () => Tabs,
85
+ TabsContent: () => TabsContent,
86
+ TabsList: () => TabsList,
87
+ TabsTrigger: () => TabsTrigger,
88
+ Textarea: () => Textarea,
89
+ badgeVariants: () => badgeVariants,
90
+ buttonVariants: () => buttonVariants
91
+ });
92
+ module.exports = __toCommonJS(ui_exports);
93
+
94
+ // src/ui/accordion.tsx
95
+ var import_accordion = require("@base-ui/react/accordion");
96
+ var import_lucide_react = require("lucide-react");
97
+
98
+ // src/lib/utils.ts
99
+ var import_clsx = require("clsx");
100
+ var import_tailwind_merge = require("tailwind-merge");
101
+ function cn(...inputs) {
102
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
103
+ }
104
+
105
+ // src/ui/accordion.tsx
106
+ var import_jsx_runtime = require("react/jsx-runtime");
107
+ function toArray(value) {
108
+ if (value === void 0) {
109
+ return void 0;
110
+ }
111
+ return Array.isArray(value) ? value : [value];
112
+ }
113
+ function Accordion({
114
+ type = "single",
115
+ value,
116
+ defaultValue,
117
+ onValueChange,
118
+ ...props
119
+ }) {
120
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
121
+ import_accordion.Accordion.Root,
122
+ {
123
+ "data-slot": "accordion",
124
+ multiple: type === "multiple",
125
+ value: toArray(value),
126
+ defaultValue: toArray(defaultValue),
127
+ onValueChange: onValueChange === void 0 ? void 0 : (next) => onValueChange(type === "multiple" ? next : next[0] ?? ""),
128
+ ...props
129
+ }
130
+ );
131
+ }
132
+ function AccordionItem({
133
+ className,
134
+ ...props
135
+ }) {
136
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
137
+ import_accordion.Accordion.Item,
138
+ {
139
+ "data-slot": "accordion-item",
140
+ className: cn("border-b border-border last:border-b-0", className),
141
+ ...props
142
+ }
143
+ );
144
+ }
145
+ function AccordionTrigger({
146
+ className,
147
+ children,
148
+ ...props
149
+ }) {
150
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_accordion.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
151
+ import_accordion.Accordion.Trigger,
152
+ {
153
+ "data-slot": "accordion-trigger",
154
+ className: cn(
155
+ "flex flex-1 cursor-pointer items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[aria-expanded=true]>svg]:rotate-180",
156
+ className
157
+ ),
158
+ ...props,
159
+ children: [
160
+ children,
161
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })
162
+ ]
163
+ }
164
+ ) });
165
+ }
166
+ function AccordionContent({
167
+ className,
168
+ children,
169
+ ...props
170
+ }) {
171
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
172
+ import_accordion.Accordion.Panel,
173
+ {
174
+ "data-slot": "accordion-content",
175
+ className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
176
+ ...props,
177
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("pt-0 pb-4", className), children })
178
+ }
179
+ );
180
+ }
181
+
182
+ // src/ui/alert.tsx
183
+ var import_class_variance_authority = require("class-variance-authority");
184
+ var import_jsx_runtime2 = require("react/jsx-runtime");
185
+ var alertVariants = (0, import_class_variance_authority.cva)(
186
+ "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border border-border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
187
+ {
188
+ variants: {
189
+ variant: {
190
+ default: "bg-card text-card-foreground",
191
+ destructive: "border-destructive/50 text-destructive bg-card [&>svg]:text-current",
192
+ success: "border-success/50 text-success bg-card [&>svg]:text-current",
193
+ warning: "border-warning/50 text-warning bg-card [&>svg]:text-current",
194
+ info: "border-info/50 text-info bg-card [&>svg]:text-current"
195
+ }
196
+ },
197
+ defaultVariants: {
198
+ variant: "default"
199
+ }
200
+ }
201
+ );
202
+ function Alert({
203
+ className,
204
+ variant,
205
+ ...props
206
+ }) {
207
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
208
+ "div",
209
+ {
210
+ "data-slot": "alert",
211
+ role: "alert",
212
+ className: cn(alertVariants({ variant }), className),
213
+ ...props
214
+ }
215
+ );
216
+ }
217
+ function AlertTitle({ className, ...props }) {
218
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
219
+ "div",
220
+ {
221
+ "data-slot": "alert-title",
222
+ className: cn(
223
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
224
+ className
225
+ ),
226
+ ...props
227
+ }
228
+ );
229
+ }
230
+ function AlertDescription({
231
+ className,
232
+ ...props
233
+ }) {
234
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
235
+ "div",
236
+ {
237
+ "data-slot": "alert-description",
238
+ className: cn(
239
+ "col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed",
240
+ className
241
+ ),
242
+ ...props
243
+ }
244
+ );
245
+ }
246
+
247
+ // src/ui/badge.tsx
248
+ var import_class_variance_authority2 = require("class-variance-authority");
249
+ var import_jsx_runtime3 = require("react/jsx-runtime");
250
+ var badgeVariants = (0, import_class_variance_authority2.cva)(
251
+ "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border px-2 py-0.5 text-xs font-medium whitespace-nowrap [&>svg]:pointer-events-none [&>svg]:size-3",
252
+ {
253
+ variants: {
254
+ variant: {
255
+ default: "border-transparent bg-primary text-primary-foreground",
256
+ secondary: "border-transparent bg-secondary text-secondary-foreground",
257
+ destructive: "border-transparent bg-destructive text-destructive-foreground",
258
+ outline: "border-border text-foreground"
259
+ }
260
+ },
261
+ defaultVariants: {
262
+ variant: "default"
263
+ }
264
+ }
265
+ );
266
+ function Badge({
267
+ className,
268
+ variant,
269
+ ...props
270
+ }) {
271
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
272
+ "span",
273
+ {
274
+ "data-slot": "badge",
275
+ className: cn(badgeVariants({ variant }), className),
276
+ ...props
277
+ }
278
+ );
279
+ }
280
+
281
+ // src/ui/button.tsx
282
+ var import_button = require("@base-ui/react/button");
283
+ var import_class_variance_authority3 = require("class-variance-authority");
284
+ var React = __toESM(require("react"), 1);
285
+ var import_jsx_runtime4 = require("react/jsx-runtime");
286
+ var buttonVariants = (0, import_class_variance_authority3.cva)(
287
+ "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
288
+ {
289
+ variants: {
290
+ variant: {
291
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
292
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20",
293
+ outline: "border border-border bg-background hover:bg-accent hover:text-accent-foreground",
294
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
295
+ ghost: "hover:bg-accent hover:text-accent-foreground",
296
+ link: "text-primary underline-offset-4 hover:underline"
297
+ },
298
+ size: {
299
+ default: "h-9 px-4 py-2",
300
+ sm: "h-8 gap-1.5 rounded-md px-3 text-xs",
301
+ lg: "h-10 rounded-md px-6",
302
+ icon: "size-9"
303
+ }
304
+ },
305
+ defaultVariants: {
306
+ variant: "default",
307
+ size: "default"
308
+ }
309
+ }
310
+ );
311
+ function Button({
312
+ className,
313
+ variant,
314
+ size,
315
+ asChild = false,
316
+ children,
317
+ ...props
318
+ }) {
319
+ if (asChild && React.isValidElement(children)) {
320
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
321
+ import_button.Button,
322
+ {
323
+ "data-slot": "button",
324
+ className: cn(buttonVariants({ variant, size, className })),
325
+ render: children,
326
+ ...props
327
+ }
328
+ );
329
+ }
330
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
331
+ import_button.Button,
332
+ {
333
+ "data-slot": "button",
334
+ className: cn(buttonVariants({ variant, size, className })),
335
+ ...props,
336
+ children
337
+ }
338
+ );
339
+ }
340
+
341
+ // src/ui/card.tsx
342
+ var import_jsx_runtime5 = require("react/jsx-runtime");
343
+ function Card({ className, ...props }) {
344
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
345
+ "div",
346
+ {
347
+ "data-slot": "card",
348
+ className: cn(
349
+ "flex flex-col gap-6 rounded-xl border border-border bg-card py-6 text-card-foreground shadow-sm",
350
+ className
351
+ ),
352
+ ...props
353
+ }
354
+ );
355
+ }
356
+ function CardHeader({ className, ...props }) {
357
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
358
+ "div",
359
+ {
360
+ "data-slot": "card-header",
361
+ className: cn(
362
+ "grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
363
+ className
364
+ ),
365
+ ...props
366
+ }
367
+ );
368
+ }
369
+ function CardTitle({ className, ...props }) {
370
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
371
+ "div",
372
+ {
373
+ "data-slot": "card-title",
374
+ className: cn("leading-none font-semibold", className),
375
+ ...props
376
+ }
377
+ );
378
+ }
379
+ function CardDescription({ className, ...props }) {
380
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
381
+ "div",
382
+ {
383
+ "data-slot": "card-description",
384
+ className: cn("text-sm text-muted-foreground", className),
385
+ ...props
386
+ }
387
+ );
388
+ }
389
+ function CardAction({ className, ...props }) {
390
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
391
+ "div",
392
+ {
393
+ "data-slot": "card-action",
394
+ className: cn(
395
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
396
+ className
397
+ ),
398
+ ...props
399
+ }
400
+ );
401
+ }
402
+ function CardContent({ className, ...props }) {
403
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
404
+ "div",
405
+ {
406
+ "data-slot": "card-content",
407
+ className: cn("px-6", className),
408
+ ...props
409
+ }
410
+ );
411
+ }
412
+ function CardFooter({ className, ...props }) {
413
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
414
+ "div",
415
+ {
416
+ "data-slot": "card-footer",
417
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
418
+ ...props
419
+ }
420
+ );
421
+ }
422
+
423
+ // src/ui/dialog.tsx
424
+ var import_dialog = require("@base-ui/react/dialog");
425
+ var import_lucide_react2 = require("lucide-react");
426
+ var import_jsx_runtime6 = require("react/jsx-runtime");
427
+ function Dialog({
428
+ ...props
429
+ }) {
430
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Root, { "data-slot": "dialog", ...props });
431
+ }
432
+ function DialogTrigger({
433
+ ...props
434
+ }) {
435
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Trigger, { "data-slot": "dialog-trigger", ...props });
436
+ }
437
+ function DialogPortal({
438
+ ...props
439
+ }) {
440
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Portal, { "data-slot": "dialog-portal", ...props });
441
+ }
442
+ function DialogClose({
443
+ ...props
444
+ }) {
445
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Close, { "data-slot": "dialog-close", ...props });
446
+ }
447
+ function DialogOverlay({
448
+ className,
449
+ ...props
450
+ }) {
451
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
452
+ import_dialog.Dialog.Backdrop,
453
+ {
454
+ "data-slot": "dialog-overlay",
455
+ className: cn(
456
+ "fixed inset-0 z-50 bg-black/50 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
457
+ className
458
+ ),
459
+ ...props
460
+ }
461
+ );
462
+ }
463
+ function DialogContent({
464
+ className,
465
+ children,
466
+ showCloseButton = true,
467
+ ...props
468
+ }) {
469
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(DialogPortal, { "data-slot": "dialog-portal", children: [
470
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(DialogOverlay, {}),
471
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
472
+ import_dialog.Dialog.Popup,
473
+ {
474
+ "data-slot": "dialog-content",
475
+ className: cn(
476
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-background p-6 shadow-lg duration-200 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 sm:max-w-lg",
477
+ className
478
+ ),
479
+ ...props,
480
+ children: [
481
+ children,
482
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
483
+ import_dialog.Dialog.Close,
484
+ {
485
+ "data-slot": "dialog-close",
486
+ render: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
487
+ "button",
488
+ {
489
+ type: "button",
490
+ className: "absolute top-4 right-4 cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
491
+ }
492
+ ),
493
+ children: [
494
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.XIcon, {}),
495
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "sr-only", children: "Close" })
496
+ ]
497
+ }
498
+ )
499
+ ]
500
+ }
501
+ )
502
+ ] });
503
+ }
504
+ function DialogHeader({ className, ...props }) {
505
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
506
+ "div",
507
+ {
508
+ "data-slot": "dialog-header",
509
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
510
+ ...props
511
+ }
512
+ );
513
+ }
514
+ function DialogFooter({ className, ...props }) {
515
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
516
+ "div",
517
+ {
518
+ "data-slot": "dialog-footer",
519
+ className: cn(
520
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
521
+ className
522
+ ),
523
+ ...props
524
+ }
525
+ );
526
+ }
527
+ function DialogTitle({
528
+ className,
529
+ ...props
530
+ }) {
531
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
532
+ import_dialog.Dialog.Title,
533
+ {
534
+ "data-slot": "dialog-title",
535
+ className: cn("text-lg leading-none font-semibold", className),
536
+ ...props
537
+ }
538
+ );
539
+ }
540
+ function DialogDescription({
541
+ className,
542
+ ...props
543
+ }) {
544
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
545
+ import_dialog.Dialog.Description,
546
+ {
547
+ "data-slot": "dialog-description",
548
+ className: cn("text-sm text-muted-foreground", className),
549
+ ...props
550
+ }
551
+ );
552
+ }
553
+
554
+ // src/ui/input.tsx
555
+ var import_jsx_runtime7 = require("react/jsx-runtime");
556
+ function Input({ className, type, ...props }) {
557
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
558
+ "input",
559
+ {
560
+ type,
561
+ "data-slot": "input",
562
+ className: cn(
563
+ "flex h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50",
564
+ className
565
+ ),
566
+ ...props
567
+ }
568
+ );
569
+ }
570
+
571
+ // src/ui/label.tsx
572
+ var import_jsx_runtime8 = require("react/jsx-runtime");
573
+ function Label({
574
+ className,
575
+ ...props
576
+ }) {
577
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
578
+ "label",
579
+ {
580
+ "data-slot": "label",
581
+ className: cn(
582
+ "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",
583
+ className
584
+ ),
585
+ ...props
586
+ }
587
+ );
588
+ }
589
+
590
+ // src/ui/popover.tsx
591
+ var import_popover = require("@base-ui/react/popover");
592
+ var import_jsx_runtime9 = require("react/jsx-runtime");
593
+ function Popover({
594
+ ...props
595
+ }) {
596
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_popover.Popover.Root, { "data-slot": "popover", ...props });
597
+ }
598
+ function PopoverTrigger({
599
+ ...props
600
+ }) {
601
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_popover.Popover.Trigger, { "data-slot": "popover-trigger", ...props });
602
+ }
603
+ function PopoverContent({
604
+ className,
605
+ align = "center",
606
+ side = "bottom",
607
+ sideOffset = 4,
608
+ anchor,
609
+ ...props
610
+ }) {
611
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
612
+ import_popover.Popover.Positioner,
613
+ {
614
+ align,
615
+ side,
616
+ sideOffset,
617
+ anchor,
618
+ className: "isolate z-50",
619
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
620
+ import_popover.Popover.Popup,
621
+ {
622
+ "data-slot": "popover-content",
623
+ className: cn(
624
+ "z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none duration-200 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",
625
+ className
626
+ ),
627
+ ...props
628
+ }
629
+ )
630
+ }
631
+ ) });
632
+ }
633
+
634
+ // src/ui/select.tsx
635
+ var import_select = require("@base-ui/react/select");
636
+ var import_lucide_react3 = require("lucide-react");
637
+ var import_jsx_runtime10 = require("react/jsx-runtime");
638
+ var Select = import_select.Select.Root;
639
+ function SelectGroup({
640
+ ...props
641
+ }) {
642
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.Group, { "data-slot": "select-group", ...props });
643
+ }
644
+ function SelectValue({
645
+ ...props
646
+ }) {
647
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.Value, { "data-slot": "select-value", ...props });
648
+ }
649
+ function SelectTrigger({
650
+ className,
651
+ size = "default",
652
+ children,
653
+ ...props
654
+ }) {
655
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
656
+ import_select.Select.Trigger,
657
+ {
658
+ "data-slot": "select-trigger",
659
+ "data-size": size,
660
+ className: cn(
661
+ "flex w-fit cursor-pointer items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 data-[placeholder]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
662
+ className
663
+ ),
664
+ ...props,
665
+ children: [
666
+ children,
667
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
668
+ import_select.Select.Icon,
669
+ {
670
+ render: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react3.ChevronDownIcon, { className: "size-4 opacity-50" })
671
+ }
672
+ )
673
+ ]
674
+ }
675
+ );
676
+ }
677
+ function SelectContent({
678
+ className,
679
+ children,
680
+ side = "bottom",
681
+ sideOffset = 4,
682
+ align = "center",
683
+ alignItemWithTrigger = false,
684
+ ...props
685
+ }) {
686
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
687
+ import_select.Select.Positioner,
688
+ {
689
+ side,
690
+ sideOffset,
691
+ align,
692
+ alignItemWithTrigger,
693
+ className: "isolate z-50",
694
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
695
+ import_select.Select.Popup,
696
+ {
697
+ "data-slot": "select-content",
698
+ className: cn(
699
+ "relative z-50 max-h-96 min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover text-popover-foreground shadow-md duration-200 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",
700
+ className
701
+ ),
702
+ ...props,
703
+ children: [
704
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SelectScrollUpButton, {}),
705
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.List, { className: "p-1", children }),
706
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SelectScrollDownButton, {})
707
+ ]
708
+ }
709
+ )
710
+ }
711
+ ) });
712
+ }
713
+ function SelectLabel({
714
+ className,
715
+ ...props
716
+ }) {
717
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
718
+ import_select.Select.GroupLabel,
719
+ {
720
+ "data-slot": "select-label",
721
+ className: cn("px-2 py-1.5 text-xs text-muted-foreground", className),
722
+ ...props
723
+ }
724
+ );
725
+ }
726
+ function SelectItem({
727
+ className,
728
+ children,
729
+ ...props
730
+ }) {
731
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
732
+ import_select.Select.Item,
733
+ {
734
+ "data-slot": "select-item",
735
+ className: cn(
736
+ "relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none focus:bg-accent 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",
737
+ className
738
+ ),
739
+ ...props,
740
+ children: [
741
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react3.CheckIcon, { className: "size-4" }) }) }),
742
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.ItemText, { children })
743
+ ]
744
+ }
745
+ );
746
+ }
747
+ function SelectSeparator({
748
+ className,
749
+ ...props
750
+ }) {
751
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
752
+ import_select.Select.Separator,
753
+ {
754
+ "data-slot": "select-separator",
755
+ className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
756
+ ...props
757
+ }
758
+ );
759
+ }
760
+ function SelectScrollUpButton({
761
+ className,
762
+ ...props
763
+ }) {
764
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
765
+ import_select.Select.ScrollUpArrow,
766
+ {
767
+ "data-slot": "select-scroll-up-button",
768
+ className: cn(
769
+ "flex cursor-default items-center justify-center py-1",
770
+ className
771
+ ),
772
+ ...props,
773
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react3.ChevronUpIcon, { className: "size-4" })
774
+ }
775
+ );
776
+ }
777
+ function SelectScrollDownButton({
778
+ className,
779
+ ...props
780
+ }) {
781
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
782
+ import_select.Select.ScrollDownArrow,
783
+ {
784
+ "data-slot": "select-scroll-down-button",
785
+ className: cn(
786
+ "flex cursor-default items-center justify-center py-1",
787
+ className
788
+ ),
789
+ ...props,
790
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react3.ChevronDownIcon, { className: "size-4" })
791
+ }
792
+ );
793
+ }
794
+
795
+ // src/ui/separator.tsx
796
+ var import_separator = require("@base-ui/react/separator");
797
+ var import_jsx_runtime11 = require("react/jsx-runtime");
798
+ function Separator({
799
+ className,
800
+ orientation = "horizontal",
801
+ decorative: _decorative,
802
+ ...props
803
+ }) {
804
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
805
+ import_separator.Separator,
806
+ {
807
+ "data-slot": "separator",
808
+ orientation,
809
+ className: cn(
810
+ "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
811
+ className
812
+ ),
813
+ ...props
814
+ }
815
+ );
816
+ }
817
+
818
+ // src/ui/skeleton.tsx
819
+ var import_jsx_runtime12 = require("react/jsx-runtime");
820
+ function Skeleton({ className, ...props }) {
821
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
822
+ "div",
823
+ {
824
+ "data-slot": "skeleton",
825
+ className: cn("animate-pulse rounded-md bg-muted", className),
826
+ ...props
827
+ }
828
+ );
829
+ }
830
+
831
+ // src/ui/table.tsx
832
+ var import_jsx_runtime13 = require("react/jsx-runtime");
833
+ function Table({ className, ...props }) {
834
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
835
+ "div",
836
+ {
837
+ "data-slot": "table-container",
838
+ className: "relative w-full overflow-x-auto",
839
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
840
+ "table",
841
+ {
842
+ "data-slot": "table",
843
+ className: cn("w-full caption-bottom text-sm", className),
844
+ ...props
845
+ }
846
+ )
847
+ }
848
+ );
849
+ }
850
+ function TableHeader({ className, ...props }) {
851
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
852
+ "thead",
853
+ {
854
+ "data-slot": "table-header",
855
+ className: cn("[&_tr]:border-b [&_tr]:border-border", className),
856
+ ...props
857
+ }
858
+ );
859
+ }
860
+ function TableBody({ className, ...props }) {
861
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
862
+ "tbody",
863
+ {
864
+ "data-slot": "table-body",
865
+ className: cn("[&_tr:last-child]:border-0", className),
866
+ ...props
867
+ }
868
+ );
869
+ }
870
+ function TableFooter({ className, ...props }) {
871
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
872
+ "tfoot",
873
+ {
874
+ "data-slot": "table-footer",
875
+ className: cn(
876
+ "border-t border-border bg-muted/50 font-medium [&>tr]:last:border-b-0",
877
+ className
878
+ ),
879
+ ...props
880
+ }
881
+ );
882
+ }
883
+ function TableRow({ className, ...props }) {
884
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
885
+ "tr",
886
+ {
887
+ "data-slot": "table-row",
888
+ className: cn(
889
+ "border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
890
+ className
891
+ ),
892
+ ...props
893
+ }
894
+ );
895
+ }
896
+ function TableHead({ className, ...props }) {
897
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
898
+ "th",
899
+ {
900
+ "data-slot": "table-head",
901
+ className: cn(
902
+ "h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
903
+ className
904
+ ),
905
+ ...props
906
+ }
907
+ );
908
+ }
909
+ function TableCell({ className, ...props }) {
910
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
911
+ "td",
912
+ {
913
+ "data-slot": "table-cell",
914
+ className: cn(
915
+ "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
916
+ className
917
+ ),
918
+ ...props
919
+ }
920
+ );
921
+ }
922
+ function TableCaption({
923
+ className,
924
+ ...props
925
+ }) {
926
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
927
+ "caption",
928
+ {
929
+ "data-slot": "table-caption",
930
+ className: cn("mt-4 text-sm text-muted-foreground", className),
931
+ ...props
932
+ }
933
+ );
934
+ }
935
+
936
+ // src/ui/tabs.tsx
937
+ var import_tabs = require("@base-ui/react/tabs");
938
+ var import_jsx_runtime14 = require("react/jsx-runtime");
939
+ function Tabs({
940
+ className,
941
+ ...props
942
+ }) {
943
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
944
+ import_tabs.Tabs.Root,
945
+ {
946
+ "data-slot": "tabs",
947
+ className: cn("flex flex-col gap-2", className),
948
+ ...props
949
+ }
950
+ );
951
+ }
952
+ function TabsList({
953
+ className,
954
+ ...props
955
+ }) {
956
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
957
+ import_tabs.Tabs.List,
958
+ {
959
+ "data-slot": "tabs-list",
960
+ className: cn(
961
+ "inline-flex h-9 w-fit items-center justify-center rounded-lg bg-muted p-[3px] text-muted-foreground",
962
+ className
963
+ ),
964
+ ...props
965
+ }
966
+ );
967
+ }
968
+ function TabsTrigger({
969
+ className,
970
+ ...props
971
+ }) {
972
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
973
+ import_tabs.Tabs.Tab,
974
+ {
975
+ "data-slot": "tabs-trigger",
976
+ className: cn(
977
+ "inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-active:border-border data-active:bg-background data-active:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
978
+ className
979
+ ),
980
+ ...props
981
+ }
982
+ );
983
+ }
984
+ function TabsContent({
985
+ className,
986
+ ...props
987
+ }) {
988
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
989
+ import_tabs.Tabs.Panel,
990
+ {
991
+ "data-slot": "tabs-content",
992
+ className: cn("flex-1 outline-none", className),
993
+ ...props
994
+ }
995
+ );
996
+ }
997
+
998
+ // src/ui/textarea.tsx
999
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1000
+ function Textarea({
1001
+ className,
1002
+ ...props
1003
+ }) {
1004
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1005
+ "textarea",
1006
+ {
1007
+ "data-slot": "textarea",
1008
+ className: cn(
1009
+ "flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50",
1010
+ className
1011
+ ),
1012
+ ...props
1013
+ }
1014
+ );
1015
+ }
1016
+ // Annotate the CommonJS export names for ESM import in node:
1017
+ 0 && (module.exports = {
1018
+ Accordion,
1019
+ AccordionContent,
1020
+ AccordionItem,
1021
+ AccordionTrigger,
1022
+ Alert,
1023
+ AlertDescription,
1024
+ AlertTitle,
1025
+ Badge,
1026
+ Button,
1027
+ Card,
1028
+ CardAction,
1029
+ CardContent,
1030
+ CardDescription,
1031
+ CardFooter,
1032
+ CardHeader,
1033
+ CardTitle,
1034
+ Dialog,
1035
+ DialogClose,
1036
+ DialogContent,
1037
+ DialogDescription,
1038
+ DialogFooter,
1039
+ DialogHeader,
1040
+ DialogOverlay,
1041
+ DialogPortal,
1042
+ DialogTitle,
1043
+ DialogTrigger,
1044
+ Input,
1045
+ Label,
1046
+ Popover,
1047
+ PopoverContent,
1048
+ PopoverTrigger,
1049
+ Select,
1050
+ SelectContent,
1051
+ SelectGroup,
1052
+ SelectItem,
1053
+ SelectLabel,
1054
+ SelectScrollDownButton,
1055
+ SelectScrollUpButton,
1056
+ SelectSeparator,
1057
+ SelectTrigger,
1058
+ SelectValue,
1059
+ Separator,
1060
+ Skeleton,
1061
+ Table,
1062
+ TableBody,
1063
+ TableCaption,
1064
+ TableCell,
1065
+ TableFooter,
1066
+ TableHead,
1067
+ TableHeader,
1068
+ TableRow,
1069
+ Tabs,
1070
+ TabsContent,
1071
+ TabsList,
1072
+ TabsTrigger,
1073
+ Textarea,
1074
+ badgeVariants,
1075
+ buttonVariants
1076
+ });