@nextlyhq/ui 0.0.2-alpha.4 → 0.0.2-alpha.40

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