@moontra/moonui 0.1.0 → 2.0.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.
package/dist/index.js CHANGED
@@ -1,58 +1,68 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ 'use strict';
28
2
 
29
- // src/index.tsx
30
- var src_exports = {};
31
- __export(src_exports, {
32
- Badge: () => Badge,
33
- Button: () => Button,
34
- Card: () => Card,
35
- CardContent: () => CardContent,
36
- CardDescription: () => CardDescription,
37
- CardFooter: () => CardFooter,
38
- CardHeader: () => CardHeader,
39
- CardTitle: () => CardTitle,
40
- badgeVariants: () => badgeVariants,
41
- buttonVariants: () => buttonVariants,
42
- cn: () => cn,
43
- combineRefs: () => combineRefs,
44
- debounce: () => debounce,
45
- formatCurrency: () => formatCurrency,
46
- generateId: () => generateId,
47
- get: () => get
48
- });
49
- module.exports = __toCommonJS(src_exports);
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+ var React32 = require('react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var classVarianceAuthority = require('class-variance-authority');
8
+ var LabelPrimitive = require('@radix-ui/react-label');
9
+ var SeparatorPrimitive = require('@radix-ui/react-separator');
10
+ var SelectPrimitive = require('@radix-ui/react-select');
11
+ var lucideReact = require('lucide-react');
12
+ var SwitchPrimitives = require('@radix-ui/react-switch');
13
+ var DialogPrimitive = require('@radix-ui/react-dialog');
14
+ var TabsPrimitive = require('@radix-ui/react-tabs');
15
+ var AvatarPrimitive = require('@radix-ui/react-avatar');
16
+ var CheckboxPrimitive = require('@radix-ui/react-checkbox');
17
+ var PopoverPrimitive = require('@radix-ui/react-popover');
18
+ var AccordionPrimitive = require('@radix-ui/react-accordion');
19
+ require('react-dom');
20
+ var reactSlot = require('@radix-ui/react-slot');
21
+ var SliderPrimitive = require('@radix-ui/react-slider');
22
+ var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
23
+ var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
24
+ var HoverCardPrimitive = require('@radix-ui/react-hover-card');
25
+ var MenubarPrimitive = require('@radix-ui/react-menubar');
26
+
27
+ function _interopNamespace(e) {
28
+ if (e && e.__esModule) return e;
29
+ var n = Object.create(null);
30
+ if (e) {
31
+ Object.keys(e).forEach(function (k) {
32
+ if (k !== 'default') {
33
+ var d = Object.getOwnPropertyDescriptor(e, k);
34
+ Object.defineProperty(n, k, d.get ? d : {
35
+ enumerable: true,
36
+ get: function () { return e[k]; }
37
+ });
38
+ }
39
+ });
40
+ }
41
+ n.default = e;
42
+ return Object.freeze(n);
43
+ }
44
+
45
+ var React32__namespace = /*#__PURE__*/_interopNamespace(React32);
46
+ var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
47
+ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
48
+ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
49
+ var SwitchPrimitives__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitives);
50
+ var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
51
+ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
52
+ var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
53
+ var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
54
+ var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
55
+ var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
56
+ var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
57
+ var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
58
+ var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
59
+ var HoverCardPrimitive__namespace = /*#__PURE__*/_interopNamespace(HoverCardPrimitive);
60
+ var MenubarPrimitive__namespace = /*#__PURE__*/_interopNamespace(MenubarPrimitive);
61
+
62
+ /** @license MoonUI v1.0.0 - MIT License - https://moonui.dev */
50
63
 
51
- // src/lib/utils.ts
52
- var import_clsx = require("clsx");
53
- var import_tailwind_merge = require("tailwind-merge");
54
64
  function cn(...inputs) {
55
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
65
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
56
66
  }
57
67
  function formatCurrency(amount, currency = "USD") {
58
68
  const formatter = new Intl.NumberFormat("en-US", {
@@ -94,30 +104,289 @@ function combineRefs(...refs) {
94
104
  });
95
105
  };
96
106
  }
97
-
98
- // src/components/ui/button.tsx
99
- var React = __toESM(require("react"));
100
- var import_class_variance_authority = require("class-variance-authority");
101
- var import_jsx_runtime = require("react/jsx-runtime");
102
- var buttonVariants = (0, import_class_variance_authority.cva)(
103
- "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-slate-950 dark:focus-visible:ring-slate-300",
107
+ var modernTheme = {
108
+ borderRadius: {
109
+ sm: "0.5rem",
110
+ md: "0.75rem",
111
+ lg: "1rem",
112
+ full: "9999px"
113
+ },
114
+ colors: {
115
+ primary: "hsl(250, 95%, 64%)",
116
+ secondary: "hsl(250, 70%, 80%)",
117
+ success: "hsl(142, 71%, 45%)",
118
+ warning: "hsl(38, 92%, 50%)",
119
+ error: "hsl(0, 84%, 60%)",
120
+ background: "hsl(0, 0%, 100%)",
121
+ foreground: "hsl(221, 39%, 11%)",
122
+ card: "hsl(0, 0%, 100%)",
123
+ cardForeground: "hsl(221, 39%, 11%)",
124
+ border: "hsl(210, 20%, 90%)",
125
+ muted: "hsl(210, 20%, 96%)",
126
+ mutedForeground: "hsl(215, 16%, 47%)",
127
+ accent: "hsl(328, 85%, 70%)",
128
+ accentForeground: "hsl(210, 20%, 98%)"
129
+ }
130
+ };
131
+ var roundedTheme = {
132
+ borderRadius: {
133
+ sm: "1rem",
134
+ md: "1.25rem",
135
+ lg: "1.5rem",
136
+ full: "9999px"
137
+ }
138
+ };
139
+ var minimalTheme = {
140
+ borderRadius: {
141
+ sm: "0.125rem",
142
+ md: "0.25rem",
143
+ lg: "0.375rem",
144
+ full: "9999px"
145
+ },
146
+ colors: {
147
+ primary: "hsl(220, 14%, 40%)",
148
+ secondary: "hsl(220, 9%, 60%)",
149
+ success: "hsl(142, 71%, 45%)",
150
+ warning: "hsl(38, 92%, 50%)",
151
+ error: "hsl(0, 84%, 60%)",
152
+ background: "hsl(0, 0%, 100%)",
153
+ foreground: "hsl(221, 39%, 11%)",
154
+ card: "hsl(0, 0%, 100%)",
155
+ cardForeground: "hsl(221, 39%, 11%)",
156
+ border: "hsl(220, 13%, 91%)",
157
+ muted: "hsl(220, 14%, 96%)",
158
+ mutedForeground: "hsl(215, 16%, 47%)",
159
+ accent: "hsl(210, 20%, 96%)",
160
+ accentForeground: "hsl(221, 39%, 11%)"
161
+ }
162
+ };
163
+ var defaultLightTheme = {
164
+ colors: {
165
+ primary: "hsl(221, 83%, 53%)",
166
+ secondary: "hsl(215, 20%, 65%)",
167
+ success: "hsl(142, 71%, 45%)",
168
+ warning: "hsl(38, 92%, 50%)",
169
+ error: "hsl(0, 84%, 60%)",
170
+ background: "hsl(0, 0%, 100%)",
171
+ foreground: "hsl(221, 39%, 11%)",
172
+ card: "hsl(0, 0%, 100%)",
173
+ cardForeground: "hsl(221, 39%, 11%)",
174
+ border: "hsl(210, 20%, 90%)",
175
+ muted: "hsl(210, 20%, 96%)",
176
+ mutedForeground: "hsl(215, 16%, 47%)",
177
+ accent: "hsl(210, 20%, 96%)",
178
+ accentForeground: "hsl(221, 39%, 11%)"
179
+ },
180
+ borderRadius: {
181
+ sm: "0.25rem",
182
+ md: "0.375rem",
183
+ lg: "0.5rem",
184
+ full: "9999px"
185
+ },
186
+ fontSizes: {
187
+ xs: "0.75rem",
188
+ sm: "0.875rem",
189
+ base: "1rem",
190
+ lg: "1.125rem",
191
+ xl: "1.25rem",
192
+ "2xl": "1.5rem",
193
+ "3xl": "1.875rem"
194
+ },
195
+ spacing: {
196
+ 1: "0.25rem",
197
+ 2: "0.5rem",
198
+ 4: "1rem",
199
+ 6: "1.5rem",
200
+ 8: "2rem"
201
+ }
202
+ };
203
+ var defaultDarkTheme = {
204
+ ...defaultLightTheme,
205
+ colors: {
206
+ primary: "hsl(221, 83%, 53%)",
207
+ secondary: "hsl(215, 20%, 65%)",
208
+ success: "hsl(142, 71%, 45%)",
209
+ warning: "hsl(38, 92%, 50%)",
210
+ error: "hsl(0, 84%, 60%)",
211
+ background: "hsl(221, 39%, 11%)",
212
+ foreground: "hsl(210, 20%, 98%)",
213
+ card: "hsl(220, 26%, 14%)",
214
+ cardForeground: "hsl(210, 20%, 98%)",
215
+ border: "hsl(215, 28%, 17%)",
216
+ muted: "hsl(215, 27%, 16%)",
217
+ mutedForeground: "hsl(215, 16%, 57%)",
218
+ accent: "hsl(215, 27%, 16%)",
219
+ accentForeground: "hsl(210, 20%, 98%)"
220
+ }
221
+ };
222
+ var ThemeContext = React32.createContext(void 0);
223
+ var getPresetTheme = (preset) => {
224
+ switch (preset) {
225
+ case "modern":
226
+ return modernTheme;
227
+ case "rounded":
228
+ return roundedTheme;
229
+ case "minimal":
230
+ return minimalTheme;
231
+ default:
232
+ return {};
233
+ }
234
+ };
235
+ var ThemeProvider = ({
236
+ children,
237
+ defaultColorMode = "light",
238
+ preset = "default",
239
+ lightTheme = {},
240
+ darkTheme = {},
241
+ extensions = {}
242
+ }) => {
243
+ const [colorMode, setColorMode] = React32.useState(defaultColorMode);
244
+ const presetThemeValues = getPresetTheme(preset);
245
+ const [customLightTheme, setCustomLightTheme] = React32.useState({
246
+ ...defaultLightTheme,
247
+ ...presetThemeValues,
248
+ ...lightTheme,
249
+ colors: {
250
+ ...defaultLightTheme.colors,
251
+ ...presetThemeValues.colors || {},
252
+ ...lightTheme.colors || {}
253
+ },
254
+ extensions
255
+ });
256
+ const [customDarkTheme, setCustomDarkTheme] = React32.useState({
257
+ ...defaultDarkTheme,
258
+ ...presetThemeValues,
259
+ ...darkTheme,
260
+ colors: {
261
+ ...defaultDarkTheme.colors,
262
+ ...presetThemeValues.colors || {},
263
+ ...darkTheme.colors || {}
264
+ },
265
+ extensions
266
+ });
267
+ const theme = React32.useMemo(() => {
268
+ return colorMode === "light" ? customLightTheme : customDarkTheme;
269
+ }, [colorMode, customLightTheme, customDarkTheme]);
270
+ const updateTheme = (config) => {
271
+ if (colorMode === "light") {
272
+ setCustomLightTheme((prev) => ({
273
+ ...prev,
274
+ ...config,
275
+ colors: {
276
+ ...prev.colors,
277
+ ...config.colors || {}
278
+ },
279
+ extensions: {
280
+ ...prev.extensions || {},
281
+ ...config.extensions || {}
282
+ }
283
+ }));
284
+ } else {
285
+ setCustomDarkTheme((prev) => ({
286
+ ...prev,
287
+ ...config,
288
+ colors: {
289
+ ...prev.colors,
290
+ ...config.colors || {}
291
+ },
292
+ extensions: {
293
+ ...prev.extensions || {},
294
+ ...config.extensions || {}
295
+ }
296
+ }));
297
+ }
298
+ };
299
+ const setThemePreset = (preset2) => {
300
+ const presetValues = getPresetTheme(preset2);
301
+ updateTheme({
302
+ ...presetValues,
303
+ colors: presetValues.colors
304
+ });
305
+ };
306
+ const value = {
307
+ theme,
308
+ colorMode,
309
+ setColorMode,
310
+ updateTheme,
311
+ setThemePreset
312
+ };
313
+ return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value, children });
314
+ };
315
+ var useTheme = () => {
316
+ const context = React32.useContext(ThemeContext);
317
+ if (context === void 0) {
318
+ throw new Error("useTheme must be used within a ThemeProvider");
319
+ }
320
+ return context;
321
+ };
322
+ var createCssVariables = (theme) => {
323
+ const variables = {};
324
+ Object.entries(theme.colors).forEach(([key, value]) => {
325
+ variables[`--color-${key}`] = value;
326
+ });
327
+ Object.entries(theme.borderRadius).forEach(([key, value]) => {
328
+ variables[`--radius-${key}`] = value;
329
+ });
330
+ Object.entries(theme.fontSizes).forEach(([key, value]) => {
331
+ variables[`--font-size-${key}`] = value;
332
+ });
333
+ Object.entries(theme.spacing).forEach(([key, value]) => {
334
+ variables[`--space-${key}`] = value;
335
+ });
336
+ if (theme.extensions) {
337
+ Object.entries(theme.extensions).forEach(([categoryKey, categoryValue]) => {
338
+ if (typeof categoryValue === "object" && categoryValue !== null) {
339
+ Object.entries(categoryValue).forEach(([key, value]) => {
340
+ variables[`--${categoryKey}-${key}`] = value;
341
+ });
342
+ } else if (typeof categoryValue === "string") {
343
+ variables[`--${categoryKey}`] = categoryValue;
344
+ }
345
+ });
346
+ }
347
+ return variables;
348
+ };
349
+ var CssVariablesInjector = () => {
350
+ const { theme } = useTheme();
351
+ React32.useEffect(() => {
352
+ const variables = createCssVariables(theme);
353
+ const root = document.documentElement;
354
+ Object.entries(variables).forEach(([key, value]) => {
355
+ root.style.setProperty(key, value);
356
+ });
357
+ return () => {
358
+ Object.keys(variables).forEach((key) => {
359
+ root.style.removeProperty(key);
360
+ });
361
+ };
362
+ }, [theme]);
363
+ return null;
364
+ };
365
+ var ThemeProvider2 = (props) => {
366
+ return /* @__PURE__ */ jsxRuntime.jsxs(ThemeProvider, { ...props, children: [
367
+ /* @__PURE__ */ jsxRuntime.jsx(CssVariablesInjector, {}),
368
+ props.children
369
+ ] });
370
+ };
371
+ var buttonVariants = classVarianceAuthority.cva(
372
+ "inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
104
373
  {
105
374
  variants: {
106
375
  variant: {
107
- default: "bg-slate-900 text-slate-50 hover:bg-slate-900/90 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50/90",
108
- destructive: "bg-red-500 text-slate-50 hover:bg-red-500/90 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/90",
109
- outline: "border border-slate-200 bg-white hover:bg-slate-100 hover:text-slate-900 dark:border-slate-800 dark:bg-slate-950 dark:hover:bg-slate-800 dark:hover:text-slate-50",
110
- secondary: "bg-slate-100 text-slate-900 hover:bg-slate-100/80 dark:bg-slate-800 dark:text-slate-50 dark:hover:bg-slate-800/80",
111
- ghost: "hover:bg-slate-100 hover:text-slate-900 dark:hover:bg-slate-800 dark:hover:text-slate-50",
112
- link: "text-slate-900 underline-offset-4 hover:underline dark:text-slate-50",
113
- primary: "bg-primary text-white hover:bg-primary/90",
114
- success: "bg-green-500 text-white hover:bg-green-600"
376
+ default: "bg-[var(--color-foreground)] text-[var(--color-background)] hover:bg-[var(--color-foreground)]/90",
377
+ destructive: "bg-[var(--color-error)] text-white hover:bg-[var(--color-error)]/90",
378
+ outline: "border border-[var(--color-border)] bg-[var(--color-background)] hover:bg-[var(--color-muted)] hover:text-[var(--color-foreground)]",
379
+ secondary: "bg-[var(--color-muted)] text-[var(--color-mutedForeground)] hover:bg-[var(--color-muted)]/80",
380
+ ghost: "hover:bg-[var(--color-muted)] hover:text-[var(--color-foreground)]",
381
+ link: "text-[var(--color-foreground)] underline-offset-4 hover:underline",
382
+ primary: "bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary)]/90",
383
+ success: "bg-[var(--color-success)] text-white hover:bg-[var(--color-success)]/90"
115
384
  },
116
385
  size: {
117
- default: "h-10 px-4 py-2",
118
- sm: "h-9 rounded-md px-3",
119
- lg: "h-11 rounded-md px-8",
120
- icon: "h-10 w-10"
386
+ default: "h-10 px-4 py-2 rounded-[var(--radius-md)]",
387
+ sm: "h-9 rounded-[var(--radius-sm)] px-3 text-sm",
388
+ lg: "h-11 rounded-[var(--radius-lg)] px-8 text-base",
389
+ icon: "h-10 w-10 rounded-[var(--radius-md)]"
121
390
  }
122
391
  },
123
392
  defaultVariants: {
@@ -126,36 +395,36 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
126
395
  }
127
396
  }
128
397
  );
129
- var Button = React.forwardRef(
398
+ var Button = React32__namespace.forwardRef(
130
399
  ({ className, variant, size, asChild = false, ...props }, ref) => {
131
- const Comp = asChild ? React.Fragment : "button";
132
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
400
+ const Comp = asChild ? React32__namespace.Fragment : "button";
401
+ return /* @__PURE__ */ jsxRuntime.jsx(
133
402
  Comp,
134
403
  {
135
404
  className: cn(buttonVariants({ variant, size, className })),
136
405
  ref,
137
- ...props
406
+ ...props,
407
+ style: {
408
+ // Özel tema değişkenleri burada da kullanılabilir
409
+ ...props.style
410
+ }
138
411
  }
139
412
  );
140
413
  }
141
414
  );
142
415
  Button.displayName = "Button";
143
-
144
- // src/components/ui/badge.tsx
145
- var import_class_variance_authority2 = require("class-variance-authority");
146
- var import_jsx_runtime2 = require("react/jsx-runtime");
147
- var badgeVariants = (0, import_class_variance_authority2.cva)(
148
- "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-ring focus:ring-offset-2",
416
+ var badgeVariants = classVarianceAuthority.cva(
417
+ "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-offset-2",
149
418
  {
150
419
  variants: {
151
420
  variant: {
152
- default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
153
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
154
- destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
155
- outline: "text-foreground",
156
- success: "border-transparent bg-green-500 text-white hover:bg-green-600",
157
- warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600",
158
- info: "border-transparent bg-blue-500 text-white hover:bg-blue-600"
421
+ default: "border-transparent bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary)]/80",
422
+ secondary: "border-transparent bg-[var(--color-secondary)] text-white hover:bg-[var(--color-secondary)]/80",
423
+ destructive: "border-transparent bg-[var(--color-error)] text-white hover:bg-[var(--color-error)]/80",
424
+ outline: "border-[var(--color-border)] bg-transparent text-[var(--color-foreground)]",
425
+ success: "border-transparent bg-[var(--color-success)] text-white hover:bg-[var(--color-success)]/80",
426
+ warning: "border-transparent bg-[var(--color-warning)] text-white hover:bg-[var(--color-warning)]/80",
427
+ info: "border-transparent bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary)]/80"
159
428
  }
160
429
  },
161
430
  defaultVariants: {
@@ -164,25 +433,22 @@ var badgeVariants = (0, import_class_variance_authority2.cva)(
164
433
  }
165
434
  );
166
435
  function Badge({ className, variant, ...props }) {
167
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
436
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
168
437
  }
169
-
170
- // src/components/ui/card.tsx
171
- var React2 = __toESM(require("react"));
172
- var import_jsx_runtime3 = require("react/jsx-runtime");
173
- var Card = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
438
+ var Card = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
174
439
  "div",
175
440
  {
176
441
  ref,
177
442
  className: cn(
178
- "rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50",
443
+ "rounded-lg border shadow-sm",
444
+ "border-[var(--color-border)] bg-[var(--color-card)] text-[var(--color-foreground)]",
179
445
  className
180
446
  ),
181
447
  ...props
182
448
  }
183
449
  ));
184
450
  Card.displayName = "Card";
185
- var CardHeader = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
451
+ var CardHeader = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
186
452
  "div",
187
453
  {
188
454
  ref,
@@ -191,7 +457,7 @@ var CardHeader = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE_
191
457
  }
192
458
  ));
193
459
  CardHeader.displayName = "CardHeader";
194
- var CardTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
460
+ var CardTitle = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
195
461
  "h3",
196
462
  {
197
463
  ref,
@@ -203,18 +469,18 @@ var CardTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__
203
469
  }
204
470
  ));
205
471
  CardTitle.displayName = "CardTitle";
206
- var CardDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
472
+ var CardDescription = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
207
473
  "p",
208
474
  {
209
475
  ref,
210
- className: cn("text-sm text-slate-500 dark:text-slate-400", className),
476
+ className: cn("text-sm text-[var(--color-muted-foreground)]", className),
211
477
  ...props
212
478
  }
213
479
  ));
