@nextlyhq/ui 0.0.2-alpha.5 → 0.0.2-alpha.50
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/README.md +98 -23
- package/dist/index.cjs +1118 -1096
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +98 -265
- package/dist/index.d.ts +98 -265
- package/dist/index.mjs +878 -838
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +2 -0
- package/dist/styles.scoped.css +2 -0
- package/dist/tailwind-preset.cjs +98 -0
- package/dist/tailwind-preset.cjs.map +1 -0
- package/dist/tailwind-preset.d.cts +80 -0
- package/dist/tailwind-preset.d.ts +80 -0
- package/dist/tailwind-preset.mjs +93 -0
- package/dist/tailwind-preset.mjs.map +1 -0
- package/dist/theme.css +997 -0
- package/dist/utils.cjs +13 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +17 -0
- package/dist/utils.d.ts +17 -0
- package/dist/utils.mjs +11 -0
- package/dist/utils.mjs.map +1 -0
- package/docs/plugin-ui-authoring.md +228 -0
- package/package.json +56 -15
package/dist/index.cjs
CHANGED
|
@@ -1,85 +1,227 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var reactTabs = require('@radix-ui/react-tabs');
|
|
19
|
-
var reactTooltip = require('@radix-ui/react-tooltip');
|
|
20
|
-
var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
21
|
-
var DialogPrimitive = require('@radix-ui/react-dialog');
|
|
22
|
-
var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
|
|
23
|
-
var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
|
|
24
|
-
var SelectPrimitive = require('@radix-ui/react-select');
|
|
25
|
-
var cmdk = require('cmdk');
|
|
26
|
-
var sonner = require('sonner');
|
|
27
|
-
|
|
28
|
-
function _interopNamespace(e) {
|
|
29
|
-
if (e && e.__esModule) return e;
|
|
30
|
-
var n = Object.create(null);
|
|
31
|
-
if (e) {
|
|
32
|
-
Object.keys(e).forEach(function (k) {
|
|
33
|
-
if (k !== 'default') {
|
|
34
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
35
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
36
|
-
enumerable: true,
|
|
37
|
-
get: function () { return e[k]; }
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
});
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
41
18
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
45
30
|
|
|
46
|
-
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
31
|
+
// src/index.ts
|
|
32
|
+
var index_exports = {};
|
|
33
|
+
__export(index_exports, {
|
|
34
|
+
Accordion: () => Accordion,
|
|
35
|
+
AccordionContent: () => AccordionContent,
|
|
36
|
+
AccordionItem: () => AccordionItem,
|
|
37
|
+
AccordionTrigger: () => AccordionTrigger,
|
|
38
|
+
Alert: () => Alert,
|
|
39
|
+
AlertDescription: () => AlertDescription,
|
|
40
|
+
AlertDialog: () => AlertDialog,
|
|
41
|
+
AlertDialogAction: () => AlertDialogAction,
|
|
42
|
+
AlertDialogCancel: () => AlertDialogCancel,
|
|
43
|
+
AlertDialogContent: () => AlertDialogContent,
|
|
44
|
+
AlertDialogDescription: () => AlertDialogDescription,
|
|
45
|
+
AlertDialogFooter: () => AlertDialogFooter,
|
|
46
|
+
AlertDialogHeader: () => AlertDialogHeader,
|
|
47
|
+
AlertDialogOverlay: () => AlertDialogOverlay,
|
|
48
|
+
AlertDialogPortal: () => AlertDialogPortal,
|
|
49
|
+
AlertDialogTitle: () => AlertDialogTitle,
|
|
50
|
+
AlertDialogTrigger: () => AlertDialogTrigger,
|
|
51
|
+
AlertTitle: () => AlertTitle,
|
|
52
|
+
Avatar: () => Avatar,
|
|
53
|
+
AvatarFallback: () => AvatarFallback,
|
|
54
|
+
AvatarImage: () => AvatarImage,
|
|
55
|
+
Badge: () => Badge,
|
|
56
|
+
Button: () => Button,
|
|
57
|
+
Card: () => Card,
|
|
58
|
+
CardAction: () => CardAction,
|
|
59
|
+
CardContent: () => CardContent,
|
|
60
|
+
CardDescription: () => CardDescription,
|
|
61
|
+
CardFooter: () => CardFooter,
|
|
62
|
+
CardHeader: () => CardHeader,
|
|
63
|
+
CardTitle: () => CardTitle,
|
|
64
|
+
Checkbox: () => Checkbox,
|
|
65
|
+
Collapsible: () => Collapsible,
|
|
66
|
+
CollapsibleContent: () => CollapsibleContent2,
|
|
67
|
+
CollapsibleTrigger: () => CollapsibleTrigger2,
|
|
68
|
+
Command: () => Command,
|
|
69
|
+
CommandDialog: () => CommandDialog,
|
|
70
|
+
CommandEmpty: () => CommandEmpty,
|
|
71
|
+
CommandGroup: () => CommandGroup,
|
|
72
|
+
CommandInput: () => CommandInput,
|
|
73
|
+
CommandItem: () => CommandItem,
|
|
74
|
+
CommandList: () => CommandList,
|
|
75
|
+
CommandSeparator: () => CommandSeparator,
|
|
76
|
+
CommandShortcut: () => CommandShortcut,
|
|
77
|
+
Dialog: () => Dialog,
|
|
78
|
+
DialogClose: () => DialogClose,
|
|
79
|
+
DialogContent: () => DialogContent,
|
|
80
|
+
DialogDescription: () => DialogDescription,
|
|
81
|
+
DialogFooter: () => DialogFooter,
|
|
82
|
+
DialogHeader: () => DialogHeader,
|
|
83
|
+
DialogOverlay: () => DialogOverlay,
|
|
84
|
+
DialogPortal: () => DialogPortal,
|
|
85
|
+
DialogTitle: () => DialogTitle,
|
|
86
|
+
DialogTrigger: () => DialogTrigger,
|
|
87
|
+
DropdownMenu: () => DropdownMenu,
|
|
88
|
+
DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem,
|
|
89
|
+
DropdownMenuContent: () => DropdownMenuContent,
|
|
90
|
+
DropdownMenuGroup: () => DropdownMenuGroup,
|
|
91
|
+
DropdownMenuItem: () => DropdownMenuItem,
|
|
92
|
+
DropdownMenuLabel: () => DropdownMenuLabel,
|
|
93
|
+
DropdownMenuPortal: () => DropdownMenuPortal,
|
|
94
|
+
DropdownMenuRadioGroup: () => DropdownMenuRadioGroup,
|
|
95
|
+
DropdownMenuRadioItem: () => DropdownMenuRadioItem,
|
|
96
|
+
DropdownMenuSeparator: () => DropdownMenuSeparator,
|
|
97
|
+
DropdownMenuShortcut: () => DropdownMenuShortcut,
|
|
98
|
+
DropdownMenuSub: () => DropdownMenuSub,
|
|
99
|
+
DropdownMenuSubContent: () => DropdownMenuSubContent,
|
|
100
|
+
DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
|
|
101
|
+
DropdownMenuTrigger: () => DropdownMenuTrigger,
|
|
102
|
+
FormLabelWithTooltip: () => FormLabelWithTooltip,
|
|
103
|
+
Grid: () => Grid,
|
|
104
|
+
Input: () => Input,
|
|
105
|
+
Label: () => Label,
|
|
106
|
+
Popover: () => Popover,
|
|
107
|
+
PopoverAnchor: () => PopoverAnchor,
|
|
108
|
+
PopoverContent: () => PopoverContent,
|
|
109
|
+
PopoverTrigger: () => PopoverTrigger,
|
|
110
|
+
PortalProvider: () => PortalProvider,
|
|
111
|
+
Progress: () => Progress,
|
|
112
|
+
RadioGroup: () => RadioGroup,
|
|
113
|
+
RadioGroupItem: () => RadioGroupItem,
|
|
114
|
+
Select: () => Select,
|
|
115
|
+
SelectContent: () => SelectContent,
|
|
116
|
+
SelectGroup: () => SelectGroup,
|
|
117
|
+
SelectItem: () => SelectItem,
|
|
118
|
+
SelectLabel: () => SelectLabel,
|
|
119
|
+
SelectScrollDownButton: () => SelectScrollDownButton,
|
|
120
|
+
SelectScrollUpButton: () => SelectScrollUpButton,
|
|
121
|
+
SelectSeparator: () => SelectSeparator,
|
|
122
|
+
SelectTrigger: () => SelectTrigger,
|
|
123
|
+
SelectValue: () => SelectValue,
|
|
124
|
+
Separator: () => Separator,
|
|
125
|
+
Sheet: () => Sheet,
|
|
126
|
+
SheetClose: () => SheetClose,
|
|
127
|
+
SheetContent: () => SheetContent,
|
|
128
|
+
SheetDescription: () => SheetDescription,
|
|
129
|
+
SheetFooter: () => SheetFooter,
|
|
130
|
+
SheetHeader: () => SheetHeader,
|
|
131
|
+
SheetOverlay: () => SheetOverlay,
|
|
132
|
+
SheetPortal: () => SheetPortal,
|
|
133
|
+
SheetTitle: () => SheetTitle,
|
|
134
|
+
SheetTrigger: () => SheetTrigger,
|
|
135
|
+
Skeleton: () => Skeleton,
|
|
136
|
+
Spinner: () => Spinner,
|
|
137
|
+
Stack: () => Stack,
|
|
138
|
+
Stat: () => Stat,
|
|
139
|
+
Switch: () => Switch,
|
|
140
|
+
Table: () => Table,
|
|
141
|
+
TableBody: () => TableBody,
|
|
142
|
+
TableCaption: () => TableCaption,
|
|
143
|
+
TableCell: () => TableCell,
|
|
144
|
+
TableEmpty: () => TableEmpty,
|
|
145
|
+
TableError: () => TableError,
|
|
146
|
+
TableFooter: () => TableFooter,
|
|
147
|
+
TableHead: () => TableHead,
|
|
148
|
+
TableHeader: () => TableHeader,
|
|
149
|
+
TableLoading: () => TableLoading,
|
|
150
|
+
TableRow: () => TableRow,
|
|
151
|
+
TableSearch: () => TableSearch,
|
|
152
|
+
TableSkeleton: () => TableSkeleton,
|
|
153
|
+
Tabs: () => Tabs,
|
|
154
|
+
TabsContent: () => TabsContent,
|
|
155
|
+
TabsList: () => TabsList,
|
|
156
|
+
TabsTrigger: () => TabsTrigger,
|
|
157
|
+
Textarea: () => Textarea,
|
|
158
|
+
Toaster: () => Toaster,
|
|
159
|
+
Tooltip: () => Tooltip,
|
|
160
|
+
TooltipContent: () => TooltipContent,
|
|
161
|
+
TooltipProvider: () => TooltipProvider,
|
|
162
|
+
TooltipTrigger: () => TooltipTrigger,
|
|
163
|
+
alertVariants: () => alertVariants,
|
|
164
|
+
avatarVariants: () => avatarVariants,
|
|
165
|
+
badgeVariants: () => badgeVariants,
|
|
166
|
+
buttonVariants: () => buttonVariants,
|
|
167
|
+
cardVariants: () => cardVariants,
|
|
168
|
+
dialogContentVariants: () => dialogContentVariants,
|
|
169
|
+
inputVariants: () => inputVariants,
|
|
170
|
+
progressVariants: () => progressVariants,
|
|
171
|
+
selectTriggerVariants: () => selectTriggerVariants,
|
|
172
|
+
sheetVariants: () => sheetVariants,
|
|
173
|
+
spinnerVariants: () => spinnerVariants,
|
|
174
|
+
toast: () => import_sonner.toast,
|
|
175
|
+
usePortalContainer: () => usePortalContainer
|
|
176
|
+
});
|
|
177
|
+
module.exports = __toCommonJS(index_exports);
|
|
57
178
|
|
|
58
179
|
// src/components/button.tsx
|
|
180
|
+
var import_react_slot = require("@radix-ui/react-slot");
|
|
181
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
182
|
+
var React = __toESM(require("react"), 1);
|
|
183
|
+
var import_react = require("react");
|
|
184
|
+
|
|
185
|
+
// src/lib/utils.ts
|
|
186
|
+
var import_clsx = require("clsx");
|
|
187
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
59
188
|
function cn(...inputs) {
|
|
60
|
-
return
|
|
189
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
61
190
|
}
|
|
62
|
-
|
|
63
|
-
|
|
191
|
+
|
|
192
|
+
// src/components/button.tsx
|
|
193
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
194
|
+
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
195
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer transition-all duration-150 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-[0.98] [&_svg]:text-current",
|
|
64
196
|
{
|
|
65
197
|
variants: {
|
|
66
198
|
variant: {
|
|
67
199
|
default: "bg-primary text-primary-foreground border border-transparent hover:opacity-90",
|
|
68
200
|
primary: "bg-primary text-primary-foreground border border-transparent hover:opacity-90",
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
201
|
+
// Solid fill uses the emphasis token so white on-color text stays AA in
|
|
202
|
+
// dark mode (the base token is the readable text color, too light here).
|
|
203
|
+
// Hover darkens to a deeper shade instead of opacity-90, which would
|
|
204
|
+
// composite the fill toward the page and drop white text under 4.5:1.
|
|
205
|
+
destructive: "bg-destructive-solid text-destructive-foreground border border-transparent hover:bg-destructive-700",
|
|
206
|
+
// border-border is the decorative separator token, and it is the right
|
|
207
|
+
// one here: a button is identified by its label and fill, so its edge
|
|
208
|
+
// carries no meaning on its own and is not held to the 3:1 minimum that
|
|
209
|
+
// border-input meets for controls identified by their boundary. It is
|
|
210
|
+
// still used in preference to a faint primary alpha, which reads as a
|
|
211
|
+
// tint of the brand colour rather than as an edge.
|
|
212
|
+
outline: "border border-border text-foreground hover-unified bg-background",
|
|
213
|
+
secondary: "bg-background border border-border text-foreground hover:bg-primary/5",
|
|
72
214
|
ghost: "text-foreground border border-transparent hover-unified",
|
|
73
215
|
link: "text-primary border border-transparent underline-offset-4 hover:underline"
|
|
74
216
|
},
|
|
75
217
|
size: {
|
|
76
|
-
default: "h-
|
|
77
|
-
sm: "h-
|
|
78
|
-
md: "h-
|
|
79
|
-
lg: "h-
|
|
80
|
-
icon: "h-
|
|
81
|
-
"icon-sm": "h-
|
|
82
|
-
"icon-lg": "h-
|
|
218
|
+
default: "h-[var(--nx-control-height)] px-6 py-2",
|
|
219
|
+
sm: "h-[var(--nx-control-height-md)] px-4 text-sm",
|
|
220
|
+
md: "h-[var(--nx-control-height)] px-6 text-sm",
|
|
221
|
+
lg: "h-[var(--nx-control-height-lg)] px-8 text-base",
|
|
222
|
+
icon: "h-[var(--nx-control-height)] w-[var(--nx-control-height)] p-0",
|
|
223
|
+
"icon-sm": "h-[var(--nx-control-height-md)] w-[var(--nx-control-height-md)] p-0",
|
|
224
|
+
"icon-lg": "h-[var(--nx-control-height-lg)] w-[var(--nx-control-height-lg)] p-0"
|
|
83
225
|
}
|
|
84
226
|
},
|
|
85
227
|
defaultVariants: {
|
|
@@ -88,7 +230,7 @@ var buttonVariants = classVarianceAuthority.cva(
|
|
|
88
230
|
}
|
|
89
231
|
}
|
|
90
232
|
);
|
|
91
|
-
var Button =
|
|
233
|
+
var Button = (0, import_react.forwardRef)(
|
|
92
234
|
({
|
|
93
235
|
className,
|
|
94
236
|
variant = "default",
|
|
@@ -97,9 +239,9 @@ var Button = React5.forwardRef(
|
|
|
97
239
|
children,
|
|
98
240
|
...props
|
|
99
241
|
}, ref) => {
|
|
100
|
-
const Comp = asChild ?
|
|
101
|
-
const hasMultipleChildren =
|
|
102
|
-
return /* @__PURE__ */
|
|
242
|
+
const Comp = asChild ? import_react_slot.Slot : "button";
|
|
243
|
+
const hasMultipleChildren = React.Children.count(children) > 1;
|
|
244
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
103
245
|
Comp,
|
|
104
246
|
{
|
|
105
247
|
"data-slot": `button.${variant}`,
|
|
@@ -115,14 +257,19 @@ var Button = React5.forwardRef(
|
|
|
115
257
|
}
|
|
116
258
|
);
|
|
117
259
|
Button.displayName = "Button";
|
|
118
|
-
|
|
119
|
-
|
|
260
|
+
|
|
261
|
+
// src/components/input.tsx
|
|
262
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
263
|
+
var import_react2 = require("react");
|
|
264
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
265
|
+
var inputVariants = (0, import_class_variance_authority2.cva)(
|
|
266
|
+
"file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-md border border-input bg-background text-sm transition-all duration-150 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus:ring-offset-0 focus:outline-none focus:border-primary! focus-visible:border-primary! aria-invalid:border-destructive aria-invalid:focus:border-destructive! data-[invalid=true]:border-destructive data-[invalid=true]:focus:border-destructive!",
|
|
120
267
|
{
|
|
121
268
|
variants: {
|
|
122
269
|
size: {
|
|
123
|
-
sm: "h-
|
|
124
|
-
default: "h-
|
|
125
|
-
lg: "h-
|
|
270
|
+
sm: "h-[var(--nx-control-height-sm)] px-2.5 py-2 text-sm",
|
|
271
|
+
default: "h-[var(--nx-control-height)] px-3 py-2.5 text-sm",
|
|
272
|
+
lg: "h-[var(--nx-control-height-lg)] px-4 py-3 text-base"
|
|
126
273
|
}
|
|
127
274
|
},
|
|
128
275
|
defaultVariants: {
|
|
@@ -130,9 +277,9 @@ var inputVariants = classVarianceAuthority.cva(
|
|
|
130
277
|
}
|
|
131
278
|
}
|
|
132
279
|
);
|
|
133
|
-
var Input =
|
|
280
|
+
var Input = (0, import_react2.forwardRef)(
|
|
134
281
|
({ className, type, size, ...props }, ref) => {
|
|
135
|
-
return /* @__PURE__ */
|
|
282
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
136
283
|
"input",
|
|
137
284
|
{
|
|
138
285
|
type,
|
|
@@ -145,14 +292,20 @@ var Input = React5.forwardRef(
|
|
|
145
292
|
}
|
|
146
293
|
);
|
|
147
294
|
Input.displayName = "Input";
|
|
148
|
-
|
|
149
|
-
|
|
295
|
+
|
|
296
|
+
// src/components/textarea.tsx
|
|
297
|
+
var import_react3 = require("react");
|
|
298
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
299
|
+
var Textarea = (0, import_react3.forwardRef)(({ className, ...props }, ref) => {
|
|
300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
150
301
|
"textarea",
|
|
151
302
|
{
|
|
152
303
|
"data-slot": "textarea",
|
|
153
304
|
className: cn(
|
|
154
|
-
|
|
155
|
-
|
|
305
|
+
// hover:border-primary (full strength) keeps the hover boundary more
|
|
306
|
+
// visible than the resting border-input, not a fainter alpha of it.
|
|
307
|
+
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground placeholder:opacity-50 transition-all duration-200 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 resize-y",
|
|
308
|
+
"aria-invalid:border-destructive aria-invalid:focus:border-destructive!",
|
|
156
309
|
className
|
|
157
310
|
),
|
|
158
311
|
ref,
|
|
@@ -161,9 +314,13 @@ var Textarea = React5.forwardRef(({ className, ...props }, ref) => {
|
|
|
161
314
|
);
|
|
162
315
|
});
|
|
163
316
|
Textarea.displayName = "Textarea";
|
|
317
|
+
|
|
318
|
+
// src/components/label.tsx
|
|
319
|
+
var import_react_label = require("@radix-ui/react-label");
|
|
320
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
164
321
|
function Label({ className, ...props }) {
|
|
165
|
-
return /* @__PURE__ */
|
|
166
|
-
|
|
322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
323
|
+
import_react_label.Root,
|
|
167
324
|
{
|
|
168
325
|
"data-slot": "label",
|
|
169
326
|
className: cn(
|
|
@@ -174,17 +331,121 @@ function Label({ className, ...props }) {
|
|
|
174
331
|
}
|
|
175
332
|
);
|
|
176
333
|
}
|
|
177
|
-
|
|
178
|
-
|
|
334
|
+
|
|
335
|
+
// src/components/form-label-with-tooltip.tsx
|
|
336
|
+
var import_lucide_react = require("lucide-react");
|
|
337
|
+
var React2 = __toESM(require("react"), 1);
|
|
338
|
+
|
|
339
|
+
// src/components/tooltip.tsx
|
|
340
|
+
var import_react_tooltip = require("@radix-ui/react-tooltip");
|
|
341
|
+
var import_react5 = require("react");
|
|
342
|
+
|
|
343
|
+
// src/providers/portal-provider.tsx
|
|
344
|
+
var import_react4 = require("react");
|
|
345
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
346
|
+
var PortalContext = (0, import_react4.createContext)({ container: null });
|
|
347
|
+
function PortalProvider({ container, children }) {
|
|
348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PortalContext.Provider, { value: { container }, children });
|
|
349
|
+
}
|
|
350
|
+
function usePortalContainer() {
|
|
351
|
+
const { container } = (0, import_react4.useContext)(PortalContext);
|
|
352
|
+
return container ?? void 0;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// src/components/tooltip.tsx
|
|
356
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
357
|
+
var TooltipProvider = import_react_tooltip.Provider;
|
|
358
|
+
var Tooltip = import_react_tooltip.Root;
|
|
359
|
+
var TooltipTrigger = import_react_tooltip.Trigger;
|
|
360
|
+
var TooltipContent = (0, import_react5.forwardRef)(({ className, sideOffset = 4, ...props }, ref) => {
|
|
361
|
+
const portalContainer = usePortalContainer();
|
|
362
|
+
return (
|
|
363
|
+
// Portalled for the same reason as every other overlay here, plus one
|
|
364
|
+
// specific to the tooltip: the positioner measures against the nearest
|
|
365
|
+
// containing block, and it counts `container-type` as one while the
|
|
366
|
+
// browser does not. Left inline under a `@container` element, the content
|
|
367
|
+
// is offset by that element's own position. Portalling lifts it out of any
|
|
368
|
+
// such ancestor, so the two agree again.
|
|
369
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_tooltip.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
370
|
+
import_react_tooltip.Content,
|
|
371
|
+
{
|
|
372
|
+
ref,
|
|
373
|
+
sideOffset,
|
|
374
|
+
"data-slot": "tooltip-content",
|
|
375
|
+
className: cn(
|
|
376
|
+
"z-50 overflow-hidden rounded-lg px-3 py-1.5 text-xs shadow-lg border border-border bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
377
|
+
className
|
|
378
|
+
),
|
|
379
|
+
...props
|
|
380
|
+
}
|
|
381
|
+
) })
|
|
382
|
+
);
|
|
383
|
+
});
|
|
384
|
+
TooltipContent.displayName = import_react_tooltip.Content.displayName;
|
|
385
|
+
|
|
386
|
+
// src/components/form-label-with-tooltip.tsx
|
|
387
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
388
|
+
var FormLabelWithTooltip = React2.forwardRef(
|
|
389
|
+
({
|
|
390
|
+
className,
|
|
391
|
+
labelClassName,
|
|
392
|
+
tooltipClassName,
|
|
393
|
+
label,
|
|
394
|
+
description,
|
|
395
|
+
required,
|
|
396
|
+
...props
|
|
397
|
+
}, ref) => {
|
|
398
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("flex items-center gap-2", className), children: [
|
|
399
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Label, { ref, className: labelClassName, ...props, children: [
|
|
400
|
+
label,
|
|
401
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-destructive ml-1", children: "*" })
|
|
402
|
+
] }),
|
|
403
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Tooltip, { delayDuration: 200, children: [
|
|
404
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
405
|
+
TooltipTrigger,
|
|
406
|
+
{
|
|
407
|
+
type: "button",
|
|
408
|
+
tabIndex: -1,
|
|
409
|
+
className: "shrink-0 text-muted-foreground hover:text-foreground focus:outline-none focus:text-foreground transition-colors cursor-help",
|
|
410
|
+
children: [
|
|
411
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react.Info, { className: "h-3.5 w-3.5" }),
|
|
412
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "sr-only", children: "Toggle description" })
|
|
413
|
+
]
|
|
414
|
+
}
|
|
415
|
+
),
|
|
416
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
417
|
+
TooltipContent,
|
|
418
|
+
{
|
|
419
|
+
side: "right",
|
|
420
|
+
className: cn(
|
|
421
|
+
"max-w-[250px] text-xs break-words relative z-[100] shadow-md border border-border bg-primary text-primary-foreground px-3 py-2 rounded-lg",
|
|
422
|
+
tooltipClassName
|
|
423
|
+
),
|
|
424
|
+
children: description
|
|
425
|
+
}
|
|
426
|
+
)
|
|
427
|
+
] }) })
|
|
428
|
+
] });
|
|
429
|
+
}
|
|
430
|
+
);
|
|
431
|
+
FormLabelWithTooltip.displayName = "FormLabelWithTooltip";
|
|
432
|
+
|
|
433
|
+
// src/components/badge.tsx
|
|
434
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
435
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
436
|
+
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
437
|
+
"inline-flex items-center rounded-sm px-2.5 py-0.5 h-[22px] text-xs font-medium transition-colors",
|
|
179
438
|
{
|
|
180
439
|
variants: {
|
|
181
440
|
variant: {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
441
|
+
// Clear, legible chip in both modes (was bg-primary/5 at ~5% opacity,
|
|
442
|
+
// which was nearly invisible on dark backgrounds).
|
|
443
|
+
default: "bg-muted text-foreground",
|
|
444
|
+
primary: "bg-primary/10 text-primary dark:bg-primary/20",
|
|
445
|
+
success: "bg-success-100 text-success-700 dark:bg-success-900 dark:text-success-100",
|
|
446
|
+
warning: "bg-warning-100 text-warning-700 dark:bg-warning-900 dark:text-warning-100",
|
|
447
|
+
destructive: "bg-destructive-100 text-destructive-700 dark:bg-destructive-900 dark:text-destructive-100",
|
|
448
|
+
outline: "border border-border! bg-transparent text-foreground dark:text-muted-foreground dark:border-border!"
|
|
188
449
|
}
|
|
189
450
|
},
|
|
190
451
|
defaultVariants: {
|
|
@@ -193,7 +454,7 @@ var badgeVariants = classVarianceAuthority.cva(
|
|
|
193
454
|
}
|
|
194
455
|
);
|
|
195
456
|
function Badge({ className, variant = "default", ...props }) {
|
|
196
|
-
return /* @__PURE__ */
|
|
457
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
197
458
|
"div",
|
|
198
459
|
{
|
|
199
460
|
"data-slot": `badge.${variant}`,
|
|
@@ -202,8 +463,13 @@ function Badge({ className, variant = "default", ...props }) {
|
|
|
202
463
|
}
|
|
203
464
|
);
|
|
204
465
|
}
|
|
205
|
-
|
|
206
|
-
|
|
466
|
+
|
|
467
|
+
// src/components/card.tsx
|
|
468
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
469
|
+
var import_react6 = require("react");
|
|
470
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
471
|
+
var cardVariants = (0, import_class_variance_authority4.cva)(
|
|
472
|
+
"bg-card text-foreground rounded-lg border border-border transition-all duration-200",
|
|
207
473
|
{
|
|
208
474
|
variants: {
|
|
209
475
|
variant: {
|
|
@@ -217,9 +483,9 @@ var cardVariants = classVarianceAuthority.cva(
|
|
|
217
483
|
}
|
|
218
484
|
}
|
|
219
485
|
);
|
|
220
|
-
var Card =
|
|
486
|
+
var Card = (0, import_react6.forwardRef)(
|
|
221
487
|
({ className, variant, ...props }, ref) => {
|
|
222
|
-
return /* @__PURE__ */
|
|
488
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
223
489
|
"div",
|
|
224
490
|
{
|
|
225
491
|
ref,
|
|
@@ -231,16 +497,23 @@ var Card = React5.forwardRef(
|
|
|
231
497
|
}
|
|
232
498
|
);
|
|
233
499
|
Card.displayName = "Card";
|
|
234
|
-
var CardHeader =
|
|
500
|
+
var CardHeader = (0, import_react6.forwardRef)(
|
|
235
501
|
({ className, noBorder = false, ...props }, ref) => {
|
|
236
|
-
return /* @__PURE__ */
|
|
502
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
237
503
|
"div",
|
|
238
504
|
{
|
|
239
505
|
ref,
|
|
240
506
|
"data-slot": "card-header",
|
|
241
507
|
className: cn(
|
|
242
|
-
|
|
243
|
-
|
|
508
|
+
// Mirrors CardFooter: a header that carries its own tint runs the full
|
|
509
|
+
// width of the card, so at a nonzero --radius it would paint square
|
|
510
|
+
// across the card's curved top corners. `inherit` takes the parent's
|
|
511
|
+
// computed radius rather than restating a step. It only helps when the
|
|
512
|
+
// header is a direct child of the card; a header nested inside another
|
|
513
|
+
// wrapper inherits that wrapper's radius instead, and such a card needs
|
|
514
|
+
// `overflow-hidden` to clip the fill.
|
|
515
|
+
"flex flex-col rounded-t-[inherit] p-4",
|
|
516
|
+
!noBorder && "border-b border-border",
|
|
244
517
|
className
|
|
245
518
|
),
|
|
246
519
|
...props
|
|
@@ -249,9 +522,9 @@ var CardHeader = React5.forwardRef(
|
|
|
249
522
|
}
|
|
250
523
|
);
|
|
251
524
|
CardHeader.displayName = "CardHeader";
|
|
252
|
-
var CardTitle =
|
|
525
|
+
var CardTitle = (0, import_react6.forwardRef)(
|
|
253
526
|
({ className, ...props }, ref) => {
|
|
254
|
-
return /* @__PURE__ */
|
|
527
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
255
528
|
"h3",
|
|
256
529
|
{
|
|
257
530
|
ref,
|
|
@@ -263,9 +536,9 @@ var CardTitle = React5.forwardRef(
|
|
|
263
536
|
}
|
|
264
537
|
);
|
|
265
538
|
CardTitle.displayName = "CardTitle";
|
|
266
|
-
var CardDescription =
|
|
539
|
+
var CardDescription = (0, import_react6.forwardRef)(
|
|
267
540
|
({ className, ...props }, ref) => {
|
|
268
|
-
return /* @__PURE__ */
|
|
541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
269
542
|
"p",
|
|
270
543
|
{
|
|
271
544
|
ref,
|
|
@@ -277,9 +550,9 @@ var CardDescription = React5.forwardRef(
|
|
|
277
550
|
}
|
|
278
551
|
);
|
|
279
552
|
CardDescription.displayName = "CardDescription";
|
|
280
|
-
var CardAction =
|
|
553
|
+
var CardAction = (0, import_react6.forwardRef)(
|
|
281
554
|
({ className, ...props }, ref) => {
|
|
282
|
-
return /* @__PURE__ */
|
|
555
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
283
556
|
"div",
|
|
284
557
|
{
|
|
285
558
|
ref,
|
|
@@ -291,9 +564,9 @@ var CardAction = React5.forwardRef(
|
|
|
291
564
|
}
|
|
292
565
|
);
|
|
293
566
|
CardAction.displayName = "CardAction";
|
|
294
|
-
var CardContent =
|
|
567
|
+
var CardContent = (0, import_react6.forwardRef)(
|
|
295
568
|
({ className, ...props }, ref) => {
|
|
296
|
-
return /* @__PURE__ */
|
|
569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
297
570
|
"div",
|
|
298
571
|
{
|
|
299
572
|
ref,
|
|
@@ -305,15 +578,21 @@ var CardContent = React5.forwardRef(
|
|
|
305
578
|
}
|
|
306
579
|
);
|
|
307
580
|
CardContent.displayName = "CardContent";
|
|
308
|
-
var CardFooter =
|
|
581
|
+
var CardFooter = (0, import_react6.forwardRef)(
|
|
309
582
|
({ className, ...props }, ref) => {
|
|
310
|
-
return /* @__PURE__ */
|
|
583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
311
584
|
"div",
|
|
312
585
|
{
|
|
313
586
|
ref,
|
|
314
587
|
"data-slot": "card-footer",
|
|
315
588
|
className: cn(
|
|
316
|
-
|
|
589
|
+
// The footer's tint runs the full width of the card, so at a nonzero
|
|
590
|
+
// --radius it would paint square across the card's curved bottom
|
|
591
|
+
// corners. `inherit` takes the card's own computed radius rather than
|
|
592
|
+
// restating a step, so a card whose radius is overridden stays
|
|
593
|
+
// matched, and it can never disagree with the card at any --radius,
|
|
594
|
+
// including the shipped 0 where `rounded-lg` is 0.
|
|
595
|
+
"flex items-center px-6 py-4 border-t border-border bg-primary/5 rounded-b-[inherit]",
|
|
317
596
|
className
|
|
318
597
|
),
|
|
319
598
|
...props
|
|
@@ -322,15 +601,80 @@ var CardFooter = React5.forwardRef(
|
|
|
322
601
|
}
|
|
323
602
|
);
|
|
324
603
|
CardFooter.displayName = "CardFooter";
|
|
325
|
-
|
|
326
|
-
|
|
604
|
+
|
|
605
|
+
// src/components/layout.tsx
|
|
606
|
+
var import_react7 = require("react");
|
|
607
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
608
|
+
var GAP = {
|
|
609
|
+
0: "gap-0",
|
|
610
|
+
1: "gap-1",
|
|
611
|
+
2: "gap-2",
|
|
612
|
+
3: "gap-3",
|
|
613
|
+
4: "gap-4",
|
|
614
|
+
6: "gap-6",
|
|
615
|
+
8: "gap-8"
|
|
616
|
+
};
|
|
617
|
+
var COLS = {
|
|
618
|
+
1: "grid-cols-1",
|
|
619
|
+
2: "grid-cols-2",
|
|
620
|
+
3: "grid-cols-3",
|
|
621
|
+
4: "grid-cols-4",
|
|
622
|
+
6: "grid-cols-6"
|
|
623
|
+
};
|
|
624
|
+
var Stack = (0, import_react7.forwardRef)(
|
|
625
|
+
({ direction = "col", gap = 4, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
626
|
+
"div",
|
|
627
|
+
{
|
|
628
|
+
ref,
|
|
629
|
+
className: cn(
|
|
630
|
+
"flex",
|
|
631
|
+
direction === "col" ? "flex-col" : "flex-row",
|
|
632
|
+
GAP[gap],
|
|
633
|
+
className
|
|
634
|
+
),
|
|
635
|
+
...props
|
|
636
|
+
}
|
|
637
|
+
)
|
|
638
|
+
);
|
|
639
|
+
Stack.displayName = "Stack";
|
|
640
|
+
var Grid = (0, import_react7.forwardRef)(
|
|
641
|
+
({ cols = 2, gap = 4, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
642
|
+
"div",
|
|
643
|
+
{
|
|
644
|
+
ref,
|
|
645
|
+
className: cn("grid", COLS[cols], GAP[gap], className),
|
|
646
|
+
...props
|
|
647
|
+
}
|
|
648
|
+
)
|
|
649
|
+
);
|
|
650
|
+
Grid.displayName = "Grid";
|
|
651
|
+
var Stat = (0, import_react7.forwardRef)(
|
|
652
|
+
({ label, value, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
653
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-muted-foreground", children: label }),
|
|
654
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-2xl font-semibold text-foreground", children: value })
|
|
655
|
+
] })
|
|
656
|
+
);
|
|
657
|
+
Stat.displayName = "Stat";
|
|
658
|
+
|
|
659
|
+
// src/components/alert.tsx
|
|
660
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
661
|
+
var import_react8 = require("react");
|
|
662
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
663
|
+
var alertVariants = (0, import_class_variance_authority5.cva)(
|
|
664
|
+
"relative flex items-start gap-3 rounded-md border border-border p-4 text-sm transition-colors duration-150",
|
|
327
665
|
{
|
|
328
666
|
variants: {
|
|
329
667
|
variant: {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
668
|
+
// text-primary is mode-correct (dark ink on light in light mode, light
|
|
669
|
+
// ink on dark in dark mode); the previous dark text override rendered
|
|
670
|
+
// dark slate on the dark tint at about 1:1.
|
|
671
|
+
info: "bg-primary/5 text-primary",
|
|
672
|
+
// dark:border-l-* re-asserts the strong base accent on the left after
|
|
673
|
+
// the dark:border-*-900 all-sides rule, so the meaningful accent stays
|
|
674
|
+
// visible in dark mode instead of collapsing to the faint -900 shade.
|
|
675
|
+
success: "border-success-200 bg-success-50 text-success-900 border-l-4 border-l-success dark:border-success-900 dark:border-l-success dark:bg-success-950 dark:text-success-100",
|
|
676
|
+
warning: "border-warning-200 bg-warning-50 text-warning-900 border-l-4 border-l-warning dark:border-warning-900 dark:border-l-warning dark:bg-warning-950 dark:text-warning-100",
|
|
677
|
+
destructive: "border-destructive-200 bg-destructive-50 text-destructive-900 border-l-4 border-l-destructive dark:border-destructive-900 dark:border-l-destructive dark:bg-destructive-950 dark:text-destructive-100"
|
|
334
678
|
}
|
|
335
679
|
},
|
|
336
680
|
defaultVariants: {
|
|
@@ -338,9 +682,9 @@ var alertVariants = classVarianceAuthority.cva(
|
|
|
338
682
|
}
|
|
339
683
|
}
|
|
340
684
|
);
|
|
341
|
-
var Alert =
|
|
685
|
+
var Alert = (0, import_react8.forwardRef)(
|
|
342
686
|
({ className, variant = "info", role = "alert", ...props }, ref) => {
|
|
343
|
-
return /* @__PURE__ */
|
|
687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
344
688
|
"div",
|
|
345
689
|
{
|
|
346
690
|
ref,
|
|
@@ -353,9 +697,9 @@ var Alert = React5.forwardRef(
|
|
|
353
697
|
}
|
|
354
698
|
);
|
|
355
699
|
Alert.displayName = "Alert";
|
|
356
|
-
var AlertTitle =
|
|
700
|
+
var AlertTitle = (0, import_react8.forwardRef)(
|
|
357
701
|
({ className, ...props }, ref) => {
|
|
358
|
-
return /* @__PURE__ */
|
|
702
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
359
703
|
"h5",
|
|
360
704
|
{
|
|
361
705
|
ref,
|
|
@@ -370,9 +714,9 @@ var AlertTitle = React5.forwardRef(
|
|
|
370
714
|
}
|
|
371
715
|
);
|
|
372
716
|
AlertTitle.displayName = "AlertTitle";
|
|
373
|
-
var AlertDescription =
|
|
717
|
+
var AlertDescription = (0, import_react8.forwardRef)(
|
|
374
718
|
({ className, ...props }, ref) => {
|
|
375
|
-
return /* @__PURE__ */
|
|
719
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
376
720
|
"div",
|
|
377
721
|
{
|
|
378
722
|
ref,
|
|
@@ -384,14 +728,18 @@ var AlertDescription = React5.forwardRef(
|
|
|
384
728
|
}
|
|
385
729
|
);
|
|
386
730
|
AlertDescription.displayName = "AlertDescription";
|
|
731
|
+
|
|
732
|
+
// src/components/separator.tsx
|
|
733
|
+
var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
|
|
734
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
387
735
|
function Separator({
|
|
388
736
|
className,
|
|
389
737
|
orientation = "horizontal",
|
|
390
738
|
decorative = true,
|
|
391
739
|
...props
|
|
392
740
|
}) {
|
|
393
|
-
return /* @__PURE__ */
|
|
394
|
-
|
|
741
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
742
|
+
SeparatorPrimitive.Root,
|
|
395
743
|
{
|
|
396
744
|
"data-slot": "separator",
|
|
397
745
|
decorative,
|
|
@@ -404,16 +752,20 @@ function Separator({
|
|
|
404
752
|
}
|
|
405
753
|
);
|
|
406
754
|
}
|
|
407
|
-
|
|
755
|
+
|
|
756
|
+
// src/components/skeleton.tsx
|
|
757
|
+
var React3 = __toESM(require("react"), 1);
|
|
758
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
759
|
+
var Skeleton = React3.forwardRef(
|
|
408
760
|
({ className, ...props }, ref) => {
|
|
409
|
-
return /* @__PURE__ */
|
|
761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
410
762
|
"div",
|
|
411
763
|
{
|
|
412
764
|
ref,
|
|
413
765
|
"data-slot": "skeleton",
|
|
414
766
|
"aria-hidden": "true",
|
|
415
767
|
className: cn(
|
|
416
|
-
"bg-primary/5 animate-pulse rounded-
|
|
768
|
+
"bg-primary/5 animate-pulse rounded-md motion-reduce:animate-none",
|
|
417
769
|
className
|
|
418
770
|
),
|
|
419
771
|
...props
|
|
@@ -422,11 +774,16 @@ var Skeleton = React5__namespace.forwardRef(
|
|
|
422
774
|
}
|
|
423
775
|
);
|
|
424
776
|
Skeleton.displayName = "Skeleton";
|
|
425
|
-
|
|
777
|
+
|
|
778
|
+
// src/components/progress.tsx
|
|
779
|
+
var import_class_variance_authority6 = require("class-variance-authority");
|
|
780
|
+
var React4 = __toESM(require("react"), 1);
|
|
781
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
782
|
+
var progressVariants = (0, import_class_variance_authority6.cva)("h-full rounded-none transition-all", {
|
|
426
783
|
variants: {
|
|
427
784
|
variant: {
|
|
428
785
|
default: "bg-primary-500",
|
|
429
|
-
success: "bg-
|
|
786
|
+
success: "bg-success-500",
|
|
430
787
|
error: "bg-destructive"
|
|
431
788
|
}
|
|
432
789
|
},
|
|
@@ -434,7 +791,7 @@ var progressVariants = classVarianceAuthority.cva("h-full rounded-none transitio
|
|
|
434
791
|
variant: "default"
|
|
435
792
|
}
|
|
436
793
|
});
|
|
437
|
-
var Progress =
|
|
794
|
+
var Progress = React4.forwardRef(
|
|
438
795
|
({
|
|
439
796
|
value,
|
|
440
797
|
max = 100,
|
|
@@ -445,7 +802,7 @@ var Progress = React5__namespace.forwardRef(
|
|
|
445
802
|
}, ref) => {
|
|
446
803
|
const clampedValue = Math.min(Math.max(0, value), max);
|
|
447
804
|
const percentage = clampedValue / max * 100;
|
|
448
|
-
return /* @__PURE__ */
|
|
805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
449
806
|
"div",
|
|
450
807
|
{
|
|
451
808
|
ref,
|
|
@@ -455,11 +812,11 @@ var Progress = React5__namespace.forwardRef(
|
|
|
455
812
|
"aria-valuemax": max,
|
|
456
813
|
"aria-label": ariaLabel || `Progress: ${Math.round(percentage)}%`,
|
|
457
814
|
className: cn(
|
|
458
|
-
"relative h-2 w-full overflow-hidden rounded-
|
|
815
|
+
"relative h-2 w-full overflow-hidden rounded-full bg-accent",
|
|
459
816
|
className
|
|
460
817
|
),
|
|
461
818
|
...props,
|
|
462
|
-
children: /* @__PURE__ */
|
|
819
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
463
820
|
"div",
|
|
464
821
|
{
|
|
465
822
|
className: cn(progressVariants({ variant })),
|
|
@@ -474,29 +831,42 @@ var Progress = React5__namespace.forwardRef(
|
|
|
474
831
|
}
|
|
475
832
|
);
|
|
476
833
|
Progress.displayName = "Progress";
|
|
477
|
-
|
|
478
|
-
|
|
834
|
+
|
|
835
|
+
// src/components/checkbox.tsx
|
|
836
|
+
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
837
|
+
var import_lucide_react2 = require("lucide-react");
|
|
838
|
+
var import_react9 = require("react");
|
|
839
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
840
|
+
var Checkbox = (0, import_react9.forwardRef)(({ className, indeterminate, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
841
|
+
CheckboxPrimitive.Root,
|
|
479
842
|
{
|
|
480
843
|
ref,
|
|
481
844
|
"data-slot": "checkbox",
|
|
482
845
|
className: cn(
|
|
483
|
-
|
|
846
|
+
// Resting border uses border-input (a visible 3:1 boundary); the checked
|
|
847
|
+
// state switches to border-primary below, keeping the two states distinct.
|
|
848
|
+
"peer relative h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background before:absolute before:left-1/2 before:top-1/2 before:h-6 before:w-6 before:-translate-x-1/2 before:-translate-y-1/2 before:content-[''] focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary transition-all duration-200",
|
|
484
849
|
className
|
|
485
850
|
),
|
|
486
851
|
...props,
|
|
487
|
-
children: /* @__PURE__ */
|
|
488
|
-
|
|
852
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
853
|
+
CheckboxPrimitive.Indicator,
|
|
489
854
|
{
|
|
490
855
|
className: cn("flex items-center justify-center text-current"),
|
|
491
|
-
children: indeterminate ? /* @__PURE__ */
|
|
856
|
+
children: indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react2.Minus, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react2.Check, { className: "h-3 w-3" })
|
|
492
857
|
}
|
|
493
858
|
)
|
|
494
859
|
}
|
|
495
860
|
));
|
|
496
861
|
Checkbox.displayName = "Checkbox";
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
862
|
+
|
|
863
|
+
// src/components/radio-group.tsx
|
|
864
|
+
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
865
|
+
var import_react10 = require("react");
|
|
866
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
867
|
+
var RadioGroup = (0, import_react10.forwardRef)(({ className, ...props }, ref) => {
|
|
868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
869
|
+
RadioGroupPrimitive.Root,
|
|
500
870
|
{
|
|
501
871
|
className: cn("grid gap-2", className),
|
|
502
872
|
...props,
|
|
@@ -506,53 +876,74 @@ var RadioGroup = React5.forwardRef(({ className, ...props }, ref) => {
|
|
|
506
876
|
);
|
|
507
877
|
});
|
|
508
878
|
RadioGroup.displayName = "RadioGroup";
|
|
509
|
-
var RadioGroupItem =
|
|
510
|
-
return /* @__PURE__ */
|
|
511
|
-
|
|
879
|
+
var RadioGroupItem = (0, import_react10.forwardRef)(({ className, ...props }, ref) => {
|
|
880
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
881
|
+
RadioGroupPrimitive.Item,
|
|
512
882
|
{
|
|
513
883
|
ref,
|
|
514
884
|
"data-slot": "radio-group-item",
|
|
515
885
|
className: cn(
|
|
516
|
-
|
|
886
|
+
// Unchecked outline uses primary/40 (clearly visible) instead of primary/5
|
|
887
|
+
// (~5% opacity, effectively invisible); hover strengthens above the resting state.
|
|
888
|
+
// Resting border uses border-input (a visible 3:1 boundary); the checked
|
|
889
|
+
// state switches to border-primary below, keeping the two states distinct.
|
|
890
|
+
// rounded-full is fixed rather than derived from --radius: the circle is
|
|
891
|
+
// what tells the user only one option can be chosen. The thick checked
|
|
892
|
+
// border leaves a background-coloured core, and because the border's
|
|
893
|
+
// inner edge is curved too that core reads as a round dot.
|
|
894
|
+
"peer h-4 w-4 shrink-0 rounded-full border border-input bg-background cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 hover:border-primary/70 data-[state=checked]:border-primary data-[state=checked]:border-[5px]",
|
|
517
895
|
className
|
|
518
896
|
),
|
|
519
897
|
...props,
|
|
520
|
-
children: /* @__PURE__ */
|
|
898
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioGroupPrimitive.Indicator, { className: "block size-full rounded-full" })
|
|
521
899
|
}
|
|
522
900
|
);
|
|
523
901
|
});
|
|
524
902
|
RadioGroupItem.displayName = "RadioGroupItem";
|
|
903
|
+
|
|
904
|
+
// src/components/switch.tsx
|
|
905
|
+
var import_react_switch = require("@radix-ui/react-switch");
|
|
906
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
525
907
|
function Switch({ className, ...props }) {
|
|
526
|
-
return /* @__PURE__ */
|
|
527
|
-
|
|
908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
909
|
+
import_react_switch.Root,
|
|
528
910
|
{
|
|
529
911
|
"data-slot": "switch",
|
|
530
912
|
className: cn(
|
|
531
|
-
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-
|
|
532
|
-
"data-[state=checked]:bg-primary data-[state=checked]
|
|
533
|
-
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-
|
|
913
|
+
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-border transition-all outline-none focus-visible:border-primary aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50",
|
|
914
|
+
"data-[state=checked]:bg-primary data-[state=checked]:border-primary!",
|
|
915
|
+
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-border dark:data-[state=unchecked]:bg-input/80",
|
|
534
916
|
className
|
|
535
917
|
),
|
|
536
918
|
...props,
|
|
537
|
-
children: /* @__PURE__ */
|
|
538
|
-
|
|
919
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
920
|
+
import_react_switch.Thumb,
|
|
539
921
|
{
|
|
540
922
|
"data-slot": "switch-thumb",
|
|
541
923
|
className: cn(
|
|
542
|
-
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-
|
|
924
|
+
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
|
|
543
925
|
)
|
|
544
926
|
}
|
|
545
927
|
)
|
|
546
928
|
}
|
|
547
929
|
);
|
|
548
930
|
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
var
|
|
552
|
-
var
|
|
553
|
-
var
|
|
554
|
-
|
|
555
|
-
|
|
931
|
+
|
|
932
|
+
// src/components/collapsible.tsx
|
|
933
|
+
var CollapsiblePrimitive = __toESM(require("@radix-ui/react-collapsible"), 1);
|
|
934
|
+
var Collapsible = CollapsiblePrimitive.Root;
|
|
935
|
+
var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
|
|
936
|
+
var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
|
|
937
|
+
|
|
938
|
+
// src/components/accordion.tsx
|
|
939
|
+
var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
|
|
940
|
+
var import_lucide_react3 = require("lucide-react");
|
|
941
|
+
var import_react11 = require("react");
|
|
942
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
943
|
+
var Accordion = AccordionPrimitive.Root;
|
|
944
|
+
var AccordionItem = (0, import_react11.forwardRef)(
|
|
945
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
946
|
+
AccordionPrimitive.Item,
|
|
556
947
|
{
|
|
557
948
|
ref,
|
|
558
949
|
"data-slot": "accordion-item",
|
|
@@ -562,9 +953,9 @@ var AccordionItem = React5.forwardRef(
|
|
|
562
953
|
)
|
|
563
954
|
);
|
|
564
955
|
AccordionItem.displayName = "AccordionItem";
|
|
565
|
-
var AccordionTrigger =
|
|
566
|
-
({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
567
|
-
|
|
956
|
+
var AccordionTrigger = (0, import_react11.forwardRef)(
|
|
957
|
+
({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AccordionPrimitive.Header, { className: "flex", "data-slot": "accordion-header", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
958
|
+
AccordionPrimitive.Trigger,
|
|
568
959
|
{
|
|
569
960
|
ref,
|
|
570
961
|
"data-slot": "accordion-trigger",
|
|
@@ -575,27 +966,33 @@ var AccordionTrigger = React5.forwardRef(
|
|
|
575
966
|
...props,
|
|
576
967
|
children: [
|
|
577
968
|
children,
|
|
578
|
-
/* @__PURE__ */
|
|
969
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react3.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-150 will-change-transform" })
|
|
579
970
|
]
|
|
580
971
|
}
|
|
581
972
|
) })
|
|
582
973
|
);
|
|
583
|
-
AccordionTrigger.displayName =
|
|
584
|
-
var AccordionContent =
|
|
585
|
-
({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
586
|
-
|
|
974
|
+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
975
|
+
var AccordionContent = (0, import_react11.forwardRef)(
|
|
976
|
+
({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
977
|
+
AccordionPrimitive.Content,
|
|
587
978
|
{
|
|
588
979
|
ref,
|
|
589
980
|
"data-slot": "accordion-content",
|
|
590
|
-
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
981
|
+
className: "overflow-hidden text-sm transition-all will-change-[height] transform-[translateZ(0)] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
591
982
|
...props,
|
|
592
|
-
children: /* @__PURE__ */
|
|
983
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: cn("pb-4 pt-0", className), children })
|
|
593
984
|
}
|
|
594
985
|
)
|
|
595
986
|
);
|
|
596
|
-
AccordionContent.displayName =
|
|
597
|
-
|
|
598
|
-
|
|
987
|
+
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
988
|
+
|
|
989
|
+
// src/components/avatar.tsx
|
|
990
|
+
var import_react_avatar = require("@radix-ui/react-avatar");
|
|
991
|
+
var import_class_variance_authority7 = require("class-variance-authority");
|
|
992
|
+
var import_react12 = require("react");
|
|
993
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
994
|
+
var avatarVariants = (0, import_class_variance_authority7.cva)(
|
|
995
|
+
"relative inline-flex shrink-0 overflow-hidden rounded-full items-center justify-center bg-primary/5 text-muted-foreground",
|
|
599
996
|
{
|
|
600
997
|
variants: {
|
|
601
998
|
size: {
|
|
@@ -623,11 +1020,11 @@ var fallbackTextSizeMap = {
|
|
|
623
1020
|
"2xl": "text-2xl"
|
|
624
1021
|
// 24px for 80px avatar
|
|
625
1022
|
};
|
|
626
|
-
var AvatarSizeContext =
|
|
627
|
-
var Avatar =
|
|
1023
|
+
var AvatarSizeContext = (0, import_react12.createContext)("md");
|
|
1024
|
+
var Avatar = (0, import_react12.forwardRef)(
|
|
628
1025
|
({ className, size = "md", ...props }, ref) => {
|
|
629
|
-
return /* @__PURE__ */
|
|
630
|
-
|
|
1026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AvatarSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1027
|
+
import_react_avatar.Root,
|
|
631
1028
|
{
|
|
632
1029
|
ref,
|
|
633
1030
|
"data-slot": "avatar",
|
|
@@ -638,10 +1035,10 @@ var Avatar = React5.forwardRef(
|
|
|
638
1035
|
}
|
|
639
1036
|
);
|
|
640
1037
|
Avatar.displayName = "Avatar";
|
|
641
|
-
var AvatarImage =
|
|
1038
|
+
var AvatarImage = (0, import_react12.forwardRef)(
|
|
642
1039
|
({ className, ...props }, ref) => {
|
|
643
|
-
return /* @__PURE__ */
|
|
644
|
-
|
|
1040
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1041
|
+
import_react_avatar.Image,
|
|
645
1042
|
{
|
|
646
1043
|
ref,
|
|
647
1044
|
"data-slot": "avatar-image",
|
|
@@ -652,17 +1049,17 @@ var AvatarImage = React5.forwardRef(
|
|
|
652
1049
|
}
|
|
653
1050
|
);
|
|
654
1051
|
AvatarImage.displayName = "AvatarImage";
|
|
655
|
-
var AvatarFallback =
|
|
1052
|
+
var AvatarFallback = (0, import_react12.forwardRef)(
|
|
656
1053
|
({ className, children, ...props }, ref) => {
|
|
657
|
-
const size =
|
|
1054
|
+
const size = (0, import_react12.useContext)(AvatarSizeContext) || "md";
|
|
658
1055
|
const textSize = fallbackTextSizeMap[size];
|
|
659
|
-
return /* @__PURE__ */
|
|
660
|
-
|
|
1056
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1057
|
+
import_react_avatar.Fallback,
|
|
661
1058
|
{
|
|
662
1059
|
ref,
|
|
663
1060
|
"data-slot": "avatar-fallback",
|
|
664
1061
|
className: cn(
|
|
665
|
-
"bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-
|
|
1062
|
+
"bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-full font-medium",
|
|
666
1063
|
textSize,
|
|
667
1064
|
className
|
|
668
1065
|
),
|
|
@@ -673,14 +1070,20 @@ var AvatarFallback = React5.forwardRef(
|
|
|
673
1070
|
}
|
|
674
1071
|
);
|
|
675
1072
|
AvatarFallback.displayName = "AvatarFallback";
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
1073
|
+
|
|
1074
|
+
// src/components/tabs.tsx
|
|
1075
|
+
var import_react_tabs = require("@radix-ui/react-tabs");
|
|
1076
|
+
var import_react13 = require("react");
|
|
1077
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1078
|
+
var Tabs = import_react_tabs.Root;
|
|
1079
|
+
var TabsList = (0, import_react13.forwardRef)(
|
|
1080
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1081
|
+
import_react_tabs.List,
|
|
680
1082
|
{
|
|
681
1083
|
ref,
|
|
682
1084
|
"data-slot": "tabs-list",
|
|
683
1085
|
className: cn(
|
|
1086
|
+
// Square corners: underline tabs, so the list never draws a rounded surface.
|
|
684
1087
|
"inline-flex h-10 items-center justify-center gap-1 rounded-none p-0 text-muted-foreground",
|
|
685
1088
|
className
|
|
686
1089
|
),
|
|
@@ -688,101 +1091,93 @@ var TabsList = React5.forwardRef(
|
|
|
688
1091
|
}
|
|
689
1092
|
)
|
|
690
1093
|
);
|
|
691
|
-
TabsList.displayName =
|
|
692
|
-
var TabsTrigger =
|
|
693
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
694
|
-
|
|
1094
|
+
TabsList.displayName = import_react_tabs.List.displayName;
|
|
1095
|
+
var TabsTrigger = (0, import_react13.forwardRef)(
|
|
1096
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1097
|
+
import_react_tabs.Trigger,
|
|
695
1098
|
{
|
|
696
1099
|
ref,
|
|
697
1100
|
"data-slot": "tabs-trigger",
|
|
698
1101
|
className: cn(
|
|
699
|
-
|
|
1102
|
+
// Square corners: the active state is a 2px bottom border that has to
|
|
1103
|
+
// run the full width of the trigger.
|
|
1104
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-none bg-transparent px-4 py-2 text-sm font-medium cursor-pointer transition-all duration-200 border-b-2 relative -mb-0.5 data-[state=active]:border-b-primary! data-[state=active]:text-primary data-[state=inactive]:border-transparent data-[state=inactive]:text-muted-foreground hover:text-primary hover:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
700
1105
|
className
|
|
701
1106
|
),
|
|
702
1107
|
...props
|
|
703
1108
|
}
|
|
704
1109
|
)
|
|
705
1110
|
);
|
|
706
|
-
TabsTrigger.displayName =
|
|
707
|
-
var TabsContent =
|
|
708
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
709
|
-
|
|
1111
|
+
TabsTrigger.displayName = import_react_tabs.Trigger.displayName;
|
|
1112
|
+
var TabsContent = (0, import_react13.forwardRef)(
|
|
1113
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1114
|
+
import_react_tabs.Content,
|
|
710
1115
|
{
|
|
711
1116
|
ref,
|
|
712
1117
|
"data-slot": "tabs-content",
|
|
713
1118
|
className: cn(
|
|
714
|
-
"mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
1119
|
+
"mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
715
1120
|
className
|
|
716
1121
|
),
|
|
717
1122
|
...props
|
|
718
1123
|
}
|
|
719
1124
|
)
|
|
720
1125
|
);
|
|
721
|
-
TabsContent.displayName =
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
var
|
|
725
|
-
var
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
className: cn(
|
|
732
|
-
"z-50 overflow-hidden rounded-none px-3 py-1.5 text-xs shadow-lg border border-primary/5 bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
733
|
-
className
|
|
734
|
-
),
|
|
735
|
-
...props
|
|
736
|
-
}
|
|
737
|
-
));
|
|
738
|
-
TooltipContent.displayName = reactTooltip.Content.displayName;
|
|
739
|
-
var PortalContext = React5.createContext({ container: null });
|
|
740
|
-
function PortalProvider({ container, children }) {
|
|
741
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PortalContext.Provider, { value: { container }, children });
|
|
742
|
-
}
|
|
743
|
-
function usePortalContainer() {
|
|
744
|
-
const { container } = React5.useContext(PortalContext);
|
|
745
|
-
return container ?? void 0;
|
|
746
|
-
}
|
|
747
|
-
var Popover = PopoverPrimitive__namespace.Root;
|
|
748
|
-
var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
|
749
|
-
var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
|
|
750
|
-
var PopoverContent = React5__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => {
|
|
1126
|
+
TabsContent.displayName = import_react_tabs.Content.displayName;
|
|
1127
|
+
|
|
1128
|
+
// src/components/popover.tsx
|
|
1129
|
+
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
1130
|
+
var React5 = __toESM(require("react"), 1);
|
|
1131
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1132
|
+
var Popover = PopoverPrimitive.Root;
|
|
1133
|
+
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1134
|
+
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
1135
|
+
var PopoverContent = React5.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => {
|
|
751
1136
|
const portalContainer = usePortalContainer();
|
|
752
|
-
return /* @__PURE__ */
|
|
753
|
-
|
|
1137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(PopoverPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1138
|
+
PopoverPrimitive.Content,
|
|
754
1139
|
{
|
|
755
1140
|
ref,
|
|
756
1141
|
align,
|
|
757
1142
|
sideOffset,
|
|
758
1143
|
"data-slot": "popover-content",
|
|
759
1144
|
className: cn(
|
|
760
|
-
"z-[100] w-72 rounded-
|
|
1145
|
+
"z-[100] w-72 rounded-lg border border-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 origin-[--radix-popover-content-transform-origin]",
|
|
761
1146
|
className
|
|
762
1147
|
),
|
|
763
1148
|
...props
|
|
764
1149
|
}
|
|
765
1150
|
) });
|
|
766
1151
|
});
|
|
767
|
-
PopoverContent.displayName =
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
var
|
|
771
|
-
var
|
|
772
|
-
var
|
|
773
|
-
|
|
1152
|
+
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1153
|
+
|
|
1154
|
+
// src/components/dialog.tsx
|
|
1155
|
+
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1156
|
+
var import_class_variance_authority8 = require("class-variance-authority");
|
|
1157
|
+
var import_lucide_react4 = require("lucide-react");
|
|
1158
|
+
var import_react14 = require("react");
|
|
1159
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1160
|
+
var Dialog = DialogPrimitive.Root;
|
|
1161
|
+
var DialogTrigger = DialogPrimitive.Trigger;
|
|
1162
|
+
var DialogPortal = DialogPrimitive.Portal;
|
|
1163
|
+
var DialogClose = DialogPrimitive.Close;
|
|
1164
|
+
var DialogOverlay = (0, import_react14.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1165
|
+
DialogPrimitive.Overlay,
|
|
774
1166
|
{
|
|
775
1167
|
ref,
|
|
776
1168
|
"data-slot": "dialog-overlay",
|
|
777
1169
|
className: cn(
|
|
1170
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1171
|
+
// rather than a surface token. Painting it from `background` would
|
|
1172
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
778
1173
|
"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-opacity duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
779
1174
|
className
|
|
780
1175
|
),
|
|
781
1176
|
...props
|
|
782
1177
|
}
|
|
783
1178
|
));
|
|
784
|
-
DialogOverlay.displayName =
|
|
785
|
-
var dialogContentVariants =
|
|
1179
|
+
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
1180
|
+
var dialogContentVariants = (0, import_class_variance_authority8.cva)("", {
|
|
786
1181
|
variants: {
|
|
787
1182
|
size: {
|
|
788
1183
|
sm: "max-w-sm",
|
|
@@ -796,31 +1191,31 @@ var dialogContentVariants = classVarianceAuthority.cva("", {
|
|
|
796
1191
|
size: "md"
|
|
797
1192
|
}
|
|
798
1193
|
});
|
|
799
|
-
var DialogContent =
|
|
1194
|
+
var DialogContent = (0, import_react14.forwardRef)(({ className, children, size, ...props }, ref) => {
|
|
800
1195
|
const portalContainer = usePortalContainer();
|
|
801
|
-
return /* @__PURE__ */
|
|
802
|
-
/* @__PURE__ */
|
|
803
|
-
/* @__PURE__ */
|
|
804
|
-
|
|
1196
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DialogPortal, { container: portalContainer, children: [
|
|
1197
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DialogOverlay, {}),
|
|
1198
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1199
|
+
DialogPrimitive.Content,
|
|
805
1200
|
{
|
|
806
1201
|
ref,
|
|
807
1202
|
"data-slot": "dialog-content",
|
|
808
1203
|
className: cn(
|
|
809
|
-
"fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-
|
|
1204
|
+
"fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-lg duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
810
1205
|
dialogContentVariants({ size }),
|
|
811
1206
|
className
|
|
812
1207
|
),
|
|
813
1208
|
...props,
|
|
814
1209
|
children: [
|
|
815
1210
|
children,
|
|
816
|
-
/* @__PURE__ */
|
|
817
|
-
|
|
1211
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1212
|
+
DialogPrimitive.Close,
|
|
818
1213
|
{
|
|
819
1214
|
"data-slot": "dialog-close",
|
|
820
|
-
className: "absolute right-4 top-4 rounded-
|
|
1215
|
+
className: "absolute right-4 top-4 rounded-md p-1 text-muted-foreground cursor-pointer transition-colors duration-150 hover-unified focus:outline-none focus:ring-2 focus:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed",
|
|
821
1216
|
children: [
|
|
822
|
-
/* @__PURE__ */
|
|
823
|
-
/* @__PURE__ */
|
|
1217
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react4.X, { className: "h-4 w-4" }),
|
|
1218
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "sr-only", children: "Close" })
|
|
824
1219
|
]
|
|
825
1220
|
}
|
|
826
1221
|
)
|
|
@@ -829,9 +1224,9 @@ var DialogContent = React5.forwardRef(({ className, children, size, ...props },
|
|
|
829
1224
|
)
|
|
830
1225
|
] });
|
|
831
1226
|
});
|
|
832
|
-
DialogContent.displayName =
|
|
833
|
-
var DialogHeader =
|
|
834
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1227
|
+
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
1228
|
+
var DialogHeader = (0, import_react14.forwardRef)(
|
|
1229
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
835
1230
|
"div",
|
|
836
1231
|
{
|
|
837
1232
|
ref,
|
|
@@ -844,8 +1239,8 @@ var DialogHeader = React5.forwardRef(
|
|
|
844
1239
|
)
|
|
845
1240
|
);
|
|
846
1241
|
DialogHeader.displayName = "DialogHeader";
|
|
847
|
-
var DialogFooter =
|
|
848
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1242
|
+
var DialogFooter = (0, import_react14.forwardRef)(
|
|
1243
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
849
1244
|
"div",
|
|
850
1245
|
{
|
|
851
1246
|
ref,
|
|
@@ -858,8 +1253,8 @@ var DialogFooter = React5.forwardRef(
|
|
|
858
1253
|
)
|
|
859
1254
|
);
|
|
860
1255
|
DialogFooter.displayName = "DialogFooter";
|
|
861
|
-
var DialogTitle =
|
|
862
|
-
|
|
1256
|
+
var DialogTitle = (0, import_react14.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1257
|
+
DialogPrimitive.Title,
|
|
863
1258
|
{
|
|
864
1259
|
ref,
|
|
865
1260
|
className: cn(
|
|
@@ -869,41 +1264,49 @@ var DialogTitle = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
869
1264
|
...props
|
|
870
1265
|
}
|
|
871
1266
|
));
|
|
872
|
-
DialogTitle.displayName =
|
|
873
|
-
var DialogDescription =
|
|
874
|
-
|
|
1267
|
+
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
1268
|
+
var DialogDescription = (0, import_react14.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1269
|
+
DialogPrimitive.Description,
|
|
875
1270
|
{
|
|
876
1271
|
ref,
|
|
877
1272
|
className: cn("text-sm text-muted-foreground", className),
|
|
878
1273
|
...props
|
|
879
1274
|
}
|
|
880
1275
|
));
|
|
881
|
-
DialogDescription.displayName =
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
var
|
|
885
|
-
var
|
|
886
|
-
|
|
1276
|
+
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
1277
|
+
|
|
1278
|
+
// src/components/alert-dialog.tsx
|
|
1279
|
+
var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"), 1);
|
|
1280
|
+
var import_react15 = require("react");
|
|
1281
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1282
|
+
var AlertDialog = AlertDialogPrimitive.Root;
|
|
1283
|
+
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
1284
|
+
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
1285
|
+
var AlertDialogOverlay = (0, import_react15.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1286
|
+
AlertDialogPrimitive.Overlay,
|
|
887
1287
|
{
|
|
888
1288
|
ref,
|
|
889
1289
|
className: cn(
|
|
1290
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1291
|
+
// rather than a surface token. Painting it from `background` would
|
|
1292
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
890
1293
|
"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-opacity duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
891
1294
|
className
|
|
892
1295
|
),
|
|
893
1296
|
...props
|
|
894
1297
|
}
|
|
895
1298
|
));
|
|
896
|
-
AlertDialogOverlay.displayName =
|
|
897
|
-
var AlertDialogContent =
|
|
1299
|
+
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
1300
|
+
var AlertDialogContent = (0, import_react15.forwardRef)(({ className, ...props }, ref) => {
|
|
898
1301
|
const portalContainer = usePortalContainer();
|
|
899
|
-
return /* @__PURE__ */
|
|
900
|
-
/* @__PURE__ */
|
|
901
|
-
/* @__PURE__ */
|
|
902
|
-
|
|
1302
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(AlertDialogPortal, { container: portalContainer, children: [
|
|
1303
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(AlertDialogOverlay, {}),
|
|
1304
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1305
|
+
AlertDialogPrimitive.Content,
|
|
903
1306
|
{
|
|
904
1307
|
ref,
|
|
905
1308
|
className: cn(
|
|
906
|
-
"fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-
|
|
1309
|
+
"fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-lg duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
907
1310
|
className
|
|
908
1311
|
),
|
|
909
1312
|
...props
|
|
@@ -911,9 +1314,9 @@ var AlertDialogContent = React5.forwardRef(({ className, ...props }, ref) => {
|
|
|
911
1314
|
)
|
|
912
1315
|
] });
|
|
913
1316
|
});
|
|
914
|
-
AlertDialogContent.displayName =
|
|
915
|
-
var AlertDialogHeader =
|
|
916
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1317
|
+
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
|
|
1318
|
+
var AlertDialogHeader = (0, import_react15.forwardRef)(
|
|
1319
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
917
1320
|
"div",
|
|
918
1321
|
{
|
|
919
1322
|
ref,
|
|
@@ -926,8 +1329,8 @@ var AlertDialogHeader = React5.forwardRef(
|
|
|
926
1329
|
)
|
|
927
1330
|
);
|
|
928
1331
|
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
929
|
-
var AlertDialogFooter =
|
|
930
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1332
|
+
var AlertDialogFooter = (0, import_react15.forwardRef)(
|
|
1333
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
931
1334
|
"div",
|
|
932
1335
|
{
|
|
933
1336
|
ref,
|
|
@@ -940,8 +1343,8 @@ var AlertDialogFooter = React5.forwardRef(
|
|
|
940
1343
|
)
|
|
941
1344
|
);
|
|
942
1345
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
943
|
-
var AlertDialogTitle =
|
|
944
|
-
|
|
1346
|
+
var AlertDialogTitle = (0, import_react15.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1347
|
+
AlertDialogPrimitive.Title,
|
|
945
1348
|
{
|
|
946
1349
|
ref,
|
|
947
1350
|
className: cn(
|
|
@@ -951,18 +1354,18 @@ var AlertDialogTitle = React5.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
951
1354
|
...props
|
|
952
1355
|
}
|
|
953
1356
|
));
|
|
954
|
-
AlertDialogTitle.displayName =
|
|
955
|
-
var AlertDialogDescription =
|
|
956
|
-
|
|
1357
|
+
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
1358
|
+
var AlertDialogDescription = (0, import_react15.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1359
|
+
AlertDialogPrimitive.Description,
|
|
957
1360
|
{
|
|
958
1361
|
ref,
|
|
959
1362
|
className: cn("text-sm text-muted-foreground", className),
|
|
960
1363
|
...props
|
|
961
1364
|
}
|
|
962
1365
|
));
|
|
963
|
-
AlertDialogDescription.displayName =
|
|
964
|
-
var AlertDialogAction =
|
|
965
|
-
|
|
1366
|
+
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
1367
|
+
var AlertDialogAction = (0, import_react15.forwardRef)(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1368
|
+
AlertDialogPrimitive.Action,
|
|
966
1369
|
{
|
|
967
1370
|
ref,
|
|
968
1371
|
className: cn(buttonVariants({ variant: "destructive" }), className),
|
|
@@ -970,9 +1373,9 @@ var AlertDialogAction = React5.forwardRef(({ className, children, ...props }, re
|
|
|
970
1373
|
children
|
|
971
1374
|
}
|
|
972
1375
|
));
|
|
973
|
-
AlertDialogAction.displayName =
|
|
974
|
-
var AlertDialogCancel =
|
|
975
|
-
|
|
1376
|
+
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
1377
|
+
var AlertDialogCancel = (0, import_react15.forwardRef)(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1378
|
+
AlertDialogPrimitive.Cancel,
|
|
976
1379
|
{
|
|
977
1380
|
ref,
|
|
978
1381
|
className: cn(
|
|
@@ -984,106 +1387,117 @@ var AlertDialogCancel = React5.forwardRef(({ className, children, ...props }, re
|
|
|
984
1387
|
children
|
|
985
1388
|
}
|
|
986
1389
|
));
|
|
987
|
-
AlertDialogCancel.displayName =
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
var
|
|
991
|
-
var
|
|
992
|
-
var
|
|
993
|
-
var
|
|
994
|
-
var
|
|
995
|
-
|
|
1390
|
+
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
1391
|
+
|
|
1392
|
+
// src/components/dropdown-menu.tsx
|
|
1393
|
+
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
|
|
1394
|
+
var import_lucide_react5 = require("lucide-react");
|
|
1395
|
+
var React6 = __toESM(require("react"), 1);
|
|
1396
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1397
|
+
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
1398
|
+
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
1399
|
+
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
1400
|
+
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
1401
|
+
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
1402
|
+
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
1403
|
+
var menuItemBase = "cursor-pointer transition-colors data-[highlighted]:bg-muted data-[highlighted]:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
|
|
1404
|
+
var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1405
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
996
1406
|
{
|
|
997
1407
|
ref,
|
|
998
1408
|
className: cn(
|
|
999
|
-
"flex
|
|
1409
|
+
"flex select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-muted data-[state=open]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1410
|
+
menuItemBase,
|
|
1000
1411
|
inset && "pl-8",
|
|
1001
1412
|
className
|
|
1002
1413
|
),
|
|
1003
1414
|
...props,
|
|
1004
1415
|
children: [
|
|
1005
1416
|
children,
|
|
1006
|
-
/* @__PURE__ */
|
|
1417
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react5.ChevronRight, { className: "ml-auto" })
|
|
1007
1418
|
]
|
|
1008
1419
|
}
|
|
1009
1420
|
));
|
|
1010
|
-
DropdownMenuSubTrigger.displayName =
|
|
1011
|
-
var DropdownMenuSubContent =
|
|
1012
|
-
|
|
1421
|
+
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
1422
|
+
var DropdownMenuSubContent = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1423
|
+
DropdownMenuPrimitive.SubContent,
|
|
1013
1424
|
{
|
|
1014
1425
|
ref,
|
|
1015
1426
|
className: cn(
|
|
1016
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-
|
|
1427
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
|
|
1017
1428
|
className
|
|
1018
1429
|
),
|
|
1019
1430
|
...props
|
|
1020
1431
|
}
|
|
1021
1432
|
));
|
|
1022
|
-
DropdownMenuSubContent.displayName =
|
|
1023
|
-
var DropdownMenuContent =
|
|
1433
|
+
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
1434
|
+
var DropdownMenuContent = React6.forwardRef(({ className, sideOffset = 4, ...props }, ref) => {
|
|
1024
1435
|
const portalContainer = usePortalContainer();
|
|
1025
|
-
return /* @__PURE__ */
|
|
1026
|
-
|
|
1436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DropdownMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1437
|
+
DropdownMenuPrimitive.Content,
|
|
1027
1438
|
{
|
|
1028
1439
|
ref,
|
|
1029
1440
|
sideOffset,
|
|
1030
1441
|
className: cn(
|
|
1031
|
-
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-
|
|
1442
|
+
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-lg border border-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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
|
|
1032
1443
|
className
|
|
1033
1444
|
),
|
|
1034
1445
|
...props
|
|
1035
1446
|
}
|
|
1036
1447
|
) });
|
|
1037
1448
|
});
|
|
1038
|
-
DropdownMenuContent.displayName =
|
|
1039
|
-
var DropdownMenuItem =
|
|
1040
|
-
|
|
1449
|
+
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
1450
|
+
var DropdownMenuItem = React6.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1451
|
+
DropdownMenuPrimitive.Item,
|
|
1041
1452
|
{
|
|
1042
1453
|
ref,
|
|
1043
1454
|
className: cn(
|
|
1044
|
-
"relative flex
|
|
1455
|
+
"relative flex select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1456
|
+
menuItemBase,
|
|
1045
1457
|
inset && "pl-8",
|
|
1046
1458
|
className
|
|
1047
1459
|
),
|
|
1048
1460
|
...props
|
|
1049
1461
|
}
|
|
1050
1462
|
));
|
|
1051
|
-
DropdownMenuItem.displayName =
|
|
1052
|
-
var DropdownMenuCheckboxItem =
|
|
1053
|
-
|
|
1463
|
+
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
1464
|
+
var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1465
|
+
DropdownMenuPrimitive.CheckboxItem,
|
|
1054
1466
|
{
|
|
1055
1467
|
ref,
|
|
1056
1468
|
className: cn(
|
|
1057
|
-
"relative flex
|
|
1469
|
+
"relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1470
|
+
menuItemBase,
|
|
1058
1471
|
className
|
|
1059
1472
|
),
|
|
1060
1473
|
checked,
|
|
1061
1474
|
...props,
|
|
1062
1475
|
children: [
|
|
1063
|
-
/* @__PURE__ */
|
|
1476
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react5.Check, { className: "h-4 w-4" }) }) }),
|
|
1064
1477
|
children
|
|
1065
1478
|
]
|
|
1066
1479
|
}
|
|
1067
1480
|
));
|
|
1068
|
-
DropdownMenuCheckboxItem.displayName =
|
|
1069
|
-
var DropdownMenuRadioItem =
|
|
1070
|
-
|
|
1481
|
+
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
1482
|
+
var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1483
|
+
DropdownMenuPrimitive.RadioItem,
|
|
1071
1484
|
{
|
|
1072
1485
|
ref,
|
|
1073
1486
|
className: cn(
|
|
1074
|
-
"relative flex
|
|
1487
|
+
"relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1488
|
+
menuItemBase,
|
|
1075
1489
|
className
|
|
1076
1490
|
),
|
|
1077
1491
|
...props,
|
|
1078
1492
|
children: [
|
|
1079
|
-
/* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react5.Circle, { className: "h-2 w-2 fill-current" }) }) }),
|
|
1080
1494
|
children
|
|
1081
1495
|
]
|
|
1082
1496
|
}
|
|
1083
1497
|
));
|
|
1084
|
-
DropdownMenuRadioItem.displayName =
|
|
1085
|
-
var DropdownMenuLabel =
|
|
1086
|
-
|
|
1498
|
+
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
1499
|
+
var DropdownMenuLabel = React6.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1500
|
+
DropdownMenuPrimitive.Label,
|
|
1087
1501
|
{
|
|
1088
1502
|
ref,
|
|
1089
1503
|
className: cn(
|
|
@@ -1094,18 +1508,18 @@ var DropdownMenuLabel = React5__namespace.forwardRef(({ className, inset, ...pro
|
|
|
1094
1508
|
...props
|
|
1095
1509
|
}
|
|
1096
1510
|
));
|
|
1097
|
-
DropdownMenuLabel.displayName =
|
|
1098
|
-
var DropdownMenuSeparator =
|
|
1099
|
-
|
|
1511
|
+
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
1512
|
+
var DropdownMenuSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1513
|
+
DropdownMenuPrimitive.Separator,
|
|
1100
1514
|
{
|
|
1101
1515
|
ref,
|
|
1102
1516
|
className: cn("-mx-1 my-1 h-px bg-primary/5", className),
|
|
1103
1517
|
...props
|
|
1104
1518
|
}
|
|
1105
1519
|
));
|
|
1106
|
-
DropdownMenuSeparator.displayName =
|
|
1107
|
-
var DropdownMenuShortcut =
|
|
1108
|
-
return /* @__PURE__ */
|
|
1520
|
+
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
1521
|
+
var DropdownMenuShortcut = React6.forwardRef(({ className, ...props }, ref) => {
|
|
1522
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1109
1523
|
"span",
|
|
1110
1524
|
{
|
|
1111
1525
|
ref,
|
|
@@ -1115,27 +1529,36 @@ var DropdownMenuShortcut = React5__namespace.forwardRef(({ className, ...props }
|
|
|
1115
1529
|
);
|
|
1116
1530
|
});
|
|
1117
1531
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
1532
|
+
|
|
1533
|
+
// src/components/select.tsx
|
|
1534
|
+
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
1535
|
+
var import_class_variance_authority9 = require("class-variance-authority");
|
|
1536
|
+
var import_lucide_react6 = require("lucide-react");
|
|
1537
|
+
var import_react16 = require("react");
|
|
1538
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1118
1539
|
function Select({ ...props }) {
|
|
1119
|
-
return /* @__PURE__ */
|
|
1540
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
1120
1541
|
}
|
|
1121
1542
|
function SelectGroup({
|
|
1122
1543
|
...props
|
|
1123
1544
|
}) {
|
|
1124
|
-
return /* @__PURE__ */
|
|
1545
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
|
|
1125
1546
|
}
|
|
1126
1547
|
function SelectValue({
|
|
1127
1548
|
...props
|
|
1128
1549
|
}) {
|
|
1129
|
-
return /* @__PURE__ */
|
|
1550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
1130
1551
|
}
|
|
1131
|
-
var selectTriggerVariants =
|
|
1132
|
-
|
|
1552
|
+
var selectTriggerVariants = (0, import_class_variance_authority9.cva)(
|
|
1553
|
+
// hover:border-primary (full strength) keeps the hover boundary more visible
|
|
1554
|
+
// than the resting border-input, not a fainter alpha of it.
|
|
1555
|
+
"flex w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-sm text-foreground cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 data-[placeholder]:text-muted-foreground aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:border-destructive! [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
|
|
1133
1556
|
{
|
|
1134
1557
|
variants: {
|
|
1135
1558
|
size: {
|
|
1136
|
-
sm: "h-
|
|
1137
|
-
default: "h-
|
|
1138
|
-
lg: "h-
|
|
1559
|
+
sm: "h-[var(--nx-control-height-sm)] text-sm",
|
|
1560
|
+
default: "h-[var(--nx-control-height)] text-sm",
|
|
1561
|
+
lg: "h-[var(--nx-control-height-lg)] text-base"
|
|
1139
1562
|
}
|
|
1140
1563
|
},
|
|
1141
1564
|
defaultVariants: {
|
|
@@ -1143,9 +1566,9 @@ var selectTriggerVariants = classVarianceAuthority.cva(
|
|
|
1143
1566
|
}
|
|
1144
1567
|
}
|
|
1145
1568
|
);
|
|
1146
|
-
var SelectTrigger =
|
|
1147
|
-
return /* @__PURE__ */
|
|
1148
|
-
|
|
1569
|
+
var SelectTrigger = (0, import_react16.forwardRef)(({ className, size, children, ...props }, ref) => {
|
|
1570
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1571
|
+
SelectPrimitive.Trigger,
|
|
1149
1572
|
{
|
|
1150
1573
|
ref,
|
|
1151
1574
|
"data-slot": "select-trigger",
|
|
@@ -1153,7 +1576,7 @@ var SelectTrigger = React5.forwardRef(({ className, size, children, ...props },
|
|
|
1153
1576
|
...props,
|
|
1154
1577
|
children: [
|
|
1155
1578
|
children,
|
|
1156
|
-
/* @__PURE__ */
|
|
1579
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronDown, { className: "size-4 opacity-50" }) })
|
|
1157
1580
|
]
|
|
1158
1581
|
}
|
|
1159
1582
|
);
|
|
@@ -1166,21 +1589,21 @@ function SelectContent({
|
|
|
1166
1589
|
...props
|
|
1167
1590
|
}) {
|
|
1168
1591
|
const portalContainer = usePortalContainer();
|
|
1169
|
-
return /* @__PURE__ */
|
|
1170
|
-
|
|
1592
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1593
|
+
SelectPrimitive.Content,
|
|
1171
1594
|
{
|
|
1172
1595
|
"data-slot": "select-content",
|
|
1173
1596
|
className: cn(
|
|
1174
|
-
"bg-popover text-popover-foreground border border-
|
|
1597
|
+
"bg-popover text-popover-foreground border border-border shadow-none rounded-lg z-9999 max-h-(--radix-select-content-available-height) min-w-32 overflow-hidden data-[state=open]:animate-zoom-in-95 data-[state=closed]:animate-zoom-out-95 data-[side=bottom]:animate-slide-in-from-top-2 data-[side=left]:animate-slide-in-from-right-2 data-[side=right]:animate-slide-in-from-left-2 data-[side=top]:animate-slide-in-from-bottom-2",
|
|
1175
1598
|
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",
|
|
1176
1599
|
className
|
|
1177
1600
|
),
|
|
1178
1601
|
position,
|
|
1179
1602
|
...props,
|
|
1180
1603
|
children: [
|
|
1181
|
-
/* @__PURE__ */
|
|
1182
|
-
/* @__PURE__ */
|
|
1183
|
-
|
|
1604
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectScrollUpButton, {}),
|
|
1605
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1606
|
+
SelectPrimitive.Viewport,
|
|
1184
1607
|
{
|
|
1185
1608
|
className: cn(
|
|
1186
1609
|
"p-1",
|
|
@@ -1189,7 +1612,7 @@ function SelectContent({
|
|
|
1189
1612
|
children
|
|
1190
1613
|
}
|
|
1191
1614
|
),
|
|
1192
|
-
/* @__PURE__ */
|
|
1615
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectScrollDownButton, {})
|
|
1193
1616
|
]
|
|
1194
1617
|
}
|
|
1195
1618
|
) });
|
|
@@ -1198,8 +1621,8 @@ function SelectLabel({
|
|
|
1198
1621
|
className,
|
|
1199
1622
|
...props
|
|
1200
1623
|
}) {
|
|
1201
|
-
return /* @__PURE__ */
|
|
1202
|
-
|
|
1624
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1625
|
+
SelectPrimitive.Label,
|
|
1203
1626
|
{
|
|
1204
1627
|
"data-slot": "select-label",
|
|
1205
1628
|
className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
|
|
@@ -1212,18 +1635,18 @@ function SelectItem({
|
|
|
1212
1635
|
children,
|
|
1213
1636
|
...props
|
|
1214
1637
|
}) {
|
|
1215
|
-
return /* @__PURE__ */
|
|
1216
|
-
|
|
1638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1639
|
+
SelectPrimitive.Item,
|
|
1217
1640
|
{
|
|
1218
1641
|
"data-slot": "select-item",
|
|
1219
1642
|
className: cn(
|
|
1220
|
-
"relative flex w-full cursor-pointer items-center gap-2 rounded-
|
|
1643
|
+
"relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-2 pr-8 pl-2 text-sm text-foreground outline-none select-none transition-colors hover-unified focus:bg-primary/5 focus:text-primary data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
|
|
1221
1644
|
className
|
|
1222
1645
|
),
|
|
1223
1646
|
...props,
|
|
1224
1647
|
children: [
|
|
1225
|
-
/* @__PURE__ */
|
|
1226
|
-
/* @__PURE__ */
|
|
1648
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.Check, { className: "size-4" }) }) }),
|
|
1649
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectPrimitive.ItemText, { children })
|
|
1227
1650
|
]
|
|
1228
1651
|
}
|
|
1229
1652
|
);
|
|
@@ -1232,8 +1655,8 @@ function SelectSeparator({
|
|
|
1232
1655
|
className,
|
|
1233
1656
|
...props
|
|
1234
1657
|
}) {
|
|
1235
|
-
return /* @__PURE__ */
|
|
1236
|
-
|
|
1658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1659
|
+
SelectPrimitive.Separator,
|
|
1237
1660
|
{
|
|
1238
1661
|
"data-slot": "select-separator",
|
|
1239
1662
|
className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
|
|
@@ -1245,8 +1668,8 @@ function SelectScrollUpButton({
|
|
|
1245
1668
|
className,
|
|
1246
1669
|
...props
|
|
1247
1670
|
}) {
|
|
1248
|
-
return /* @__PURE__ */
|
|
1249
|
-
|
|
1671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1672
|
+
SelectPrimitive.ScrollUpButton,
|
|
1250
1673
|
{
|
|
1251
1674
|
"data-slot": "select-scroll-up-button",
|
|
1252
1675
|
className: cn(
|
|
@@ -1254,7 +1677,7 @@ function SelectScrollUpButton({
|
|
|
1254
1677
|
className
|
|
1255
1678
|
),
|
|
1256
1679
|
...props,
|
|
1257
|
-
children: /* @__PURE__ */
|
|
1680
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronUp, { className: "size-4" })
|
|
1258
1681
|
}
|
|
1259
1682
|
);
|
|
1260
1683
|
}
|
|
@@ -1262,8 +1685,8 @@ function SelectScrollDownButton({
|
|
|
1262
1685
|
className,
|
|
1263
1686
|
...props
|
|
1264
1687
|
}) {
|
|
1265
|
-
return /* @__PURE__ */
|
|
1266
|
-
|
|
1688
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1689
|
+
SelectPrimitive.ScrollDownButton,
|
|
1267
1690
|
{
|
|
1268
1691
|
"data-slot": "select-scroll-down-button",
|
|
1269
1692
|
className: cn(
|
|
@@ -1271,18 +1694,27 @@ function SelectScrollDownButton({
|
|
|
1271
1694
|
className
|
|
1272
1695
|
),
|
|
1273
1696
|
...props,
|
|
1274
|
-
children: /* @__PURE__ */
|
|
1697
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronDown, { className: "size-4" })
|
|
1275
1698
|
}
|
|
1276
1699
|
);
|
|
1277
1700
|
}
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
var
|
|
1281
|
-
var
|
|
1282
|
-
var
|
|
1283
|
-
|
|
1701
|
+
|
|
1702
|
+
// src/components/sheet.tsx
|
|
1703
|
+
var DialogPrimitive2 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1704
|
+
var import_class_variance_authority10 = require("class-variance-authority");
|
|
1705
|
+
var React7 = __toESM(require("react"), 1);
|
|
1706
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1707
|
+
var Sheet = DialogPrimitive2.Root;
|
|
1708
|
+
var SheetTrigger = DialogPrimitive2.Trigger;
|
|
1709
|
+
var SheetClose = DialogPrimitive2.Close;
|
|
1710
|
+
var SheetPortal = DialogPrimitive2.Portal;
|
|
1711
|
+
var SheetOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1712
|
+
DialogPrimitive2.Overlay,
|
|
1284
1713
|
{
|
|
1285
1714
|
className: cn(
|
|
1715
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1716
|
+
// rather than a surface token. Painting it from `background` would
|
|
1717
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
1286
1718
|
"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",
|
|
1287
1719
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1288
1720
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
@@ -1292,16 +1724,16 @@ var SheetOverlay = React5__namespace.forwardRef(({ className, ...props }, ref) =
|
|
|
1292
1724
|
ref
|
|
1293
1725
|
}
|
|
1294
1726
|
));
|
|
1295
|
-
SheetOverlay.displayName =
|
|
1296
|
-
var sheetVariants =
|
|
1727
|
+
SheetOverlay.displayName = DialogPrimitive2.Overlay.displayName;
|
|
1728
|
+
var sheetVariants = (0, import_class_variance_authority10.cva)(
|
|
1297
1729
|
"fixed z-50 gap-4 bg-background p-6 shadow-lg will-change-transform transition ease-in-out data-[state=closed]:duration-150 data-[state=open]:duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1298
1730
|
{
|
|
1299
1731
|
variants: {
|
|
1300
1732
|
side: {
|
|
1301
|
-
top: "inset-x-0 top-0 border-b border-
|
|
1302
|
-
bottom: "inset-x-0 bottom-0 border-t border-
|
|
1303
|
-
left: "inset-y-0 left-0 h-full w-3/4 border-r border-
|
|
1304
|
-
right: "inset-y-0 right-0 h-full w-3/4 border-l border-
|
|
1733
|
+
top: "inset-x-0 top-0 border-b border-border data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
1734
|
+
bottom: "inset-x-0 bottom-0 border-t border-border data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
1735
|
+
left: "inset-y-0 left-0 h-full w-3/4 border-r border-border data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
|
|
1736
|
+
right: "inset-y-0 right-0 h-full w-3/4 border-l border-border data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
|
|
1305
1737
|
}
|
|
1306
1738
|
},
|
|
1307
1739
|
defaultVariants: {
|
|
@@ -1309,12 +1741,12 @@ var sheetVariants = classVarianceAuthority.cva(
|
|
|
1309
1741
|
}
|
|
1310
1742
|
}
|
|
1311
1743
|
);
|
|
1312
|
-
var SheetContent =
|
|
1744
|
+
var SheetContent = React7.forwardRef(({ side = "right", className, children, ...props }, ref) => {
|
|
1313
1745
|
const portalContainer = usePortalContainer();
|
|
1314
|
-
return /* @__PURE__ */
|
|
1315
|
-
/* @__PURE__ */
|
|
1316
|
-
/* @__PURE__ */
|
|
1317
|
-
|
|
1746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(SheetPortal, { container: portalContainer, children: [
|
|
1747
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SheetOverlay, {}),
|
|
1748
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1749
|
+
DialogPrimitive2.Content,
|
|
1318
1750
|
{
|
|
1319
1751
|
ref,
|
|
1320
1752
|
"data-slot": "sheet-content",
|
|
@@ -1325,11 +1757,11 @@ var SheetContent = React5__namespace.forwardRef(({ side = "right", className, ch
|
|
|
1325
1757
|
)
|
|
1326
1758
|
] });
|
|
1327
1759
|
});
|
|
1328
|
-
SheetContent.displayName =
|
|
1760
|
+
SheetContent.displayName = DialogPrimitive2.Content.displayName;
|
|
1329
1761
|
var SheetHeader = ({
|
|
1330
1762
|
className,
|
|
1331
1763
|
...props
|
|
1332
|
-
}) => /* @__PURE__ */
|
|
1764
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1333
1765
|
"div",
|
|
1334
1766
|
{
|
|
1335
1767
|
className: cn(
|
|
@@ -1343,7 +1775,7 @@ SheetHeader.displayName = "SheetHeader";
|
|
|
1343
1775
|
var SheetFooter = ({
|
|
1344
1776
|
className,
|
|
1345
1777
|
...props
|
|
1346
|
-
}) => /* @__PURE__ */
|
|
1778
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1347
1779
|
"div",
|
|
1348
1780
|
{
|
|
1349
1781
|
className: cn(
|
|
@@ -1354,31 +1786,38 @@ var SheetFooter = ({
|
|
|
1354
1786
|
}
|
|
1355
1787
|
);
|
|
1356
1788
|
SheetFooter.displayName = "SheetFooter";
|
|
1357
|
-
var SheetTitle =
|
|
1358
|
-
|
|
1789
|
+
var SheetTitle = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1790
|
+
DialogPrimitive2.Title,
|
|
1359
1791
|
{
|
|
1360
1792
|
ref,
|
|
1361
1793
|
className: cn("text-lg font-semibold text-foreground", className),
|
|
1362
1794
|
...props
|
|
1363
1795
|
}
|
|
1364
1796
|
));
|
|
1365
|
-
SheetTitle.displayName =
|
|
1366
|
-
var SheetDescription =
|
|
1367
|
-
|
|
1797
|
+
SheetTitle.displayName = DialogPrimitive2.Title.displayName;
|
|
1798
|
+
var SheetDescription = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1799
|
+
DialogPrimitive2.Description,
|
|
1368
1800
|
{
|
|
1369
1801
|
ref,
|
|
1370
1802
|
className: cn("text-sm text-muted-foreground", className),
|
|
1371
1803
|
...props
|
|
1372
1804
|
}
|
|
1373
1805
|
));
|
|
1374
|
-
SheetDescription.displayName =
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1806
|
+
SheetDescription.displayName = DialogPrimitive2.Description.displayName;
|
|
1807
|
+
|
|
1808
|
+
// src/components/command.tsx
|
|
1809
|
+
var DialogPrimitive3 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1810
|
+
var import_cmdk = require("cmdk");
|
|
1811
|
+
var import_lucide_react7 = require("lucide-react");
|
|
1812
|
+
var import_react17 = require("react");
|
|
1813
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1814
|
+
var Command = (0, import_react17.forwardRef)(
|
|
1815
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1816
|
+
import_cmdk.Command,
|
|
1378
1817
|
{
|
|
1379
1818
|
ref,
|
|
1380
1819
|
className: cn(
|
|
1381
|
-
"flex h-full w-full flex-col overflow-hidden rounded-
|
|
1820
|
+
"flex h-full w-full flex-col overflow-hidden rounded-lg bg-background text-foreground",
|
|
1382
1821
|
className
|
|
1383
1822
|
),
|
|
1384
1823
|
...props
|
|
@@ -1386,11 +1825,14 @@ var Command = React5.forwardRef(
|
|
|
1386
1825
|
)
|
|
1387
1826
|
);
|
|
1388
1827
|
Command.displayName = "Command";
|
|
1389
|
-
var CommandDialogOverlay =
|
|
1390
|
-
|
|
1828
|
+
var CommandDialogOverlay = (0, import_react17.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1829
|
+
DialogPrimitive3.Overlay,
|
|
1391
1830
|
{
|
|
1392
1831
|
ref,
|
|
1393
1832
|
className: cn(
|
|
1833
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1834
|
+
// rather than a surface token. Painting it from `background` would
|
|
1835
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
1394
1836
|
"fixed inset-0 z-[99] bg-black/80 backdrop-blur-sm",
|
|
1395
1837
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1396
1838
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
@@ -1403,10 +1845,10 @@ var CommandDialogOverlay = React5.forwardRef(({ className, ...props }, ref) => /
|
|
|
1403
1845
|
CommandDialogOverlay.displayName = "CommandDialogOverlay";
|
|
1404
1846
|
var CommandDialog = ({ children, ...props }) => {
|
|
1405
1847
|
const portalContainer = usePortalContainer();
|
|
1406
|
-
return /* @__PURE__ */
|
|
1407
|
-
/* @__PURE__ */
|
|
1408
|
-
/* @__PURE__ */
|
|
1409
|
-
|
|
1848
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DialogPrimitive3.Root, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(DialogPrimitive3.Portal, { container: portalContainer, children: [
|
|
1849
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CommandDialogOverlay, {}),
|
|
1850
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1851
|
+
DialogPrimitive3.Content,
|
|
1410
1852
|
{
|
|
1411
1853
|
"data-slot": "command-content",
|
|
1412
1854
|
className: cn(
|
|
@@ -1425,7 +1867,7 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1425
1867
|
"m-4 sm:m-0",
|
|
1426
1868
|
// 16px margin on mobile, no margin on desktop
|
|
1427
1869
|
// Visual
|
|
1428
|
-
"overflow-hidden rounded-
|
|
1870
|
+
"overflow-hidden rounded-lg border border-border bg-background shadow-xl",
|
|
1429
1871
|
// Animation
|
|
1430
1872
|
"duration-200",
|
|
1431
1873
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
@@ -1433,20 +1875,20 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1433
1875
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
1434
1876
|
"data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-top-[48%]"
|
|
1435
1877
|
),
|
|
1436
|
-
children: /* @__PURE__ */
|
|
1878
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Command, { className: "[&_[cmdk-group-heading]]:px-3 [&_[cmdk-group-heading]]:py-2 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wide [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:mb-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-3 [&_[cmdk-item]]:py-2 [&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4", children })
|
|
1437
1879
|
}
|
|
1438
1880
|
)
|
|
1439
1881
|
] }) });
|
|
1440
1882
|
};
|
|
1441
|
-
var CommandInput =
|
|
1883
|
+
var CommandInput = (0, import_react17.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
1442
1884
|
"div",
|
|
1443
1885
|
{
|
|
1444
|
-
className: "flex items-center border-b border-
|
|
1886
|
+
className: "flex items-center border-b border-border px-4",
|
|
1445
1887
|
"cmdk-input-wrapper": "",
|
|
1446
1888
|
children: [
|
|
1447
|
-
/* @__PURE__ */
|
|
1448
|
-
/* @__PURE__ */
|
|
1449
|
-
|
|
1889
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react7.Search, { className: "mr-3 h-5 w-5 shrink-0 text-muted-foreground" }),
|
|
1890
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1891
|
+
import_cmdk.Command.Input,
|
|
1450
1892
|
{
|
|
1451
1893
|
ref,
|
|
1452
1894
|
className: cn(
|
|
@@ -1470,8 +1912,8 @@ var CommandInput = React5.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1470
1912
|
}
|
|
1471
1913
|
));
|
|
1472
1914
|
CommandInput.displayName = "CommandInput";
|
|
1473
|
-
var CommandList =
|
|
1474
|
-
|
|
1915
|
+
var CommandList = (0, import_react17.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1916
|
+
import_cmdk.Command.List,
|
|
1475
1917
|
{
|
|
1476
1918
|
ref,
|
|
1477
1919
|
className: cn(
|
|
@@ -1485,8 +1927,8 @@ var CommandList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1485
1927
|
}
|
|
1486
1928
|
));
|
|
1487
1929
|
CommandList.displayName = "CommandList";
|
|
1488
|
-
var CommandEmpty =
|
|
1489
|
-
|
|
1930
|
+
var CommandEmpty = (0, import_react17.forwardRef)((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1931
|
+
import_cmdk.Command.Empty,
|
|
1490
1932
|
{
|
|
1491
1933
|
ref,
|
|
1492
1934
|
className: "py-8 px-4 text-center text-sm text-muted-foreground",
|
|
@@ -1494,8 +1936,8 @@ var CommandEmpty = React5.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.
|
|
|
1494
1936
|
}
|
|
1495
1937
|
));
|
|
1496
1938
|
CommandEmpty.displayName = "CommandEmpty";
|
|
1497
|
-
var CommandGroup =
|
|
1498
|
-
|
|
1939
|
+
var CommandGroup = (0, import_react17.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1940
|
+
import_cmdk.Command.Group,
|
|
1499
1941
|
{
|
|
1500
1942
|
ref,
|
|
1501
1943
|
className: cn(
|
|
@@ -1509,8 +1951,8 @@ var CommandGroup = React5.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1509
1951
|
}
|
|
1510
1952
|
));
|
|
1511
1953
|
CommandGroup.displayName = "CommandGroup";
|
|
1512
|
-
var CommandSeparator =
|
|
1513
|
-
|
|
1954
|
+
var CommandSeparator = (0, import_react17.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1955
|
+
import_cmdk.Command.Separator,
|
|
1514
1956
|
{
|
|
1515
1957
|
ref,
|
|
1516
1958
|
className: cn("h-px bg-border my-2", className),
|
|
@@ -1518,8 +1960,8 @@ var CommandSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
1518
1960
|
}
|
|
1519
1961
|
));
|
|
1520
1962
|
CommandSeparator.displayName = "CommandSeparator";
|
|
1521
|
-
var CommandItem =
|
|
1522
|
-
|
|
1963
|
+
var CommandItem = (0, import_react17.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1964
|
+
import_cmdk.Command.Item,
|
|
1523
1965
|
{
|
|
1524
1966
|
ref,
|
|
1525
1967
|
className: cn(
|
|
@@ -1531,7 +1973,7 @@ var CommandItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1531
1973
|
// Spacing
|
|
1532
1974
|
"px-3 py-2.5",
|
|
1533
1975
|
// Visual
|
|
1534
|
-
"rounded-
|
|
1976
|
+
"rounded-sm text-base sm:text-sm outline-none",
|
|
1535
1977
|
// Transitions
|
|
1536
1978
|
"transition-all duration-200 ease-(--ease-premium)",
|
|
1537
1979
|
// Hover state - shared dashboard hover treatment
|
|
@@ -1547,9 +1989,9 @@ var CommandItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1547
1989
|
}
|
|
1548
1990
|
));
|
|
1549
1991
|
CommandItem.displayName = "CommandItem";
|
|
1550
|
-
var CommandShortcut =
|
|
1992
|
+
var CommandShortcut = (0, import_react17.forwardRef)(
|
|
1551
1993
|
({ className, ...props }, ref) => {
|
|
1552
|
-
return /* @__PURE__ */
|
|
1994
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1553
1995
|
"span",
|
|
1554
1996
|
{
|
|
1555
1997
|
ref,
|
|
@@ -1560,7 +2002,7 @@ var CommandShortcut = React5.forwardRef(
|
|
|
1560
2002
|
"text-xs font-mono",
|
|
1561
2003
|
// Visual
|
|
1562
2004
|
"text-muted-foreground bg-primary/5",
|
|
1563
|
-
"border border-
|
|
2005
|
+
"border border-border rounded-md",
|
|
1564
2006
|
// Spacing
|
|
1565
2007
|
"px-1.5 py-0.5",
|
|
1566
2008
|
className
|
|
@@ -1571,7 +2013,13 @@ var CommandShortcut = React5.forwardRef(
|
|
|
1571
2013
|
}
|
|
1572
2014
|
);
|
|
1573
2015
|
CommandShortcut.displayName = "CommandShortcut";
|
|
1574
|
-
|
|
2016
|
+
|
|
2017
|
+
// src/components/spinner.tsx
|
|
2018
|
+
var import_class_variance_authority11 = require("class-variance-authority");
|
|
2019
|
+
var import_lucide_react8 = require("lucide-react");
|
|
2020
|
+
var import_react18 = require("react");
|
|
2021
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2022
|
+
var spinnerVariants = (0, import_class_variance_authority11.cva)("animate-spin motion-reduce:animate-none", {
|
|
1575
2023
|
variants: {
|
|
1576
2024
|
size: {
|
|
1577
2025
|
sm: "h-4 w-4",
|
|
@@ -1583,10 +2031,10 @@ var spinnerVariants = classVarianceAuthority.cva("animate-spin motion-reduce:ani
|
|
|
1583
2031
|
size: "md"
|
|
1584
2032
|
}
|
|
1585
2033
|
});
|
|
1586
|
-
var Spinner =
|
|
2034
|
+
var Spinner = (0, import_react18.forwardRef)(
|
|
1587
2035
|
({ size = "md", className, "aria-label": ariaLabel = "Loading", ...props }, ref) => {
|
|
1588
|
-
return /* @__PURE__ */
|
|
1589
|
-
|
|
2036
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2037
|
+
import_lucide_react8.Loader2,
|
|
1590
2038
|
{
|
|
1591
2039
|
ref,
|
|
1592
2040
|
role: "status",
|
|
@@ -1598,12 +2046,17 @@ var Spinner = React5.forwardRef(
|
|
|
1598
2046
|
}
|
|
1599
2047
|
);
|
|
1600
2048
|
Spinner.displayName = "Spinner";
|
|
2049
|
+
|
|
2050
|
+
// src/components/toaster.tsx
|
|
2051
|
+
var import_lucide_react9 = require("lucide-react");
|
|
2052
|
+
var import_sonner = require("sonner");
|
|
2053
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1601
2054
|
function Toaster({ theme = "system", ...props }) {
|
|
1602
|
-
return /* @__PURE__ */
|
|
1603
|
-
|
|
2055
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2056
|
+
import_sonner.Toaster,
|
|
1604
2057
|
{
|
|
1605
2058
|
theme,
|
|
1606
|
-
className: "toaster group
|
|
2059
|
+
className: "toaster group bg-transparent! overflow-visible! z-[9999]!",
|
|
1607
2060
|
"data-slot": "toaster",
|
|
1608
2061
|
toastOptions: {
|
|
1609
2062
|
classNames: {
|
|
@@ -1611,23 +2064,27 @@ function Toaster({ theme = "system", ...props }) {
|
|
|
1611
2064
|
}
|
|
1612
2065
|
},
|
|
1613
2066
|
icons: {
|
|
1614
|
-
success: /* @__PURE__ */
|
|
1615
|
-
info: /* @__PURE__ */
|
|
1616
|
-
warning: /* @__PURE__ */
|
|
1617
|
-
error: /* @__PURE__ */
|
|
1618
|
-
loading: /* @__PURE__ */
|
|
2067
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.CheckCircle2, { className: "h-4 w-4" }),
|
|
2068
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.AlertCircle, { className: "h-4 w-4" }),
|
|
2069
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.AlertTriangle, { className: "h-4 w-4" }),
|
|
2070
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.XCircle, { className: "h-4 w-4" }),
|
|
2071
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.Loader2, { className: "h-4 w-4 animate-spin" })
|
|
1619
2072
|
},
|
|
1620
2073
|
style: {
|
|
1621
|
-
"--normal-bg": "
|
|
1622
|
-
"--normal-text": "
|
|
1623
|
-
"--normal-border": "
|
|
2074
|
+
"--normal-bg": "var(--nx-popover)",
|
|
2075
|
+
"--normal-text": "var(--nx-popover-foreground)",
|
|
2076
|
+
"--normal-border": "var(--nx-border)",
|
|
1624
2077
|
"--border-radius": "0px"
|
|
1625
2078
|
},
|
|
1626
2079
|
...props
|
|
1627
2080
|
}
|
|
1628
2081
|
);
|
|
1629
2082
|
}
|
|
1630
|
-
|
|
2083
|
+
|
|
2084
|
+
// src/components/table.tsx
|
|
2085
|
+
var React8 = __toESM(require("react"), 1);
|
|
2086
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
2087
|
+
var Table = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1631
2088
|
"table",
|
|
1632
2089
|
{
|
|
1633
2090
|
ref,
|
|
@@ -1636,9 +2093,16 @@ var Table = React5__namespace.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
1636
2093
|
}
|
|
1637
2094
|
) }));
|
|
1638
2095
|
Table.displayName = "Table";
|
|
1639
|
-
var TableHeader =
|
|
2096
|
+
var TableHeader = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2097
|
+
"thead",
|
|
2098
|
+
{
|
|
2099
|
+
ref,
|
|
2100
|
+
className: cn("[&_tr]:border-b border-border", className),
|
|
2101
|
+
...props
|
|
2102
|
+
}
|
|
2103
|
+
));
|
|
1640
2104
|
TableHeader.displayName = "TableHeader";
|
|
1641
|
-
var TableBody =
|
|
2105
|
+
var TableBody = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1642
2106
|
"tbody",
|
|
1643
2107
|
{
|
|
1644
2108
|
ref,
|
|
@@ -1647,28 +2111,31 @@ var TableBody = React5__namespace.forwardRef(({ className, ...props }, ref) => /
|
|
|
1647
2111
|
}
|
|
1648
2112
|
));
|
|
1649
2113
|
TableBody.displayName = "TableBody";
|
|
1650
|
-
var TableFooter =
|
|
2114
|
+
var TableFooter = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1651
2115
|
"tfoot",
|
|
1652
2116
|
{
|
|
1653
2117
|
ref,
|
|
1654
|
-
className: cn(
|
|
2118
|
+
className: cn(
|
|
2119
|
+
"border-t border-border font-medium [&>tr]:last:border-b-0",
|
|
2120
|
+
className
|
|
2121
|
+
),
|
|
1655
2122
|
...props
|
|
1656
2123
|
}
|
|
1657
2124
|
));
|
|
1658
2125
|
TableFooter.displayName = "TableFooter";
|
|
1659
|
-
var TableRow =
|
|
2126
|
+
var TableRow = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1660
2127
|
"tr",
|
|
1661
2128
|
{
|
|
1662
2129
|
ref,
|
|
1663
2130
|
className: cn(
|
|
1664
|
-
"border-b border-
|
|
2131
|
+
"border-b border-border transition-colors data-[state=selected]:bg-primary/5",
|
|
1665
2132
|
className
|
|
1666
2133
|
),
|
|
1667
2134
|
...props
|
|
1668
2135
|
}
|
|
1669
2136
|
));
|
|
1670
2137
|
TableRow.displayName = "TableRow";
|
|
1671
|
-
var TableHead =
|
|
2138
|
+
var TableHead = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1672
2139
|
"th",
|
|
1673
2140
|
{
|
|
1674
2141
|
ref,
|
|
@@ -1680,7 +2147,7 @@ var TableHead = React5__namespace.forwardRef(({ className, ...props }, ref) => /
|
|
|
1680
2147
|
}
|
|
1681
2148
|
));
|
|
1682
2149
|
TableHead.displayName = "TableHead";
|
|
1683
|
-
var TableCell =
|
|
2150
|
+
var TableCell = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1684
2151
|
"td",
|
|
1685
2152
|
{
|
|
1686
2153
|
ref,
|
|
@@ -1692,7 +2159,7 @@ var TableCell = React5__namespace.forwardRef(({ className, ...props }, ref) => /
|
|
|
1692
2159
|
}
|
|
1693
2160
|
));
|
|
1694
2161
|
TableCell.displayName = "TableCell";
|
|
1695
|
-
var TableCaption =
|
|
2162
|
+
var TableCaption = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1696
2163
|
"caption",
|
|
1697
2164
|
{
|
|
1698
2165
|
ref,
|
|
@@ -1701,6 +2168,10 @@ var TableCaption = React5__namespace.forwardRef(({ className, ...props }, ref) =
|
|
|
1701
2168
|
}
|
|
1702
2169
|
));
|
|
1703
2170
|
TableCaption.displayName = "TableCaption";
|
|
2171
|
+
|
|
2172
|
+
// src/components/table-search.tsx
|
|
2173
|
+
var import_lucide_react10 = require("lucide-react");
|
|
2174
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1704
2175
|
function TableSearch({
|
|
1705
2176
|
value,
|
|
1706
2177
|
onChange,
|
|
@@ -1709,9 +2180,9 @@ function TableSearch({
|
|
|
1709
2180
|
isLoading = false,
|
|
1710
2181
|
inputRef
|
|
1711
2182
|
}) {
|
|
1712
|
-
return /* @__PURE__ */
|
|
1713
|
-
/* @__PURE__ */
|
|
1714
|
-
/* @__PURE__ */
|
|
2183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "relative w-full max-w-lg", children: [
|
|
2184
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
|
|
2185
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1715
2186
|
"input",
|
|
1716
2187
|
{
|
|
1717
2188
|
ref: inputRef,
|
|
@@ -1720,685 +2191,236 @@ function TableSearch({
|
|
|
1720
2191
|
value,
|
|
1721
2192
|
onChange: (e) => onChange(e.target.value),
|
|
1722
2193
|
"aria-busy": isLoading,
|
|
1723
|
-
className: "h-10 w-full rounded-
|
|
2194
|
+
className: "h-10 w-full rounded-md border border-input bg-background pl-10 pr-10 text-sm ring-offset-background 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 transition-all"
|
|
1724
2195
|
}
|
|
1725
2196
|
),
|
|
1726
|
-
(value || isLoading) && /* @__PURE__ */
|
|
1727
|
-
isLoading && /* @__PURE__ */
|
|
1728
|
-
value && /* @__PURE__ */
|
|
2197
|
+
(value || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2", children: [
|
|
2198
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.Loader2, { className: "w-3.5 h-3.5 text-primary animate-spin" }),
|
|
2199
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1729
2200
|
"button",
|
|
1730
2201
|
{
|
|
1731
2202
|
type: "button",
|
|
1732
2203
|
onClick: onClear,
|
|
1733
|
-
className: "text-muted-foreground
|
|
2204
|
+
className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-md hover:bg-primary/5",
|
|
1734
2205
|
"aria-label": "Clear search",
|
|
1735
|
-
children: /* @__PURE__ */
|
|
2206
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.X, { className: "w-3.5 h-3.5" })
|
|
1736
2207
|
}
|
|
1737
2208
|
)
|
|
1738
2209
|
] })
|
|
1739
2210
|
] });
|
|
1740
2211
|
}
|
|
2212
|
+
|
|
2213
|
+
// src/components/table-states.tsx
|
|
2214
|
+
var import_lucide_react11 = require("lucide-react");
|
|
2215
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1741
2216
|
function TableError({
|
|
1742
2217
|
message = "An error occurred. Please try again."
|
|
1743
2218
|
}) {
|
|
1744
|
-
return /* @__PURE__ */
|
|
1745
|
-
/* @__PURE__ */
|
|
1746
|
-
/* @__PURE__ */
|
|
2219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
2220
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.AlertCircle, { className: "w-4 h-4 shrink-0" }),
|
|
2221
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { children: message })
|
|
1747
2222
|
] });
|
|
1748
2223
|
}
|
|
1749
2224
|
function TableLoading() {
|
|
1750
|
-
return /* @__PURE__ */
|
|
1751
|
-
/* @__PURE__ */
|
|
1752
|
-
/* @__PURE__ */
|
|
2225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col items-center justify-center gap-4 p-12 text-muted-foreground", children: [
|
|
2226
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.Loader2, { className: "w-8 h-8 animate-spin text-primary/80" }),
|
|
2227
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Loading data..." })
|
|
1753
2228
|
] });
|
|
1754
2229
|
}
|
|
1755
2230
|
function TableEmpty({ message = "No records found" }) {
|
|
1756
|
-
return /* @__PURE__ */
|
|
1757
|
-
/* @__PURE__ */
|
|
1758
|
-
/* @__PURE__ */
|
|
1759
|
-
] });
|
|
1760
|
-
}
|
|
1761
|
-
function renderPageNumbers(currentPage, totalPages, maxVisiblePages, onPageChange) {
|
|
1762
|
-
const getBtnClass = (active) => `flex h-8 w-8 items-center justify-center border-y border-primary/5 border-r border-primary/5 text-xs z-10 -ml-px transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring ${active ? "!bg-primary !text-primary-foreground !border-primary z-20" : "!bg-background !border-primary/5 hover-muted disabled:opacity-50"}`;
|
|
1763
|
-
if (totalPages <= maxVisiblePages) {
|
|
1764
|
-
return Array.from({ length: totalPages }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1765
|
-
"button",
|
|
1766
|
-
{
|
|
1767
|
-
onClick: () => onPageChange(i),
|
|
1768
|
-
"aria-label": `Go to page ${i + 1}`,
|
|
1769
|
-
"aria-current": currentPage === i ? "page" : void 0,
|
|
1770
|
-
className: getBtnClass(currentPage === i),
|
|
1771
|
-
children: i + 1
|
|
1772
|
-
},
|
|
1773
|
-
`page-${i}`
|
|
1774
|
-
));
|
|
1775
|
-
}
|
|
1776
|
-
const pages = [];
|
|
1777
|
-
const startPage = Math.max(0, currentPage - Math.floor(maxVisiblePages / 2));
|
|
1778
|
-
const endPage = Math.min(totalPages - 1, startPage + maxVisiblePages - 1);
|
|
1779
|
-
if (startPage > 0) {
|
|
1780
|
-
pages.push(
|
|
1781
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1782
|
-
"button",
|
|
1783
|
-
{
|
|
1784
|
-
onClick: () => onPageChange(0),
|
|
1785
|
-
"aria-label": "Go to page 1",
|
|
1786
|
-
className: getBtnClass(currentPage === 0),
|
|
1787
|
-
children: "1"
|
|
1788
|
-
},
|
|
1789
|
-
"page-0"
|
|
1790
|
-
)
|
|
1791
|
-
);
|
|
1792
|
-
if (startPage > 1) {
|
|
1793
|
-
pages.push(
|
|
1794
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1795
|
-
"span",
|
|
1796
|
-
{
|
|
1797
|
-
className: "flex h-8 w-8 items-center justify-center border-y border-primary/5 border-r border-primary/5 !border-primary/5 !bg-background text-muted-foreground text-xs -ml-px",
|
|
1798
|
-
"aria-hidden": "true",
|
|
1799
|
-
children: "..."
|
|
1800
|
-
},
|
|
1801
|
-
"ellipsis-start"
|
|
1802
|
-
)
|
|
1803
|
-
);
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
|
-
for (let i = startPage; i <= endPage; i++) {
|
|
1807
|
-
pages.push(
|
|
1808
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1809
|
-
"button",
|
|
1810
|
-
{
|
|
1811
|
-
onClick: () => onPageChange(i),
|
|
1812
|
-
"aria-label": `Go to page ${i + 1}`,
|
|
1813
|
-
"aria-current": currentPage === i ? "page" : void 0,
|
|
1814
|
-
className: getBtnClass(currentPage === i),
|
|
1815
|
-
children: i + 1
|
|
1816
|
-
},
|
|
1817
|
-
i
|
|
1818
|
-
)
|
|
1819
|
-
);
|
|
1820
|
-
}
|
|
1821
|
-
if (endPage < totalPages - 1) {
|
|
1822
|
-
if (endPage < totalPages - 2) {
|
|
1823
|
-
pages.push(
|
|
1824
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1825
|
-
"span",
|
|
1826
|
-
{
|
|
1827
|
-
className: "flex h-8 w-8 items-center justify-center border-y border-primary/5 border-r border-primary/5 !border-primary/5 !bg-background text-muted-foreground text-xs -ml-px",
|
|
1828
|
-
"aria-hidden": "true",
|
|
1829
|
-
children: "..."
|
|
1830
|
-
},
|
|
1831
|
-
"ellipsis-end"
|
|
1832
|
-
)
|
|
1833
|
-
);
|
|
1834
|
-
}
|
|
1835
|
-
pages.push(
|
|
1836
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1837
|
-
"button",
|
|
1838
|
-
{
|
|
1839
|
-
onClick: () => onPageChange(totalPages - 1),
|
|
1840
|
-
"aria-label": `Go to page ${totalPages}`,
|
|
1841
|
-
className: getBtnClass(currentPage === totalPages - 1),
|
|
1842
|
-
children: totalPages
|
|
1843
|
-
},
|
|
1844
|
-
totalPages - 1
|
|
1845
|
-
)
|
|
1846
|
-
);
|
|
1847
|
-
}
|
|
1848
|
-
return pages;
|
|
1849
|
-
}
|
|
1850
|
-
function TablePagination({
|
|
1851
|
-
meta,
|
|
1852
|
-
onPageChange,
|
|
1853
|
-
onPageSizeChange,
|
|
1854
|
-
config,
|
|
1855
|
-
isLoading = false
|
|
1856
|
-
}) {
|
|
1857
|
-
const {
|
|
1858
|
-
showPageSizeSelector = true,
|
|
1859
|
-
pageSizeOptions = [10, 20, 30, 50],
|
|
1860
|
-
maxVisiblePages = 5
|
|
1861
|
-
} = config || {};
|
|
1862
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row w-full items-center justify-between gap-4 text-xs sm:text-sm text-muted-foreground p-4 border-t border-primary/5", children: [
|
|
1863
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "whitespace-nowrap order-2 sm:order-1", children: [
|
|
1864
|
-
"Showing ",
|
|
1865
|
-
(meta.page - 1) * meta.limit + 1,
|
|
1866
|
-
"-",
|
|
1867
|
-
Math.min(meta.page * meta.limit, meta.total),
|
|
1868
|
-
" of ",
|
|
1869
|
-
meta.total,
|
|
1870
|
-
" entries"
|
|
1871
|
-
] }),
|
|
1872
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8 order-1 sm:order-2", children: [
|
|
1873
|
-
showPageSizeSelector && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
1874
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap hidden sm:inline-block", children: "Rows per page" }),
|
|
1875
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1876
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1877
|
-
"select",
|
|
1878
|
-
{
|
|
1879
|
-
id: "pageSize",
|
|
1880
|
-
value: meta.limit,
|
|
1881
|
-
onChange: (e) => {
|
|
1882
|
-
const newPageSize = Number(e.target.value);
|
|
1883
|
-
onPageSizeChange(newPageSize);
|
|
1884
|
-
},
|
|
1885
|
-
className: "h-8 w-[70px] appearance-none rounded-none border border-primary/5 bg-background px-2 py-1 text-sm font-medium focus-visible:outline-none focus:ring-1 focus:ring-ring disabled:opacity-50 hover-muted cursor-pointer",
|
|
1886
|
-
disabled: isLoading,
|
|
1887
|
-
children: pageSizeOptions.map((size) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: size, children: size }, size))
|
|
1888
|
-
}
|
|
1889
|
-
),
|
|
1890
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1891
|
-
"svg",
|
|
1892
|
-
{
|
|
1893
|
-
className: "h-3 w-3",
|
|
1894
|
-
fill: "none",
|
|
1895
|
-
viewBox: "0 0 24 24",
|
|
1896
|
-
stroke: "currentColor",
|
|
1897
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1898
|
-
"path",
|
|
1899
|
-
{
|
|
1900
|
-
strokeLinecap: "round",
|
|
1901
|
-
strokeLinejoin: "round",
|
|
1902
|
-
strokeWidth: 2,
|
|
1903
|
-
d: "M19 9l-7 7-7-7"
|
|
1904
|
-
}
|
|
1905
|
-
)
|
|
1906
|
-
}
|
|
1907
|
-
) })
|
|
1908
|
-
] })
|
|
1909
|
-
] }),
|
|
1910
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center -space-x-px", children: [
|
|
1911
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1912
|
-
"button",
|
|
1913
|
-
{
|
|
1914
|
-
onClick: () => onPageChange(0),
|
|
1915
|
-
disabled: meta.page === 0 || isLoading,
|
|
1916
|
-
className: "hidden sm:flex h-8 w-8 items-center justify-center rounded-none border border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1917
|
-
"aria-label": "First page",
|
|
1918
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsLeft, { className: "h-4 w-4" })
|
|
1919
|
-
}
|
|
1920
|
-
),
|
|
1921
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1922
|
-
"button",
|
|
1923
|
-
{
|
|
1924
|
-
onClick: () => onPageChange(meta.page - 1),
|
|
1925
|
-
disabled: meta.page === 0 || isLoading,
|
|
1926
|
-
className: "flex h-8 w-8 items-center justify-center rounded-none sm:rounded-none border border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1927
|
-
"aria-label": "Previous page",
|
|
1928
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
1929
|
-
}
|
|
1930
|
-
),
|
|
1931
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: renderPageNumbers(
|
|
1932
|
-
meta.page,
|
|
1933
|
-
meta.totalPages,
|
|
1934
|
-
maxVisiblePages,
|
|
1935
|
-
onPageChange
|
|
1936
|
-
) }),
|
|
1937
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1938
|
-
"button",
|
|
1939
|
-
{
|
|
1940
|
-
onClick: () => onPageChange(meta.page + 1),
|
|
1941
|
-
disabled: meta.page >= meta.totalPages - 1 || isLoading,
|
|
1942
|
-
className: "flex h-8 w-8 items-center justify-center rounded-none sm:rounded-none border-y border-primary/5 border-x border-primary/5 sm :border-r border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1943
|
-
"aria-label": "Next page",
|
|
1944
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
1945
|
-
}
|
|
1946
|
-
),
|
|
1947
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1948
|
-
"button",
|
|
1949
|
-
{
|
|
1950
|
-
onClick: () => onPageChange(meta.totalPages - 1),
|
|
1951
|
-
disabled: meta.page >= meta.totalPages - 1 || isLoading,
|
|
1952
|
-
className: "hidden sm:flex h-8 w-8 items-center justify-center rounded-none border border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1953
|
-
"aria-label": "Last page",
|
|
1954
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsRight, { className: "h-4 w-4" })
|
|
1955
|
-
}
|
|
1956
|
-
)
|
|
1957
|
-
] }),
|
|
1958
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "whitespace-nowrap hidden sm:block", children: [
|
|
1959
|
-
"Page ",
|
|
1960
|
-
meta.page + 1,
|
|
1961
|
-
" of ",
|
|
1962
|
-
meta.totalPages
|
|
1963
|
-
] })
|
|
1964
|
-
] })
|
|
2231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col items-center justify-center gap-4 p-16 text-center text-muted-foreground", children: [
|
|
2232
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex h-12 w-12 items-center justify-center rounded-md bg-primary/5", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.FileQuestion, { className: "h-6 w-6" }) }),
|
|
2233
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: message })
|
|
1965
2234
|
] });
|
|
1966
2235
|
}
|
|
1967
|
-
|
|
2236
|
+
|
|
2237
|
+
// src/components/table-skeleton.tsx
|
|
2238
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2239
|
+
var GrayBar = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className });
|
|
1968
2240
|
var TableSkeleton = ({
|
|
1969
2241
|
columns = 5,
|
|
1970
2242
|
rowCount = 8,
|
|
1971
2243
|
hideWrapper = false,
|
|
1972
2244
|
hideFooter = false
|
|
1973
2245
|
}) => {
|
|
1974
|
-
const content = /* @__PURE__ */
|
|
1975
|
-
/* @__PURE__ */
|
|
1976
|
-
/* @__PURE__ */
|
|
1977
|
-
/* @__PURE__ */
|
|
1978
|
-
/* @__PURE__ */
|
|
1979
|
-
/* @__PURE__ */
|
|
1980
|
-
/* @__PURE__ */
|
|
1981
|
-
/* @__PURE__ */
|
|
2246
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
2247
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "border-0 rounded-none shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Table, { children: [
|
|
2248
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-4 rounded-sm" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
|
|
2249
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-8 w-8 rounded-md" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
2250
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "w-9 rounded-md shrink-0" }),
|
|
2251
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "space-y-1.5 flex-1", children: [
|
|
2252
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-[120px]" }),
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-3 w-[80px]" })
|
|
1982
2254
|
] })
|
|
1983
|
-
] }) : /* @__PURE__ */
|
|
2255
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, colIdx)) }, rowIdx)) })
|
|
1984
2256
|
] }) }),
|
|
1985
|
-
!hideFooter && /* @__PURE__ */
|
|
1986
|
-
/* @__PURE__ */
|
|
1987
|
-
/* @__PURE__ */
|
|
1988
|
-
/* @__PURE__ */
|
|
1989
|
-
/* @__PURE__ */
|
|
1990
|
-
/* @__PURE__ */
|
|
2257
|
+
!hideFooter && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "table-footer border-t border-border", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center justify-between px-2 py-4 p-4", children: [
|
|
2258
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex items-center gap-2 text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[120px]" }) }),
|
|
2259
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-6", children: [
|
|
2260
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
2261
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-20" }),
|
|
2262
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-8 w-[70px]" })
|
|
1991
2263
|
] }),
|
|
1992
|
-
/* @__PURE__ */
|
|
1993
|
-
/* @__PURE__ */
|
|
1994
|
-
/* @__PURE__ */
|
|
1995
|
-
/* @__PURE__ */
|
|
1996
|
-
/* @__PURE__ */
|
|
1997
|
-
/* @__PURE__ */
|
|
2264
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
2265
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-8 w-8" }),
|
|
2266
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-8 w-8" }),
|
|
2267
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-8 w-8" }),
|
|
2268
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-8 w-8" }),
|
|
2269
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-8 w-8" })
|
|
1998
2270
|
] }),
|
|
1999
|
-
/* @__PURE__ */
|
|
2271
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[120px]" })
|
|
2000
2272
|
] })
|
|
2001
2273
|
] }) })
|
|
2002
2274
|
] });
|
|
2003
2275
|
if (hideWrapper) {
|
|
2004
2276
|
return content;
|
|
2005
2277
|
}
|
|
2006
|
-
return /* @__PURE__ */
|
|
2278
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "table-wrapper rounded-md border border-border bg-card overflow-hidden", children: content });
|
|
2007
2279
|
};
|
|
2008
2280
|
TableSkeleton.displayName = "TableSkeleton";
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
/* @__PURE__ */ jsxRuntime.jsx(TableBody, { children: data.map((item) => {
|
|
2154
|
-
const primaryValue = primaryColumn ? String(item[primaryColumn.key]) : String(item.id);
|
|
2155
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2156
|
-
TableRow,
|
|
2157
|
-
{
|
|
2158
|
-
className: cn(
|
|
2159
|
-
"hover-unified-table-row",
|
|
2160
|
-
onRowClick && "cursor-pointer"
|
|
2161
|
-
),
|
|
2162
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2163
|
-
role: onRowClick ? "button" : void 0,
|
|
2164
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2165
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2166
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2167
|
-
children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2168
|
-
TableCell,
|
|
2169
|
-
{
|
|
2170
|
-
className: column.cellClassName,
|
|
2171
|
-
children: column.render ? column.render(item[column.key], item) : String(item[column.key])
|
|
2172
|
-
},
|
|
2173
|
-
String(column.key)
|
|
2174
|
-
))
|
|
2175
|
-
},
|
|
2176
|
-
item.id
|
|
2177
|
-
);
|
|
2178
|
-
}) })
|
|
2179
|
-
] })
|
|
2180
|
-
}
|
|
2181
|
-
),
|
|
2182
|
-
footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-footer border-t border-primary/5 bg-[hsl(var(--table-header-bg))]", children: footer })
|
|
2183
|
-
] });
|
|
2184
|
-
}
|
|
2185
|
-
var ResponsiveTable = React5__namespace.forwardRef(ResponsiveTableInner);
|
|
2186
|
-
|
|
2187
|
-
// src/tailwind-preset.ts
|
|
2188
|
-
var uiPreset = {
|
|
2189
|
-
theme: {
|
|
2190
|
-
extend: {
|
|
2191
|
-
colors: {
|
|
2192
|
-
border: "hsl(var(--border))",
|
|
2193
|
-
input: "hsl(var(--input))",
|
|
2194
|
-
ring: "hsl(var(--ring))",
|
|
2195
|
-
background: "hsl(var(--background))",
|
|
2196
|
-
foreground: "hsl(var(--foreground))",
|
|
2197
|
-
primary: {
|
|
2198
|
-
DEFAULT: "hsl(var(--primary))",
|
|
2199
|
-
foreground: "hsl(var(--primary-foreground))"
|
|
2200
|
-
},
|
|
2201
|
-
secondary: {
|
|
2202
|
-
DEFAULT: "hsl(var(--secondary))",
|
|
2203
|
-
foreground: "hsl(var(--secondary-foreground))"
|
|
2204
|
-
},
|
|
2205
|
-
destructive: {
|
|
2206
|
-
DEFAULT: "hsl(var(--destructive))",
|
|
2207
|
-
foreground: "hsl(var(--destructive-foreground))"
|
|
2208
|
-
},
|
|
2209
|
-
success: {
|
|
2210
|
-
DEFAULT: "hsl(var(--success))",
|
|
2211
|
-
foreground: "hsl(var(--success-foreground))"
|
|
2212
|
-
},
|
|
2213
|
-
warning: {
|
|
2214
|
-
DEFAULT: "hsl(var(--warning))",
|
|
2215
|
-
foreground: "hsl(var(--warning-foreground))"
|
|
2216
|
-
},
|
|
2217
|
-
muted: {
|
|
2218
|
-
DEFAULT: "hsl(var(--muted))",
|
|
2219
|
-
foreground: "hsl(var(--muted-foreground))"
|
|
2220
|
-
},
|
|
2221
|
-
accent: {
|
|
2222
|
-
DEFAULT: "hsl(var(--accent))",
|
|
2223
|
-
foreground: "hsl(var(--accent-foreground))"
|
|
2224
|
-
},
|
|
2225
|
-
popover: {
|
|
2226
|
-
DEFAULT: "hsl(var(--popover))",
|
|
2227
|
-
foreground: "hsl(var(--popover-foreground))"
|
|
2228
|
-
},
|
|
2229
|
-
card: {
|
|
2230
|
-
DEFAULT: "hsl(var(--card))",
|
|
2231
|
-
foreground: "hsl(var(--card-foreground))"
|
|
2232
|
-
}
|
|
2233
|
-
},
|
|
2234
|
-
borderRadius: {
|
|
2235
|
-
lg: "var(--radius)",
|
|
2236
|
-
md: "calc(var(--radius) - 2px)",
|
|
2237
|
-
sm: "calc(var(--radius) - 4px)"
|
|
2238
|
-
},
|
|
2239
|
-
keyframes: {
|
|
2240
|
-
"accordion-down": {
|
|
2241
|
-
from: { height: "0" },
|
|
2242
|
-
to: { height: "var(--radix-accordion-content-height)" }
|
|
2243
|
-
},
|
|
2244
|
-
"accordion-up": {
|
|
2245
|
-
from: { height: "var(--radix-accordion-content-height)" },
|
|
2246
|
-
to: { height: "0" }
|
|
2247
|
-
}
|
|
2248
|
-
},
|
|
2249
|
-
animation: {
|
|
2250
|
-
"accordion-down": "accordion-down 0.3s cubic-bezier(0.87, 0, 0.13, 1)",
|
|
2251
|
-
"accordion-up": "accordion-up 0.3s cubic-bezier(0.87, 0, 0.13, 1)"
|
|
2252
|
-
}
|
|
2253
|
-
}
|
|
2254
|
-
}
|
|
2255
|
-
};
|
|
2256
|
-
var tailwind_preset_default = uiPreset;
|
|
2257
|
-
|
|
2258
|
-
Object.defineProperty(exports, "toast", {
|
|
2259
|
-
enumerable: true,
|
|
2260
|
-
get: function () { return sonner.toast; }
|
|
2281
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
2282
|
+
0 && (module.exports = {
|
|
2283
|
+
Accordion,
|
|
2284
|
+
AccordionContent,
|
|
2285
|
+
AccordionItem,
|
|
2286
|
+
AccordionTrigger,
|
|
2287
|
+
Alert,
|
|
2288
|
+
AlertDescription,
|
|
2289
|
+
AlertDialog,
|
|
2290
|
+
AlertDialogAction,
|
|
2291
|
+
AlertDialogCancel,
|
|
2292
|
+
AlertDialogContent,
|
|
2293
|
+
AlertDialogDescription,
|
|
2294
|
+
AlertDialogFooter,
|
|
2295
|
+
AlertDialogHeader,
|
|
2296
|
+
AlertDialogOverlay,
|
|
2297
|
+
AlertDialogPortal,
|
|
2298
|
+
AlertDialogTitle,
|
|
2299
|
+
AlertDialogTrigger,
|
|
2300
|
+
AlertTitle,
|
|
2301
|
+
Avatar,
|
|
2302
|
+
AvatarFallback,
|
|
2303
|
+
AvatarImage,
|
|
2304
|
+
Badge,
|
|
2305
|
+
Button,
|
|
2306
|
+
Card,
|
|
2307
|
+
CardAction,
|
|
2308
|
+
CardContent,
|
|
2309
|
+
CardDescription,
|
|
2310
|
+
CardFooter,
|
|
2311
|
+
CardHeader,
|
|
2312
|
+
CardTitle,
|
|
2313
|
+
Checkbox,
|
|
2314
|
+
Collapsible,
|
|
2315
|
+
CollapsibleContent,
|
|
2316
|
+
CollapsibleTrigger,
|
|
2317
|
+
Command,
|
|
2318
|
+
CommandDialog,
|
|
2319
|
+
CommandEmpty,
|
|
2320
|
+
CommandGroup,
|
|
2321
|
+
CommandInput,
|
|
2322
|
+
CommandItem,
|
|
2323
|
+
CommandList,
|
|
2324
|
+
CommandSeparator,
|
|
2325
|
+
CommandShortcut,
|
|
2326
|
+
Dialog,
|
|
2327
|
+
DialogClose,
|
|
2328
|
+
DialogContent,
|
|
2329
|
+
DialogDescription,
|
|
2330
|
+
DialogFooter,
|
|
2331
|
+
DialogHeader,
|
|
2332
|
+
DialogOverlay,
|
|
2333
|
+
DialogPortal,
|
|
2334
|
+
DialogTitle,
|
|
2335
|
+
DialogTrigger,
|
|
2336
|
+
DropdownMenu,
|
|
2337
|
+
DropdownMenuCheckboxItem,
|
|
2338
|
+
DropdownMenuContent,
|
|
2339
|
+
DropdownMenuGroup,
|
|
2340
|
+
DropdownMenuItem,
|
|
2341
|
+
DropdownMenuLabel,
|
|
2342
|
+
DropdownMenuPortal,
|
|
2343
|
+
DropdownMenuRadioGroup,
|
|
2344
|
+
DropdownMenuRadioItem,
|
|
2345
|
+
DropdownMenuSeparator,
|
|
2346
|
+
DropdownMenuShortcut,
|
|
2347
|
+
DropdownMenuSub,
|
|
2348
|
+
DropdownMenuSubContent,
|
|
2349
|
+
DropdownMenuSubTrigger,
|
|
2350
|
+
DropdownMenuTrigger,
|
|
2351
|
+
FormLabelWithTooltip,
|
|
2352
|
+
Grid,
|
|
2353
|
+
Input,
|
|
2354
|
+
Label,
|
|
2355
|
+
Popover,
|
|
2356
|
+
PopoverAnchor,
|
|
2357
|
+
PopoverContent,
|
|
2358
|
+
PopoverTrigger,
|
|
2359
|
+
PortalProvider,
|
|
2360
|
+
Progress,
|
|
2361
|
+
RadioGroup,
|
|
2362
|
+
RadioGroupItem,
|
|
2363
|
+
Select,
|
|
2364
|
+
SelectContent,
|
|
2365
|
+
SelectGroup,
|
|
2366
|
+
SelectItem,
|
|
2367
|
+
SelectLabel,
|
|
2368
|
+
SelectScrollDownButton,
|
|
2369
|
+
SelectScrollUpButton,
|
|
2370
|
+
SelectSeparator,
|
|
2371
|
+
SelectTrigger,
|
|
2372
|
+
SelectValue,
|
|
2373
|
+
Separator,
|
|
2374
|
+
Sheet,
|
|
2375
|
+
SheetClose,
|
|
2376
|
+
SheetContent,
|
|
2377
|
+
SheetDescription,
|
|
2378
|
+
SheetFooter,
|
|
2379
|
+
SheetHeader,
|
|
2380
|
+
SheetOverlay,
|
|
2381
|
+
SheetPortal,
|
|
2382
|
+
SheetTitle,
|
|
2383
|
+
SheetTrigger,
|
|
2384
|
+
Skeleton,
|
|
2385
|
+
Spinner,
|
|
2386
|
+
Stack,
|
|
2387
|
+
Stat,
|
|
2388
|
+
Switch,
|
|
2389
|
+
Table,
|
|
2390
|
+
TableBody,
|
|
2391
|
+
TableCaption,
|
|
2392
|
+
TableCell,
|
|
2393
|
+
TableEmpty,
|
|
2394
|
+
TableError,
|
|
2395
|
+
TableFooter,
|
|
2396
|
+
TableHead,
|
|
2397
|
+
TableHeader,
|
|
2398
|
+
TableLoading,
|
|
2399
|
+
TableRow,
|
|
2400
|
+
TableSearch,
|
|
2401
|
+
TableSkeleton,
|
|
2402
|
+
Tabs,
|
|
2403
|
+
TabsContent,
|
|
2404
|
+
TabsList,
|
|
2405
|
+
TabsTrigger,
|
|
2406
|
+
Textarea,
|
|
2407
|
+
Toaster,
|
|
2408
|
+
Tooltip,
|
|
2409
|
+
TooltipContent,
|
|
2410
|
+
TooltipProvider,
|
|
2411
|
+
TooltipTrigger,
|
|
2412
|
+
alertVariants,
|
|
2413
|
+
avatarVariants,
|
|
2414
|
+
badgeVariants,
|
|
2415
|
+
buttonVariants,
|
|
2416
|
+
cardVariants,
|
|
2417
|
+
dialogContentVariants,
|
|
2418
|
+
inputVariants,
|
|
2419
|
+
progressVariants,
|
|
2420
|
+
selectTriggerVariants,
|
|
2421
|
+
sheetVariants,
|
|
2422
|
+
spinnerVariants,
|
|
2423
|
+
toast,
|
|
2424
|
+
usePortalContainer
|
|
2261
2425
|
});
|
|
2262
|
-
exports.Accordion = Accordion;
|
|
2263
|
-
exports.AccordionContent = AccordionContent;
|
|
2264
|
-
exports.AccordionItem = AccordionItem;
|
|
2265
|
-
exports.AccordionTrigger = AccordionTrigger;
|
|
2266
|
-
exports.Alert = Alert;
|
|
2267
|
-
exports.AlertDescription = AlertDescription;
|
|
2268
|
-
exports.AlertDialog = AlertDialog;
|
|
2269
|
-
exports.AlertDialogAction = AlertDialogAction;
|
|
2270
|
-
exports.AlertDialogCancel = AlertDialogCancel;
|
|
2271
|
-
exports.AlertDialogContent = AlertDialogContent;
|
|
2272
|
-
exports.AlertDialogDescription = AlertDialogDescription;
|
|
2273
|
-
exports.AlertDialogFooter = AlertDialogFooter;
|
|
2274
|
-
exports.AlertDialogHeader = AlertDialogHeader;
|
|
2275
|
-
exports.AlertDialogOverlay = AlertDialogOverlay;
|
|
2276
|
-
exports.AlertDialogPortal = AlertDialogPortal;
|
|
2277
|
-
exports.AlertDialogTitle = AlertDialogTitle;
|
|
2278
|
-
exports.AlertDialogTrigger = AlertDialogTrigger;
|
|
2279
|
-
exports.AlertTitle = AlertTitle;
|
|
2280
|
-
exports.Avatar = Avatar;
|
|
2281
|
-
exports.AvatarFallback = AvatarFallback;
|
|
2282
|
-
exports.AvatarImage = AvatarImage;
|
|
2283
|
-
exports.Badge = Badge;
|
|
2284
|
-
exports.Button = Button;
|
|
2285
|
-
exports.Card = Card;
|
|
2286
|
-
exports.CardAction = CardAction;
|
|
2287
|
-
exports.CardContent = CardContent;
|
|
2288
|
-
exports.CardDescription = CardDescription;
|
|
2289
|
-
exports.CardFooter = CardFooter;
|
|
2290
|
-
exports.CardHeader = CardHeader;
|
|
2291
|
-
exports.CardTitle = CardTitle;
|
|
2292
|
-
exports.Checkbox = Checkbox;
|
|
2293
|
-
exports.Collapsible = Collapsible;
|
|
2294
|
-
exports.CollapsibleContent = CollapsibleContent2;
|
|
2295
|
-
exports.CollapsibleTrigger = CollapsibleTrigger2;
|
|
2296
|
-
exports.Command = Command;
|
|
2297
|
-
exports.CommandDialog = CommandDialog;
|
|
2298
|
-
exports.CommandEmpty = CommandEmpty;
|
|
2299
|
-
exports.CommandGroup = CommandGroup;
|
|
2300
|
-
exports.CommandInput = CommandInput;
|
|
2301
|
-
exports.CommandItem = CommandItem;
|
|
2302
|
-
exports.CommandList = CommandList;
|
|
2303
|
-
exports.CommandSeparator = CommandSeparator;
|
|
2304
|
-
exports.CommandShortcut = CommandShortcut;
|
|
2305
|
-
exports.Dialog = Dialog;
|
|
2306
|
-
exports.DialogClose = DialogClose;
|
|
2307
|
-
exports.DialogContent = DialogContent;
|
|
2308
|
-
exports.DialogDescription = DialogDescription;
|
|
2309
|
-
exports.DialogFooter = DialogFooter;
|
|
2310
|
-
exports.DialogHeader = DialogHeader;
|
|
2311
|
-
exports.DialogOverlay = DialogOverlay;
|
|
2312
|
-
exports.DialogPortal = DialogPortal;
|
|
2313
|
-
exports.DialogTitle = DialogTitle;
|
|
2314
|
-
exports.DialogTrigger = DialogTrigger;
|
|
2315
|
-
exports.DropdownMenu = DropdownMenu;
|
|
2316
|
-
exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
|
|
2317
|
-
exports.DropdownMenuContent = DropdownMenuContent;
|
|
2318
|
-
exports.DropdownMenuGroup = DropdownMenuGroup;
|
|
2319
|
-
exports.DropdownMenuItem = DropdownMenuItem;
|
|
2320
|
-
exports.DropdownMenuLabel = DropdownMenuLabel;
|
|
2321
|
-
exports.DropdownMenuPortal = DropdownMenuPortal;
|
|
2322
|
-
exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
|
|
2323
|
-
exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
|
|
2324
|
-
exports.DropdownMenuSeparator = DropdownMenuSeparator;
|
|
2325
|
-
exports.DropdownMenuShortcut = DropdownMenuShortcut;
|
|
2326
|
-
exports.DropdownMenuSub = DropdownMenuSub;
|
|
2327
|
-
exports.DropdownMenuSubContent = DropdownMenuSubContent;
|
|
2328
|
-
exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
|
|
2329
|
-
exports.DropdownMenuTrigger = DropdownMenuTrigger;
|
|
2330
|
-
exports.Input = Input;
|
|
2331
|
-
exports.Label = Label;
|
|
2332
|
-
exports.Popover = Popover;
|
|
2333
|
-
exports.PopoverAnchor = PopoverAnchor;
|
|
2334
|
-
exports.PopoverContent = PopoverContent;
|
|
2335
|
-
exports.PopoverTrigger = PopoverTrigger;
|
|
2336
|
-
exports.PortalProvider = PortalProvider;
|
|
2337
|
-
exports.Progress = Progress;
|
|
2338
|
-
exports.RadioGroup = RadioGroup;
|
|
2339
|
-
exports.RadioGroupItem = RadioGroupItem;
|
|
2340
|
-
exports.ResponsiveTable = ResponsiveTable;
|
|
2341
|
-
exports.Select = Select;
|
|
2342
|
-
exports.SelectContent = SelectContent;
|
|
2343
|
-
exports.SelectGroup = SelectGroup;
|
|
2344
|
-
exports.SelectItem = SelectItem;
|
|
2345
|
-
exports.SelectLabel = SelectLabel;
|
|
2346
|
-
exports.SelectScrollDownButton = SelectScrollDownButton;
|
|
2347
|
-
exports.SelectScrollUpButton = SelectScrollUpButton;
|
|
2348
|
-
exports.SelectSeparator = SelectSeparator;
|
|
2349
|
-
exports.SelectTrigger = SelectTrigger;
|
|
2350
|
-
exports.SelectValue = SelectValue;
|
|
2351
|
-
exports.Separator = Separator;
|
|
2352
|
-
exports.Sheet = Sheet;
|
|
2353
|
-
exports.SheetClose = SheetClose;
|
|
2354
|
-
exports.SheetContent = SheetContent;
|
|
2355
|
-
exports.SheetDescription = SheetDescription;
|
|
2356
|
-
exports.SheetFooter = SheetFooter;
|
|
2357
|
-
exports.SheetHeader = SheetHeader;
|
|
2358
|
-
exports.SheetOverlay = SheetOverlay;
|
|
2359
|
-
exports.SheetPortal = SheetPortal;
|
|
2360
|
-
exports.SheetTitle = SheetTitle;
|
|
2361
|
-
exports.SheetTrigger = SheetTrigger;
|
|
2362
|
-
exports.Skeleton = Skeleton;
|
|
2363
|
-
exports.Spinner = Spinner;
|
|
2364
|
-
exports.Switch = Switch;
|
|
2365
|
-
exports.Table = Table;
|
|
2366
|
-
exports.TableBody = TableBody;
|
|
2367
|
-
exports.TableCaption = TableCaption;
|
|
2368
|
-
exports.TableCell = TableCell;
|
|
2369
|
-
exports.TableEmpty = TableEmpty;
|
|
2370
|
-
exports.TableError = TableError;
|
|
2371
|
-
exports.TableFooter = TableFooter;
|
|
2372
|
-
exports.TableHead = TableHead;
|
|
2373
|
-
exports.TableHeader = TableHeader;
|
|
2374
|
-
exports.TableLoading = TableLoading;
|
|
2375
|
-
exports.TablePagination = TablePagination;
|
|
2376
|
-
exports.TableRow = TableRow;
|
|
2377
|
-
exports.TableSearch = TableSearch;
|
|
2378
|
-
exports.TableSkeleton = TableSkeleton;
|
|
2379
|
-
exports.Tabs = Tabs;
|
|
2380
|
-
exports.TabsContent = TabsContent;
|
|
2381
|
-
exports.TabsList = TabsList;
|
|
2382
|
-
exports.TabsTrigger = TabsTrigger;
|
|
2383
|
-
exports.Textarea = Textarea;
|
|
2384
|
-
exports.Toaster = Toaster;
|
|
2385
|
-
exports.Tooltip = Tooltip;
|
|
2386
|
-
exports.TooltipContent = TooltipContent;
|
|
2387
|
-
exports.TooltipProvider = TooltipProvider;
|
|
2388
|
-
exports.TooltipTrigger = TooltipTrigger;
|
|
2389
|
-
exports.alertVariants = alertVariants;
|
|
2390
|
-
exports.avatarVariants = avatarVariants;
|
|
2391
|
-
exports.badgeVariants = badgeVariants;
|
|
2392
|
-
exports.buttonVariants = buttonVariants;
|
|
2393
|
-
exports.cardVariants = cardVariants;
|
|
2394
|
-
exports.cn = cn;
|
|
2395
|
-
exports.dialogContentVariants = dialogContentVariants;
|
|
2396
|
-
exports.inputVariants = inputVariants;
|
|
2397
|
-
exports.progressVariants = progressVariants;
|
|
2398
|
-
exports.selectTriggerVariants = selectTriggerVariants;
|
|
2399
|
-
exports.sheetVariants = sheetVariants;
|
|
2400
|
-
exports.spinnerVariants = spinnerVariants;
|
|
2401
|
-
exports.uiPreset = tailwind_preset_default;
|
|
2402
|
-
exports.usePortalContainer = usePortalContainer;
|
|
2403
|
-
//# sourceMappingURL=index.cjs.map
|
|
2404
2426
|
//# sourceMappingURL=index.cjs.map
|