@pos-360/horizon 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/animated-icons.d.mts +54 -0
  4. package/dist/animated-icons.d.ts +54 -0
  5. package/dist/animated-icons.js +28 -0
  6. package/dist/animated-icons.js.map +1 -0
  7. package/dist/animated-icons.mjs +3 -0
  8. package/dist/animated-icons.mjs.map +1 -0
  9. package/dist/chunk-2B2BWI5A.mjs +324 -0
  10. package/dist/chunk-2B2BWI5A.mjs.map +1 -0
  11. package/dist/chunk-6YAK6HNR.mjs +471 -0
  12. package/dist/chunk-6YAK6HNR.mjs.map +1 -0
  13. package/dist/chunk-7LVVOCBV.mjs +977 -0
  14. package/dist/chunk-7LVVOCBV.mjs.map +1 -0
  15. package/dist/chunk-AA25LTS4.js +4 -0
  16. package/dist/chunk-AA25LTS4.js.map +1 -0
  17. package/dist/chunk-J6RXKZE5.js +1080 -0
  18. package/dist/chunk-J6RXKZE5.js.map +1 -0
  19. package/dist/chunk-R5HAFV6M.js +350 -0
  20. package/dist/chunk-R5HAFV6M.js.map +1 -0
  21. package/dist/chunk-Y6G4VKJ3.mjs +3 -0
  22. package/dist/chunk-Y6G4VKJ3.mjs.map +1 -0
  23. package/dist/chunk-ZD6CMWPW.js +476 -0
  24. package/dist/chunk-ZD6CMWPW.js.map +1 -0
  25. package/dist/enhanced.d.mts +81 -0
  26. package/dist/enhanced.d.ts +81 -0
  27. package/dist/enhanced.js +24 -0
  28. package/dist/enhanced.js.map +1 -0
  29. package/dist/enhanced.mjs +3 -0
  30. package/dist/enhanced.mjs.map +1 -0
  31. package/dist/hooks.d.mts +2 -0
  32. package/dist/hooks.d.ts +2 -0
  33. package/dist/hooks.js +6 -0
  34. package/dist/hooks.js.map +1 -0
  35. package/dist/hooks.mjs +3 -0
  36. package/dist/hooks.mjs.map +1 -0
  37. package/dist/index.d.mts +25 -0
  38. package/dist/index.d.ts +25 -0
  39. package/dist/index.js +351 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/index.mjs +6 -0
  42. package/dist/index.mjs.map +1 -0
  43. package/dist/primitives.d.mts +168 -0
  44. package/dist/primitives.d.ts +168 -0
  45. package/dist/primitives.js +308 -0
  46. package/dist/primitives.js.map +1 -0
  47. package/dist/primitives.mjs +3 -0
  48. package/dist/primitives.mjs.map +1 -0
  49. package/dist/tailwind.d.mts +104 -0
  50. package/dist/tailwind.d.ts +104 -0
  51. package/dist/tailwind.js +75 -0
  52. package/dist/tailwind.js.map +1 -0
  53. package/dist/tailwind.mjs +73 -0
  54. package/dist/tailwind.mjs.map +1 -0
  55. package/package.json +103 -0
  56. package/tailwind.config.js +105 -0