214
480
  CardDescription.displayName = "CardDescription";
215
- var CardContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { ref, className: cn("p-6 pt-0", className), ...props }));
481
+ var CardContent = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
216
482
  CardContent.displayName = "CardContent";
217
- var CardFooter = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
483
+ var CardFooter = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
218
484
  "div",
219
485
  {
220
486
  ref,
@@ -223,22 +489,3936 @@ var CardFooter = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE_
223
489
  }
224
490
  ));
225
491
  CardFooter.displayName = "CardFooter";
226
- // Annotate the CommonJS export names for ESM import in node:
227
- 0 && (module.exports = {
228
- Badge,
229
- Button,
230
- Card,
231
- CardContent,
232
- CardDescription,
233
- CardFooter,
234
- CardHeader,
235
- CardTitle,
236
- badgeVariants,
237
- buttonVariants,
238
- cn,
239
- combineRefs,
240
- debounce,
241
- formatCurrency,
242
- generateId,
243
- get
244
- });
492
+ var Input = React32__namespace.forwardRef(
493
+ ({ className, type, ...props }, ref) => {
494
+ return /* @__PURE__ */ jsxRuntime.jsx(
495
+ "input",
496
+ {
497
+ type,
498
+ className: cn(
499
+ "flex h-10 w-full rounded-[var(--radius-md)] border px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium",
500
+ "border-[var(--color-border)] bg-[var(--color-background)] text-[var(--color-foreground)]",
501
+ "placeholder:text-[var(--color-muted-foreground)] focus-visible:outline-none focus-visible:ring-2",
502
+ "focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-background)]",
503
+ "disabled:cursor-not-allowed disabled:opacity-50",
504
+ className
505
+ ),
506
+ ref,
507
+ ...props
508
+ }
509
+ );
510
+ }
511
+ );
512
+ Input.displayName = "Input";
513
+ var Textarea = React32__namespace.forwardRef(
514
+ ({ className, ...props }, ref) => {
515
+ return /* @__PURE__ */ jsxRuntime.jsx(
516
+ "textarea",
517
+ {
518
+ className: cn(
519
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
520
+ className
521
+ ),
522
+ ref,
523
+ ...props
524
+ }
525
+ );
526
+ }
527
+ );
528
+ Textarea.displayName = "Textarea";
529
+ var labelVariants = classVarianceAuthority.cva(
530
+ "text-sm font-medium leading-none text-gray-900 dark:text-gray-200 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:peer-disabled:opacity-60 transition-colors duration-200"
531
+ );
532
+ var Label = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
533
+ LabelPrimitive__namespace.Root,
534
+ {
535
+ ref,
536
+ className: cn(labelVariants(), className),
537
+ ...props
538
+ }
539
+ ));
540
+ Label.displayName = LabelPrimitive__namespace.Root.displayName;
541
+ var Separator = React32__namespace.forwardRef(
542
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
543
+ SeparatorPrimitive__namespace.Root,
544
+ {
545
+ ref,
546
+ decorative,
547
+ orientation,
548
+ className: cn(
549
+ "shrink-0 bg-border",
550
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
551
+ className
552
+ ),
553
+ ...props
554
+ }
555
+ )
556
+ );
557
+ Separator.displayName = SeparatorPrimitive__namespace.Root.displayName;
558
+ var Select = SelectPrimitive__namespace.Root;
559
+ var SelectGroup = SelectPrimitive__namespace.Group;
560
+ var SelectValue = SelectPrimitive__namespace.Value;
561
+ var SelectTrigger = React32__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
562
+ SelectPrimitive__namespace.Trigger,
563
+ {
564
+ ref,
565
+ className: cn(
566
+ "flex h-10 w-full items-center justify-between rounded-[var(--radius-md)] border px-3 py-2 text-sm [&>span]:line-clamp-1",
567
+ "border-[var(--color-border)] bg-[var(--color-background)] text-[var(--color-foreground)]",
568
+ "placeholder:text-[var(--color-muted-foreground)] focus:outline-none focus:ring-2",
569
+ "focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-background)]",
570
+ "disabled:cursor-not-allowed disabled:opacity-50",
571
+ className
572
+ ),
573
+ ...props,
574
+ children: [
575
+ children,
576
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
577
+ ]
578
+ }
579
+ ));
580
+ SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
581
+ var SelectScrollUpButton = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
582
+ SelectPrimitive__namespace.ScrollUpButton,
583
+ {
584
+ ref,
585
+ className: cn(
586
+ "flex cursor-default items-center justify-center py-1",
587
+ className
588
+ ),
589
+ ...props,
590
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" })
591
+ }
592
+ ));
593
+ SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
594
+ var SelectScrollDownButton = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
595
+ SelectPrimitive__namespace.ScrollDownButton,
596
+ {
597
+ ref,
598
+ className: cn(
599
+ "flex cursor-default items-center justify-center py-1",
600
+ className
601
+ ),
602
+ ...props,
603
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" })
604
+ }
605
+ ));
606
+ SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
607
+ var SelectContent = React32__namespace.forwardRef(({ className, children, position = "item-aligned", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
608
+ SelectPrimitive__namespace.Content,
609
+ {
610
+ ref,
611
+ className: cn(
612
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-[var(--radius-md)] border shadow-md",
613
+ "border-[var(--color-border)] bg-[var(--color-card)] text-[var(--color-foreground)]",
614
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
615
+ "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
616
+ "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",
617
+ 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",
618
+ className
619
+ ),
620
+ position,
621
+ ...props,
622
+ children: [
623
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
624
+ /* @__PURE__ */ jsxRuntime.jsx(
625
+ SelectPrimitive__namespace.Viewport,
626
+ {
627
+ className: cn(
628
+ "p-1",
629
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
630
+ ),
631
+ children
632
+ }
633
+ ),
634
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
635
+ ]
636
+ }
637
+ ) }));
638
+ SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
639
+ var SelectLabel = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
640
+ SelectPrimitive__namespace.Label,
641
+ {
642
+ ref,
643
+ className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold text-[var(--color-foreground)]", className),
644
+ ...props
645
+ }
646
+ ));
647
+ SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
648
+ var SelectItem = React32__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
649
+ SelectPrimitive__namespace.Item,
650
+ {
651
+ ref,
652
+ className: cn(
653
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
654
+ "focus:bg-[var(--color-accent)] focus:text-[var(--color-accent-foreground)]",
655
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
656
+ className
657
+ ),
658
+ ...props,
659
+ children: [
660
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-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" }) }) }),
661
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
662
+ ]
663
+ }
664
+ ));
665
+ SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
666
+ var SelectSeparator = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
667
+ SelectPrimitive__namespace.Separator,
668
+ {
669
+ ref,
670
+ className: cn("-mx-1 my-1 h-px bg-[var(--color-border)]", className),
671
+ ...props
672
+ }
673
+ ));
674
+ SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
675
+ var Switch = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
676
+ SwitchPrimitives__namespace.Root,
677
+ {
678
+ className: cn(
679
+ "peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent",
680
+ "transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)]",
681
+ "focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-background)]",
682
+ "disabled:cursor-not-allowed disabled:opacity-50",
683
+ "data-[state=checked]:bg-[var(--color-primary)] data-[state=unchecked]:bg-[var(--color-muted)]",
684
+ className
685
+ ),
686
+ ...props,
687
+ ref,
688
+ children: /* @__PURE__ */ jsxRuntime.jsx(
689
+ SwitchPrimitives__namespace.Thumb,
690
+ {
691
+ className: cn(
692
+ "pointer-events-none block h-5 w-5 rounded-full shadow-lg ring-0 transition-transform",
693
+ "bg-[var(--color-background)] data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
694
+ )
695
+ }
696
+ )
697
+ }
698
+ ));
699
+ Switch.displayName = SwitchPrimitives__namespace.Root.displayName;
700
+ var Dialog = DialogPrimitive__namespace.Root;
701
+ var DialogTrigger = DialogPrimitive__namespace.Trigger;
702
+ var DialogPortal = DialogPrimitive__namespace.Portal;
703
+ var DialogClose = DialogPrimitive__namespace.Close;
704
+ var overlayVariants = classVarianceAuthority.cva(
705
+ "fixed inset-0 z-50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
706
+ {
707
+ variants: {
708
+ variant: {
709
+ default: "bg-black/80",
710
+ subtle: "bg-black/60",
711
+ blur: "bg-black/40 backdrop-blur-md",
712
+ minimal: "bg-black/20 backdrop-blur-sm"
713
+ },
714
+ animation: {
715
+ default: "duration-200",
716
+ slow: "duration-300",
717
+ fast: "duration-100"
718
+ }
719
+ },
720
+ defaultVariants: {
721
+ variant: "default",
722
+ animation: "default"
723
+ }
724
+ }
725
+ );
726
+ var DialogOverlay = React32__namespace.forwardRef(({ className, variant, animation, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
727
+ DialogPrimitive__namespace.Overlay,
728
+ {
729
+ ref,
730
+ className: cn(overlayVariants({ variant, animation }), className),
731
+ ...props
732
+ }
733
+ ));
734
+ DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
735
+ var dialogContentVariants = classVarianceAuthority.cva(
736
+ "fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border shadow-lg bg-[var(--color-card)] text-[var(--color-foreground)]",
737
+ {
738
+ variants: {
739
+ variant: {
740
+ default: "border-[var(--color-border)]",
741
+ primary: "border-[var(--color-primary)]/20",
742
+ secondary: "border-[var(--color-secondary)]/20",
743
+ ghost: "border-transparent shadow-xl",
744
+ destructive: "border-[var(--color-error)]/20"
745
+ },
746
+ size: {
747
+ xs: "max-w-xs p-4",
748
+ sm: "max-w-sm p-5",
749
+ default: "max-w-lg p-6",
750
+ md: "max-w-md p-6",
751
+ lg: "max-w-2xl p-7",
752
+ xl: "max-w-4xl p-8",
753
+ full: "max-w-[95vw] max-h-[95vh] p-6"
754
+ },
755
+ radius: {
756
+ none: "rounded-none",
757
+ sm: "rounded-[var(--radius-sm)]",
758
+ default: "rounded-[var(--radius-md)]",
759
+ lg: "rounded-[var(--radius-lg)]",
760
+ xl: "rounded-2xl",
761
+ full: "rounded-[var(--radius-full)]"
762
+ },
763
+ animation: {
764
+ default: "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",
765
+ fade: "duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
766
+ zoom: "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",
767
+ slide: "duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
768
+ none: ""
769
+ },
770
+ position: {
771
+ default: "top-[50%]",
772
+ top: "top-[5%]",
773
+ bottom: "bottom-[5%] top-auto translate-y-0"
774
+ }
775
+ },
776
+ defaultVariants: {
777
+ variant: "default",
778
+ size: "default",
779
+ radius: "default",
780
+ animation: "default",
781
+ position: "default"
782
+ }
783
+ }
784
+ );
785
+ var DialogContent = React32__namespace.forwardRef(
786
+ ({
787
+ className,
788
+ children,
789
+ variant,
790
+ size,
791
+ radius,
792
+ animation,
793
+ position,
794
+ overlayVariant = "default",
795
+ overlayAnimation = "default",
796
+ hideCloseButton = false,
797
+ title,
798
+ description,
799
+ icon,
800
+ loading = false,
801
+ success = false,
802
+ onClose,
803
+ ...props
804
+ }, ref) => {
805
+ const handleClose = () => {
806
+ if (onClose) {
807
+ onClose();
808
+ }
809
+ };
810
+ return /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
811
+ /* @__PURE__ */ jsxRuntime.jsx(
812
+ DialogOverlay,
813
+ {
814
+ variant: overlayVariant,
815
+ animation: overlayAnimation
816
+ }
817
+ ),
818
+ /* @__PURE__ */ jsxRuntime.jsxs(
819
+ DialogPrimitive__namespace.Content,
820
+ {
821
+ ref,
822
+ className: cn(
823
+ dialogContentVariants({
824
+ variant,
825
+ size,
826
+ radius,
827
+ animation,
828
+ position
829
+ }),
830
+ className
831
+ ),
832
+ onEscapeKeyDown: onClose ? (e) => {
833
+ e.preventDefault();
834
+ handleClose();
835
+ } : void 0,
836
+ onPointerDownOutside: onClose ? (e) => {
837
+ e.preventDefault();
838
+ handleClose();
839
+ } : void 0,
840
+ ...props,
841
+ children: [
842
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { className: icon || loading || success ? "flex flex-row items-start gap-4" : "", children: [
843
+ (icon || loading || success) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-full bg-[var(--color-accent)] p-2 flex-shrink-0", children: [
844
+ loading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-5 w-5 animate-spin text-[var(--color-primary)]" }),
845
+ success && !loading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-5 w-5 text-[var(--color-success)]" }),
846
+ !loading && !success && icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[var(--color-primary)]", children: icon })
847
+ ] }),
848
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
849
+ title && /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: title }),
850
+ description && /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { children: description })
851
+ ] })
852
+ ] }),
853
+ children,
854
+ !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(
855
+ DialogPrimitive__namespace.Close,
856
+ {
857
+ onClick: handleClose,
858
+ className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)]/30 focus:ring-offset-2 disabled:pointer-events-none text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]",
859
+ children: [
860
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
861
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
862
+ ]
863
+ }
864
+ )
865
+ ]
866
+ }
867
+ )
868
+ ] });
869
+ }
870
+ );
871
+ DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
872
+ var DialogHeader = ({
873
+ className,
874
+ ...props
875
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
876
+ "div",
877
+ {
878
+ className: cn(
879
+ "flex flex-col space-y-2 text-center sm:text-left",
880
+ className
881
+ ),
882
+ ...props
883
+ }
884
+ );
885
+ DialogHeader.displayName = "DialogHeader";
886
+ var DialogFooter = ({
887
+ className,
888
+ ...props
889
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
890
+ "div",
891
+ {
892
+ className: cn(
893
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:space-x-2 mt-6",
894
+ className
895
+ ),
896
+ ...props
897
+ }
898
+ );
899
+ DialogFooter.displayName = "DialogFooter";
900
+ var DialogTitle = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
901
+ DialogPrimitive__namespace.Title,
902
+ {
903
+ ref,
904
+ className: cn(
905
+ "text-xl font-semibold leading-snug tracking-tight text-[var(--color-foreground)]",
906
+ className
907
+ ),
908
+ ...props
909
+ }
910
+ ));
911
+ DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
912
+ var DialogDescription = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
913
+ DialogPrimitive__namespace.Description,
914
+ {
915
+ ref,
916
+ className: cn(
917
+ "text-sm text-[var(--color-muted-foreground)] leading-normal",
918
+ className
919
+ ),
920
+ ...props
921
+ }
922
+ ));
923
+ DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
924
+ var DialogForm = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
925
+ "form",
926
+ {
927
+ ref,
928
+ className: cn("flex flex-col gap-4", className),
929
+ ...props
930
+ }
931
+ ));
932
+ DialogForm.displayName = "DialogForm";
933
+ var Tabs = React32__namespace.forwardRef(({ vertical = false, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
934
+ TabsPrimitive__namespace.Root,
935
+ {
936
+ ref,
937
+ orientation: vertical ? "vertical" : "horizontal",
938
+ ...props
939
+ }
940
+ ));
941
+ Tabs.displayName = TabsPrimitive__namespace.Root.displayName;
942
+ var tabsListVariants = classVarianceAuthority.cva(
943
+ "flex items-center justify-start transition-all duration-200",
944
+ {
945
+ variants: {
946
+ variant: {
947
+ default: "bg-[var(--color-accent)] rounded-[var(--radius-sm)] p-1 text-[var(--color-muted-foreground)]",
948
+ pills: "bg-transparent gap-2 p-0 text-[var(--color-muted-foreground)]",
949
+ underline: "bg-transparent border-b border-[var(--color-border)] gap-4 text-[var(--color-muted-foreground)]",
950
+ cards: "bg-transparent gap-2 p-0 text-[var(--color-muted-foreground)]",
951
+ minimal: "bg-transparent gap-1 p-0 text-[var(--color-muted-foreground)]"
952
+ },
953
+ orientation: {
954
+ horizontal: "flex-row",
955
+ vertical: "flex-col items-start gap-1"
956
+ },
957
+ fullWidth: {
958
+ true: "w-full"
959
+ }
960
+ },
961
+ defaultVariants: {
962
+ variant: "default",
963
+ orientation: "horizontal",
964
+ fullWidth: false
965
+ }
966
+ }
967
+ );
968
+ var TabsList = React32__namespace.forwardRef(({ className, variant, orientation, fullWidth, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
969
+ TabsPrimitive__namespace.List,
970
+ {
971
+ ref,
972
+ className: cn(tabsListVariants({ variant, orientation, fullWidth, className })),
973
+ ...props
974
+ }
975
+ ));
976
+ TabsList.displayName = TabsPrimitive__namespace.List.displayName;
977
+ var tabsTriggerVariants = classVarianceAuthority.cva(
978
+ "inline-flex items-center justify-center whitespace-nowrap font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)]/30 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
979
+ {
980
+ variants: {
981
+ variant: {
982
+ default: "rounded-[var(--radius-sm)] data-[state=active]:bg-[var(--color-background)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm",
983
+ underline: "rounded-none border-b-2 border-transparent pb-2 data-[state=active]:border-[var(--color-primary)] data-[state=active]:bg-transparent data-[state=active]:text-[var(--color-foreground)]",
984
+ pills: "rounded-full bg-[var(--color-accent)] hover:bg-[var(--color-accent)]/80 data-[state=active]:bg-[var(--color-primary)] data-[state=active]:text-[var(--color-primary-foreground)]",
985
+ cards: "rounded-[var(--radius-sm)] bg-[var(--color-accent)]/50 hover:bg-[var(--color-accent)] data-[state=active]:bg-[var(--color-background)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-md",
986
+ minimal: "rounded-sm bg-transparent hover:bg-[var(--color-accent)]/30 data-[state=active]:bg-transparent data-[state=active]:text-[var(--color-foreground)] data-[state=active]:underline data-[state=active]:underline-offset-4"
987
+ },
988
+ size: {
989
+ sm: "h-7 px-2 text-[var(--font-size-xs)]",
990
+ md: "h-9 px-3 py-1.5 text-[var(--font-size-sm)]",
991
+ lg: "h-10 px-4 py-2 text-[var(--font-size-base)]"
992
+ },
993
+ orientation: {
994
+ horizontal: "",
995
+ vertical: "justify-start w-full text-left"
996
+ },
997
+ fullWidth: {
998
+ true: "w-full"
999
+ }
1000
+ },
1001
+ defaultVariants: {
1002
+ variant: "default",
1003
+ size: "md",
1004
+ orientation: "horizontal",
1005
+ fullWidth: false
1006
+ }
1007
+ }
1008
+ );
1009
+ var TabsTrigger = React32__namespace.forwardRef(({
1010
+ className,
1011
+ variant,
1012
+ size,
1013
+ icon,
1014
+ iconPosition = "left",
1015
+ badge,
1016
+ fadeTabs = false,
1017
+ orientation,
1018
+ fullWidth,
1019
+ children,
1020
+ ...props
1021
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1022
+ TabsPrimitive__namespace.Trigger,
1023
+ {
1024
+ ref,
1025
+ className: cn(
1026
+ tabsTriggerVariants({ variant, size, orientation, fullWidth }),
1027
+ fadeTabs && "data-[state=inactive]:opacity-60",
1028
+ className
1029
+ ),
1030
+ ...props,
1031
+ children: [
1032
+ icon && iconPosition === "left" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-2", children: icon }),
1033
+ children,
1034
+ icon && iconPosition === "right" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2", children: icon }),
1035
+ badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2", children: badge })
1036
+ ]
1037
+ }
1038
+ ));
1039
+ TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
1040
+ var TabsContent = React32__namespace.forwardRef(({ className, animated = false, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1041
+ TabsPrimitive__namespace.Content,
1042
+ {
1043
+ ref,
1044
+ className: cn(
1045
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)]/30 focus-visible:ring-offset-2",
1046
+ animated && "data-[state=active]:animate-fadeIn data-[state=inactive]:animate-fadeOut",
1047
+ className
1048
+ ),
1049
+ ...props
1050
+ }
1051
+ ));
1052
+ TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
1053
+ var avatarVariants = classVarianceAuthority.cva(
1054
+ "relative flex shrink-0 overflow-hidden",
1055
+ {
1056
+ variants: {
1057
+ size: {
1058
+ default: "h-10 w-10",
1059
+ xs: "h-6 w-6",
1060
+ sm: "h-8 w-8",
1061
+ md: "h-10 w-10",
1062
+ lg: "h-12 w-12",
1063
+ xl: "h-16 w-16",
1064
+ "2xl": "h-20 w-20"
1065
+ },
1066
+ radius: {
1067
+ default: "rounded-full",
1068
+ sm: "rounded-[var(--radius-sm)]",
1069
+ lg: "rounded-[var(--radius-lg)]",
1070
+ full: "rounded-full",
1071
+ none: "rounded-none"
1072
+ },
1073
+ variant: {
1074
+ default: "",
1075
+ ring: "ring-2 ring-[var(--color-border)]",
1076
+ ringOffset: "ring-2 ring-[var(--color-border)] ring-offset-2 ring-offset-[var(--color-background)]",
1077
+ border: "border-2 border-[var(--color-border)]"
1078
+ }
1079
+ },
1080
+ defaultVariants: {
1081
+ size: "default",
1082
+ radius: "default",
1083
+ variant: "default"
1084
+ }
1085
+ }
1086
+ );
1087
+ var Avatar = React32__namespace.forwardRef(({ className, size, radius, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1088
+ AvatarPrimitive__namespace.Root,
1089
+ {
1090
+ ref,
1091
+ className: cn(avatarVariants({ size, radius, variant }), className),
1092
+ ...props
1093
+ }
1094
+ ));
1095
+ Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
1096
+ var AvatarImage = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1097
+ AvatarPrimitive__namespace.Image,
1098
+ {
1099
+ ref,
1100
+ className: cn("aspect-square h-full w-full", className),
1101
+ ...props
1102
+ }
1103
+ ));
1104
+ AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
1105
+ var AvatarFallback = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1106
+ AvatarPrimitive__namespace.Fallback,
1107
+ {
1108
+ ref,
1109
+ className: cn(
1110
+ "flex h-full w-full items-center justify-center bg-[var(--color-accent)] text-[var(--color-foreground)]",
1111
+ className
1112
+ ),
1113
+ ...props
1114
+ }
1115
+ ));
1116
+ AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
1117
+ var AvatarGroup = React32__namespace.forwardRef(
1118
+ ({ className, limit, avatars, overlapOffset = -8, ...props }, ref) => {
1119
+ const visibleAvatars = limit ? avatars.slice(0, limit) : avatars;
1120
+ const remainingCount = limit ? Math.max(0, avatars.length - limit) : 0;
1121
+ return /* @__PURE__ */ jsxRuntime.jsx(
1122
+ "div",
1123
+ {
1124
+ ref,
1125
+ className: cn("flex items-center", className),
1126
+ ...props,
1127
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex", children: [
1128
+ visibleAvatars.map((avatar, index) => /* @__PURE__ */ jsxRuntime.jsx(
1129
+ "div",
1130
+ {
1131
+ className: "relative",
1132
+ style: {
1133
+ marginLeft: index === 0 ? 0 : `${overlapOffset}px`,
1134
+ zIndex: visibleAvatars.length - index
1135
+ },
1136
+ children: avatar
1137
+ },
1138
+ index
1139
+ )),
1140
+ remainingCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1141
+ "div",
1142
+ {
1143
+ className: "relative z-0",
1144
+ style: { marginLeft: `${overlapOffset}px` },
1145
+ children: /* @__PURE__ */ jsxRuntime.jsx(Avatar, { variant: "border", children: /* @__PURE__ */ jsxRuntime.jsxs(AvatarFallback, { children: [
1146
+ "+",
1147
+ remainingCount
1148
+ ] }) })
1149
+ }
1150
+ )
1151
+ ] })
1152
+ }
1153
+ );
1154
+ }
1155
+ );
1156
+ AvatarGroup.displayName = "AvatarGroup";
1157
+ var alertVariants = classVarianceAuthority.cva(
1158
+ "relative w-full flex items-center gap-3 p-4 border text-[var(--color-foreground)] [&>svg]:shrink-0",
1159
+ {
1160
+ variants: {
1161
+ variant: {
1162
+ default: "bg-[var(--color-background)] text-[var(--color-foreground)] border-[var(--color-border)]",
1163
+ primary: "bg-[var(--color-primary)]/10 text-[var(--color-primary)] border-[var(--color-primary)]/30",
1164
+ success: "bg-[var(--color-success)]/10 text-[var(--color-success)] border-[var(--color-success)]/30",
1165
+ warning: "bg-[var(--color-warning)]/10 text-[var(--color-warning)] border-[var(--color-warning)]/30",
1166
+ error: "bg-[var(--color-error)]/10 text-[var(--color-error)] border-[var(--color-error)]/30",
1167
+ info: "bg-[var(--color-info)]/10 text-[var(--color-info)] border-[var(--color-info)]/30"
1168
+ },
1169
+ size: {
1170
+ sm: "py-2 text-[var(--font-size-xs)]",
1171
+ default: "py-3 text-[var(--font-size-sm)]",
1172
+ lg: "py-4 text-[var(--font-size-base)]"
1173
+ },
1174
+ radius: {
1175
+ none: "rounded-none",
1176
+ sm: "rounded-[var(--radius-sm)]",
1177
+ default: "rounded-[var(--radius-md)]",
1178
+ lg: "rounded-[var(--radius-lg)]",
1179
+ full: "rounded-full"
1180
+ },
1181
+ withClose: {
1182
+ true: "pr-10"
1183
+ }
1184
+ },
1185
+ defaultVariants: {
1186
+ variant: "default",
1187
+ size: "default",
1188
+ radius: "default",
1189
+ withClose: false
1190
+ }
1191
+ }
1192
+ );
1193
+ var Alert = React32__namespace.forwardRef(
1194
+ ({ className, variant = "default", size, radius, hideIcon = false, closable = false, onClose, children, ...props }, ref) => {
1195
+ const Icon2 = React32__namespace.useMemo(() => {
1196
+ switch (variant) {
1197
+ case "success":
1198
+ return lucideReact.Check;
1199
+ case "warning":
1200
+ return lucideReact.AlertTriangle;
1201
+ case "error":
1202
+ return lucideReact.AlertCircle;
1203
+ case "info":
1204
+ return lucideReact.Info;
1205
+ default:
1206
+ return lucideReact.Info;
1207
+ }
1208
+ }, [variant]);
1209
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1210
+ "div",
1211
+ {
1212
+ ref,
1213
+ role: "alert",
1214
+ className: cn(alertVariants({ variant, size, radius, withClose: closable }), className),
1215
+ ...props,
1216
+ children: [
1217
+ !hideIcon && /* @__PURE__ */ jsxRuntime.jsx(Icon2, { className: "h-5 w-5" }),
1218
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children }),
1219
+ closable && onClose && /* @__PURE__ */ jsxRuntime.jsx(
1220
+ "button",
1221
+ {
1222
+ onClick: onClose,
1223
+ className: "absolute right-3 top-3 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-70 transition-opacity hover:opacity-100",
1224
+ "aria-label": "Kapat",
1225
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
1226
+ }
1227
+ )
1228
+ ]
1229
+ }
1230
+ );
1231
+ }
1232
+ );
1233
+ Alert.displayName = "Alert";
1234
+ var AlertTitle = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1235
+ "h5",
1236
+ {
1237
+ ref,
1238
+ className: cn("font-semibold leading-tight tracking-tight mb-1", className),
1239
+ ...props
1240
+ }
1241
+ ));
1242
+ AlertTitle.displayName = "AlertTitle";
1243
+ var AlertDescription = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1244
+ "div",
1245
+ {
1246
+ ref,
1247
+ className: cn("leading-5 text-[var(--color-muted-foreground)]", className),
1248
+ ...props
1249
+ }
1250
+ ));
1251
+ AlertDescription.displayName = "AlertDescription";
1252
+ var ToastProvider = React32__namespace.createContext(null);
1253
+ var useToast = () => {
1254
+ const context = React32__namespace.useContext(ToastProvider);
1255
+ if (!context) {
1256
+ throw new Error("useToast must be used within a ToastProvider");
1257
+ }
1258
+ return context;
1259
+ };
1260
+ var toastVariants = classVarianceAuthority.cva(
1261
+ "group pointer-events-auto relative flex w-full items-center justify-between gap-2 overflow-hidden border p-4 shadow-md transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full",
1262
+ {
1263
+ variants: {
1264
+ variant: {
1265
+ default: "bg-[var(--color-background)] border-[var(--color-border)]",
1266
+ primary: "border-[var(--color-primary)]/50 bg-[var(--color-primary)]/10",
1267
+ success: "border-[var(--color-success)]/50 bg-[var(--color-success)]/10",
1268
+ warning: "border-[var(--color-warning)]/50 bg-[var(--color-warning)]/10",
1269
+ error: "border-[var(--color-error)]/50 bg-[var(--color-error)]/10",
1270
+ info: "border-[var(--color-info)]/50 bg-[var(--color-info)]/10",
1271
+ destructive: "destructive group border-[var(--color-error)] bg-[var(--color-error)] text-[var(--color-error-foreground)]"
1272
+ },
1273
+ size: {
1274
+ sm: "text-[var(--font-size-xs)]",
1275
+ default: "text-[var(--font-size-sm)]",
1276
+ lg: "text-[var(--font-size-base)]"
1277
+ },
1278
+ radius: {
1279
+ none: "rounded-none",
1280
+ sm: "rounded-[var(--radius-sm)]",
1281
+ default: "rounded-[var(--radius-md)]",
1282
+ lg: "rounded-[var(--radius-lg)]",
1283
+ full: "rounded-full"
1284
+ }
1285
+ },
1286
+ defaultVariants: {
1287
+ variant: "default",
1288
+ size: "default",
1289
+ radius: "default"
1290
+ }
1291
+ }
1292
+ );
1293
+ var Toast = ({
1294
+ className,
1295
+ variant,
1296
+ size,
1297
+ radius,
1298
+ title,
1299
+ description,
1300
+ action,
1301
+ onClose,
1302
+ autoClose = true,
1303
+ duration = 5e3,
1304
+ hideIcon = false,
1305
+ showProgress = false,
1306
+ ...props
1307
+ }) => {
1308
+ const [progress, setProgress] = React32__namespace.useState(100);
1309
+ const timerRef = React32__namespace.useRef(void 0);
1310
+ const Icon2 = React32__namespace.useMemo(() => {
1311
+ switch (variant) {
1312
+ case "success":
1313
+ return lucideReact.Check;
1314
+ case "warning":
1315
+ return lucideReact.AlertTriangle;
1316
+ case "error":
1317
+ case "destructive":
1318
+ return lucideReact.AlertCircle;
1319
+ case "info":
1320
+ return lucideReact.Info;
1321
+ default:
1322
+ return null;
1323
+ }
1324
+ }, [variant]);
1325
+ React32__namespace.useEffect(() => {
1326
+ if (autoClose) {
1327
+ const startTime = Date.now();
1328
+ const endTime = startTime + duration;
1329
+ const updateProgress = () => {
1330
+ const now = Date.now();
1331
+ const remaining = endTime - now;
1332
+ const newProgress = remaining / duration * 100;
1333
+ setProgress(Math.max(0, newProgress));
1334
+ if (remaining > 0) {
1335
+ timerRef.current = setTimeout(updateProgress, 16);
1336
+ } else if (onClose) {
1337
+ onClose();
1338
+ }
1339
+ };
1340
+ updateProgress();
1341
+ }
1342
+ return () => {
1343
+ if (timerRef.current) {
1344
+ clearTimeout(timerRef.current);
1345
+ }
1346
+ };
1347
+ }, [autoClose, duration, onClose]);
1348
+ const textColorClass = variant === "default" ? "text-[var(--color-foreground)]" : variant === "destructive" ? "text-[var(--color-error-foreground)]" : `text-[var(--color-${variant})]`;
1349
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1350
+ "div",
1351
+ {
1352
+ className: cn(toastVariants({ variant, size, radius }), className),
1353
+ ...props,
1354
+ children: [
1355
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 items-start", children: [
1356
+ !hideIcon && Icon2 && /* @__PURE__ */ jsxRuntime.jsx(
1357
+ Icon2,
1358
+ {
1359
+ className: cn(
1360
+ "h-5 w-5",
1361
+ textColorClass
1362
+ )
1363
+ }
1364
+ ),
1365
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
1366
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium leading-none tracking-tight", textColorClass), children: title }),
1367
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-[var(--color-muted-foreground)] leading-normal", {
1368
+ "text-[var(--color-error-foreground)]/90": variant === "destructive"
1369
+ }), children: description })
1370
+ ] })
1371
+ ] }),
1372
+ action,
1373
+ onClose && /* @__PURE__ */ jsxRuntime.jsx(
1374
+ "button",
1375
+ {
1376
+ onClick: onClose,
1377
+ className: cn(
1378
+ "absolute right-2 top-2 rounded-[var(--radius-sm)] p-1 transition-opacity hover:opacity-100 opacity-70",
1379
+ textColorClass
1380
+ ),
1381
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
1382
+ }
1383
+ ),
1384
+ autoClose && showProgress && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 right-0 h-1 bg-[var(--color-accent)]/50", children: /* @__PURE__ */ jsxRuntime.jsx(
1385
+ "div",
1386
+ {
1387
+ className: cn(
1388
+ "h-full transition-all",
1389
+ variant === "default" ? "bg-[var(--color-primary)]" : `bg-[var(--color-${variant === "destructive" ? "error" : variant})]`
1390
+ ),
1391
+ style: { width: `${progress}%` }
1392
+ }
1393
+ ) })
1394
+ ]
1395
+ }
1396
+ );
1397
+ };
1398
+ Toast.displayName = "Toast";
1399
+ var ToastContainer = ({
1400
+ className,
1401
+ position = "bottom-right",
1402
+ gap = 8,
1403
+ // maxToasts parametresi ileriki versiyonlarda kullanılacak
1404
+ ...props
1405
+ }) => {
1406
+ const positionClasses = {
1407
+ "top-right": "top-0 right-0 flex-col-reverse",
1408
+ "top-center": "top-0 left-1/2 -translate-x-1/2 flex-col-reverse",
1409
+ "top-left": "top-0 left-0 flex-col-reverse",
1410
+ "bottom-right": "bottom-0 right-0 flex-col",
1411
+ "bottom-center": "bottom-0 left-1/2 -translate-x-1/2 flex-col",
1412
+ "bottom-left": "bottom-0 left-0 flex-col"
1413
+ };
1414
+ return /* @__PURE__ */ jsxRuntime.jsx(
1415
+ "div",
1416
+ {
1417
+ className: cn(
1418
+ "fixed z-[100] flex gap-2 p-4 md:max-w-[420px] w-full",
1419
+ positionClasses[position],
1420
+ className
1421
+ ),
1422
+ style: { gap: `${gap}px` },
1423
+ ...props
1424
+ }
1425
+ );
1426
+ };
1427
+ ToastContainer.displayName = "ToastContainer";
1428
+ var tooltipContentVariants = classVarianceAuthority.cva(
1429
+ "absolute z-50 overflow-hidden border text-[var(--font-size-xs)] opacity-0 transition-opacity duration-200 ease-in-out pointer-events-none",
1430
+ {
1431
+ variants: {
1432
+ variant: {
1433
+ default: "bg-[var(--color-background)] border-[var(--color-border)] text-[var(--color-foreground)]",
1434
+ primary: "bg-[var(--color-primary)] border-[var(--color-primary)] text-[var(--color-primary-foreground)]",
1435
+ secondary: "bg-[var(--color-secondary)] border-[var(--color-secondary)] text-[var(--color-secondary-foreground)]",
1436
+ success: "bg-[var(--color-success)] border-[var(--color-success)] text-white",
1437
+ warning: "bg-[var(--color-warning)] border-[var(--color-warning)] text-[var(--color-foreground)]",
1438
+ error: "bg-[var(--color-error)] border-[var(--color-error)] text-white",
1439
+ info: "bg-[var(--color-info)] border-[var(--color-info)] text-white"
1440
+ },
1441
+ size: {
1442
+ sm: "px-2 py-1 max-w-[200px]",
1443
+ default: "px-3 py-1.5 max-w-[300px]",
1444
+ lg: "px-4 py-2 max-w-[400px]"
1445
+ },
1446
+ radius: {
1447
+ none: "rounded-none",
1448
+ sm: "rounded-[var(--radius-sm)]",
1449
+ default: "rounded-[var(--radius-md)]",
1450
+ lg: "rounded-[var(--radius-lg)]",
1451
+ full: "rounded-full"
1452
+ },
1453
+ shadow: {
1454
+ sm: "shadow-sm",
1455
+ default: "shadow-md",
1456
+ lg: "shadow-lg",
1457
+ none: ""
1458
+ },
1459
+ side: {
1460
+ top: "bottom-full mb-2",
1461
+ bottom: "top-full mt-2",
1462
+ left: "right-full mr-2",
1463
+ right: "left-full ml-2"
1464
+ },
1465
+ align: {
1466
+ start: "",
1467
+ center: "",
1468
+ end: ""
1469
+ },
1470
+ visible: {
1471
+ true: "opacity-100",
1472
+ false: "opacity-0"
1473
+ },
1474
+ arrow: {
1475
+ true: 'after:content-[""] after:absolute after:w-2 after:h-2 after:rotate-45 after:border after:border-t-0 after:border-l-0',
1476
+ false: ""
1477
+ }
1478
+ },
1479
+ defaultVariants: {
1480
+ variant: "default",
1481
+ size: "default",
1482
+ radius: "default",
1483
+ shadow: "default",
1484
+ side: "top",
1485
+ align: "center",
1486
+ visible: false,
1487
+ arrow: true
1488
+ },
1489
+ compoundVariants: [
1490
+ {
1491
+ side: "top",
1492
+ arrow: true,
1493
+ className: "after:bottom-[-5px] after:border-r-[var(--color-border)] after:border-b-[var(--color-border)] after:bg-[var(--color-background)]"
1494
+ },
1495
+ {
1496
+ side: "bottom",
1497
+ arrow: true,
1498
+ className: "after:top-[-5px] after:border-t-[var(--color-border)] after:border-l-[var(--color-border)] after:bg-[var(--color-background)]"
1499
+ },
1500
+ {
1501
+ side: "left",
1502
+ arrow: true,
1503
+ className: "after:right-[-5px] after:border-t-[var(--color-border)] after:border-r-[var(--color-border)] after:bg-[var(--color-background)]"
1504
+ },
1505
+ {
1506
+ side: "right",
1507
+ arrow: true,
1508
+ className: "after:left-[-5px] after:border-b-[var(--color-border)] after:border-l-[var(--color-border)] after:bg-[var(--color-background)]"
1509
+ },
1510
+ {
1511
+ align: "center",
1512
+ side: "top",
1513
+ className: "left-1/2 -translate-x-1/2 after:left-1/2 after:-translate-x-1/2"
1514
+ },
1515
+ {
1516
+ align: "center",
1517
+ side: "bottom",
1518
+ className: "left-1/2 -translate-x-1/2 after:left-1/2 after:-translate-x-1/2"
1519
+ },
1520
+ {
1521
+ align: "center",
1522
+ side: "left",
1523
+ className: "top-1/2 -translate-y-1/2 after:top-1/2 after:-translate-y-1/2"
1524
+ },
1525
+ {
1526
+ align: "center",
1527
+ side: "right",
1528
+ className: "top-1/2 -translate-y-1/2 after:top-1/2 after:-translate-y-1/2"
1529
+ },
1530
+ {
1531
+ align: "start",
1532
+ side: "top",
1533
+ className: "left-0 after:left-3"
1534
+ },
1535
+ {
1536
+ align: "start",
1537
+ side: "bottom",
1538
+ className: "left-0 after:left-3"
1539
+ },
1540
+ {
1541
+ align: "start",
1542
+ side: "left",
1543
+ className: "top-0 after:top-3"
1544
+ },
1545
+ {
1546
+ align: "start",
1547
+ side: "right",
1548
+ className: "top-0 after:top-3"
1549
+ },
1550
+ {
1551
+ align: "end",
1552
+ side: "top",
1553
+ className: "right-0 after:right-3"
1554
+ },
1555
+ {
1556
+ align: "end",
1557
+ side: "bottom",
1558
+ className: "right-0 after:right-3"
1559
+ },
1560
+ {
1561
+ align: "end",
1562
+ side: "left",
1563
+ className: "bottom-0 after:bottom-3"
1564
+ },
1565
+ {
1566
+ align: "end",
1567
+ side: "right",
1568
+ className: "bottom-0 after:bottom-3"
1569
+ }
1570
+ ]
1571
+ }
1572
+ );
1573
+ function Tooltip({
1574
+ children,
1575
+ content,
1576
+ delayDuration = 300,
1577
+ side = "top",
1578
+ align = "center",
1579
+ variant,
1580
+ size,
1581
+ radius,
1582
+ shadow,
1583
+ disabled = false,
1584
+ contentClassName,
1585
+ triggerClassName,
1586
+ ...props
1587
+ }) {
1588
+ const [visible, setVisible] = React32__namespace.useState(false);
1589
+ const timeoutRef = React32__namespace.useRef(void 0);
1590
+ const showTooltip = () => {
1591
+ if (timeoutRef.current) {
1592
+ clearTimeout(timeoutRef.current);
1593
+ }
1594
+ timeoutRef.current = setTimeout(() => {
1595
+ setVisible(true);
1596
+ }, delayDuration);
1597
+ };
1598
+ const hideTooltip = () => {
1599
+ if (timeoutRef.current) {
1600
+ clearTimeout(timeoutRef.current);
1601
+ }
1602
+ setVisible(false);
1603
+ };
1604
+ React32__namespace.useEffect(() => {
1605
+ return () => {
1606
+ if (timeoutRef.current) {
1607
+ clearTimeout(timeoutRef.current);
1608
+ }
1609
+ };
1610
+ }, []);
1611
+ if (disabled) {
1612
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1613
+ }
1614
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1615
+ "div",
1616
+ {
1617
+ className: "relative inline-flex",
1618
+ onMouseEnter: showTooltip,
1619
+ onMouseLeave: hideTooltip,
1620
+ onFocus: showTooltip,
1621
+ onBlur: hideTooltip,
1622
+ children: [
1623
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("inline-flex", triggerClassName || ""), children }),
1624
+ /* @__PURE__ */ jsxRuntime.jsx(
1625
+ "div",
1626
+ {
1627
+ className: cn(
1628
+ tooltipContentVariants({
1629
+ variant,
1630
+ size,
1631
+ radius,
1632
+ shadow,
1633
+ side,
1634
+ align,
1635
+ visible,
1636
+ arrow: true
1637
+ }),
1638
+ contentClassName
1639
+ ),
1640
+ role: "tooltip",
1641
+ ...props,
1642
+ children: content
1643
+ }
1644
+ )
1645
+ ]
1646
+ }
1647
+ );
1648
+ }
1649
+ Tooltip.displayName = "Tooltip";
1650
+ var checkboxVariants = classVarianceAuthority.cva(
1651
+ "peer shrink-0 border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-[var(--color-primary-foreground)]",
1652
+ {
1653
+ variants: {
1654
+ variant: {
1655
+ default: "border-[var(--color-border)] bg-[var(--color-background)] data-[state=checked]:bg-[var(--color-primary)] data-[state=checked]:border-[var(--color-primary)]",
1656
+ outline: "border-[var(--color-border)] bg-transparent data-[state=checked]:bg-[var(--color-primary)] data-[state=checked]:border-[var(--color-primary)]",
1657
+ muted: "border-[var(--color-border)] bg-[var(--color-accent)] data-[state=checked]:bg-[var(--color-primary)] data-[state=checked]:border-[var(--color-primary)]",
1658
+ ghost: "border-transparent bg-transparent hover:bg-[var(--color-accent)] data-[state=checked]:bg-[var(--color-primary)] data-[state=checked]:border-[var(--color-primary)]"
1659
+ },
1660
+ size: {
1661
+ sm: "h-3.5 w-3.5",
1662
+ default: "h-4 w-4",
1663
+ md: "h-5 w-5",
1664
+ lg: "h-6 w-6"
1665
+ },
1666
+ radius: {
1667
+ none: "rounded-none",
1668
+ sm: "rounded-[var(--radius-sm)]",
1669
+ default: "rounded-[var(--radius-sm)]",
1670
+ md: "rounded-[var(--radius-md)]",
1671
+ full: "rounded-full"
1672
+ },
1673
+ animation: {
1674
+ none: "",
1675
+ subtle: "transition-all duration-200",
1676
+ default: "transition-all duration-200",
1677
+ bounce: "transition-all duration-200"
1678
+ }
1679
+ },
1680
+ defaultVariants: {
1681
+ variant: "default",
1682
+ size: "default",
1683
+ radius: "default",
1684
+ animation: "default"
1685
+ }
1686
+ }
1687
+ );
1688
+ var Checkbox = React32__namespace.forwardRef(({
1689
+ className,
1690
+ variant,
1691
+ size,
1692
+ radius,
1693
+ animation,
1694
+ indeterminate = false,
1695
+ icon,
1696
+ checked,
1697
+ ...props
1698
+ }, ref) => {
1699
+ const [isIndeterminate, setIsIndeterminate] = React32__namespace.useState(indeterminate);
1700
+ React32__namespace.useEffect(() => {
1701
+ setIsIndeterminate(indeterminate);
1702
+ }, [indeterminate]);
1703
+ const effectiveChecked = isIndeterminate ? false : checked;
1704
+ return /* @__PURE__ */ jsxRuntime.jsx(
1705
+ CheckboxPrimitive__namespace.Root,
1706
+ {
1707
+ ref,
1708
+ checked: effectiveChecked,
1709
+ className: cn(checkboxVariants({ variant, size, radius, animation }), className),
1710
+ ...props,
1711
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1712
+ CheckboxPrimitive__namespace.Indicator,
1713
+ {
1714
+ className: cn(
1715
+ "flex items-center justify-center text-current",
1716
+ animation === "bounce" && "data-[state=checked]:animate-bounce"
1717
+ ),
1718
+ children: isIndeterminate ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: "h-[65%] w-[65%]" }) : icon ? icon : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-[65%] w-[65%]" })
1719
+ }
1720
+ )
1721
+ }
1722
+ );
1723
+ });
1724
+ Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
1725
+ var CheckboxGroup = React32__namespace.forwardRef(
1726
+ ({ className, orientation = "vertical", spacing = "1rem", children, ...props }, ref) => {
1727
+ return /* @__PURE__ */ jsxRuntime.jsx(
1728
+ "div",
1729
+ {
1730
+ ref,
1731
+ className: cn(
1732
+ "flex",
1733
+ orientation === "vertical" ? "flex-col" : "flex-row flex-wrap",
1734
+ className
1735
+ ),
1736
+ style: { gap: spacing },
1737
+ role: "group",
1738
+ ...props,
1739
+ children
1740
+ }
1741
+ );
1742
+ }
1743
+ );
1744
+ CheckboxGroup.displayName = "CheckboxGroup";
1745
+ var CheckboxLabel = React32__namespace.forwardRef(
1746
+ ({ className, htmlFor, children, position = "end", disabled = false, ...props }, ref) => {
1747
+ return /* @__PURE__ */ jsxRuntime.jsx(
1748
+ "label",
1749
+ {
1750
+ ref,
1751
+ htmlFor,
1752
+ className: cn(
1753
+ "text-[var(--font-size-sm)] font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1754
+ position === "start" ? "mr-2" : "ml-2",
1755
+ disabled && "cursor-not-allowed opacity-70",
1756
+ className
1757
+ ),
1758
+ ...props,
1759
+ children
1760
+ }
1761
+ );
1762
+ }
1763
+ );
1764
+ CheckboxLabel.displayName = "CheckboxLabel";
1765
+ var CheckboxWithLabel = React32__namespace.forwardRef(({
1766
+ id,
1767
+ label,
1768
+ labelPosition = "end",
1769
+ labelClassName,
1770
+ ...checkboxProps
1771
+ }, ref) => {
1772
+ const checkboxId = id || `checkbox-${Math.random().toString(36).substring(2, 9)}`;
1773
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center", children: [
1774
+ labelPosition === "start" && /* @__PURE__ */ jsxRuntime.jsx(
1775
+ CheckboxLabel,
1776
+ {
1777
+ htmlFor: checkboxId,
1778
+ position: "start",
1779
+ disabled: checkboxProps.disabled,
1780
+ className: labelClassName,
1781
+ children: label
1782
+ }
1783
+ ),
1784
+ /* @__PURE__ */ jsxRuntime.jsx(Checkbox, { ref, id: checkboxId, ...checkboxProps }),
1785
+ labelPosition === "end" && /* @__PURE__ */ jsxRuntime.jsx(
1786
+ CheckboxLabel,
1787
+ {
1788
+ htmlFor: checkboxId,
1789
+ position: "end",
1790
+ disabled: checkboxProps.disabled,
1791
+ className: labelClassName,
1792
+ children: label
1793
+ }
1794
+ )
1795
+ ] });
1796
+ });
1797
+ CheckboxWithLabel.displayName = "CheckboxWithLabel";
1798
+ var radioGroupItemVariants = classVarianceAuthority.cva(
1799
+ "aspect-square border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
1800
+ {
1801
+ variants: {
1802
+ variant: {
1803
+ default: "border-[var(--color-border)] bg-[var(--color-background)] text-[var(--color-primary)]",
1804
+ outline: "border-[var(--color-border)] bg-transparent text-[var(--color-primary)]",
1805
+ filled: "border-[var(--color-primary)] bg-[var(--color-primary)]/10 text-[var(--color-primary)]"
1806
+ },
1807
+ size: {
1808
+ sm: "h-3.5 w-3.5",
1809
+ default: "h-4 w-4",
1810
+ md: "h-5 w-5",
1811
+ lg: "h-6 w-6"
1812
+ }
1813
+ },
1814
+ defaultVariants: {
1815
+ variant: "default",
1816
+ size: "default"
1817
+ }
1818
+ }
1819
+ );
1820
+ var RadioGroupContext = React32__namespace.createContext({});
1821
+ var RadioGroup = React32__namespace.forwardRef(
1822
+ ({ className, value, onValueChange, disabled, name, ...props }, ref) => {
1823
+ return /* @__PURE__ */ jsxRuntime.jsx(RadioGroupContext.Provider, { value: { value, onValueChange, disabled, name }, children: /* @__PURE__ */ jsxRuntime.jsx(
1824
+ "div",
1825
+ {
1826
+ ref,
1827
+ role: "radiogroup",
1828
+ className: cn("grid gap-2", className),
1829
+ ...props
1830
+ }
1831
+ ) });
1832
+ }
1833
+ );
1834
+ RadioGroup.displayName = "RadioGroup";
1835
+ var RadioGroupItem = React32__namespace.forwardRef(({ className, variant, size, indicator, id, value, disabled, ...props }, ref) => {
1836
+ const radioGroup = React32__namespace.useContext(RadioGroupContext);
1837
+ const generatedId = React32__namespace.useId();
1838
+ const radioId = id || generatedId;
1839
+ const isChecked = radioGroup.value === value;
1840
+ const handleChange = (e) => {
1841
+ if (radioGroup.onValueChange) {
1842
+ radioGroup.onValueChange(e.target.value);
1843
+ }
1844
+ if (props.onChange) {
1845
+ props.onChange(e);
1846
+ }
1847
+ };
1848
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center", children: [
1849
+ /* @__PURE__ */ jsxRuntime.jsx(
1850
+ "input",
1851
+ {
1852
+ type: "radio",
1853
+ id: radioId,
1854
+ ref,
1855
+ value,
1856
+ checked: isChecked,
1857
+ disabled: disabled || radioGroup.disabled,
1858
+ name: radioGroup.name,
1859
+ onChange: handleChange,
1860
+ className: "sr-only",
1861
+ ...props
1862
+ }
1863
+ ),
1864
+ /* @__PURE__ */ jsxRuntime.jsx(
1865
+ "label",
1866
+ {
1867
+ htmlFor: radioId,
1868
+ className: cn(
1869
+ radioGroupItemVariants({ variant, size }),
1870
+ "rounded-full",
1871
+ "focus-visible:ring-[var(--color-primary)]/50",
1872
+ "relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden",
1873
+ disabled && "cursor-not-allowed opacity-50",
1874
+ className
1875
+ ),
1876
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
1877
+ "absolute inset-0 pointer-events-none",
1878
+ isChecked && "flex items-center justify-center"
1879
+ ), children: isChecked && (indicator || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-[60%] w-[60%] fill-current text-current" })) })
1880
+ }
1881
+ )
1882
+ ] });
1883
+ });
1884
+ RadioGroupItem.displayName = "RadioGroupItem";
1885
+ var RadioLabel = React32__namespace.forwardRef(
1886
+ ({ className, htmlFor, children, disabled = false, ...props }, ref) => {
1887
+ return /* @__PURE__ */ jsxRuntime.jsx(
1888
+ "label",
1889
+ {
1890
+ ref,
1891
+ htmlFor,
1892
+ className: cn(
1893
+ "text-[var(--font-size-sm)] font-medium leading-none ml-2 text-[var(--color-foreground)]",
1894
+ disabled && "cursor-not-allowed opacity-70",
1895
+ className
1896
+ ),
1897
+ ...props,
1898
+ children
1899
+ }
1900
+ );
1901
+ }
1902
+ );
1903
+ RadioLabel.displayName = "RadioLabel";
1904
+ var RadioItemWithLabel = React32__namespace.forwardRef(({
1905
+ id,
1906
+ label,
1907
+ labelClassName,
1908
+ ...radioProps
1909
+ }, ref) => {
1910
+ const radioId = id || `radio-${Math.random().toString(36).substring(2, 9)}`;
1911
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center", children: [
1912
+ /* @__PURE__ */ jsxRuntime.jsx(RadioGroupItem, { ref, id: radioId, ...radioProps }),
1913
+ /* @__PURE__ */ jsxRuntime.jsx(
1914
+ RadioLabel,
1915
+ {
1916
+ htmlFor: radioId,
1917
+ disabled: radioProps.disabled,
1918
+ className: labelClassName,
1919
+ children: label
1920
+ }
1921
+ )
1922
+ ] });
1923
+ });
1924
+ RadioItemWithLabel.displayName = "RadioItemWithLabel";
1925
+ var progressVariants = classVarianceAuthority.cva(
1926
+ "relative w-full overflow-hidden bg-[var(--color-muted)]",
1927
+ {
1928
+ variants: {
1929
+ variant: {
1930
+ default: "bg-[var(--color-muted)]",
1931
+ primary: "bg-[var(--color-primary)]/20",
1932
+ secondary: "bg-[var(--color-secondary)]/20",
1933
+ success: "bg-[var(--color-success)]/20",
1934
+ warning: "bg-[var(--color-warning)]/20",
1935
+ error: "bg-[var(--color-error)]/20"
1936
+ },
1937
+ size: {
1938
+ xs: "h-1",
1939
+ sm: "h-1.5",
1940
+ default: "h-2",
1941
+ md: "h-2.5",
1942
+ lg: "h-3",
1943
+ xl: "h-4"
1944
+ },
1945
+ radius: {
1946
+ none: "rounded-none",
1947
+ sm: "rounded-[var(--radius-sm)]",
1948
+ default: "rounded-[var(--radius-md)]",
1949
+ lg: "rounded-[var(--radius-lg)]",
1950
+ full: "rounded-full"
1951
+ },
1952
+ animation: {
1953
+ default: "[&>div]:transition-all [&>div]:duration-500",
1954
+ smooth: "[&>div]:transition-all [&>div]:duration-700",
1955
+ fast: "[&>div]:transition-all [&>div]:duration-300",
1956
+ none: ""
1957
+ }
1958
+ },
1959
+ defaultVariants: {
1960
+ variant: "default",
1961
+ size: "default",
1962
+ radius: "full",
1963
+ animation: "default"
1964
+ }
1965
+ }
1966
+ );
1967
+ var progressIndicatorVariants = classVarianceAuthority.cva(
1968
+ "h-full w-full flex-1",
1969
+ {
1970
+ variants: {
1971
+ variant: {
1972
+ default: "bg-[var(--color-foreground)]",
1973
+ primary: "bg-[var(--color-primary)]",
1974
+ secondary: "bg-[var(--color-secondary)]",
1975
+ success: "bg-[var(--color-success)]",
1976
+ warning: "bg-[var(--color-warning)]",
1977
+ error: "bg-[var(--color-error)]"
1978
+ },
1979
+ animation: {
1980
+ default: "transition-all duration-500",
1981
+ smooth: "transition-all duration-700",
1982
+ fast: "transition-all duration-300",
1983
+ none: ""
1984
+ }
1985
+ },
1986
+ defaultVariants: {
1987
+ variant: "primary",
1988
+ animation: "default"
1989
+ }
1990
+ }
1991
+ );
1992
+ var Progress = React32__namespace.forwardRef(({
1993
+ className,
1994
+ value = 0,
1995
+ variant,
1996
+ size,
1997
+ radius,
1998
+ animation,
1999
+ indicatorVariant,
2000
+ showValueLabel = false,
2001
+ valueLabel,
2002
+ labelClassName,
2003
+ indeterminate = false,
2004
+ max = 100,
2005
+ ...props
2006
+ }, ref) => {
2007
+ const normalizedValue = Math.max(0, Math.min(value, max));
2008
+ const percentage = max > 0 ? normalizedValue / max * 100 : 0;
2009
+ const label = valueLabel || `${Math.round(percentage)}%`;
2010
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full", children: [
2011
+ showValueLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-between items-center mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
2012
+ "span",
2013
+ {
2014
+ className: cn(
2015
+ "text-[var(--font-size-sm)] font-medium text-[var(--color-muted-foreground)]",
2016
+ labelClassName
2017
+ ),
2018
+ children: label
2019
+ }
2020
+ ) }),
2021
+ /* @__PURE__ */ jsxRuntime.jsx(
2022
+ "div",
2023
+ {
2024
+ ref,
2025
+ className: cn(progressVariants({ variant, size, radius, animation }), className),
2026
+ role: "progressbar",
2027
+ "aria-valuemin": 0,
2028
+ "aria-valuemax": max,
2029
+ "aria-valuenow": indeterminate ? void 0 : normalizedValue,
2030
+ ...props,
2031
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2032
+ "div",
2033
+ {
2034
+ className: cn(
2035
+ progressIndicatorVariants({ variant: indicatorVariant || variant, animation }),
2036
+ indeterminate && "animate-indeterminate-progress"
2037
+ ),
2038
+ style: indeterminate ? {} : { transform: `translateX(-${100 - percentage}%)` }
2039
+ }
2040
+ )
2041
+ }
2042
+ )
2043
+ ] });
2044
+ });
2045
+ Progress.displayName = "Progress";
2046
+ var skeletonVariants = classVarianceAuthority.cva(
2047
+ "animate-pulse rounded-[var(--radius-md)]",
2048
+ {
2049
+ variants: {
2050
+ variant: {
2051
+ default: "bg-[var(--color-muted)]",
2052
+ primary: "bg-[var(--color-primary)]/10",
2053
+ secondary: "bg-[var(--color-secondary)]/10",
2054
+ accent: "bg-[var(--color-accent)]"
2055
+ },
2056
+ size: {
2057
+ default: "",
2058
+ sm: "scale-90",
2059
+ lg: "scale-110"
2060
+ },
2061
+ shape: {
2062
+ rect: "rounded-[var(--radius-md)]",
2063
+ circle: "rounded-full",
2064
+ pill: "rounded-full"
2065
+ },
2066
+ animation: {
2067
+ pulse: "animate-pulse",
2068
+ wave: "animate-shimmer overflow-hidden before:absolute before:inset-0 before:-translate-x-full before:animate-[shimmer_2s_infinite] before:bg-gradient-to-r before:from-transparent before:via-white/20 before:to-transparent",
2069
+ none: "animate-none"
2070
+ }
2071
+ },
2072
+ defaultVariants: {
2073
+ variant: "default",
2074
+ size: "default",
2075
+ shape: "rect",
2076
+ animation: "pulse"
2077
+ }
2078
+ }
2079
+ );
2080
+ var Skeleton = React32__namespace.forwardRef(
2081
+ ({
2082
+ className,
2083
+ variant,
2084
+ size,
2085
+ shape,
2086
+ animation,
2087
+ height,
2088
+ width,
2089
+ isLoaded = false,
2090
+ children,
2091
+ fadeInDuration = 400,
2092
+ style,
2093
+ ...props
2094
+ }, ref) => {
2095
+ if (isLoaded && children) {
2096
+ return /* @__PURE__ */ jsxRuntime.jsx(
2097
+ "div",
2098
+ {
2099
+ ref,
2100
+ className: cn("animate-fade-in", className),
2101
+ style: {
2102
+ animationDuration: `${fadeInDuration}ms`,
2103
+ height,
2104
+ width,
2105
+ ...style
2106
+ },
2107
+ ...props,
2108
+ children
2109
+ }
2110
+ );
2111
+ }
2112
+ return /* @__PURE__ */ jsxRuntime.jsx(
2113
+ "div",
2114
+ {
2115
+ ref,
2116
+ className: cn(
2117
+ skeletonVariants({ variant, size, shape, animation }),
2118
+ "relative",
2119
+ className
2120
+ ),
2121
+ style: {
2122
+ height,
2123
+ width,
2124
+ ...style
2125
+ },
2126
+ ...props
2127
+ }
2128
+ );
2129
+ }
2130
+ );
2131
+ Skeleton.displayName = "Skeleton";
2132
+ var SkeletonText = React32__namespace.forwardRef(
2133
+ ({
2134
+ className,
2135
+ lines = 3,
2136
+ lineHeight = "0.85rem",
2137
+ spacing = "0.5rem",
2138
+ lastLineWidth = 80,
2139
+ randomWidths = false,
2140
+ variant = "default",
2141
+ animation = "pulse",
2142
+ ...props
2143
+ }, ref) => {
2144
+ return /* @__PURE__ */ jsxRuntime.jsx(
2145
+ "div",
2146
+ {
2147
+ ref,
2148
+ className: cn("flex flex-col", className),
2149
+ style: { gap: spacing },
2150
+ ...props,
2151
+ children: Array.from({ length: lines }).map((_, i) => {
2152
+ const isLastLine = i === lines - 1;
2153
+ const widthPercentage = isLastLine ? lastLineWidth : randomWidths ? Math.floor(Math.random() * 20) + 80 : 100;
2154
+ return /* @__PURE__ */ jsxRuntime.jsx(
2155
+ Skeleton,
2156
+ {
2157
+ variant,
2158
+ animation,
2159
+ className: "w-full",
2160
+ style: {
2161
+ height: lineHeight,
2162
+ width: `${widthPercentage}%`
2163
+ }
2164
+ },
2165
+ i
2166
+ );
2167
+ })
2168
+ }
2169
+ );
2170
+ }
2171
+ );
2172
+ SkeletonText.displayName = "SkeletonText";
2173
+ var SkeletonAvatar = React32__namespace.forwardRef(
2174
+ ({
2175
+ className,
2176
+ size = "2.5rem",
2177
+ variant = "default",
2178
+ animation = "pulse",
2179
+ ...props
2180
+ }, ref) => {
2181
+ return /* @__PURE__ */ jsxRuntime.jsx(
2182
+ Skeleton,
2183
+ {
2184
+ ref,
2185
+ variant,
2186
+ animation,
2187
+ shape: "circle",
2188
+ className: cn("shrink-0", className),
2189
+ style: {
2190
+ height: size,
2191
+ width: size
2192
+ },
2193
+ ...props
2194
+ }
2195
+ );
2196
+ }
2197
+ );
2198
+ SkeletonAvatar.displayName = "SkeletonAvatar";
2199
+ var SkeletonCard = React32__namespace.forwardRef(
2200
+ ({
2201
+ className,
2202
+ showHeader = true,
2203
+ contentLines = 3,
2204
+ showFooter = true,
2205
+ variant = "default",
2206
+ animation = "pulse",
2207
+ ...props
2208
+ }, ref) => {
2209
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2210
+ "div",
2211
+ {
2212
+ ref,
2213
+ className: cn(
2214
+ "overflow-hidden rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-background)] p-4",
2215
+ className
2216
+ ),
2217
+ ...props,
2218
+ children: [
2219
+ showHeader && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center gap-4", children: [
2220
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonAvatar, { size: "2.5rem", variant, animation }),
2221
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
2222
+ /* @__PURE__ */ jsxRuntime.jsx(
2223
+ Skeleton,
2224
+ {
2225
+ variant,
2226
+ animation,
2227
+ className: "mb-2 h-4 w-1/3"
2228
+ }
2229
+ ),
2230
+ /* @__PURE__ */ jsxRuntime.jsx(
2231
+ Skeleton,
2232
+ {
2233
+ variant,
2234
+ animation,
2235
+ className: "h-3 w-1/4"
2236
+ }
2237
+ )
2238
+ ] })
2239
+ ] }),
2240
+ /* @__PURE__ */ jsxRuntime.jsx(
2241
+ SkeletonText,
2242
+ {
2243
+ lines: contentLines,
2244
+ variant,
2245
+ animation,
2246
+ className: "mb-4"
2247
+ }
2248
+ ),
2249
+ showFooter && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-[var(--color-border)]", children: [
2250
+ /* @__PURE__ */ jsxRuntime.jsx(
2251
+ Skeleton,
2252
+ {
2253
+ variant,
2254
+ animation,
2255
+ className: "h-4 w-1/4"
2256
+ }
2257
+ ),
2258
+ /* @__PURE__ */ jsxRuntime.jsx(
2259
+ Skeleton,
2260
+ {
2261
+ variant,
2262
+ animation,
2263
+ className: "h-4 w-1/5"
2264
+ }
2265
+ )
2266
+ ] })
2267
+ ]
2268
+ }
2269
+ );
2270
+ }
2271
+ );
2272
+ SkeletonCard.displayName = "SkeletonCard";
2273
+ var popoverContentVariants = classVarianceAuthority.cva(
2274
+ "z-50 w-72 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-background)] p-4 shadow-[var(--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",
2275
+ {
2276
+ variants: {
2277
+ variant: {
2278
+ default: "",
2279
+ destructive: "border-[var(--color-error)] bg-[var(--color-error)]/5",
2280
+ outline: "border-[var(--color-border)] bg-transparent",
2281
+ subtle: "border-transparent bg-[var(--color-muted)]/50"
2282
+ },
2283
+ size: {
2284
+ sm: "w-48 p-3",
2285
+ default: "w-72 p-4",
2286
+ lg: "w-96 p-5"
2287
+ },
2288
+ side: {
2289
+ top: "data-[side=top]:slide-in-from-bottom-2",
2290
+ right: "data-[side=right]:slide-in-from-left-2",
2291
+ bottom: "data-[side=bottom]:slide-in-from-top-2",
2292
+ left: "data-[side=left]:slide-in-from-right-2"
2293
+ },
2294
+ position: {
2295
+ pointerEventsNone: "pointer-events-none",
2296
+ default: ""
2297
+ },
2298
+ radius: {
2299
+ none: "rounded-none",
2300
+ sm: "rounded-[var(--radius-sm)]",
2301
+ default: "rounded-[var(--radius-md)]",
2302
+ lg: "rounded-[var(--radius-lg)]",
2303
+ full: "rounded-full"
2304
+ },
2305
+ shadow: {
2306
+ none: "shadow-none",
2307
+ sm: "shadow-[var(--shadow-sm)]",
2308
+ default: "shadow-[var(--shadow-md)]",
2309
+ md: "shadow-[var(--shadow-md)]",
2310
+ lg: "shadow-[var(--shadow-lg)]",
2311
+ xl: "shadow-[var(--shadow-xl)]"
2312
+ }
2313
+ },
2314
+ defaultVariants: {
2315
+ variant: "default",
2316
+ size: "default",
2317
+ radius: "default",
2318
+ shadow: "default"
2319
+ }
2320
+ }
2321
+ );
2322
+ var Popover = PopoverPrimitive__namespace.Root;
2323
+ var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
2324
+ var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
2325
+ var PopoverContent = React32__namespace.forwardRef(({
2326
+ className,
2327
+ variant,
2328
+ size,
2329
+ side,
2330
+ position,
2331
+ radius,
2332
+ shadow,
2333
+ backdrop = false,
2334
+ closeOnInteractOutside = true,
2335
+ overlayBackdrop = false,
2336
+ sideOffset = 4,
2337
+ ...props
2338
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2339
+ overlayBackdrop && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-40 bg-[var(--color-overlay)] opacity-30" }),
2340
+ /* @__PURE__ */ jsxRuntime.jsx(
2341
+ PopoverPrimitive__namespace.Content,
2342
+ {
2343
+ ref,
2344
+ sideOffset,
2345
+ collisionPadding: 8,
2346
+ onInteractOutside: (e) => {
2347
+ if (!closeOnInteractOutside) {
2348
+ e.preventDefault();
2349
+ }
2350
+ },
2351
+ className: cn(
2352
+ popoverContentVariants({
2353
+ variant,
2354
+ size,
2355
+ side,
2356
+ position,
2357
+ radius,
2358
+ shadow
2359
+ }),
2360
+ backdrop && "backdrop-blur-md bg-opacity-80",
2361
+ className
2362
+ ),
2363
+ ...props
2364
+ }
2365
+ )
2366
+ ] }));
2367
+ PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
2368
+ var PopoverClose = PopoverPrimitive__namespace.Close;
2369
+ var PopoverSeparator = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
2370
+ "div",
2371
+ {
2372
+ className: cn("my-2 h-px bg-[var(--color-border)]", className),
2373
+ ...props
2374
+ }
2375
+ );
2376
+ PopoverSeparator.displayName = "PopoverSeparator";
2377
+ var PopoverHeader = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
2378
+ "div",
2379
+ {
2380
+ className: cn("-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-[var(--color-border)]", className),
2381
+ ...props
2382
+ }
2383
+ );
2384
+ PopoverHeader.displayName = "PopoverHeader";
2385
+ var PopoverFooter = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
2386
+ "div",
2387
+ {
2388
+ className: cn("-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-[var(--color-border)]", className),
2389
+ ...props
2390
+ }
2391
+ );
2392
+ PopoverFooter.displayName = "PopoverFooter";
2393
+ var breadcrumbVariants = classVarianceAuthority.cva(
2394
+ "flex items-center gap-1.5",
2395
+ {
2396
+ variants: {
2397
+ variant: {
2398
+ default: "text-[var(--color-foreground)] transition-colors",
2399
+ muted: "text-[var(--color-muted-foreground)] transition-colors",
2400
+ ghost: "text-[var(--color-foreground)]/60 transition-colors",
2401
+ accent: "text-[var(--color-accent)] transition-colors",
2402
+ primary: "text-[var(--color-primary)] transition-colors"
2403
+ },
2404
+ size: {
2405
+ sm: "text-[var(--font-size-xs)]",
2406
+ default: "text-[var(--font-size-sm)]",
2407
+ md: "text-[var(--font-size-base)]",
2408
+ lg: "text-[var(--font-size-lg)]"
2409
+ }
2410
+ },
2411
+ defaultVariants: {
2412
+ variant: "default",
2413
+ size: "default"
2414
+ }
2415
+ }
2416
+ );
2417
+ var Breadcrumb = React32__namespace.forwardRef(
2418
+ ({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2419
+ "nav",
2420
+ {
2421
+ ref,
2422
+ className: cn(breadcrumbVariants({ variant, size }), className),
2423
+ "aria-label": "breadcrumb",
2424
+ ...props
2425
+ }
2426
+ )
2427
+ );
2428
+ Breadcrumb.displayName = "Breadcrumb";
2429
+ var BreadcrumbList = React32__namespace.forwardRef(
2430
+ ({ className, collapsed, collapsedWidth = 3, ...props }, ref) => {
2431
+ const childrenArray = React32__namespace.Children.toArray(props.children).filter(Boolean);
2432
+ const childCount = childrenArray.length;
2433
+ if (collapsed && childCount > collapsedWidth) {
2434
+ const firstItem = childrenArray[0];
2435
+ const lastTwoItems = childrenArray.slice(-2);
2436
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2437
+ "ol",
2438
+ {
2439
+ ref,
2440
+ className: cn(
2441
+ "flex flex-wrap items-center gap-1.5 sm:gap-2.5",
2442
+ className
2443
+ ),
2444
+ ...props,
2445
+ children: [
2446
+ firstItem,
2447
+ /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbEllipsis, {}),
2448
+ lastTwoItems
2449
+ ]
2450
+ }
2451
+ );
2452
+ }
2453
+ return /* @__PURE__ */ jsxRuntime.jsx(
2454
+ "ol",
2455
+ {
2456
+ ref,
2457
+ className: cn(
2458
+ "flex flex-wrap items-center gap-1.5 sm:gap-2.5",
2459
+ className
2460
+ ),
2461
+ ...props
2462
+ }
2463
+ );
2464
+ }
2465
+ );
2466
+ BreadcrumbList.displayName = "BreadcrumbList";
2467
+ var BreadcrumbItem = React32__namespace.forwardRef(
2468
+ ({ className, isCurrent, href, asChild = false, ...props }, ref) => {
2469
+ const Comp = asChild ? React32__namespace.Fragment : href ? "a" : "span";
2470
+ const itemProps = asChild ? {} : href ? { href } : {};
2471
+ return /* @__PURE__ */ jsxRuntime.jsx(
2472
+ "li",
2473
+ {
2474
+ ref,
2475
+ className: cn("inline-flex items-center gap-1.5", className),
2476
+ "aria-current": isCurrent ? "page" : void 0,
2477
+ ...props,
2478
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2479
+ Comp,
2480
+ {
2481
+ className: cn(
2482
+ "transition-colors duration-[var(--duration-base)] hover:text-[var(--color-foreground)]",
2483
+ isCurrent ? "font-[var(--font-weight-medium)] text-[var(--color-foreground)]" : "text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] hover:underline hover:underline-offset-4 hover:decoration-[var(--color-border)]"
2484
+ ),
2485
+ ...itemProps,
2486
+ children: props.children
2487
+ }
2488
+ )
2489
+ }
2490
+ );
2491
+ }
2492
+ );
2493
+ BreadcrumbItem.displayName = "BreadcrumbItem";
2494
+ var BreadcrumbSeparator = ({
2495
+ children,
2496
+ className,
2497
+ ...props
2498
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
2499
+ "li",
2500
+ {
2501
+ role: "presentation",
2502
+ "aria-hidden": "true",
2503
+ className: cn("text-[var(--color-muted-foreground)] opacity-70", className),
2504
+ ...props,
2505
+ children: children || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-3.5 w-3.5" })
2506
+ }
2507
+ );
2508
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
2509
+ var BreadcrumbEllipsis = ({
2510
+ className,
2511
+ ...props
2512
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
2513
+ "li",
2514
+ {
2515
+ role: "presentation",
2516
+ "aria-hidden": "true",
2517
+ className: cn("flex items-center text-[var(--color-muted-foreground)] hover:text-[var(--color-muted-foreground)]/80 transition-colors duration-[var(--duration-base)]", className),
2518
+ ...props,
2519
+ children: [
2520
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
2521
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Daha fazla sayfa" })
2522
+ ]
2523
+ }
2524
+ );
2525
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
2526
+ var Accordion = AccordionPrimitive__namespace.Root;
2527
+ var accordionItemVariants = classVarianceAuthority.cva(
2528
+ "border-b",
2529
+ {
2530
+ variants: {
2531
+ variant: {
2532
+ default: "border-[var(--color-border)]",
2533
+ outline: "border-[var(--color-border)] rounded-md mb-2 border p-[1px] last:mb-0",
2534
+ card: "border-[var(--color-border)] rounded-md mb-2 border bg-[var(--color-background)] p-0 shadow-sm last:mb-0"
2535
+ }
2536
+ },
2537
+ defaultVariants: {
2538
+ variant: "default"
2539
+ }
2540
+ }
2541
+ );
2542
+ var AccordionItem = React32__namespace.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2543
+ AccordionPrimitive__namespace.Item,
2544
+ {
2545
+ ref,
2546
+ className: cn(accordionItemVariants({ variant }), className),
2547
+ ...props
2548
+ }
2549
+ ));
2550
+ AccordionItem.displayName = "AccordionItem";
2551
+ var accordionTriggerVariants = classVarianceAuthority.cva(
2552
+ "flex flex-1 items-center justify-between py-4 transition-all [&[data-state=open]>svg]:rotate-180 group",
2553
+ {
2554
+ variants: {
2555
+ variant: {
2556
+ default: "font-[var(--font-weight-medium)] text-[var(--color-foreground)] hover:text-[var(--color-primary)] hover:underline",
2557
+ ghost: "font-[var(--font-weight-medium)] text-[var(--color-foreground)] hover:text-[var(--color-foreground)] hover:bg-[var(--color-accent)]/10 rounded px-2 -mx-2",
2558
+ outline: "font-[var(--font-weight-medium)] text-[var(--color-foreground)] px-4 py-3 hover:bg-[var(--color-accent)]/5 rounded-t"
2559
+ },
2560
+ size: {
2561
+ sm: "text-[var(--font-size-xs)] py-2",
2562
+ default: "text-[var(--font-size-sm)] py-3",
2563
+ md: "text-[var(--font-size-base)] py-4",
2564
+ lg: "text-[var(--font-size-lg)] py-5"
2565
+ }
2566
+ },
2567
+ defaultVariants: {
2568
+ variant: "default",
2569
+ size: "default"
2570
+ }
2571
+ }
2572
+ );
2573
+ var AccordionTrigger = React32__namespace.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Header, { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs(
2574
+ AccordionPrimitive__namespace.Trigger,
2575
+ {
2576
+ ref,
2577
+ className: cn(accordionTriggerVariants({ variant, size }), className),
2578
+ ...props,
2579
+ children: [
2580
+ children,
2581
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-[var(--duration-base)] opacity-70 group-hover:opacity-100" })
2582
+ ]
2583
+ }
2584
+ ) }));
2585
+ AccordionTrigger.displayName = AccordionPrimitive__namespace.Trigger.displayName;
2586
+ var accordionContentVariants = classVarianceAuthority.cva(
2587
+ "overflow-hidden transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
2588
+ {
2589
+ variants: {
2590
+ variant: {
2591
+ default: "text-[var(--color-muted-foreground)]",
2592
+ ghost: "text-[var(--color-muted-foreground)]",
2593
+ outline: "text-[var(--color-muted-foreground)] px-4 pb-3"
2594
+ },
2595
+ size: {
2596
+ sm: "text-[var(--font-size-xs)]",
2597
+ default: "text-[var(--font-size-sm)]",
2598
+ md: "text-[var(--font-size-base)]",
2599
+ lg: "text-[var(--font-size-lg)]"
2600
+ }
2601
+ },
2602
+ defaultVariants: {
2603
+ variant: "default",
2604
+ size: "default"
2605
+ }
2606
+ }
2607
+ );
2608
+ var AccordionContent = React32__namespace.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2609
+ AccordionPrimitive__namespace.Content,
2610
+ {
2611
+ ref,
2612
+ className: cn(accordionContentVariants({ variant, size }), className),
2613
+ ...props,
2614
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-4 pt-0", children })
2615
+ }
2616
+ ));
2617
+ AccordionContent.displayName = AccordionPrimitive__namespace.Content.displayName;
2618
+
2619
+ // node_modules/@radix-ui/primitive/dist/index.mjs
2620
+ function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
2621
+ return function handleEvent(event) {
2622
+ originalEventHandler?.(event);
2623
+ if (checkForDefaultPrevented === false || !event.defaultPrevented) {
2624
+ return ourEventHandler?.(event);
2625
+ }
2626
+ };
2627
+ }
2628
+ function createContextScope(scopeName, createContextScopeDeps = []) {
2629
+ let defaultContexts = [];
2630
+ function createContext32(rootComponentName, defaultContext) {
2631
+ const BaseContext = React32__namespace.createContext(defaultContext);
2632
+ const index = defaultContexts.length;
2633
+ defaultContexts = [...defaultContexts, defaultContext];
2634
+ const Provider = (props) => {
2635
+ const { scope, children, ...context } = props;
2636
+ const Context = scope?.[scopeName]?.[index] || BaseContext;
2637
+ const value = React32__namespace.useMemo(() => context, Object.values(context));
2638
+ return /* @__PURE__ */ jsxRuntime.jsx(Context.Provider, { value, children });
2639
+ };
2640
+ Provider.displayName = rootComponentName + "Provider";
2641
+ function useContext22(consumerName, scope) {
2642
+ const Context = scope?.[scopeName]?.[index] || BaseContext;
2643
+ const context = React32__namespace.useContext(Context);
2644
+ if (context)
2645
+ return context;
2646
+ if (defaultContext !== void 0)
2647
+ return defaultContext;
2648
+ throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
2649
+ }
2650
+ return [Provider, useContext22];
2651
+ }
2652
+ const createScope = () => {
2653
+ const scopeContexts = defaultContexts.map((defaultContext) => {
2654
+ return React32__namespace.createContext(defaultContext);
2655
+ });
2656
+ return function useScope(scope) {
2657
+ const contexts = scope?.[scopeName] || scopeContexts;
2658
+ return React32__namespace.useMemo(
2659
+ () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),
2660
+ [scope, contexts]
2661
+ );
2662
+ };
2663
+ };
2664
+ createScope.scopeName = scopeName;
2665
+ return [createContext32, composeContextScopes(createScope, ...createContextScopeDeps)];
2666
+ }
2667
+ function composeContextScopes(...scopes) {
2668
+ const baseScope = scopes[0];
2669
+ if (scopes.length === 1)
2670
+ return baseScope;
2671
+ const createScope = () => {
2672
+ const scopeHooks = scopes.map((createScope2) => ({
2673
+ useScope: createScope2(),
2674
+ scopeName: createScope2.scopeName
2675
+ }));
2676
+ return function useComposedScopes(overrideScopes) {
2677
+ const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {
2678
+ const scopeProps = useScope(overrideScopes);
2679
+ const currentScope = scopeProps[`__scope${scopeName}`];
2680
+ return { ...nextScopes2, ...currentScope };
2681
+ }, {});
2682
+ return React32__namespace.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
2683
+ };
2684
+ };
2685
+ createScope.scopeName = baseScope.scopeName;
2686
+ return createScope;
2687
+ }
2688
+ var useLayoutEffect2 = globalThis?.document ? React32__namespace.useLayoutEffect : () => {
2689
+ };
2690
+ var useInsertionEffect = React32__namespace[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
2691
+ function useControllableState({
2692
+ prop,
2693
+ defaultProp,
2694
+ onChange = () => {
2695
+ },
2696
+ caller
2697
+ }) {
2698
+ const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({
2699
+ defaultProp,
2700
+ onChange
2701
+ });
2702
+ const isControlled = prop !== void 0;
2703
+ const value = isControlled ? prop : uncontrolledProp;
2704
+ {
2705
+ const isControlledRef = React32__namespace.useRef(prop !== void 0);
2706
+ React32__namespace.useEffect(() => {
2707
+ const wasControlled = isControlledRef.current;
2708
+ if (wasControlled !== isControlled) {
2709
+ const from = wasControlled ? "controlled" : "uncontrolled";
2710
+ const to = isControlled ? "controlled" : "uncontrolled";
2711
+ console.warn(
2712
+ `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`
2713
+ );
2714
+ }
2715
+ isControlledRef.current = isControlled;
2716
+ }, [isControlled, caller]);
2717
+ }
2718
+ const setValue = React32__namespace.useCallback(
2719
+ (nextValue) => {
2720
+ if (isControlled) {
2721
+ const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
2722
+ if (value2 !== prop) {
2723
+ onChangeRef.current?.(value2);
2724
+ }
2725
+ } else {
2726
+ setUncontrolledProp(nextValue);
2727
+ }
2728
+ },
2729
+ [isControlled, prop, setUncontrolledProp, onChangeRef]
2730
+ );
2731
+ return [value, setValue];
2732
+ }
2733
+ function useUncontrolledState({
2734
+ defaultProp,
2735
+ onChange
2736
+ }) {
2737
+ const [value, setValue] = React32__namespace.useState(defaultProp);
2738
+ const prevValueRef = React32__namespace.useRef(value);
2739
+ const onChangeRef = React32__namespace.useRef(onChange);
2740
+ useInsertionEffect(() => {
2741
+ onChangeRef.current = onChange;
2742
+ }, [onChange]);
2743
+ React32__namespace.useEffect(() => {
2744
+ if (prevValueRef.current !== value) {
2745
+ onChangeRef.current?.(value);
2746
+ prevValueRef.current = value;
2747
+ }
2748
+ }, [value, prevValueRef]);
2749
+ return [value, setValue, onChangeRef];
2750
+ }
2751
+ function isFunction(value) {
2752
+ return typeof value === "function";
2753
+ }
2754
+ function setRef(ref, value) {
2755
+ if (typeof ref === "function") {
2756
+ return ref(value);
2757
+ } else if (ref !== null && ref !== void 0) {
2758
+ ref.current = value;
2759
+ }
2760
+ }
2761
+ function composeRefs(...refs) {
2762
+ return (node) => {
2763
+ let hasCleanup = false;
2764
+ const cleanups = refs.map((ref) => {
2765
+ const cleanup = setRef(ref, node);
2766
+ if (!hasCleanup && typeof cleanup == "function") {
2767
+ hasCleanup = true;
2768
+ }
2769
+ return cleanup;
2770
+ });
2771
+ if (hasCleanup) {
2772
+ return () => {
2773
+ for (let i = 0; i < cleanups.length; i++) {
2774
+ const cleanup = cleanups[i];
2775
+ if (typeof cleanup == "function") {
2776
+ cleanup();
2777
+ } else {
2778
+ setRef(refs[i], null);
2779
+ }
2780
+ }
2781
+ };
2782
+ }
2783
+ };
2784
+ }
2785
+ function useComposedRefs(...refs) {
2786
+ return React32__namespace.useCallback(composeRefs(...refs), refs);
2787
+ }
2788
+ var NODES = [
2789
+ "a",
2790
+ "button",
2791
+ "div",
2792
+ "form",
2793
+ "h2",
2794
+ "h3",
2795
+ "img",
2796
+ "input",
2797
+ "label",
2798
+ "li",
2799
+ "nav",
2800
+ "ol",
2801
+ "p",
2802
+ "select",
2803
+ "span",
2804
+ "svg",
2805
+ "ul"
2806
+ ];
2807
+ var Primitive = NODES.reduce((primitive, node) => {
2808
+ const Slot = reactSlot.createSlot(`Primitive.${node}`);
2809
+ const Node = React32__namespace.forwardRef((props, forwardedRef) => {
2810
+ const { asChild, ...primitiveProps } = props;
2811
+ const Comp = asChild ? Slot : node;
2812
+ if (typeof window !== "undefined") {
2813
+ window[Symbol.for("radix-ui")] = true;
2814
+ }
2815
+ return /* @__PURE__ */ jsxRuntime.jsx(Comp, { ...primitiveProps, ref: forwardedRef });
2816
+ });
2817
+ Node.displayName = `Primitive.${node}`;
2818
+ return { ...primitive, [node]: Node };
2819
+ }, {});
2820
+ function useStateMachine(initialState, machine) {
2821
+ return React32__namespace.useReducer((state, event) => {
2822
+ const nextState = machine[state][event];
2823
+ return nextState ?? state;
2824
+ }, initialState);
2825
+ }
2826
+ var Presence = (props) => {
2827
+ const { present, children } = props;
2828
+ const presence = usePresence(present);
2829
+ const child = typeof children === "function" ? children({ present: presence.isPresent }) : React32__namespace.Children.only(children);
2830
+ const ref = useComposedRefs(presence.ref, getElementRef(child));
2831
+ const forceMount = typeof children === "function";
2832
+ return forceMount || presence.isPresent ? React32__namespace.cloneElement(child, { ref }) : null;
2833
+ };
2834
+ Presence.displayName = "Presence";
2835
+ function usePresence(present) {
2836
+ const [node, setNode] = React32__namespace.useState();
2837
+ const stylesRef = React32__namespace.useRef(null);
2838
+ const prevPresentRef = React32__namespace.useRef(present);
2839
+ const prevAnimationNameRef = React32__namespace.useRef("none");
2840
+ const initialState = present ? "mounted" : "unmounted";
2841
+ const [state, send] = useStateMachine(initialState, {
2842
+ mounted: {
2843
+ UNMOUNT: "unmounted",
2844
+ ANIMATION_OUT: "unmountSuspended"
2845
+ },
2846
+ unmountSuspended: {
2847
+ MOUNT: "mounted",
2848
+ ANIMATION_END: "unmounted"
2849
+ },
2850
+ unmounted: {
2851
+ MOUNT: "mounted"
2852
+ }
2853
+ });
2854
+ React32__namespace.useEffect(() => {
2855
+ const currentAnimationName = getAnimationName(stylesRef.current);
2856
+ prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
2857
+ }, [state]);
2858
+ useLayoutEffect2(() => {
2859
+ const styles = stylesRef.current;
2860
+ const wasPresent = prevPresentRef.current;
2861
+ const hasPresentChanged = wasPresent !== present;
2862
+ if (hasPresentChanged) {
2863
+ const prevAnimationName = prevAnimationNameRef.current;
2864
+ const currentAnimationName = getAnimationName(styles);
2865
+ if (present) {
2866
+ send("MOUNT");
2867
+ } else if (currentAnimationName === "none" || styles?.display === "none") {
2868
+ send("UNMOUNT");
2869
+ } else {
2870
+ const isAnimating = prevAnimationName !== currentAnimationName;
2871
+ if (wasPresent && isAnimating) {
2872
+ send("ANIMATION_OUT");
2873
+ } else {
2874
+ send("UNMOUNT");
2875
+ }
2876
+ }
2877
+ prevPresentRef.current = present;
2878
+ }
2879
+ }, [present, send]);
2880
+ useLayoutEffect2(() => {
2881
+ if (node) {
2882
+ let timeoutId;
2883
+ const ownerWindow = node.ownerDocument.defaultView ?? window;
2884
+ const handleAnimationEnd = (event) => {
2885
+ const currentAnimationName = getAnimationName(stylesRef.current);
2886
+ const isCurrentAnimation = currentAnimationName.includes(event.animationName);
2887
+ if (event.target === node && isCurrentAnimation) {
2888
+ send("ANIMATION_END");
2889
+ if (!prevPresentRef.current) {
2890
+ const currentFillMode = node.style.animationFillMode;
2891
+ node.style.animationFillMode = "forwards";
2892
+ timeoutId = ownerWindow.setTimeout(() => {
2893
+ if (node.style.animationFillMode === "forwards") {
2894
+ node.style.animationFillMode = currentFillMode;
2895
+ }
2896
+ });
2897
+ }
2898
+ }
2899
+ };
2900
+ const handleAnimationStart = (event) => {
2901
+ if (event.target === node) {
2902
+ prevAnimationNameRef.current = getAnimationName(stylesRef.current);
2903
+ }
2904
+ };
2905
+ node.addEventListener("animationstart", handleAnimationStart);
2906
+ node.addEventListener("animationcancel", handleAnimationEnd);
2907
+ node.addEventListener("animationend", handleAnimationEnd);
2908
+ return () => {
2909
+ ownerWindow.clearTimeout(timeoutId);
2910
+ node.removeEventListener("animationstart", handleAnimationStart);
2911
+ node.removeEventListener("animationcancel", handleAnimationEnd);
2912
+ node.removeEventListener("animationend", handleAnimationEnd);
2913
+ };
2914
+ } else {
2915
+ send("ANIMATION_END");
2916
+ }
2917
+ }, [node, send]);
2918
+ return {
2919
+ isPresent: ["mounted", "unmountSuspended"].includes(state),
2920
+ ref: React32__namespace.useCallback((node2) => {
2921
+ stylesRef.current = node2 ? getComputedStyle(node2) : null;
2922
+ setNode(node2);
2923
+ }, [])
2924
+ };
2925
+ }
2926
+ function getAnimationName(styles) {
2927
+ return styles?.animationName || "none";
2928
+ }
2929
+ function getElementRef(element) {
2930
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
2931
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
2932
+ if (mayWarn) {
2933
+ return element.ref;
2934
+ }
2935
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
2936
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
2937
+ if (mayWarn) {
2938
+ return element.props.ref;
2939
+ }
2940
+ return element.props.ref || element.ref;
2941
+ }
2942
+ var useReactId = React32__namespace[" useId ".trim().toString()] || (() => void 0);
2943
+ var count = 0;
2944
+ function useId2(deterministicId) {
2945
+ const [id, setId] = React32__namespace.useState(useReactId());
2946
+ useLayoutEffect2(() => {
2947
+ if (!deterministicId)
2948
+ setId((reactId) => reactId ?? String(count++));
2949
+ }, [deterministicId]);
2950
+ return deterministicId || (id ? `radix-${id}` : "");
2951
+ }
2952
+ var COLLAPSIBLE_NAME = "Collapsible";
2953
+ var [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);
2954
+ var [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);
2955
+ var Collapsible = React32__namespace.forwardRef(
2956
+ (props, forwardedRef) => {
2957
+ const {
2958
+ __scopeCollapsible,
2959
+ open: openProp,
2960
+ defaultOpen,
2961
+ disabled,
2962
+ onOpenChange,
2963
+ ...collapsibleProps
2964
+ } = props;
2965
+ const [open, setOpen] = useControllableState({
2966
+ prop: openProp,
2967
+ defaultProp: defaultOpen ?? false,
2968
+ onChange: onOpenChange,
2969
+ caller: COLLAPSIBLE_NAME
2970
+ });
2971
+ return /* @__PURE__ */ jsxRuntime.jsx(
2972
+ CollapsibleProvider,
2973
+ {
2974
+ scope: __scopeCollapsible,
2975
+ disabled,
2976
+ contentId: useId2(),
2977
+ open,
2978
+ onOpenToggle: React32__namespace.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
2979
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2980
+ Primitive.div,
2981
+ {
2982
+ "data-state": getState(open),
2983
+ "data-disabled": disabled ? "" : void 0,
2984
+ ...collapsibleProps,
2985
+ ref: forwardedRef
2986
+ }
2987
+ )
2988
+ }
2989
+ );
2990
+ }
2991
+ );
2992
+ Collapsible.displayName = COLLAPSIBLE_NAME;
2993
+ var TRIGGER_NAME = "CollapsibleTrigger";
2994
+ var CollapsibleTrigger = React32__namespace.forwardRef(
2995
+ (props, forwardedRef) => {
2996
+ const { __scopeCollapsible, ...triggerProps } = props;
2997
+ const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);
2998
+ return /* @__PURE__ */ jsxRuntime.jsx(
2999
+ Primitive.button,
3000
+ {
3001
+ type: "button",
3002
+ "aria-controls": context.contentId,
3003
+ "aria-expanded": context.open || false,
3004
+ "data-state": getState(context.open),
3005
+ "data-disabled": context.disabled ? "" : void 0,
3006
+ disabled: context.disabled,
3007
+ ...triggerProps,
3008
+ ref: forwardedRef,
3009
+ onClick: composeEventHandlers(props.onClick, context.onOpenToggle)
3010
+ }
3011
+ );
3012
+ }
3013
+ );
3014
+ CollapsibleTrigger.displayName = TRIGGER_NAME;
3015
+ var CONTENT_NAME = "CollapsibleContent";
3016
+ var CollapsibleContent = React32__namespace.forwardRef(
3017
+ (props, forwardedRef) => {
3018
+ const { forceMount, ...contentProps } = props;
3019
+ const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);
3020
+ return /* @__PURE__ */ jsxRuntime.jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsxRuntime.jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });
3021
+ }
3022
+ );
3023
+ CollapsibleContent.displayName = CONTENT_NAME;
3024
+ var CollapsibleContentImpl = React32__namespace.forwardRef((props, forwardedRef) => {
3025
+ const { __scopeCollapsible, present, children, ...contentProps } = props;
3026
+ const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);
3027
+ const [isPresent, setIsPresent] = React32__namespace.useState(present);
3028
+ const ref = React32__namespace.useRef(null);
3029
+ const composedRefs = useComposedRefs(forwardedRef, ref);
3030
+ const heightRef = React32__namespace.useRef(0);
3031
+ const height = heightRef.current;
3032
+ const widthRef = React32__namespace.useRef(0);
3033
+ const width = widthRef.current;
3034
+ const isOpen = context.open || isPresent;
3035
+ const isMountAnimationPreventedRef = React32__namespace.useRef(isOpen);
3036
+ const originalStylesRef = React32__namespace.useRef(void 0);
3037
+ React32__namespace.useEffect(() => {
3038
+ const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
3039
+ return () => cancelAnimationFrame(rAF);
3040
+ }, []);
3041
+ useLayoutEffect2(() => {
3042
+ const node = ref.current;
3043
+ if (node) {
3044
+ originalStylesRef.current = originalStylesRef.current || {
3045
+ transitionDuration: node.style.transitionDuration,
3046
+ animationName: node.style.animationName
3047
+ };
3048
+ node.style.transitionDuration = "0s";
3049
+ node.style.animationName = "none";
3050
+ const rect = node.getBoundingClientRect();
3051
+ heightRef.current = rect.height;
3052
+ widthRef.current = rect.width;
3053
+ if (!isMountAnimationPreventedRef.current) {
3054
+ node.style.transitionDuration = originalStylesRef.current.transitionDuration;
3055
+ node.style.animationName = originalStylesRef.current.animationName;
3056
+ }
3057
+ setIsPresent(present);
3058
+ }
3059
+ }, [context.open, present]);
3060
+ return /* @__PURE__ */ jsxRuntime.jsx(
3061
+ Primitive.div,
3062
+ {
3063
+ "data-state": getState(context.open),
3064
+ "data-disabled": context.disabled ? "" : void 0,
3065
+ id: context.contentId,
3066
+ hidden: !isOpen,
3067
+ ...contentProps,
3068
+ ref: composedRefs,
3069
+ style: {
3070
+ [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,
3071
+ [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,
3072
+ ...props.style
3073
+ },
3074
+ children: isOpen && children
3075
+ }
3076
+ );
3077
+ });
3078
+ function getState(open) {
3079
+ return open ? "open" : "closed";
3080
+ }
3081
+ var Root11 = Collapsible;
3082
+ var Trigger6 = CollapsibleTrigger;
3083
+ var Content6 = CollapsibleContent;
3084
+ var Collapsible2 = Root11;
3085
+ var collapsibleTriggerVariants = classVarianceAuthority.cva(
3086
+ "flex w-full items-center justify-between transition-all",
3087
+ {
3088
+ variants: {
3089
+ variant: {
3090
+ default: "text-[var(--color-foreground)] hover:text-[var(--color-primary)]",
3091
+ ghost: "text-[var(--color-foreground)] hover:bg-[var(--color-accent)]/10 rounded",
3092
+ outline: "text-[var(--color-foreground)] border border-[var(--color-border)] rounded-t-[var(--radius-md)] hover:bg-[var(--color-accent)]/5"
3093
+ },
3094
+ size: {
3095
+ sm: "text-[var(--font-size-xs)] py-2 px-3",
3096
+ default: "text-[var(--font-size-sm)] py-3 px-4",
3097
+ md: "text-[var(--font-size-base)] py-4 px-4",
3098
+ lg: "text-[var(--font-size-lg)] py-5 px-5"
3099
+ }
3100
+ },
3101
+ defaultVariants: {
3102
+ variant: "default",
3103
+ size: "default"
3104
+ }
3105
+ }
3106
+ );
3107
+ var CollapsibleTrigger2 = React32__namespace.forwardRef(({ className, children, variant, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3108
+ Trigger6,
3109
+ {
3110
+ ref,
3111
+ className: cn(collapsibleTriggerVariants({ variant, size }), className),
3112
+ ...props,
3113
+ children: [
3114
+ children,
3115
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-[var(--duration-base)] [&[data-state=open]]:rotate-180" })
3116
+ ]
3117
+ }
3118
+ ));
3119
+ CollapsibleTrigger2.displayName = Trigger6.displayName;
3120
+ var collapsibleContentVariants = classVarianceAuthority.cva(
3121
+ "overflow-hidden transition-all data-[state=closed]:animate-collapse-up data-[state=open]:animate-collapse-down",
3122
+ {
3123
+ variants: {
3124
+ variant: {
3125
+ default: "text-[var(--color-muted-foreground)]",
3126
+ ghost: "text-[var(--color-muted-foreground)] rounded-b",
3127
+ outline: "text-[var(--color-muted-foreground)] border border-t-0 border-[var(--color-border)] rounded-b-[var(--radius-md)]"
3128
+ },
3129
+ size: {
3130
+ sm: "text-[var(--font-size-xs)]",
3131
+ default: "text-[var(--font-size-sm)]",
3132
+ md: "text-[var(--font-size-base)]",
3133
+ lg: "text-[var(--font-size-lg)]"
3134
+ }
3135
+ },
3136
+ defaultVariants: {
3137
+ variant: "default",
3138
+ size: "default"
3139
+ }
3140
+ }
3141
+ );
3142
+ var CollapsibleContent2 = React32__namespace.forwardRef(({ className, children, variant, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3143
+ Content6,
3144
+ {
3145
+ ref,
3146
+ className: cn(collapsibleContentVariants({ variant, size }), className),
3147
+ ...props,
3148
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4", children })
3149
+ }
3150
+ ));
3151
+ CollapsibleContent2.displayName = Content6.displayName;
3152
+ var aspectRatioVariants = classVarianceAuthority.cva(
3153
+ "relative overflow-hidden",
3154
+ {
3155
+ variants: {
3156
+ variant: {
3157
+ default: "rounded-[var(--radius-md)] bg-[var(--color-muted)]/10",
3158
+ ghost: "bg-transparent",
3159
+ outline: "rounded-[var(--radius-md)] border border-[var(--color-border)]",
3160
+ card: "rounded-[var(--radius-md)] bg-[var(--color-card)] shadow-sm"
3161
+ },
3162
+ radius: {
3163
+ none: "rounded-none",
3164
+ sm: "rounded-[var(--radius-sm)]",
3165
+ md: "rounded-[var(--radius-md)]",
3166
+ lg: "rounded-[var(--radius-lg)]",
3167
+ full: "rounded-full"
3168
+ }
3169
+ },
3170
+ defaultVariants: {
3171
+ variant: "default"
3172
+ }
3173
+ }
3174
+ );
3175
+ var AspectRatio = React32__namespace.forwardRef(({ className, variant, radius, ratio = 16 / 9, style, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3176
+ "div",
3177
+ {
3178
+ ref,
3179
+ className: cn(aspectRatioVariants({ variant, radius }), className),
3180
+ style: {
3181
+ position: "relative",
3182
+ paddingBottom: `${1 / ratio * 100}%`,
3183
+ ...style
3184
+ },
3185
+ ...props,
3186
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0", children })
3187
+ }
3188
+ ));
3189
+ AspectRatio.displayName = "AspectRatio";
3190
+ var commandVariants = classVarianceAuthority.cva(
3191
+ "flex h-full w-full flex-col overflow-hidden rounded-[var(--radius-md)]",
3192
+ {
3193
+ variants: {
3194
+ variant: {
3195
+ default: "bg-[var(--color-popover)] text-[var(--color-popover-foreground)]",
3196
+ glass: "bg-[var(--color-background)]/80 text-[var(--color-foreground)] backdrop-blur-sm",
3197
+ bordered: "bg-[var(--color-popover)] text-[var(--color-popover-foreground)] border border-[var(--color-border)]"
3198
+ },
3199
+ size: {
3200
+ sm: "p-2",
3201
+ default: "p-4",
3202
+ lg: "p-6"
3203
+ }
3204
+ },
3205
+ defaultVariants: {
3206
+ variant: "default",
3207
+ size: "default"
3208
+ }
3209
+ }
3210
+ );
3211
+ var Command = React32__namespace.forwardRef(
3212
+ ({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3213
+ "div",
3214
+ {
3215
+ ref,
3216
+ className: cn(commandVariants({ variant, size }), className),
3217
+ ...props
3218
+ }
3219
+ )
3220
+ );
3221
+ Command.displayName = "Command";
3222
+ var CommandDialog = ({
3223
+ children,
3224
+ commandClassName,
3225
+ ...props
3226
+ }) => {
3227
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(Command, { className: cn(
3228
+ "data-[state=open]:animate-in data-[state=closed]:animate-out",
3229
+ commandClassName
3230
+ ), children }) }) });
3231
+ };
3232
+ var commandInputVariants = classVarianceAuthority.cva(
3233
+ "flex h-11 w-full rounded-none border-none bg-transparent py-3 text-sm outline-none placeholder:text-[var(--color-muted-foreground)] disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none",
3234
+ {
3235
+ variants: {
3236
+ variant: {
3237
+ default: "",
3238
+ minimal: "h-9",
3239
+ bordered: "border-b border-[var(--color-border)]"
3240
+ }
3241
+ },
3242
+ defaultVariants: {
3243
+ variant: "default"
3244
+ }
3245
+ }
3246
+ );
3247
+ var CommandInput = React32__namespace.forwardRef(
3248
+ ({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b px-3", children: [
3249
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
3250
+ /* @__PURE__ */ jsxRuntime.jsx(
3251
+ "input",
3252
+ {
3253
+ ref,
3254
+ className: cn(commandInputVariants({ variant }), className),
3255
+ ...props
3256
+ }
3257
+ )
3258
+ ] })
3259
+ );
3260
+ CommandInput.displayName = "CommandInput";
3261
+ var commandListVariants = classVarianceAuthority.cva(
3262
+ "max-h-[300px] overflow-y-auto overflow-x-hidden",
3263
+ {
3264
+ variants: {
3265
+ variant: {
3266
+ default: "",
3267
+ scrollable: "max-h-[400px]",
3268
+ compact: "max-h-[200px]"
3269
+ }
3270
+ },
3271
+ defaultVariants: {
3272
+ variant: "default"
3273
+ }
3274
+ }
3275
+ );
3276
+ var CommandList = React32__namespace.forwardRef(
3277
+ ({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3278
+ "div",
3279
+ {
3280
+ ref,
3281
+ className: cn(commandListVariants({ variant }), className),
3282
+ role: "listbox",
3283
+ ...props
3284
+ }
3285
+ )
3286
+ );
3287
+ CommandList.displayName = "CommandList";
3288
+ var CommandEmpty = React32__namespace.forwardRef(
3289
+ (props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3290
+ "div",
3291
+ {
3292
+ ref,
3293
+ className: "py-6 text-center text-sm text-[var(--color-muted-foreground)]",
3294
+ ...props
3295
+ }
3296
+ )
3297
+ );
3298
+ CommandEmpty.displayName = "CommandEmpty";
3299
+ var commandGroupVariants = classVarianceAuthority.cva(
3300
+ "overflow-hidden p-1 text-[var(--color-foreground)]",
3301
+ {
3302
+ variants: {
3303
+ variant: {
3304
+ default: "",
3305
+ separated: "mt-2 border-t border-[var(--color-border)] pt-2",
3306
+ indented: "pl-4"
3307
+ }
3308
+ },
3309
+ defaultVariants: {
3310
+ variant: "default"
3311
+ }
3312
+ }
3313
+ );
3314
+ var CommandGroup = React32__namespace.forwardRef(
3315
+ ({ className, variant, heading, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3316
+ "div",
3317
+ {
3318
+ ref,
3319
+ className: cn(commandGroupVariants({ variant }), className),
3320
+ ...props,
3321
+ children: [
3322
+ heading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1.5 text-xs font-medium text-[var(--color-muted-foreground)]", children: heading }),
3323
+ children
3324
+ ]
3325
+ }
3326
+ )
3327
+ );
3328
+ CommandGroup.displayName = "CommandGroup";
3329
+ var CommandSeparator = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3330
+ "div",
3331
+ {
3332
+ ref,
3333
+ className: cn("-mx-1 h-px bg-[var(--color-border)]", className),
3334
+ ...props
3335
+ }
3336
+ ));
3337
+ CommandSeparator.displayName = "CommandSeparator";
3338
+ var commandItemVariants = classVarianceAuthority.cva(
3339
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none aria-selected:bg-[var(--color-accent)] aria-selected:text-[var(--color-accent-foreground)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3340
+ {
3341
+ variants: {
3342
+ variant: {
3343
+ default: "",
3344
+ subtle: "aria-selected:bg-[var(--color-accent)]/10 aria-selected:text-[var(--color-accent-foreground)]",
3345
+ ghost: "hover:bg-[var(--color-muted)]/10 aria-selected:bg-[var(--color-muted)]/20 aria-selected:text-[var(--color-foreground)]"
3346
+ }
3347
+ },
3348
+ defaultVariants: {
3349
+ variant: "default"
3350
+ }
3351
+ }
3352
+ );
3353
+ var CommandItem = React32__namespace.forwardRef(
3354
+ ({ className, variant, onSelect, selected, disabled, value, ...props }, ref) => {
3355
+ const handleClick = React32__namespace.useCallback(() => {
3356
+ if (disabled)
3357
+ return;
3358
+ if (onSelect && value) {
3359
+ onSelect(value);
3360
+ }
3361
+ }, [disabled, onSelect, value]);
3362
+ return /* @__PURE__ */ jsxRuntime.jsx(
3363
+ "div",
3364
+ {
3365
+ ref,
3366
+ className: cn(commandItemVariants({ variant }), className),
3367
+ role: "option",
3368
+ "aria-selected": selected,
3369
+ "data-disabled": disabled ? "" : void 0,
3370
+ onClick: handleClick,
3371
+ ...props
3372
+ }
3373
+ );
3374
+ }
3375
+ );
3376
+ CommandItem.displayName = "CommandItem";
3377
+ var CommandShortcut = ({ className, ...props }) => {
3378
+ return /* @__PURE__ */ jsxRuntime.jsx(
3379
+ "span",
3380
+ {
3381
+ className: cn(
3382
+ "ml-auto text-xs tracking-widest text-[var(--color-muted-foreground)]",
3383
+ className
3384
+ ),
3385
+ ...props
3386
+ }
3387
+ );
3388
+ };
3389
+ CommandShortcut.displayName = "CommandShortcut";
3390
+ var toggleVariants = classVarianceAuthority.cva(
3391
+ "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
3392
+ {
3393
+ variants: {
3394
+ variant: {
3395
+ default: "bg-transparent",
3396
+ outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
3397
+ },
3398
+ size: {
3399
+ default: "h-10 px-3",
3400
+ sm: "h-9 px-2.5",
3401
+ lg: "h-11 px-5"
3402
+ }
3403
+ },
3404
+ defaultVariants: {
3405
+ variant: "default",
3406
+ size: "default"
3407
+ }
3408
+ }
3409
+ );
3410
+ var Toggle = React32__namespace.forwardRef(
3411
+ ({ className, variant, size, pressed, onPressedChange, onClick, ...props }, ref) => {
3412
+ const handleClick = (event) => {
3413
+ if (onPressedChange) {
3414
+ onPressedChange(!pressed);
3415
+ }
3416
+ if (onClick) {
3417
+ onClick(event);
3418
+ }
3419
+ };
3420
+ return /* @__PURE__ */ jsxRuntime.jsx(
3421
+ "button",
3422
+ {
3423
+ ref,
3424
+ "data-state": pressed ? "on" : "off",
3425
+ "aria-pressed": pressed,
3426
+ className: cn(toggleVariants({ variant, size, className })),
3427
+ onClick: handleClick,
3428
+ ...props
3429
+ }
3430
+ );
3431
+ }
3432
+ );
3433
+ Toggle.displayName = "Toggle";
3434
+ var Slider = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3435
+ SliderPrimitive__namespace.Root,
3436
+ {
3437
+ ref,
3438
+ className: cn(
3439
+ "relative flex w-full touch-none select-none items-center",
3440
+ className
3441
+ ),
3442
+ ...props,
3443
+ children: [
3444
+ /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full bg-primary" }) }),
3445
+ /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" })
3446
+ ]
3447
+ }
3448
+ ));
3449
+ Slider.displayName = SliderPrimitive__namespace.Root.displayName;
3450
+ var DropdownMenu = DropdownMenuPrimitive__namespace.Root;
3451
+ var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
3452
+ var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
3453
+ var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
3454
+ var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
3455
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
3456
+ var DropdownMenuSubTrigger = React32__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3457
+ DropdownMenuPrimitive__namespace.SubTrigger,
3458
+ {
3459
+ ref,
3460
+ className: cn(
3461
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
3462
+ inset && "pl-8",
3463
+ className
3464
+ ),
3465
+ ...props,
3466
+ children: [
3467
+ children,
3468
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto h-4 w-4" })
3469
+ ]
3470
+ }
3471
+ ));
3472
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
3473
+ var DropdownMenuSubContent = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3474
+ DropdownMenuPrimitive__namespace.SubContent,
3475
+ {
3476
+ ref,
3477
+ className: cn(
3478
+ "z-50 min-w-[8rem] overflow-hidden rounded-md 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",
3479
+ className
3480
+ ),
3481
+ ...props
3482
+ }
3483
+ ));
3484
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
3485
+ var DropdownMenuContent = React32__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
3486
+ DropdownMenuPrimitive__namespace.Content,
3487
+ {
3488
+ ref,
3489
+ sideOffset,
3490
+ className: cn(
3491
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
3492
+ className
3493
+ ),
3494
+ ...props
3495
+ }
3496
+ ) }));
3497
+ DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
3498
+ var DropdownMenuItem = React32__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3499
+ DropdownMenuPrimitive__namespace.Item,
3500
+ {
3501
+ ref,
3502
+ className: cn(
3503
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3504
+ inset && "pl-8",
3505
+ className
3506
+ ),
3507
+ ...props
3508
+ }
3509
+ ));
3510
+ DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
3511
+ var DropdownMenuCheckboxItem = React32__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3512
+ DropdownMenuPrimitive__namespace.CheckboxItem,
3513
+ {
3514
+ ref,
3515
+ className: cn(
3516
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3517
+ className
3518
+ ),
3519
+ checked,
3520
+ ...props,
3521
+ children: [
3522
+ /* @__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" }) }) }),
3523
+ children
3524
+ ]
3525
+ }
3526
+ ));
3527
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
3528
+ var DropdownMenuRadioItem = React32__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3529
+ DropdownMenuPrimitive__namespace.RadioItem,
3530
+ {
3531
+ ref,
3532
+ className: cn(
3533
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3534
+ className
3535
+ ),
3536
+ ...props,
3537
+ children: [
3538
+ /* @__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" }) }) }),
3539
+ children
3540
+ ]
3541
+ }
3542
+ ));
3543
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
3544
+ var DropdownMenuLabel = React32__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3545
+ DropdownMenuPrimitive__namespace.Label,
3546
+ {
3547
+ ref,
3548
+ className: cn(
3549
+ "px-2 py-1.5 text-sm font-semibold",
3550
+ inset && "pl-8",
3551
+ className
3552
+ ),
3553
+ ...props
3554
+ }
3555
+ ));
3556
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
3557
+ var DropdownMenuSeparator = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3558
+ DropdownMenuPrimitive__namespace.Separator,
3559
+ {
3560
+ ref,
3561
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
3562
+ ...props
3563
+ }
3564
+ ));
3565
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
3566
+ var DropdownMenuShortcut = ({
3567
+ className,
3568
+ ...props
3569
+ }) => {
3570
+ return /* @__PURE__ */ jsxRuntime.jsx(
3571
+ "span",
3572
+ {
3573
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
3574
+ ...props
3575
+ }
3576
+ );
3577
+ };
3578
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
3579
+ var NavigationMenu = React32__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3580
+ NavigationMenuPrimitive__namespace.Root,
3581
+ {
3582
+ ref,
3583
+ className: cn(
3584
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
3585
+ className
3586
+ ),
3587
+ ...props,
3588
+ children: [
3589
+ children,
3590
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuViewport, {})
3591
+ ]
3592
+ }
3593
+ ));
3594
+ NavigationMenu.displayName = NavigationMenuPrimitive__namespace.Root.displayName;
3595
+ var NavigationMenuList = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3596
+ NavigationMenuPrimitive__namespace.List,
3597
+ {
3598
+ ref,
3599
+ className: cn(
3600
+ "group flex flex-1 list-none items-center justify-center space-x-1",
3601
+ className
3602
+ ),
3603
+ ...props
3604
+ }
3605
+ ));
3606
+ NavigationMenuList.displayName = NavigationMenuPrimitive__namespace.List.displayName;
3607
+ var NavigationMenuItem = NavigationMenuPrimitive__namespace.Item;
3608
+ var navigationMenuTriggerStyle = classVarianceAuthority.cva(
3609
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
3610
+ );
3611
+ var NavigationMenuTrigger = React32__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3612
+ NavigationMenuPrimitive__namespace.Trigger,
3613
+ {
3614
+ ref,
3615
+ className: cn(navigationMenuTriggerStyle(), "group", className),
3616
+ ...props,
3617
+ children: [
3618
+ children,
3619
+ " ",
3620
+ /* @__PURE__ */ jsxRuntime.jsx(
3621
+ lucideReact.ChevronDown,
3622
+ {
3623
+ className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
3624
+ "aria-hidden": "true"
3625
+ }
3626
+ )
3627
+ ]
3628
+ }
3629
+ ));
3630
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive__namespace.Trigger.displayName;
3631
+ var NavigationMenuContent = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3632
+ NavigationMenuPrimitive__namespace.Content,
3633
+ {
3634
+ ref,
3635
+ className: cn(
3636
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
3637
+ className
3638
+ ),
3639
+ ...props
3640
+ }
3641
+ ));
3642
+ NavigationMenuContent.displayName = NavigationMenuPrimitive__namespace.Content.displayName;
3643
+ var NavigationMenuLink = NavigationMenuPrimitive__namespace.Link;
3644
+ var NavigationMenuViewport = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsxRuntime.jsx(
3645
+ NavigationMenuPrimitive__namespace.Viewport,
3646
+ {
3647
+ className: cn(
3648
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
3649
+ className
3650
+ ),
3651
+ ref,
3652
+ ...props
3653
+ }
3654
+ ) }));
3655
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive__namespace.Viewport.displayName;
3656
+ var NavigationMenuIndicator = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3657
+ NavigationMenuPrimitive__namespace.Indicator,
3658
+ {
3659
+ ref,
3660
+ className: cn(
3661
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
3662
+ className
3663
+ ),
3664
+ ...props,
3665
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
3666
+ }
3667
+ ));
3668
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive__namespace.Indicator.displayName;
3669
+ var Sheet = DialogPrimitive__namespace.Root;
3670
+ var SheetTrigger = DialogPrimitive__namespace.Trigger;
3671
+ var SheetClose = DialogPrimitive__namespace.Close;
3672
+ var SheetPortal = DialogPrimitive__namespace.Portal;
3673
+ var SheetOverlay = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3674
+ DialogPrimitive__namespace.Overlay,
3675
+ {
3676
+ className: cn(
3677
+ "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",
3678
+ className
3679
+ ),
3680
+ ...props,
3681
+ ref
3682
+ }
3683
+ ));
3684
+ SheetOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
3685
+ var sheetVariants = classVarianceAuthority.cva(
3686
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
3687
+ {
3688
+ variants: {
3689
+ side: {
3690
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
3691
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
3692
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
3693
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
3694
+ }
3695
+ },
3696
+ defaultVariants: {
3697
+ side: "right"
3698
+ }
3699
+ }
3700
+ );
3701
+ var SheetContent = React32__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
3702
+ /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
3703
+ /* @__PURE__ */ jsxRuntime.jsxs(
3704
+ DialogPrimitive__namespace.Content,
3705
+ {
3706
+ ref,
3707
+ className: cn(sheetVariants({ side }), className),
3708
+ ...props,
3709
+ children: [
3710
+ children,
3711
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
3712
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
3713
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
3714
+ ] })
3715
+ ]
3716
+ }
3717
+ )
3718
+ ] }));
3719
+ SheetContent.displayName = DialogPrimitive__namespace.Content.displayName;
3720
+ var SheetHeader = ({
3721
+ className,
3722
+ ...props
3723
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
3724
+ "div",
3725
+ {
3726
+ className: cn(
3727
+ "flex flex-col space-y-2 text-center sm:text-left",
3728
+ className
3729
+ ),
3730
+ ...props
3731
+ }
3732
+ );
3733
+ SheetHeader.displayName = "SheetHeader";
3734
+ var SheetFooter = ({
3735
+ className,
3736
+ ...props
3737
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
3738
+ "div",
3739
+ {
3740
+ className: cn(
3741
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
3742
+ className
3743
+ ),
3744
+ ...props
3745
+ }
3746
+ );
3747
+ SheetFooter.displayName = "SheetFooter";
3748
+ var SheetTitle = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3749
+ DialogPrimitive__namespace.Title,
3750
+ {
3751
+ ref,
3752
+ className: cn("text-lg font-semibold text-foreground", className),
3753
+ ...props
3754
+ }
3755
+ ));
3756
+ SheetTitle.displayName = DialogPrimitive__namespace.Title.displayName;
3757
+ var SheetDescription = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3758
+ DialogPrimitive__namespace.Description,
3759
+ {
3760
+ ref,
3761
+ className: cn("text-sm text-muted-foreground", className),
3762
+ ...props
3763
+ }
3764
+ ));
3765
+ SheetDescription.displayName = DialogPrimitive__namespace.Description.displayName;
3766
+ var HoverCard = HoverCardPrimitive__namespace.Root;
3767
+ var HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
3768
+ var HoverCardContent = React32__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3769
+ HoverCardPrimitive__namespace.Content,
3770
+ {
3771
+ ref,
3772
+ align,
3773
+ sideOffset,
3774
+ className: cn(
3775
+ "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
3776
+ className
3777
+ ),
3778
+ ...props
3779
+ }
3780
+ ));
3781
+ HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
3782
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
3783
+ "nav",
3784
+ {
3785
+ role: "navigation",
3786
+ "aria-label": "pagination",
3787
+ className: cn("mx-auto flex w-full justify-center", className),
3788
+ ...props
3789
+ }
3790
+ );
3791
+ Pagination.displayName = "Pagination";
3792
+ var PaginationContent = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3793
+ "ul",
3794
+ {
3795
+ ref,
3796
+ className: cn("flex flex-row items-center gap-1", className),
3797
+ ...props
3798
+ }
3799
+ ));
3800
+ PaginationContent.displayName = "PaginationContent";
3801
+ var PaginationItem = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("li", { ref, className: cn("", className), ...props }));
3802
+ PaginationItem.displayName = "PaginationItem";
3803
+ var PaginationLink = ({
3804
+ className,
3805
+ isActive,
3806
+ size = "icon",
3807
+ ...props
3808
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
3809
+ "a",
3810
+ {
3811
+ "aria-current": isActive ? "page" : void 0,
3812
+ className: cn(
3813
+ buttonVariants({
3814
+ variant: isActive ? "outline" : "ghost",
3815
+ size
3816
+ }),
3817
+ className
3818
+ ),
3819
+ ...props
3820
+ }
3821
+ );
3822
+ PaginationLink.displayName = "PaginationLink";
3823
+ var PaginationPrevious = ({
3824
+ className,
3825
+ ...props
3826
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
3827
+ PaginationLink,
3828
+ {
3829
+ "aria-label": "Go to previous page",
3830
+ size: "default",
3831
+ className: cn("gap-1 pl-2.5", className),
3832
+ ...props,
3833
+ children: [
3834
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" }),
3835
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Previous" })
3836
+ ]
3837
+ }
3838
+ );
3839
+ PaginationPrevious.displayName = "PaginationPrevious";
3840
+ var PaginationNext = ({
3841
+ className,
3842
+ ...props
3843
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
3844
+ PaginationLink,
3845
+ {
3846
+ "aria-label": "Go to next page",
3847
+ size: "default",
3848
+ className: cn("gap-1 pr-2.5", className),
3849
+ ...props,
3850
+ children: [
3851
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Next" }),
3852
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
3853
+ ]
3854
+ }
3855
+ );
3856
+ PaginationNext.displayName = "PaginationNext";
3857
+ var PaginationEllipsis = ({
3858
+ className,
3859
+ ...props
3860
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
3861
+ "span",
3862
+ {
3863
+ "aria-hidden": true,
3864
+ className: cn("flex h-9 w-9 items-center justify-center", className),
3865
+ ...props,
3866
+ children: [
3867
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
3868
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More pages" })
3869
+ ]
3870
+ }
3871
+ );
3872
+ PaginationEllipsis.displayName = "PaginationEllipsis";
3873
+ var MenubarMenu = MenubarPrimitive__namespace.Menu;
3874
+ var MenubarGroup = MenubarPrimitive__namespace.Group;
3875
+ var MenubarPortal = MenubarPrimitive__namespace.Portal;
3876
+ var MenubarSub = MenubarPrimitive__namespace.Sub;
3877
+ var MenubarRadioGroup = MenubarPrimitive__namespace.RadioGroup;
3878
+ var Menubar = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3879
+ MenubarPrimitive__namespace.Root,
3880
+ {
3881
+ ref,
3882
+ className: cn(
3883
+ "flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
3884
+ className
3885
+ ),
3886
+ ...props
3887
+ }
3888
+ ));
3889
+ Menubar.displayName = MenubarPrimitive__namespace.Root.displayName;
3890
+ var MenubarTrigger = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3891
+ MenubarPrimitive__namespace.Trigger,
3892
+ {
3893
+ ref,
3894
+ className: cn(
3895
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
3896
+ className
3897
+ ),
3898
+ ...props
3899
+ }
3900
+ ));
3901
+ MenubarTrigger.displayName = MenubarPrimitive__namespace.Trigger.displayName;
3902
+ var MenubarSubTrigger = React32__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3903
+ MenubarPrimitive__namespace.SubTrigger,
3904
+ {
3905
+ ref,
3906
+ className: cn(
3907
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
3908
+ inset && "pl-8",
3909
+ className
3910
+ ),
3911
+ ...props,
3912
+ children: [
3913
+ children,
3914
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto h-4 w-4" })
3915
+ ]
3916
+ }
3917
+ ));
3918
+ MenubarSubTrigger.displayName = MenubarPrimitive__namespace.SubTrigger.displayName;
3919
+ var MenubarSubContent = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3920
+ MenubarPrimitive__namespace.SubContent,
3921
+ {
3922
+ ref,
3923
+ className: cn(
3924
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground 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",
3925
+ className
3926
+ ),
3927
+ ...props
3928
+ }
3929
+ ));
3930
+ MenubarSubContent.displayName = MenubarPrimitive__namespace.SubContent.displayName;
3931
+ var MenubarContent = React32__namespace.forwardRef(
3932
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
3933
+ MenubarPrimitive__namespace.Content,
3934
+ {
3935
+ ref,
3936
+ align,
3937
+ alignOffset,
3938
+ sideOffset,
3939
+ className: cn(
3940
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in 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",
3941
+ className
3942
+ ),
3943
+ ...props
3944
+ }
3945
+ ) })
3946
+ );
3947
+ MenubarContent.displayName = MenubarPrimitive__namespace.Content.displayName;
3948
+ var MenubarItem = React32__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3949
+ MenubarPrimitive__namespace.Item,
3950
+ {
3951
+ ref,
3952
+ className: cn(
3953
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3954
+ inset && "pl-8",
3955
+ className
3956
+ ),
3957
+ ...props
3958
+ }
3959
+ ));
3960
+ MenubarItem.displayName = MenubarPrimitive__namespace.Item.displayName;
3961
+ var MenubarCheckboxItem = React32__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3962
+ MenubarPrimitive__namespace.CheckboxItem,
3963
+ {
3964
+ ref,
3965
+ className: cn(
3966
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3967
+ className
3968
+ ),
3969
+ checked,
3970
+ ...props,
3971
+ children: [
3972
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
3973
+ children
3974
+ ]
3975
+ }
3976
+ ));
3977
+ MenubarCheckboxItem.displayName = MenubarPrimitive__namespace.CheckboxItem.displayName;
3978
+ var MenubarRadioItem = React32__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
3979
+ MenubarPrimitive__namespace.RadioItem,
3980
+ {
3981
+ ref,
3982
+ className: cn(
3983
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3984
+ className
3985
+ ),
3986
+ ...props,
3987
+ children: [
3988
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-2 w-2 fill-current" }) }) }),
3989
+ children
3990
+ ]
3991
+ }
3992
+ ));
3993
+ MenubarRadioItem.displayName = MenubarPrimitive__namespace.RadioItem.displayName;
3994
+ var MenubarLabel = React32__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3995
+ MenubarPrimitive__namespace.Label,
3996
+ {
3997
+ ref,
3998
+ className: cn(
3999
+ "px-2 py-1.5 text-sm font-semibold",
4000
+ inset && "pl-8",
4001
+ className
4002
+ ),
4003
+ ...props
4004
+ }
4005
+ ));
4006
+ MenubarLabel.displayName = MenubarPrimitive__namespace.Label.displayName;
4007
+ var MenubarSeparator = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4008
+ MenubarPrimitive__namespace.Separator,
4009
+ {
4010
+ ref,
4011
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
4012
+ ...props
4013
+ }
4014
+ ));
4015
+ MenubarSeparator.displayName = MenubarPrimitive__namespace.Separator.displayName;
4016
+ var MenubarShortcut = ({
4017
+ className,
4018
+ ...props
4019
+ }) => {
4020
+ return /* @__PURE__ */ jsxRuntime.jsx(
4021
+ "span",
4022
+ {
4023
+ className: cn(
4024
+ "ml-auto text-xs tracking-widest text-muted-foreground",
4025
+ className
4026
+ ),
4027
+ ...props
4028
+ }
4029
+ );
4030
+ };
4031
+ MenubarShortcut.displayName = "MenubarShortcut";
4032
+ var tableVariants = classVarianceAuthority.cva(
4033
+ "w-full caption-bottom text-sm",
4034
+ {
4035
+ variants: {
4036
+ variant: {
4037
+ default: "dark:text-gray-200",
4038
+ bordered: "border border-border dark:border-gray-700",
4039
+ striped: "dark:text-gray-200",
4040
+ card: "border border-border dark:border-gray-700 rounded-md shadow-sm dark:shadow-gray-900/20",
4041
+ minimal: "border-none dark:text-gray-200"
4042
+ },
4043
+ size: {
4044
+ sm: "text-xs",
4045
+ default: "text-sm",
4046
+ lg: "text-base"
4047
+ }
4048
+ },
4049
+ defaultVariants: {
4050
+ variant: "default",
4051
+ size: "default"
4052
+ }
4053
+ }
4054
+ );
4055
+ var Table = React32__namespace.forwardRef(({
4056
+ className,
4057
+ variant,
4058
+ size,
4059
+ loading,
4060
+ emptyContent,
4061
+ // Commenting unused properties to prevent lint warnings
4062
+ // sortColumn,
4063
+ // sortDirection,
4064
+ // onSortChange,
4065
+ // selectedRowIds,
4066
+ // onRowSelectionChange,
4067
+ // disableRowSelection,
4068
+ // getRowId,
4069
+ ...props
4070
+ }, ref) => {
4071
+ const striped = variant === "striped";
4072
+ const childrenWithProps = React32__namespace.Children.map(props.children, (child) => {
4073
+ if (React32__namespace.isValidElement(child)) {
4074
+ if (child.type === "tbody") {
4075
+ const tbodyProps = child.props;
4076
+ return React32__namespace.cloneElement(child, {
4077
+ className: cn(tbodyProps.className, striped && "even:[&>tr]:bg-muted/50")
4078
+ });
4079
+ }
4080
+ }
4081
+ return child;
4082
+ });
4083
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full overflow-auto", children: [
4084
+ loading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-background/60 flex items-center justify-center z-10", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent" }) }),
4085
+ /* @__PURE__ */ jsxRuntime.jsx(
4086
+ "table",
4087
+ {
4088
+ ref,
4089
+ className: cn(
4090
+ tableVariants({ variant, size }),
4091
+ loading && "opacity-70",
4092
+ className
4093
+ ),
4094
+ ...props,
4095
+ children: childrenWithProps
4096
+ }
4097
+ ),
4098
+ emptyContent && React32__namespace.Children.count(props.children) === 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-6 text-center text-muted-foreground", children: emptyContent })
4099
+ ] });
4100
+ });
4101
+ Table.displayName = "Table";
4102
+ var TableHeader = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4103
+ "thead",
4104
+ {
4105
+ ref,
4106
+ className: cn(
4107
+ "border-b bg-muted/50 dark:bg-gray-800/30 dark:border-gray-700",
4108
+ className
4109
+ ),
4110
+ ...props
4111
+ }
4112
+ ));
4113
+ TableHeader.displayName = "TableHeader";
4114
+ var TableBody = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("tbody", { ref, className: cn("", className), ...props }));
4115
+ TableBody.displayName = "TableBody";
4116
+ var TableFooter = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4117
+ "tfoot",
4118
+ {
4119
+ ref,
4120
+ className: cn("bg-primary text-primary-foreground font-medium", className),
4121
+ ...props
4122
+ }
4123
+ ));
4124
+ TableFooter.displayName = "TableFooter";
4125
+ var TableRow = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4126
+ "tr",
4127
+ {
4128
+ ref,
4129
+ className: cn(
4130
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
4131
+ className
4132
+ ),
4133
+ ...props
4134
+ }
4135
+ ));
4136
+ TableRow.displayName = "TableRow";
4137
+ var TableHead = React32__namespace.forwardRef(
4138
+ ({ className, sortable, sorted, onSort, children, ...props }, ref) => {
4139
+ const renderSortIcon = () => {
4140
+ if (!sortable)
4141
+ return null;
4142
+ if (sorted === "asc") {
4143
+ return /* @__PURE__ */ jsxRuntime.jsx(
4144
+ "svg",
4145
+ {
4146
+ xmlns: "http://www.w3.org/2000/svg",
4147
+ className: "ml-1 h-4 w-4 inline-block",
4148
+ viewBox: "0 0 20 20",
4149
+ fill: "currentColor",
4150
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4151
+ "path",
4152
+ {
4153
+ fillRule: "evenodd",
4154
+ d: "M14.707 10.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 12.586V5a1 1 0 012 0v7.586l2.293-2.293a1 1 0 011.414 0z",
4155
+ clipRule: "evenodd"
4156
+ }
4157
+ )
4158
+ }
4159
+ );
4160
+ }
4161
+ if (sorted === "desc") {
4162
+ return /* @__PURE__ */ jsxRuntime.jsx(
4163
+ "svg",
4164
+ {
4165
+ xmlns: "http://www.w3.org/2000/svg",
4166
+ className: "ml-1 h-4 w-4 inline-block",
4167
+ viewBox: "0 0 20 20",
4168
+ fill: "currentColor",
4169
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4170
+ "path",
4171
+ {
4172
+ fillRule: "evenodd",
4173
+ d: "M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z",
4174
+ clipRule: "evenodd"
4175
+ }
4176
+ )
4177
+ }
4178
+ );
4179
+ }
4180
+ return /* @__PURE__ */ jsxRuntime.jsx(
4181
+ "svg",
4182
+ {
4183
+ xmlns: "http://www.w3.org/2000/svg",
4184
+ className: "ml-1 h-4 w-4 inline-block opacity-30",
4185
+ viewBox: "0 0 20 20",
4186
+ fill: "currentColor",
4187
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4188
+ "path",
4189
+ {
4190
+ fillRule: "evenodd",
4191
+ d: "M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z",
4192
+ clipRule: "evenodd"
4193
+ }
4194
+ )
4195
+ }
4196
+ );
4197
+ };
4198
+ return /* @__PURE__ */ jsxRuntime.jsx(
4199
+ "th",
4200
+ {
4201
+ ref,
4202
+ className: cn(
4203
+ "h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
4204
+ sortable && "cursor-pointer hover:text-foreground select-none",
4205
+ className
4206
+ ),
4207
+ onClick: sortable ? onSort : void 0,
4208
+ ...props,
4209
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center", children: [
4210
+ children,
4211
+ sortable && renderSortIcon()
4212
+ ] })
4213
+ }
4214
+ );
4215
+ }
4216
+ );
4217
+ TableHead.displayName = "TableHead";
4218
+ var TableCell = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4219
+ "td",
4220
+ {
4221
+ ref,
4222
+ className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
4223
+ ...props
4224
+ }
4225
+ ));
4226
+ TableCell.displayName = "TableCell";
4227
+ var TableCaption = React32__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4228
+ "caption",
4229
+ {
4230
+ ref,
4231
+ className: cn("mt-4 text-sm text-muted-foreground", className),
4232
+ ...props
4233
+ }
4234
+ ));
4235
+ TableCaption.displayName = "TableCaption";
4236
+
4237
+ exports.Accordion = Accordion;
4238
+ exports.AccordionContent = AccordionContent;
4239
+ exports.AccordionItem = AccordionItem;
4240
+ exports.AccordionTrigger = AccordionTrigger;
4241
+ exports.Alert = Alert;
4242
+ exports.AlertDescription = AlertDescription;
4243
+ exports.AlertTitle = AlertTitle;
4244
+ exports.AspectRatio = AspectRatio;
4245
+ exports.Avatar = Avatar;
4246
+ exports.AvatarFallback = AvatarFallback;
4247
+ exports.AvatarImage = AvatarImage;
4248
+ exports.Badge = Badge;
4249
+ exports.Breadcrumb = Breadcrumb;
4250
+ exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
4251
+ exports.BreadcrumbItem = BreadcrumbItem;
4252
+ exports.BreadcrumbList = BreadcrumbList;
4253
+ exports.BreadcrumbSeparator = BreadcrumbSeparator;
4254
+ exports.Button = Button;
4255
+ exports.Card = Card;
4256
+ exports.CardContent = CardContent;
4257
+ exports.CardDescription = CardDescription;
4258
+ exports.CardFooter = CardFooter;
4259
+ exports.CardHeader = CardHeader;
4260
+ exports.CardTitle = CardTitle;
4261
+ exports.Checkbox = Checkbox;
4262
+ exports.CheckboxGroup = CheckboxGroup;
4263
+ exports.CheckboxLabel = CheckboxLabel;
4264
+ exports.CheckboxWithLabel = CheckboxWithLabel;
4265
+ exports.Collapsible = Collapsible2;
4266
+ exports.CollapsibleContent = CollapsibleContent2;
4267
+ exports.CollapsibleTrigger = CollapsibleTrigger2;
4268
+ exports.Command = Command;
4269
+ exports.CommandDialog = CommandDialog;
4270
+ exports.CommandEmpty = CommandEmpty;
4271
+ exports.CommandGroup = CommandGroup;
4272
+ exports.CommandInput = CommandInput;
4273
+ exports.CommandItem = CommandItem;
4274
+ exports.CommandList = CommandList;
4275
+ exports.CommandSeparator = CommandSeparator;
4276
+ exports.CommandShortcut = CommandShortcut;
4277
+ exports.Dialog = Dialog;
4278
+ exports.DialogClose = DialogClose;
4279
+ exports.DialogContent = DialogContent;
4280
+ exports.DialogDescription = DialogDescription;
4281
+ exports.DialogFooter = DialogFooter;
4282
+ exports.DialogForm = DialogForm;
4283
+ exports.DialogHeader = DialogHeader;
4284
+ exports.DialogTitle = DialogTitle;
4285
+ exports.DialogTrigger = DialogTrigger;
4286
+ exports.DropdownMenu = DropdownMenu;
4287
+ exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
4288
+ exports.DropdownMenuContent = DropdownMenuContent;
4289
+ exports.DropdownMenuGroup = DropdownMenuGroup;
4290
+ exports.DropdownMenuItem = DropdownMenuItem;
4291
+ exports.DropdownMenuLabel = DropdownMenuLabel;
4292
+ exports.DropdownMenuPortal = DropdownMenuPortal;
4293
+ exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
4294
+ exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
4295
+ exports.DropdownMenuSeparator = DropdownMenuSeparator;
4296
+ exports.DropdownMenuShortcut = DropdownMenuShortcut;
4297
+ exports.DropdownMenuSub = DropdownMenuSub;
4298
+ exports.DropdownMenuSubContent = DropdownMenuSubContent;
4299
+ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
4300
+ exports.DropdownMenuTrigger = DropdownMenuTrigger;
4301
+ exports.HoverCard = HoverCard;
4302
+ exports.HoverCardContent = HoverCardContent;
4303
+ exports.HoverCardTrigger = HoverCardTrigger;
4304
+ exports.Input = Input;
4305
+ exports.Label = Label;
4306
+ exports.Menubar = Menubar;
4307
+ exports.MenubarCheckboxItem = MenubarCheckboxItem;
4308
+ exports.MenubarContent = MenubarContent;
4309
+ exports.MenubarGroup = MenubarGroup;
4310
+ exports.MenubarItem = MenubarItem;
4311
+ exports.MenubarLabel = MenubarLabel;
4312
+ exports.MenubarMenu = MenubarMenu;
4313
+ exports.MenubarPortal = MenubarPortal;
4314
+ exports.MenubarRadioGroup = MenubarRadioGroup;
4315
+ exports.MenubarRadioItem = MenubarRadioItem;
4316
+ exports.MenubarSeparator = MenubarSeparator;
4317
+ exports.MenubarShortcut = MenubarShortcut;
4318
+ exports.MenubarSub = MenubarSub;
4319
+ exports.MenubarSubContent = MenubarSubContent;
4320
+ exports.MenubarSubTrigger = MenubarSubTrigger;
4321
+ exports.MenubarTrigger = MenubarTrigger;
4322
+ exports.NavigationMenu = NavigationMenu;
4323
+ exports.NavigationMenuContent = NavigationMenuContent;
4324
+ exports.NavigationMenuIndicator = NavigationMenuIndicator;
4325
+ exports.NavigationMenuItem = NavigationMenuItem;
4326
+ exports.NavigationMenuLink = NavigationMenuLink;
4327
+ exports.NavigationMenuList = NavigationMenuList;
4328
+ exports.NavigationMenuTrigger = NavigationMenuTrigger;
4329
+ exports.NavigationMenuViewport = NavigationMenuViewport;
4330
+ exports.Pagination = Pagination;
4331
+ exports.PaginationContent = PaginationContent;
4332
+ exports.PaginationEllipsis = PaginationEllipsis;
4333
+ exports.PaginationItem = PaginationItem;
4334
+ exports.PaginationLink = PaginationLink;
4335
+ exports.PaginationNext = PaginationNext;
4336
+ exports.PaginationPrevious = PaginationPrevious;
4337
+ exports.Popover = Popover;
4338
+ exports.PopoverAnchor = PopoverAnchor;
4339
+ exports.PopoverClose = PopoverClose;
4340
+ exports.PopoverContent = PopoverContent;
4341
+ exports.PopoverFooter = PopoverFooter;
4342
+ exports.PopoverHeader = PopoverHeader;
4343
+ exports.PopoverSeparator = PopoverSeparator;
4344
+ exports.PopoverTrigger = PopoverTrigger;
4345
+ exports.Progress = Progress;
4346
+ exports.RadioGroup = RadioGroup;
4347
+ exports.RadioGroupItem = RadioGroupItem;
4348
+ exports.RadioItemWithLabel = RadioItemWithLabel;
4349
+ exports.RadioLabel = RadioLabel;
4350
+ exports.Select = Select;
4351
+ exports.SelectContent = SelectContent;
4352
+ exports.SelectGroup = SelectGroup;
4353
+ exports.SelectItem = SelectItem;
4354
+ exports.SelectLabel = SelectLabel;
4355
+ exports.SelectSeparator = SelectSeparator;
4356
+ exports.SelectTrigger = SelectTrigger;
4357
+ exports.SelectValue = SelectValue;
4358
+ exports.Separator = Separator;
4359
+ exports.Sheet = Sheet;
4360
+ exports.SheetClose = SheetClose;
4361
+ exports.SheetContent = SheetContent;
4362
+ exports.SheetDescription = SheetDescription;
4363
+ exports.SheetFooter = SheetFooter;
4364
+ exports.SheetHeader = SheetHeader;
4365
+ exports.SheetOverlay = SheetOverlay;
4366
+ exports.SheetPortal = SheetPortal;
4367
+ exports.SheetTitle = SheetTitle;
4368
+ exports.SheetTrigger = SheetTrigger;
4369
+ exports.Skeleton = Skeleton;
4370
+ exports.SkeletonAvatar = SkeletonAvatar;
4371
+ exports.SkeletonCard = SkeletonCard;
4372
+ exports.SkeletonText = SkeletonText;
4373
+ exports.Slider = Slider;
4374
+ exports.Switch = Switch;
4375
+ exports.Table = Table;
4376
+ exports.TableBody = TableBody;
4377
+ exports.TableCaption = TableCaption;
4378
+ exports.TableCell = TableCell;
4379
+ exports.TableFooter = TableFooter;
4380
+ exports.TableHead = TableHead;
4381
+ exports.TableHeader = TableHeader;
4382
+ exports.TableRow = TableRow;
4383
+ exports.Tabs = Tabs;
4384
+ exports.TabsContent = TabsContent;
4385
+ exports.TabsList = TabsList;
4386
+ exports.TabsTrigger = TabsTrigger;
4387
+ exports.Textarea = Textarea;
4388
+ exports.ThemeProvider = ThemeProvider2;
4389
+ exports.Toast = Toast;
4390
+ exports.ToastContainer = ToastContainer;
4391
+ exports.ToastProvider = ToastProvider;
4392
+ exports.Toggle = Toggle;
4393
+ exports.Tooltip = Tooltip;
4394
+ exports.accordionContentVariants = accordionContentVariants;
4395
+ exports.accordionItemVariants = accordionItemVariants;
4396
+ exports.accordionTriggerVariants = accordionTriggerVariants;
4397
+ exports.aspectRatioVariants = aspectRatioVariants;
4398
+ exports.badgeVariants = badgeVariants;
4399
+ exports.buttonVariants = buttonVariants;
4400
+ exports.cn = cn;
4401
+ exports.collapsibleContentVariants = collapsibleContentVariants;
4402
+ exports.collapsibleTriggerVariants = collapsibleTriggerVariants;
4403
+ exports.combineRefs = combineRefs;
4404
+ exports.commandGroupVariants = commandGroupVariants;
4405
+ exports.commandInputVariants = commandInputVariants;
4406
+ exports.commandItemVariants = commandItemVariants;
4407
+ exports.commandListVariants = commandListVariants;
4408
+ exports.commandVariants = commandVariants;
4409
+ exports.createCssVariables = createCssVariables;
4410
+ exports.debounce = debounce;
4411
+ exports.formatCurrency = formatCurrency;
4412
+ exports.generateId = generateId;
4413
+ exports.get = get;
4414
+ exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
4415
+ exports.popoverContentVariants = popoverContentVariants;
4416
+ exports.progressVariants = progressVariants;
4417
+ exports.skeletonVariants = skeletonVariants;
4418
+ exports.toastVariants = toastVariants;
4419
+ exports.toggleVariants = toggleVariants;
4420
+ exports.tooltipContentVariants = tooltipContentVariants;
4421
+ exports.useTheme = useTheme;
4422
+ exports.useToast = useToast;
4423
+ //# sourceMappingURL=out.js.map
4424
+ //# sourceMappingURL=index.js.map