rs-base-ui 0.3.1

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.js ADDED
@@ -0,0 +1,728 @@
1
+ // src/components/button.jsx
2
+ import * as React from "react";
3
+ import { Slot } from "@radix-ui/react-slot";
4
+ import { cva } from "class-variance-authority";
5
+
6
+ // src/lib/utils.js
7
+ import { clsx } from "clsx";
8
+ import { twMerge } from "tailwind-merge";
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+
13
+ // src/components/button.jsx
14
+ import { jsx } from "react/jsx-runtime";
15
+ var buttonVariants = cva(
16
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 outline-none focus-visible:ring-2 focus-visible:ring-ring",
17
+ {
18
+ variants: {
19
+ variant: {
20
+ default: "bg-primary text-primary-foreground shadow-sm hover:bg-primary/90",
21
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
22
+ success: "bg-success text-success-foreground shadow-sm hover:bg-success/90",
23
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
24
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
25
+ ghost: "hover:bg-accent hover:text-accent-foreground",
26
+ link: "text-primary underline-offset-4 hover:underline"
27
+ },
28
+ size: {
29
+ default: "h-9 px-4 py-2",
30
+ sm: "h-8 rounded-md px-3 text-xs",
31
+ lg: "h-10 rounded-md px-8",
32
+ icon: "h-9 w-9"
33
+ }
34
+ },
35
+ defaultVariants: {
36
+ variant: "default",
37
+ size: "default"
38
+ }
39
+ }
40
+ );
41
+ var Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
42
+ const Comp = asChild ? Slot : "button";
43
+ return /* @__PURE__ */ jsx(Comp, { className: cn(buttonVariants({ variant, size, className })), ref, ...props });
44
+ });
45
+ Button.displayName = "Button";
46
+
47
+ // src/components/input.jsx
48
+ import * as React2 from "react";
49
+ import { jsx as jsx2 } from "react/jsx-runtime";
50
+ var Input = React2.forwardRef(({ className, type, ...props }, ref) => {
51
+ return /* @__PURE__ */ jsx2(
52
+ "input",
53
+ {
54
+ type,
55
+ className: cn(
56
+ "flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
57
+ className
58
+ ),
59
+ ref,
60
+ ...props
61
+ }
62
+ );
63
+ });
64
+ Input.displayName = "Input";
65
+
66
+ // src/components/label.jsx
67
+ import * as React3 from "react";
68
+ import * as LabelPrimitive from "@radix-ui/react-label";
69
+ import { jsx as jsx3 } from "react/jsx-runtime";
70
+ var Label = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
71
+ LabelPrimitive.Root,
72
+ {
73
+ ref,
74
+ "data-slot": "label",
75
+ className: cn(
76
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
77
+ className
78
+ ),
79
+ ...props
80
+ }
81
+ ));
82
+ Label.displayName = LabelPrimitive.Root.displayName;
83
+
84
+ // src/components/textarea.jsx
85
+ import * as React4 from "react";
86
+ import { jsx as jsx4 } from "react/jsx-runtime";
87
+ var Textarea = React4.forwardRef(({ className, ...props }, ref) => {
88
+ return /* @__PURE__ */ jsx4(
89
+ "textarea",
90
+ {
91
+ className: cn(
92
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm 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",
93
+ className
94
+ ),
95
+ ref,
96
+ ...props
97
+ }
98
+ );
99
+ });
100
+ Textarea.displayName = "Textarea";
101
+
102
+ // src/components/checkbox.jsx
103
+ import * as React5 from "react";
104
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
105
+ import { Check } from "lucide-react";
106
+ import { jsx as jsx5 } from "react/jsx-runtime";
107
+ var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
108
+ CheckboxPrimitive.Root,
109
+ {
110
+ ref,
111
+ className: cn(
112
+ "peer h-4 w-4 shrink-0 rounded-sm border border-input shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
113
+ className
114
+ ),
115
+ ...props,
116
+ children: /* @__PURE__ */ jsx5(CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: /* @__PURE__ */ jsx5(Check, { className: "h-3.5 w-3.5" }) })
117
+ }
118
+ ));
119
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
120
+
121
+ // src/components/radio-group.jsx
122
+ import * as React6 from "react";
123
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
124
+ import { Circle } from "lucide-react";
125
+ import { jsx as jsx6 } from "react/jsx-runtime";
126
+ var RadioGroup = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(RadioGroupPrimitive.Root, { ref, className: cn("grid gap-2", className), ...props }));
127
+ RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
128
+ var RadioGroupItem = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
129
+ RadioGroupPrimitive.Item,
130
+ {
131
+ ref,
132
+ className: cn(
133
+ "aspect-square h-4 w-4 rounded-full border border-input text-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
134
+ className
135
+ ),
136
+ ...props,
137
+ children: /* @__PURE__ */ jsx6(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx6(Circle, { className: "h-2.5 w-2.5 fill-primary" }) })
138
+ }
139
+ ));
140
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
141
+
142
+ // src/components/select.jsx
143
+ import * as React7 from "react";
144
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
145
+ import * as SelectPrimitive from "@radix-ui/react-select";
146
+ import { jsx as jsx7, jsxs } from "react/jsx-runtime";
147
+ function Select({ ...props }) {
148
+ return /* @__PURE__ */ jsx7(SelectPrimitive.Root, { "data-slot": "select", ...props });
149
+ }
150
+ function SelectGroup({ ...props }) {
151
+ return /* @__PURE__ */ jsx7(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
152
+ }
153
+ function SelectValue({ ...props }) {
154
+ return /* @__PURE__ */ jsx7(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
155
+ }
156
+ function SelectTrigger({ className, size = "default", children, ...props }) {
157
+ return /* @__PURE__ */ jsxs(
158
+ SelectPrimitive.Trigger,
159
+ {
160
+ "data-slot": "select-trigger",
161
+ "data-size": size,
162
+ className: cn(
163
+ "flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
164
+ className
165
+ ),
166
+ ...props,
167
+ children: [
168
+ children,
169
+ /* @__PURE__ */ jsx7(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx7(ChevronDownIcon, { className: "size-4 opacity-50" }) })
170
+ ]
171
+ }
172
+ );
173
+ }
174
+ function SelectContent({ className, children, position = "item-aligned", align = "center", ...props }) {
175
+ return /* @__PURE__ */ jsx7(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
176
+ SelectPrimitive.Content,
177
+ {
178
+ "data-slot": "select-content",
179
+ className: cn(
180
+ "relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md 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]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
181
+ 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",
182
+ className
183
+ ),
184
+ position,
185
+ align,
186
+ ...props,
187
+ children: [
188
+ /* @__PURE__ */ jsx7(SelectScrollUpButton, {}),
189
+ /* @__PURE__ */ jsx7(
190
+ SelectPrimitive.Viewport,
191
+ {
192
+ className: cn(
193
+ "p-1",
194
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
195
+ ),
196
+ children
197
+ }
198
+ ),
199
+ /* @__PURE__ */ jsx7(SelectScrollDownButton, {})
200
+ ]
201
+ }
202
+ ) });
203
+ }
204
+ function SelectLabel({ className, ...props }) {
205
+ return /* @__PURE__ */ jsx7(SelectPrimitive.Label, { "data-slot": "select-label", className: cn("px-2 py-1.5 text-xs text-muted-foreground", className), ...props });
206
+ }
207
+ function SelectItem({ className, children, ...props }) {
208
+ return /* @__PURE__ */ jsxs(
209
+ SelectPrimitive.Item,
210
+ {
211
+ "data-slot": "select-item",
212
+ className: cn(
213
+ "relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none 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 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
214
+ className
215
+ ),
216
+ ...props,
217
+ children: [
218
+ /* @__PURE__ */ jsx7("span", { "data-slot": "select-item-indicator", className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx7(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx7(CheckIcon, { className: "size-4" }) }) }),
219
+ /* @__PURE__ */ jsx7(SelectPrimitive.ItemText, { children })
220
+ ]
221
+ }
222
+ );
223
+ }
224
+ function SelectSeparator({ className, ...props }) {
225
+ return /* @__PURE__ */ jsx7(SelectPrimitive.Separator, { "data-slot": "select-separator", className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className), ...props });
226
+ }
227
+ function SelectScrollUpButton({ className, ...props }) {
228
+ return /* @__PURE__ */ jsx7(SelectPrimitive.ScrollUpButton, { "data-slot": "select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: /* @__PURE__ */ jsx7(ChevronUpIcon, { className: "size-4" }) });
229
+ }
230
+ function SelectScrollDownButton({ className, ...props }) {
231
+ return /* @__PURE__ */ jsx7(SelectPrimitive.ScrollDownButton, { "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: /* @__PURE__ */ jsx7(ChevronDownIcon, { className: "size-4" }) });
232
+ }
233
+
234
+ // src/components/dialog.jsx
235
+ import * as React8 from "react";
236
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
237
+ import { X } from "lucide-react";
238
+ import { jsx as jsx8, jsxs as jsxs2 } from "react/jsx-runtime";
239
+ var Dialog = DialogPrimitive.Root;
240
+ var DialogTrigger = DialogPrimitive.Trigger;
241
+ var DialogPortal = DialogPrimitive.Portal;
242
+ var DialogClose = DialogPrimitive.Close;
243
+ var DialogOverlay = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
244
+ DialogPrimitive.Overlay,
245
+ {
246
+ ref,
247
+ className: cn(
248
+ "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
249
+ className
250
+ ),
251
+ ...props
252
+ }
253
+ ));
254
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
255
+ var DialogContent = React8.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs2(DialogPortal, { children: [
256
+ /* @__PURE__ */ jsx8(DialogOverlay, {}),
257
+ /* @__PURE__ */ jsxs2(
258
+ DialogPrimitive.Content,
259
+ {
260
+ ref,
261
+ className: cn(
262
+ "fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 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 sm:rounded-lg max-h-[85vh] overflow-y-auto",
263
+ className
264
+ ),
265
+ ...props,
266
+ children: [
267
+ children,
268
+ /* @__PURE__ */ jsxs2(DialogPrimitive.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", children: [
269
+ /* @__PURE__ */ jsx8(X, { className: "h-4 w-4" }),
270
+ /* @__PURE__ */ jsx8("span", { className: "sr-only", children: "Close" })
271
+ ] })
272
+ ]
273
+ }
274
+ )
275
+ ] }));
276
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
277
+ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx8("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
278
+ DialogHeader.displayName = "DialogHeader";
279
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx8("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
280
+ DialogFooter.displayName = "DialogFooter";
281
+ var DialogTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(DialogPrimitive.Title, { ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props }));
282
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
283
+ var DialogDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
284
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
285
+
286
+ // src/components/alert-dialog.jsx
287
+ import * as React9 from "react";
288
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
289
+ import { jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
290
+ var AlertDialog = AlertDialogPrimitive.Root;
291
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
292
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
293
+ var AlertDialogOverlay = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
294
+ AlertDialogPrimitive.Overlay,
295
+ {
296
+ className: cn("fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className),
297
+ ...props,
298
+ ref
299
+ }
300
+ ));
301
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
302
+ var AlertDialogContent = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs3(AlertDialogPortal, { children: [
303
+ /* @__PURE__ */ jsx9(AlertDialogOverlay, {}),
304
+ /* @__PURE__ */ jsx9(
305
+ AlertDialogPrimitive.Content,
306
+ {
307
+ ref,
308
+ className: cn(
309
+ "fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 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 sm:rounded-lg",
310
+ className
311
+ ),
312
+ ...props
313
+ }
314
+ )
315
+ ] }));
316
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
317
+ var AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props });
318
+ AlertDialogHeader.displayName = "AlertDialogHeader";
319
+ var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
320
+ AlertDialogFooter.displayName = "AlertDialogFooter";
321
+ var AlertDialogTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(AlertDialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
322
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
323
+ var AlertDialogDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(AlertDialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
324
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
325
+ var AlertDialogAction = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(AlertDialogPrimitive.Action, { ref, className: cn(buttonVariants(), className), ...props }));
326
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
327
+ var AlertDialogCancel = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(AlertDialogPrimitive.Cancel, { ref, className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className), ...props }));
328
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
329
+
330
+ // src/components/dropdown-menu.jsx
331
+ import * as React10 from "react";
332
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
333
+ import { Check as Check2, ChevronRight, Circle as Circle2 } from "lucide-react";
334
+ import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
335
+ var DropdownMenu = DropdownMenuPrimitive.Root;
336
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
337
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
338
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
339
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
340
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
341
+ var DropdownMenuContent = React10.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx10(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx10(
342
+ DropdownMenuPrimitive.Content,
343
+ {
344
+ ref,
345
+ sideOffset,
346
+ className: cn(
347
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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",
348
+ className
349
+ ),
350
+ ...props
351
+ }
352
+ ) }));
353
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
354
+ var DropdownMenuItem = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx10(
355
+ DropdownMenuPrimitive.Item,
356
+ {
357
+ ref,
358
+ className: cn(
359
+ "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 focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
360
+ inset && "pl-8",
361
+ className
362
+ ),
363
+ ...props
364
+ }
365
+ ));
366
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
367
+ var DropdownMenuCheckboxItem = React10.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs4(
368
+ DropdownMenuPrimitive.CheckboxItem,
369
+ {
370
+ ref,
371
+ className: cn(
372
+ "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 focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
373
+ className
374
+ ),
375
+ checked,
376
+ ...props,
377
+ children: [
378
+ /* @__PURE__ */ jsx10("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx10(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx10(Check2, { className: "h-4 w-4" }) }) }),
379
+ children
380
+ ]
381
+ }
382
+ ));
383
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
384
+ var DropdownMenuRadioItem = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs4(
385
+ DropdownMenuPrimitive.RadioItem,
386
+ {
387
+ ref,
388
+ className: cn(
389
+ "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 focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
390
+ className
391
+ ),
392
+ ...props,
393
+ children: [
394
+ /* @__PURE__ */ jsx10("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx10(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx10(Circle2, { className: "h-2 w-2 fill-current" }) }) }),
395
+ children
396
+ ]
397
+ }
398
+ ));
399
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
400
+ var DropdownMenuLabel = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx10(
401
+ DropdownMenuPrimitive.Label,
402
+ {
403
+ ref,
404
+ className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
405
+ ...props
406
+ }
407
+ ));
408
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
409
+ var DropdownMenuSeparator = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
410
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
411
+
412
+ // src/components/table.jsx
413
+ import * as React11 from "react";
414
+ import { jsx as jsx11 } from "react/jsx-runtime";
415
+ var Table = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx11("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props }) }));
416
+ Table.displayName = "Table";
417
+ var TableHeader = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
418
+ TableHeader.displayName = "TableHeader";
419
+ var TableBody = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props }));
420
+ TableBody.displayName = "TableBody";
421
+ var TableRow = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
422
+ "tr",
423
+ {
424
+ ref,
425
+ className: cn("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className),
426
+ ...props
427
+ }
428
+ ));
429
+ TableRow.displayName = "TableRow";
430
+ var TableHead = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
431
+ "th",
432
+ {
433
+ ref,
434
+ className: cn(
435
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
436
+ className
437
+ ),
438
+ ...props
439
+ }
440
+ ));
441
+ TableHead.displayName = "TableHead";
442
+ var TableCell = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11("td", { ref, className: cn("p-2 align-middle [&:has([role=checkbox])]:pr-0", className), ...props }));
443
+ TableCell.displayName = "TableCell";
444
+
445
+ // src/components/badge.jsx
446
+ import * as React12 from "react";
447
+ import { cva as cva2 } from "class-variance-authority";
448
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
449
+ import { jsx as jsx12 } from "react/jsx-runtime";
450
+ var badgeVariants = cva2(
451
+ "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:size-3",
452
+ {
453
+ variants: {
454
+ variant: {
455
+ default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
456
+ secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
457
+ destructive: "bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90",
458
+ success: "bg-success text-success-foreground [a&]:hover:bg-success/90",
459
+ warning: "bg-warning text-warning-foreground [a&]:hover:bg-warning/90",
460
+ info: "bg-info text-info-foreground [a&]:hover:bg-info/90",
461
+ outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
462
+ }
463
+ },
464
+ defaultVariants: {
465
+ variant: "default"
466
+ }
467
+ }
468
+ );
469
+ function Badge({ className, variant = "default", asChild = false, ...props }) {
470
+ const Comp = asChild ? Slot2 : "span";
471
+ return /* @__PURE__ */ jsx12(Comp, { "data-slot": "badge", className: cn(badgeVariants({ variant }), className), ...props });
472
+ }
473
+
474
+ // src/components/alert.jsx
475
+ import * as React13 from "react";
476
+ import { cva as cva3 } from "class-variance-authority";
477
+ import { jsx as jsx13 } from "react/jsx-runtime";
478
+ var alertVariants = cva3(
479
+ "relative w-full rounded-lg border px-4 py-3 text-sm grid grid-cols-[0_1fr] has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
480
+ {
481
+ variants: {
482
+ variant: {
483
+ default: "bg-card text-card-foreground border-border",
484
+ success: "bg-success/10 text-success border-success/30 [&>svg]:text-success",
485
+ warning: "bg-warning/10 text-warning border-warning/30 [&>svg]:text-warning",
486
+ info: "bg-info/10 text-info border-info/30 [&>svg]:text-info",
487
+ destructive: "bg-destructive/10 text-destructive border-destructive/30 [&>svg]:text-destructive"
488
+ }
489
+ },
490
+ defaultVariants: {
491
+ variant: "default"
492
+ }
493
+ }
494
+ );
495
+ var Alert = React13.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx13("div", { ref, role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
496
+ Alert.displayName = "Alert";
497
+ var AlertTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13("h5", { ref, className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className), ...props }));
498
+ AlertTitle.displayName = "AlertTitle";
499
+ var AlertDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13("div", { ref, className: cn("col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed", className), ...props }));
500
+ AlertDescription.displayName = "AlertDescription";
501
+
502
+ // src/components/breadcrumb.jsx
503
+ import * as React14 from "react";
504
+ import { Slot as Slot3 } from "@radix-ui/react-slot";
505
+ import { ChevronRight as ChevronRight2 } from "lucide-react";
506
+ import { jsx as jsx14 } from "react/jsx-runtime";
507
+ var Breadcrumb = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14("nav", { ref, "aria-label": "breadcrumb", className: cn("text-sm", className), ...props }));
508
+ Breadcrumb.displayName = "Breadcrumb";
509
+ var BreadcrumbList = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14("ol", { ref, className: cn("flex flex-wrap items-center gap-1.5 break-words text-muted-foreground", className), ...props }));
510
+ BreadcrumbList.displayName = "BreadcrumbList";
511
+ var BreadcrumbItem = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14("li", { ref, className: cn("inline-flex items-center gap-1.5", className), ...props }));
512
+ BreadcrumbItem.displayName = "BreadcrumbItem";
513
+ var BreadcrumbLink = React14.forwardRef(({ className, asChild, ...props }, ref) => {
514
+ const Comp = asChild ? Slot3 : "a";
515
+ return /* @__PURE__ */ jsx14(Comp, { ref, className: cn("transition-colors hover:text-foreground", className), ...props });
516
+ });
517
+ BreadcrumbLink.displayName = "BreadcrumbLink";
518
+ var BreadcrumbPage = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14("span", { ref, role: "link", "aria-disabled": "true", "aria-current": "page", className: cn("font-medium text-foreground", className), ...props }));
519
+ BreadcrumbPage.displayName = "BreadcrumbPage";
520
+ var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx14("li", { role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:size-3.5", className), ...props, children: children ?? /* @__PURE__ */ jsx14(ChevronRight2, {}) });
521
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
522
+
523
+ // src/components/pagination.jsx
524
+ import * as React15 from "react";
525
+ import { ChevronLeft, ChevronRight as ChevronRight3 } from "lucide-react";
526
+ import { jsx as jsx15 } from "react/jsx-runtime";
527
+ var Pagination = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15("nav", { ref, "aria-label": "pagination", className: cn("flex items-center gap-2", className), ...props }));
528
+ Pagination.displayName = "Pagination";
529
+ var PaginationContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15("ul", { ref, className: cn("flex flex-row items-center gap-1", className), ...props }));
530
+ PaginationContent.displayName = "PaginationContent";
531
+ var PaginationItem = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15("li", { ref, className: cn(className), ...props }));
532
+ PaginationItem.displayName = "PaginationItem";
533
+ var PaginationPrevious = ({ className, ...props }) => /* @__PURE__ */ jsx15(Button, { variant: "outline", size: "icon", "aria-label": "Go to previous page", className: cn(className), ...props, children: /* @__PURE__ */ jsx15(ChevronLeft, { className: "h-4 w-4" }) });
534
+ PaginationPrevious.displayName = "PaginationPrevious";
535
+ var PaginationNext = ({ className, ...props }) => /* @__PURE__ */ jsx15(Button, { variant: "outline", size: "icon", "aria-label": "Go to next page", className: cn(className), ...props, children: /* @__PURE__ */ jsx15(ChevronRight3, { className: "h-4 w-4" }) });
536
+ PaginationNext.displayName = "PaginationNext";
537
+
538
+ // src/components/tooltip.jsx
539
+ import * as React16 from "react";
540
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
541
+ import { jsx as jsx16 } from "react/jsx-runtime";
542
+ var TooltipProvider = TooltipPrimitive.Provider;
543
+ var Tooltip = TooltipPrimitive.Root;
544
+ var TooltipTrigger = TooltipPrimitive.Trigger;
545
+ var TooltipContent = React16.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx16(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx16(
546
+ TooltipPrimitive.Content,
547
+ {
548
+ ref,
549
+ sideOffset,
550
+ className: cn(
551
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
552
+ className
553
+ ),
554
+ ...props
555
+ }
556
+ ) }));
557
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
558
+
559
+ // src/components/progress.jsx
560
+ import * as React17 from "react";
561
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
562
+ import { jsx as jsx17 } from "react/jsx-runtime";
563
+ var Progress = React17.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx17(
564
+ ProgressPrimitive.Root,
565
+ {
566
+ ref,
567
+ className: cn("relative h-2 w-full overflow-hidden rounded-full bg-secondary", className),
568
+ ...props,
569
+ children: /* @__PURE__ */ jsx17(
570
+ ProgressPrimitive.Indicator,
571
+ {
572
+ className: "h-full w-full flex-1 bg-primary transition-transform",
573
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
574
+ }
575
+ )
576
+ }
577
+ ));
578
+ Progress.displayName = ProgressPrimitive.Root.displayName;
579
+
580
+ // src/components/tabs.jsx
581
+ import * as React18 from "react";
582
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
583
+ import { jsx as jsx18 } from "react/jsx-runtime";
584
+ var Tabs = TabsPrimitive.Root;
585
+ var TabsList = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
586
+ TabsPrimitive.List,
587
+ {
588
+ ref,
589
+ className: cn(
590
+ "inline-flex h-9 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
591
+ className
592
+ ),
593
+ ...props
594
+ }
595
+ ));
596
+ TabsList.displayName = TabsPrimitive.List.displayName;
597
+ var TabsTrigger = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
598
+ TabsPrimitive.Trigger,
599
+ {
600
+ ref,
601
+ className: cn(
602
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1 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 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
603
+ className
604
+ ),
605
+ ...props
606
+ }
607
+ ));
608
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
609
+ var TabsContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
610
+ TabsPrimitive.Content,
611
+ {
612
+ ref,
613
+ className: cn("mt-2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", className),
614
+ ...props
615
+ }
616
+ ));
617
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
618
+
619
+ // src/components/popover.jsx
620
+ import * as React19 from "react";
621
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
622
+ import { jsx as jsx19 } from "react/jsx-runtime";
623
+ var Popover = PopoverPrimitive.Root;
624
+ var PopoverTrigger = PopoverPrimitive.Trigger;
625
+ var PopoverAnchor = PopoverPrimitive.Anchor;
626
+ var PopoverContent = React19.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx19(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx19(
627
+ PopoverPrimitive.Content,
628
+ {
629
+ ref,
630
+ align,
631
+ sideOffset,
632
+ className: cn(
633
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",
634
+ className
635
+ ),
636
+ ...props
637
+ }
638
+ ) }));
639
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
640
+ export {
641
+ Alert,
642
+ AlertDescription,
643
+ AlertDialog,
644
+ AlertDialogAction,
645
+ AlertDialogCancel,
646
+ AlertDialogContent,
647
+ AlertDialogDescription,
648
+ AlertDialogFooter,
649
+ AlertDialogHeader,
650
+ AlertDialogTitle,
651
+ AlertDialogTrigger,
652
+ AlertTitle,
653
+ Badge,
654
+ Breadcrumb,
655
+ BreadcrumbItem,
656
+ BreadcrumbLink,
657
+ BreadcrumbList,
658
+ BreadcrumbPage,
659
+ BreadcrumbSeparator,
660
+ Button,
661
+ Checkbox,
662
+ Dialog,
663
+ DialogClose,
664
+ DialogContent,
665
+ DialogDescription,
666
+ DialogFooter,
667
+ DialogHeader,
668
+ DialogOverlay,
669
+ DialogPortal,
670
+ DialogTitle,
671
+ DialogTrigger,
672
+ DropdownMenu,
673
+ DropdownMenuCheckboxItem,
674
+ DropdownMenuContent,
675
+ DropdownMenuGroup,
676
+ DropdownMenuItem,
677
+ DropdownMenuLabel,
678
+ DropdownMenuPortal,
679
+ DropdownMenuRadioGroup,
680
+ DropdownMenuRadioItem,
681
+ DropdownMenuSeparator,
682
+ DropdownMenuSub,
683
+ DropdownMenuTrigger,
684
+ Input,
685
+ Label,
686
+ Pagination,
687
+ PaginationContent,
688
+ PaginationItem,
689
+ PaginationNext,
690
+ PaginationPrevious,
691
+ Popover,
692
+ PopoverAnchor,
693
+ PopoverContent,
694
+ PopoverTrigger,
695
+ Progress,
696
+ RadioGroup,
697
+ RadioGroupItem,
698
+ Select,
699
+ SelectContent,
700
+ SelectGroup,
701
+ SelectItem,
702
+ SelectLabel,
703
+ SelectScrollDownButton,
704
+ SelectScrollUpButton,
705
+ SelectSeparator,
706
+ SelectTrigger,
707
+ SelectValue,
708
+ Table,
709
+ TableBody,
710
+ TableCell,
711
+ TableHead,
712
+ TableHeader,
713
+ TableRow,
714
+ Tabs,
715
+ TabsContent,
716
+ TabsList,
717
+ TabsTrigger,
718
+ Textarea,
719
+ Tooltip,
720
+ TooltipContent,
721
+ TooltipProvider,
722
+ TooltipTrigger,
723
+ alertVariants,
724
+ badgeVariants,
725
+ buttonVariants,
726
+ cn
727
+ };
728
+ //# sourceMappingURL=index.js.map