@@ -0,0 +1,1080 @@
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+ var React9 = require('react');
6
+ var reactSlot = require('@radix-ui/react-slot');
7
+ var classVarianceAuthority = require('class-variance-authority');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+ var CheckboxPrimitive = require('@radix-ui/react-checkbox');
10
+ var lucideReact = require('lucide-react');
11
+ var DialogPrimitive = require('@radix-ui/react-dialog');
12
+ var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
13
+ var PopoverPrimitive = require('@radix-ui/react-popover');
14
+ var framerMotion = require('framer-motion');
15
+ var SelectPrimitive = require('@radix-ui/react-select');
16
+ var TabsPrimitive = require('@radix-ui/react-tabs');
17
+
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
20
+ var n = Object.create(null);
21
+ if (e) {
22
+ Object.keys(e).forEach(function (k) {
23
+ if (k !== 'default') {
24
+ var d = Object.getOwnPropertyDescriptor(e, k);
25
+ Object.defineProperty(n, k, d.get ? d : {
26
+ enumerable: true,
27
+ get: function () { return e[k]; }
28
+ });
29
+ }
30
+ });
31
+ }
32
+ n.default = e;
33
+ return Object.freeze(n);
34
+ }
35
+
36
+ var React9__namespace = /*#__PURE__*/_interopNamespace(React9);
37
+ var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
38
+ var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
39
+ var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
40
+ var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
41
+ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
42
+ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
43
+
44
+ function cn(...inputs) {
45
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
46
+ }
47
+ var buttonVariants = classVarianceAuthority.cva(
48
+ "group inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
49
+ {
50
+ variants: {
51
+ variant: {
52
+ default: "bg-blue-600 text-white shadow hover:bg-blue-700 active:bg-blue-800",
53
+ destructive: "bg-red-600 text-white shadow-sm hover:bg-red-700 active:bg-red-800",
54
+ outline: "border border-gray-300 bg-white text-gray-700 shadow-sm hover:bg-gray-50 hover:text-gray-900 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-200 dark:hover:bg-neutral-700",
55
+ secondary: "bg-gray-100 text-gray-900 shadow-sm hover:bg-gray-200 dark:bg-neutral-700 dark:text-gray-100 dark:hover:bg-neutral-600",
56
+ ghost: "text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-neutral-800 dark:hover:text-gray-100",
57
+ link: "text-blue-600 underline-offset-4 hover:underline dark:text-blue-400"
58
+ },
59
+ size: {
60
+ default: "h-9 px-4 py-2",
61
+ sm: "h-8 rounded-md px-3 text-xs",
62
+ lg: "h-10 rounded-md px-8",
63
+ icon: "h-9 w-9"
64
+ }
65
+ },
66
+ defaultVariants: {
67
+ variant: "default",
68
+ size: "default"
69
+ }
70
+ }
71
+ );
72
+ var Button = React9__namespace.forwardRef(
73
+ ({
74
+ className,
75
+ variant,
76
+ size,
77
+ asChild = false,
78
+ leadingDecorator,
79
+ trailingDecorator,
80
+ children,
81
+ ...props
82
+ }, ref) => {
83
+ const Comp = asChild ? reactSlot.Slot : "button";
84
+ if (asChild) {
85
+ return /* @__PURE__ */ jsxRuntime.jsx(
86
+ Comp,
87
+ {
88
+ className: cn(buttonVariants({ variant, size, className })),
89
+ ref,
90
+ ...props,
91
+ children
92
+ }
93
+ );
94
+ }
95
+ const hasDecorator = leadingDecorator || trailingDecorator;
96
+ return /* @__PURE__ */ jsxRuntime.jsxs(
97
+ Comp,
98
+ {
99
+ className: cn(buttonVariants({ variant, size, className })),
100
+ ref,
101
+ ...props,
102
+ children: [
103
+ leadingDecorator && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 transition-transform duration-200 group-hover:-translate-x-0.5", children: leadingDecorator }),
104
+ hasDecorator ? /* @__PURE__ */ jsxRuntime.jsx("span", { children }) : children,
105
+ trailingDecorator && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 transition-transform duration-200 group-hover:translate-x-0.5", children: trailingDecorator })
106
+ ]
107
+ }
108
+ );
109
+ }
110
+ );
111
+ Button.displayName = "Button";
112
+ var badgeVariants = classVarianceAuthority.cva(
113
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",
114
+ {
115
+ variants: {
116
+ variant: {
117
+ default: "border-transparent bg-blue-600 text-white hover:bg-blue-700",
118
+ secondary: "border-transparent bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-neutral-700 dark:text-gray-100 dark:hover:bg-neutral-600",
119
+ destructive: "border-transparent bg-red-600 text-white hover:bg-red-700",
120
+ outline: "border-gray-300 text-gray-700 dark:border-neutral-600 dark:text-gray-300",
121
+ success: "border-transparent bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400",
122
+ warning: "border-transparent bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400",
123
+ info: "border-transparent bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400",
124
+ purple: "border-transparent bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400",
125
+ purpleOutline: "border-purple-300 dark:border-purple-600 bg-transparent text-purple-700 dark:text-purple-300 hover:bg-purple-50 dark:hover:bg-purple-900/20"
126
+ }
127
+ },
128
+ defaultVariants: {
129
+ variant: "default"
130
+ }
131
+ }
132
+ );
133
+ function Badge({ className, variant, ...props }) {
134
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
135
+ }
136
+ var Card = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
137
+ "div",
138
+ {
139
+ ref,
140
+ className: cn(
141
+ "rounded-lg border border-gray-200 bg-white text-gray-900 shadow dark:border-neutral-700 dark:bg-neutral-800 dark:text-gray-100",
142
+ className
143
+ ),
144
+ ...props
145
+ }
146
+ ));
147
+ Card.displayName = "Card";
148
+ var CardHeader = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
149
+ "div",
150
+ {
151
+ ref,
152
+ className: cn("flex flex-col space-y-1.5 p-4", className),
153
+ ...props
154
+ }
155
+ ));
156
+ CardHeader.displayName = "CardHeader";
157
+ var CardTitle = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
158
+ "div",
159
+ {
160
+ ref,
161
+ className: cn("font-semibold leading-none tracking-tight", className),
162
+ ...props
163
+ }
164
+ ));
165
+ CardTitle.displayName = "CardTitle";
166
+ var CardDescription = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
167
+ "div",
168
+ {
169
+ ref,
170
+ className: cn("text-sm text-gray-500 dark:text-gray-400", className),
171
+ ...props
172
+ }
173
+ ));
174
+ CardDescription.displayName = "CardDescription";
175
+ var CardContent = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
176
+ "div",
177
+ {
178
+ ref,
179
+ className: cn("sm:p-6 p-4 sm:pt-0 pt-0", className),
180
+ ...props
181
+ }
182
+ ));
183
+ CardContent.displayName = "CardContent";
184
+ var CardFooter = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
185
+ "div",
186
+ {
187
+ ref,
188
+ className: cn("flex items-center p-6 pt-0", className),
189
+ ...props
190
+ }
191
+ ));
192
+ CardFooter.displayName = "CardFooter";
193
+ var Checkbox = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
194
+ CheckboxPrimitive__namespace.Root,
195
+ {
196
+ ref,
197
+ className: cn(
198
+ "peer h-4 w-4 shrink-0 rounded-sm border border-gray-300 shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-blue-600 data-[state=checked]:border-blue-600 data-[state=checked]:text-white dark:border-neutral-600 dark:data-[state=checked]:bg-blue-600",
199
+ className
200
+ ),
201
+ ...props,
202
+ children: /* @__PURE__ */ jsxRuntime.jsx(
203
+ CheckboxPrimitive__namespace.Indicator,
204
+ {
205
+ className: cn("flex items-center justify-center text-current"),
206
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3.5 w-3.5", strokeWidth: 3 })
207
+ }
208
+ )
209
+ }
210
+ ));
211
+ Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
212
+ var Dialog = DialogPrimitive__namespace.Root;
213
+ var DialogTrigger = DialogPrimitive__namespace.Trigger;
214
+ var DialogPortal = DialogPrimitive__namespace.Portal;
215
+ var DialogClose = DialogPrimitive__namespace.Close;
216
+ var DialogOverlay = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
217
+ DialogPrimitive__namespace.Overlay,
218
+ {
219
+ ref,
220
+ className: cn(
221
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
222
+ className
223
+ ),
224
+ ...props
225
+ }
226
+ ));
227
+ DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
228
+ var DialogContent = React9__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
229
+ /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
230
+ /* @__PURE__ */ jsxRuntime.jsxs(
231
+ DialogPrimitive__namespace.Content,
232
+ {
233
+ ref,
234
+ className: cn(
235
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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%] sm:rounded-lg dark:border-neutral-700 dark:bg-neutral-800",
236
+ className
237
+ ),
238
+ ...props,
239
+ children: [
240
+ children,
241
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500 dark:focus:ring-offset-gray-800 dark:data-[state=open]:bg-gray-700 dark:data-[state=open]:text-gray-400", children: [
242
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
243
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
244
+ ] })
245
+ ]
246
+ }
247
+ )
248
+ ] }));
249
+ DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
250
+ var DialogHeader = ({
251
+ className,
252
+ ...props
253
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
254
+ "div",
255
+ {
256
+ className: cn(
257
+ "flex flex-col space-y-1.5 text-center sm:text-left",
258
+ className
259
+ ),
260
+ ...props
261
+ }
262
+ );
263
+ DialogHeader.displayName = "DialogHeader";
264
+ var DialogFooter = ({
265
+ className,
266
+ ...props
267
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
268
+ "div",
269
+ {
270
+ className: cn(
271
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
272
+ className
273
+ ),
274
+ ...props
275
+ }
276
+ );
277
+ DialogFooter.displayName = "DialogFooter";
278
+ var DialogTitle = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
279
+ DialogPrimitive__namespace.Title,
280
+ {
281
+ ref,
282
+ className: cn(
283
+ "text-lg font-semibold leading-none tracking-tight text-gray-900 dark:text-gray-100",
284
+ className
285
+ ),
286
+ ...props
287
+ }
288
+ ));
289
+ DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
290
+ var DialogDescription = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
291
+ DialogPrimitive__namespace.Description,
292
+ {
293
+ ref,
294
+ className: cn("text-sm text-gray-500 dark:text-gray-400", className),
295
+ ...props
296
+ }
297
+ ));
298
+ DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
299
+ var DropdownMenu = DropdownMenuPrimitive__namespace.Root;
300
+ var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
301
+ var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
302
+ var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
303
+ var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
304
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
305
+ var DropdownMenuSubTrigger = React9__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
306
+ DropdownMenuPrimitive__namespace.SubTrigger,
307
+ {
308
+ ref,
309
+ className: cn(
310
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-gray-100 data-[state=open]:bg-gray-100 dark:focus:bg-gray-700 dark:data-[state=open]:bg-gray-700 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
311
+ inset && "pl-8",
312
+ className
313
+ ),
314
+ ...props,
315
+ children: [
316
+ children,
317
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto" })
318
+ ]
319
+ }
320
+ ));
321
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
322
+ var DropdownMenuSubContent = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
323
+ DropdownMenuPrimitive__namespace.SubContent,
324
+ {
325
+ ref,
326
+ className: cn(
327
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-900 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] dark:border-neutral-700 dark:bg-neutral-800 dark:text-gray-100",
328
+ className
329
+ ),
330
+ ...props
331
+ }
332
+ ));
333
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
334
+ var DropdownMenuContent = React9__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
335
+ DropdownMenuPrimitive__namespace.Content,
336
+ {
337
+ ref,
338
+ sideOffset,
339
+ className: cn(
340
+ "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-900 shadow-md dark:border-neutral-700 dark:bg-neutral-800 dark:text-gray-100",
341
+ "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]",
342
+ className
343
+ ),
344
+ ...props
345
+ }
346
+ ) }));
347
+ DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
348
+ var DropdownMenuItem = React9__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
349
+ DropdownMenuPrimitive__namespace.Item,
350
+ {
351
+ ref,
352
+ className: cn(
353
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-700 dark:focus:text-gray-100 [&>svg]:size-4 [&>svg]:shrink-0",
354
+ inset && "pl-8",
355
+ className
356
+ ),
357
+ ...props
358
+ }
359
+ ));
360
+ DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
361
+ var DropdownMenuCheckboxItem = React9__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
362
+ DropdownMenuPrimitive__namespace.CheckboxItem,
363
+ {
364
+ ref,
365
+ className: cn(
366
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-700 dark:focus:text-gray-100",
367
+ className
368
+ ),
369
+ checked,
370
+ ...props,
371
+ children: [
372
+ /* @__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" }) }) }),
373
+ children
374
+ ]
375
+ }
376
+ ));
377
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
378
+ var DropdownMenuRadioItem = React9__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
379
+ DropdownMenuPrimitive__namespace.RadioItem,
380
+ {
381
+ ref,
382
+ className: cn(
383
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-700 dark:focus:text-gray-100",
384
+ className
385
+ ),
386
+ ...props,
387
+ children: [
388
+ /* @__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" }) }) }),
389
+ children
390
+ ]
391
+ }
392
+ ));
393
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
394
+ var DropdownMenuLabel = React9__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
395
+ DropdownMenuPrimitive__namespace.Label,
396
+ {
397
+ ref,
398
+ className: cn(
399
+ "px-2 py-1.5 text-sm font-semibold",
400
+ inset && "pl-8",
401
+ className
402
+ ),
403
+ ...props
404
+ }
405
+ ));
406
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
407
+ var DropdownMenuSeparator = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
408
+ DropdownMenuPrimitive__namespace.Separator,
409
+ {
410
+ ref,
411
+ className: cn("-mx-1 my-1 h-px bg-gray-100 dark:bg-neutral-700", className),
412
+ ...props
413
+ }
414
+ ));
415
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
416
+ var DropdownMenuShortcut = ({
417
+ className,
418
+ ...props
419
+ }) => {
420
+ return /* @__PURE__ */ jsxRuntime.jsx(
421
+ "span",
422
+ {
423
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
424
+ ...props
425
+ }
426
+ );
427
+ };
428
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
429
+ var PopoverContext = React9__namespace.createContext({ open: false });
430
+ var Popover = ({
431
+ children,
432
+ open: controlledOpen,
433
+ onOpenChange,
434
+ ...props
435
+ }) => {
436
+ const [uncontrolledOpen, setUncontrolledOpen] = React9__namespace.useState(false);
437
+ const isControlled = controlledOpen !== void 0;
438
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
439
+ const handleOpenChange = (newOpen) => {
440
+ if (!isControlled) {
441
+ setUncontrolledOpen(newOpen);
442
+ }
443
+ onOpenChange?.(newOpen);
444
+ };
445
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverContext.Provider, { value: { open }, children: /* @__PURE__ */ jsxRuntime.jsx(
446
+ PopoverPrimitive__namespace.Root,
447
+ {
448
+ open,
449
+ onOpenChange: handleOpenChange,
450
+ ...props,
451
+ children
452
+ }
453
+ ) });
454
+ };
455
+ var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
456
+ var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
457
+ var PopoverContent = React9__namespace.forwardRef(({ className, align = "center", sideOffset = 4, children, ...props }, ref) => {
458
+ const { open } = React9__namespace.useContext(PopoverContext);
459
+ const {
460
+ onOpenAutoFocus,
461
+ onCloseAutoFocus,
462
+ onEscapeKeyDown,
463
+ onPointerDownOutside,
464
+ onFocusOutside,
465
+ onInteractOutside,
466
+ side,
467
+ avoidCollisions,
468
+ collisionBoundary,
469
+ collisionPadding,
470
+ arrowPadding,
471
+ sticky,
472
+ hideWhenDetached
473
+ } = props;
474
+ return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(
475
+ PopoverPrimitive__namespace.Content,
476
+ {
477
+ ref,
478
+ align,
479
+ sideOffset,
480
+ side,
481
+ avoidCollisions,
482
+ collisionBoundary,
483
+ collisionPadding,
484
+ arrowPadding,
485
+ sticky,
486
+ hideWhenDetached,
487
+ onOpenAutoFocus,
488
+ onCloseAutoFocus,
489
+ onEscapeKeyDown,
490
+ onPointerDownOutside,
491
+ onFocusOutside,
492
+ onInteractOutside,
493
+ asChild: true,
494
+ forceMount: true,
495
+ children: /* @__PURE__ */ jsxRuntime.jsx(
496
+ framerMotion.motion.div,
497
+ {
498
+ initial: { opacity: 0, scale: 0.96, y: -8 },
499
+ animate: { opacity: 1, scale: 1, y: 0 },
500
+ exit: { opacity: 0, scale: 0.96, y: -8 },
501
+ transition: {
502
+ type: "spring",
503
+ stiffness: 400,
504
+ damping: 25,
505
+ mass: 0.8
506
+ },
507
+ className: cn(
508
+ "z-50 w-72 rounded-xl border border-white/20 bg-white/80 backdrop-blur-xl p-4 text-gray-900 shadow-lg outline-none dark:border-neutral-700/50 dark:bg-neutral-900/80 dark:text-neutral-100 origin-[--radix-popover-content-transform-origin]",
509
+ className
510
+ ),
511
+ children
512
+ }
513
+ )
514
+ }
515
+ ) }) });
516
+ });
517
+ PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
518
+ var SelectContext = React9__namespace.createContext({ open: false });
519
+ var Select = ({
520
+ children,
521
+ open: controlledOpen,
522
+ onOpenChange,
523
+ ...props
524
+ }) => {
525
+ const [uncontrolledOpen, setUncontrolledOpen] = React9__namespace.useState(false);
526
+ const isControlled = controlledOpen !== void 0;
527
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
528
+ const handleOpenChange = (newOpen) => {
529
+ if (!isControlled) {
530
+ setUncontrolledOpen(newOpen);
531
+ }
532
+ onOpenChange?.(newOpen);
533
+ };
534
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectContext.Provider, { value: { open }, children: /* @__PURE__ */ jsxRuntime.jsx(
535
+ SelectPrimitive__namespace.Root,
536
+ {
537
+ open,
538
+ onOpenChange: handleOpenChange,
539
+ ...props,
540
+ children
541
+ }
542
+ ) });
543
+ };
544
+ var SelectGroup = SelectPrimitive__namespace.Group;
545
+ var SelectValue = SelectPrimitive__namespace.Value;
546
+ var SelectTrigger = React9__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
547
+ SelectPrimitive__namespace.Trigger,
548
+ {
549
+ ref,
550
+ className: cn(
551
+ "flex h-10 w-full items-center justify-between rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-100 dark:placeholder:text-gray-500 [&>span]:line-clamp-1",
552
+ className
553
+ ),
554
+ ...props,
555
+ children: [
556
+ children,
557
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
558
+ ]
559
+ }
560
+ ));
561
+ SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
562
+ var SelectScrollUpButton = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
563
+ SelectPrimitive__namespace.ScrollUpButton,
564
+ {
565
+ ref,
566
+ className: cn(
567
+ "flex cursor-default items-center justify-center py-1",
568
+ className
569
+ ),
570
+ ...props,
571
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" })
572
+ }
573
+ ));
574
+ SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
575
+ var SelectScrollDownButton = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
576
+ SelectPrimitive__namespace.ScrollDownButton,
577
+ {
578
+ ref,
579
+ className: cn(
580
+ "flex cursor-default items-center justify-center py-1",
581
+ className
582
+ ),
583
+ ...props,
584
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" })
585
+ }
586
+ ));
587
+ SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
588
+ var SelectContent = React9__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => {
589
+ const { open } = React9__namespace.useContext(SelectContext);
590
+ const {
591
+ onCloseAutoFocus,
592
+ onEscapeKeyDown,
593
+ onPointerDownOutside,
594
+ side,
595
+ sideOffset,
596
+ align,
597
+ alignOffset,
598
+ avoidCollisions,
599
+ collisionBoundary,
600
+ collisionPadding,
601
+ arrowPadding,
602
+ sticky,
603
+ hideWhenDetached
604
+ } = props;
605
+ return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
606
+ SelectPrimitive__namespace.Content,
607
+ {
608
+ ref,
609
+ position,
610
+ side,
611
+ sideOffset,
612
+ align,
613
+ alignOffset,
614
+ avoidCollisions,
615
+ collisionBoundary,
616
+ collisionPadding,
617
+ arrowPadding,
618
+ sticky,
619
+ hideWhenDetached,
620
+ onCloseAutoFocus,
621
+ onEscapeKeyDown,
622
+ onPointerDownOutside,
623
+ asChild: true,
624
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
625
+ framerMotion.motion.div,
626
+ {
627
+ initial: { opacity: 0, scale: 0.96, y: -8 },
628
+ animate: { opacity: 1, scale: 1, y: 0 },
629
+ exit: { opacity: 0, scale: 0.96, y: -8 },
630
+ transition: {
631
+ type: "spring",
632
+ stiffness: 400,
633
+ damping: 25,
634
+ mass: 0.8
635
+ },
636
+ className: cn(
637
+ "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-xl border border-white/20 bg-white/80 backdrop-blur-xl text-gray-900 shadow-lg dark:border-neutral-700/50 dark:bg-neutral-900/80 dark:text-gray-100 origin-[--radix-select-content-transform-origin]",
638
+ 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",
639
+ className
640
+ ),
641
+ children: [
642
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
643
+ /* @__PURE__ */ jsxRuntime.jsx(
644
+ SelectPrimitive__namespace.Viewport,
645
+ {
646
+ className: cn(
647
+ "p-1",
648
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
649
+ ),
650
+ children
651
+ }
652
+ ),
653
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
654
+ ]
655
+ }
656
+ )
657
+ }
658
+ ) }) });
659
+ });
660
+ SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
661
+ var SelectLabel = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
662
+ SelectPrimitive__namespace.Label,
663
+ {
664
+ ref,
665
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
666
+ ...props
667
+ }
668
+ ));
669
+ SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
670
+ var SelectItem = React9__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
671
+ SelectPrimitive__namespace.Item,
672
+ {
673
+ ref,
674
+ className: cn(
675
+ "relative flex w-full cursor-default select-none items-center rounded-lg py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-black/5 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-white/10 dark:focus:text-gray-100 transition-colors",
676
+ className
677
+ ),
678
+ ...props,
679
+ children: [
680
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
681
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
682
+ ]
683
+ }
684
+ ));
685
+ SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
686
+ var SelectSeparator = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
687
+ SelectPrimitive__namespace.Separator,
688
+ {
689
+ ref,
690
+ className: cn("-mx-1 my-1 h-px bg-gray-200/50 dark:bg-neutral-700/50", className),
691
+ ...props
692
+ }
693
+ ));
694
+ SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
695
+ function Skeleton({ className }) {
696
+ return /* @__PURE__ */ jsxRuntime.jsx(
697
+ "div",
698
+ {
699
+ className: cn(
700
+ "animate-pulse rounded-md bg-neutral-200 dark:bg-neutral-800",
701
+ className
702
+ )
703
+ }
704
+ );
705
+ }
706
+ function SkeletonText({ className }) {
707
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("h-4", className) });
708
+ }
709
+ function SkeletonTitle({ className }) {
710
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("h-6 w-48", className) });
711
+ }
712
+ function SkeletonSubtitle({ className }) {
713
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("h-3 w-64", className) });
714
+ }
715
+ function SkeletonAvatar({ className }) {
716
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("w-10 h-10 rounded", className) });
717
+ }
718
+ function SkeletonBadge({ className }) {
719
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("h-6 w-24", className) });
720
+ }
721
+ function SkeletonIcon({ className }) {
722
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("w-6 h-6 rounded", className) });
723
+ }
724
+ function SkeletonButton({ className }) {
725
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("h-10 w-24 rounded-md", className) });
726
+ }
727
+ function SkeletonInput({ className }) {
728
+ return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: cn("h-10 w-full rounded-md", className) });
729
+ }
730
+ function SkeletonTableRow({
731
+ columns = 4,
732
+ className
733
+ }) {
734
+ return /* @__PURE__ */ jsxRuntime.jsx("tr", { className, children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-6 py-4", children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-full" }) }, index)) });
735
+ }
736
+ function SkeletonTableRows({
737
+ count = 5,
738
+ columns = 4
739
+ }) {
740
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(SkeletonTableRow, { columns }, `skeleton-row-${index}`)) });
741
+ }
742
+ function SkeletonCard({ className }) {
743
+ return /* @__PURE__ */ jsxRuntime.jsxs(
744
+ "div",
745
+ {
746
+ className: cn(
747
+ "rounded-lg border bg-card p-6 space-y-4",
748
+ className
749
+ ),
750
+ children: [
751
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-6 w-3/4" }),
752
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-full" }),
753
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-5/6" }),
754
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2 pt-2", children: [
755
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonBadge, {}),
756
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonBadge, { className: "w-16" })
757
+ ] })
758
+ ]
759
+ }
760
+ );
761
+ }
762
+ var Table = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
763
+ "table",
764
+ {
765
+ ref,
766
+ className: cn("w-full caption-bottom text-sm", className),
767
+ ...props
768
+ }
769
+ ) }));
770
+ Table.displayName = "Table";
771
+ var TableHeader = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
772
+ "thead",
773
+ {
774
+ ref,
775
+ className: cn("[&_tr]:border-b [&_tr]:border-gray-200 dark:[&_tr]:border-gray-700", className),
776
+ ...props
777
+ }
778
+ ));
779
+ TableHeader.displayName = "TableHeader";
780
+ var TableBody = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
781
+ "tbody",
782
+ {
783
+ ref,
784
+ className: cn("[&_tr:last-child]:border-0", className),
785
+ ...props
786
+ }
787
+ ));
788
+ TableBody.displayName = "TableBody";
789
+ var TableFooter = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
790
+ "tfoot",
791
+ {
792
+ ref,
793
+ className: cn(
794
+ "border-t border-gray-200 bg-gray-50 font-medium dark:border-neutral-700 dark:bg-neutral-800/50 [&>tr]:last:border-b-0",
795
+ className
796
+ ),
797
+ ...props
798
+ }
799
+ ));
800
+ TableFooter.displayName = "TableFooter";
801
+ var TableRow = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
802
+ "tr",
803
+ {
804
+ ref,
805
+ className: cn(
806
+ "border-b border-gray-200 transition-colors hover:bg-gray-50 data-[state=selected]:bg-gray-100 dark:border-neutral-700 dark:hover:bg-neutral-800/50 dark:data-[state=selected]:bg-gray-800",
807
+ className
808
+ ),
809
+ ...props
810
+ }
811
+ ));
812
+ TableRow.displayName = "TableRow";
813
+ var TableHead = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
814
+ "th",
815
+ {
816
+ ref,
817
+ className: cn(
818
+ "h-12 px-4 text-left align-middle font-medium text-gray-500 dark:text-gray-400 [&:has([role=checkbox])]:pr-0",
819
+ className
820
+ ),
821
+ ...props
822
+ }
823
+ ));
824
+ TableHead.displayName = "TableHead";
825
+ var TableCell = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
826
+ "td",
827
+ {
828
+ ref,
829
+ className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
830
+ ...props
831
+ }
832
+ ));
833
+ TableCell.displayName = "TableCell";
834
+ var TableCaption = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
835
+ "caption",
836
+ {
837
+ ref,
838
+ className: cn("mt-4 text-sm text-gray-500 dark:text-gray-400", className),
839
+ ...props
840
+ }
841
+ ));
842
+ TableCaption.displayName = "TableCaption";
843
+ var TabsContext = React9__namespace.createContext(null);
844
+ var useTabsContext = () => {
845
+ const context = React9__namespace.useContext(TabsContext);
846
+ if (!context) {
847
+ throw new Error("Tabs components must be used within a Tabs provider");
848
+ }
849
+ return context;
850
+ };
851
+ var Tabs = React9__namespace.forwardRef(({ defaultValue, value, onValueChange, children, ...props }, ref) => {
852
+ const [activeTab, setActiveTabState] = React9__namespace.useState(value ?? defaultValue);
853
+ const tabRefs = React9__namespace.useRef(/* @__PURE__ */ new Map()).current;
854
+ const listRef = React9__namespace.useRef(null);
855
+ const setActiveTab = React9__namespace.useCallback(
856
+ (newValue) => {
857
+ setActiveTabState(newValue);
858
+ onValueChange?.(newValue);
859
+ },
860
+ [onValueChange]
861
+ );
862
+ React9__namespace.useEffect(() => {
863
+ if (value !== void 0) {
864
+ setActiveTabState(value);
865
+ }
866
+ }, [value]);
867
+ const registerTab = React9__namespace.useCallback(
868
+ (tabValue, element) => {
869
+ tabRefs.set(tabValue, element);
870
+ },
871
+ [tabRefs]
872
+ );
873
+ return /* @__PURE__ */ jsxRuntime.jsx(
874
+ TabsContext.Provider,
875
+ {
876
+ value: { activeTab, setActiveTab, registerTab, tabRefs, listRef },
877
+ children: /* @__PURE__ */ jsxRuntime.jsx(
878
+ TabsPrimitive__namespace.Root,
879
+ {
880
+ ref,
881
+ defaultValue,
882
+ value: activeTab,
883
+ onValueChange: setActiveTab,
884
+ ...props,
885
+ children
886
+ }
887
+ )
888
+ }
889
+ );
890
+ });
891
+ Tabs.displayName = "Tabs";
892
+ var TabsList = React9__namespace.forwardRef(({ className, children, ...props }, ref) => {
893
+ const { activeTab, tabRefs, listRef } = useTabsContext();
894
+ const [indicatorStyle, setIndicatorStyle] = React9__namespace.useState(null);
895
+ React9__namespace.useEffect(() => {
896
+ const updateIndicator = () => {
897
+ if (!activeTab || !listRef.current) return;
898
+ const activeElement = tabRefs.get(activeTab);
899
+ if (!activeElement) return;
900
+ const listRect = listRef.current.getBoundingClientRect();
901
+ const tabRect = activeElement.getBoundingClientRect();
902
+ setIndicatorStyle({
903
+ left: tabRect.left - listRect.left,
904
+ width: tabRect.width
905
+ });
906
+ };
907
+ updateIndicator();
908
+ window.addEventListener("resize", updateIndicator);
909
+ return () => window.removeEventListener("resize", updateIndicator);
910
+ }, [activeTab, tabRefs, listRef]);
911
+ return /* @__PURE__ */ jsxRuntime.jsxs(
912
+ TabsPrimitive__namespace.List,
913
+ {
914
+ ref: (node) => {
915
+ if (typeof ref === "function") ref(node);
916
+ else if (ref) ref.current = node;
917
+ listRef.current = node;
918
+ },
919
+ className: cn(
920
+ "relative inline-flex h-10 items-center justify-center rounded-lg bg-gray-100 p-1 text-gray-500 dark:bg-neutral-800 dark:text-gray-400",
921
+ className
922
+ ),
923
+ ...props,
924
+ children: [
925
+ indicatorStyle && /* @__PURE__ */ jsxRuntime.jsx(
926
+ framerMotion.motion.div,
927
+ {
928
+ className: "absolute h-8 bg-white dark:bg-neutral-900 rounded-md shadow-sm",
929
+ initial: false,
930
+ animate: {
931
+ left: indicatorStyle.left,
932
+ width: indicatorStyle.width
933
+ },
934
+ transition: {
935
+ type: "spring",
936
+ stiffness: 500,
937
+ damping: 35
938
+ }
939
+ }
940
+ ),
941
+ children
942
+ ]
943
+ }
944
+ );
945
+ });
946
+ TabsList.displayName = TabsPrimitive__namespace.List.displayName;
947
+ var TabsTrigger = React9__namespace.forwardRef(({ className, value, ...props }, ref) => {
948
+ const { registerTab, activeTab } = useTabsContext();
949
+ const triggerRef = React9__namespace.useRef(null);
950
+ React9__namespace.useEffect(() => {
951
+ registerTab(value, triggerRef.current);
952
+ return () => registerTab(value, null);
953
+ }, [value, registerTab]);
954
+ const isActive = activeTab === value;
955
+ return /* @__PURE__ */ jsxRuntime.jsx(
956
+ TabsPrimitive__namespace.Trigger,
957
+ {
958
+ ref: (node) => {
959
+ triggerRef.current = node;
960
+ if (typeof ref === "function") ref(node);
961
+ else if (ref) ref.current = node;
962
+ },
963
+ value,
964
+ className: cn(
965
+ "relative z-10 inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
966
+ isActive ? "text-gray-900 dark:text-gray-100" : "text-gray-500 dark:text-gray-400",
967
+ className
968
+ ),
969
+ ...props
970
+ }
971
+ );
972
+ });
973
+ TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
974
+ var TabsContent = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
975
+ TabsPrimitive__namespace.Content,
976
+ {
977
+ ref,
978
+ className: cn(
979
+ "mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
980
+ className
981
+ ),
982
+ ...props
983
+ }
984
+ ));
985
+ TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
986
+ var Textarea = React9__namespace.forwardRef(
987
+ ({ className, ...props }, ref) => {
988
+ return /* @__PURE__ */ jsxRuntime.jsx(
989
+ "textarea",
990
+ {
991
+ className: cn(
992
+ "flex min-h-[80px] w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-100 dark:placeholder:text-gray-500",
993
+ className
994
+ ),
995
+ ref,
996
+ ...props
997
+ }
998
+ );
999
+ }
1000
+ );
1001
+ Textarea.displayName = "Textarea";
1002
+
1003
+ exports.Badge = Badge;
1004
+ exports.Button = Button;
1005
+ exports.Card = Card;
1006
+ exports.CardContent = CardContent;
1007
+ exports.CardDescription = CardDescription;
1008
+ exports.CardFooter = CardFooter;
1009
+ exports.CardHeader = CardHeader;
1010
+ exports.CardTitle = CardTitle;
1011
+ exports.Checkbox = Checkbox;
1012
+ exports.Dialog = Dialog;
1013
+ exports.DialogClose = DialogClose;
1014
+ exports.DialogContent = DialogContent;
1015
+ exports.DialogDescription = DialogDescription;
1016
+ exports.DialogFooter = DialogFooter;
1017
+ exports.DialogHeader = DialogHeader;
1018
+ exports.DialogOverlay = DialogOverlay;
1019
+ exports.DialogPortal = DialogPortal;
1020
+ exports.DialogTitle = DialogTitle;
1021
+ exports.DialogTrigger = DialogTrigger;
1022
+ exports.DropdownMenu = DropdownMenu;
1023
+ exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
1024
+ exports.DropdownMenuContent = DropdownMenuContent;
1025
+ exports.DropdownMenuGroup = DropdownMenuGroup;
1026
+ exports.DropdownMenuItem = DropdownMenuItem;
1027
+ exports.DropdownMenuLabel = DropdownMenuLabel;
1028
+ exports.DropdownMenuPortal = DropdownMenuPortal;
1029
+ exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
1030
+ exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
1031
+ exports.DropdownMenuSeparator = DropdownMenuSeparator;
1032
+ exports.DropdownMenuShortcut = DropdownMenuShortcut;
1033
+ exports.DropdownMenuSub = DropdownMenuSub;
1034
+ exports.DropdownMenuSubContent = DropdownMenuSubContent;
1035
+ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
1036
+ exports.DropdownMenuTrigger = DropdownMenuTrigger;
1037
+ exports.Popover = Popover;
1038
+ exports.PopoverAnchor = PopoverAnchor;
1039
+ exports.PopoverContent = PopoverContent;
1040
+ exports.PopoverTrigger = PopoverTrigger;
1041
+ exports.Select = Select;
1042
+ exports.SelectContent = SelectContent;
1043
+ exports.SelectGroup = SelectGroup;
1044
+ exports.SelectItem = SelectItem;
1045
+ exports.SelectLabel = SelectLabel;
1046
+ exports.SelectScrollDownButton = SelectScrollDownButton;
1047
+ exports.SelectScrollUpButton = SelectScrollUpButton;
1048
+ exports.SelectSeparator = SelectSeparator;
1049
+ exports.SelectTrigger = SelectTrigger;
1050
+ exports.SelectValue = SelectValue;
1051
+ exports.Skeleton = Skeleton;
1052
+ exports.SkeletonAvatar = SkeletonAvatar;
1053
+ exports.SkeletonBadge = SkeletonBadge;
1054
+ exports.SkeletonButton = SkeletonButton;
1055
+ exports.SkeletonCard = SkeletonCard;
1056
+ exports.SkeletonIcon = SkeletonIcon;
1057
+ exports.SkeletonInput = SkeletonInput;
1058
+ exports.SkeletonSubtitle = SkeletonSubtitle;
1059
+ exports.SkeletonTableRow = SkeletonTableRow;
1060
+ exports.SkeletonTableRows = SkeletonTableRows;
1061
+ exports.SkeletonText = SkeletonText;
1062
+ exports.SkeletonTitle = SkeletonTitle;
1063
+ exports.Table = Table;
1064
+ exports.TableBody = TableBody;
1065
+ exports.TableCaption = TableCaption;
1066
+ exports.TableCell = TableCell;
1067
+ exports.TableFooter = TableFooter;
1068
+ exports.TableHead = TableHead;
1069
+ exports.TableHeader = TableHeader;
1070
+ exports.TableRow = TableRow;
1071
+ exports.Tabs = Tabs;
1072
+ exports.TabsContent = TabsContent;
1073
+ exports.TabsList = TabsList;
1074
+ exports.TabsTrigger = TabsTrigger;
1075
+ exports.Textarea = Textarea;
1076
+ exports.badgeVariants = badgeVariants;
1077
+ exports.buttonVariants = buttonVariants;
1078
+ exports.cn = cn;
1079
+ //# sourceMappingURL=chunk-J6RXKZE5.js.map
1080
+ //# sourceMappingURL=chunk-J6RXKZE5.js.map