@saasflare/ui 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,82 +1,56 @@
1
1
  "use client";
2
- import { clsx } from 'clsx';
3
- import { twMerge } from 'tailwind-merge';
4
- import * as React13 from 'react';
5
- import { createContext, useState, useCallback, useMemo, useRef, useEffect, useContext, Suspense } from 'react';
2
+ import { useReducedMotion, noMotion, springGentle, springBouncy, buttonVariants, spring, Button, useSaasflareProps } from './chunk-P2JF7JDY.mjs';
3
+ export { Button, SaasflareProvider, SaasflareScript, SaasflareShell, SmoothScrollProvider, buttonVariants, fadeIn, noMotion, scaleIn, slideDown, slideUp, spring, springBouncy, springGentle, springStiff, useAnimation, useReducedMotion, useSaasflareProps, useSaasflareTheme } from './chunk-P2JF7JDY.mjs';
4
+ import { cn } from './chunk-S26666D6.mjs';
5
+ export { cn } from './chunk-S26666D6.mjs';
6
+ import * as React9 from 'react';
7
+ import { useState, useCallback, useMemo, useRef, useEffect, Suspense } from 'react';
8
+ import { m, useMotionValue, useSpring, useTransform, AnimatePresence } from 'framer-motion';
9
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
11
+ import { XIcon, ChevronDownIcon, CheckIcon, ChevronUpIcon, CircleIcon, ChevronRightIcon, ChevronLeftIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, ChevronRight, MoreHorizontal, SearchIcon, MinusIcon, MoreHorizontalIcon, GripVerticalIcon, PanelLeftIcon, ArrowUpIcon, Sun, Moon } from 'lucide-react';
12
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
13
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
6
14
  import { cva } from 'class-variance-authority';
7
- import { Loader2Icon, XIcon, ChevronDownIcon, CheckIcon, ChevronUpIcon, CircleIcon, ChevronRightIcon, ArrowLeft, ArrowRight, ChevronLeftIcon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, ChevronRight, MoreHorizontal, SearchIcon, MinusIcon, MoreHorizontalIcon, GripVerticalIcon, PanelLeftIcon, ArrowUpIcon, Sun, Moon } from 'lucide-react';
8
- import { motion, LayoutGroup, useMotionValue, useSpring, useTransform, AnimatePresence } from 'framer-motion';
9
- import { Direction, Slot, Dialog as Dialog$1, AlertDialog as AlertDialog$1, Accordion as Accordion$1, Tabs as Tabs$1, Checkbox as Checkbox$1, Switch as Switch$1, Progress as Progress$1, Tooltip as Tooltip$1, Popover as Popover$1, HoverCard as HoverCard$1, Select as Select$1, DropdownMenu as DropdownMenu$1, Slider as Slider$1, Avatar as Avatar$1, ContextMenu as ContextMenu$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1, RadioGroup as RadioGroup$1, Collapsible as Collapsible$1, ScrollArea as ScrollArea$1, AspectRatio as AspectRatio$1, Separator as Separator$1, Label as Label$1 } from 'radix-ui';
10
- import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
11
- import { ThemeProvider, useTheme } from 'next-themes';
15
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
16
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
17
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
18
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
19
+ import * as Slot7 from '@radix-ui/react-slot';
20
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
21
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
22
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
23
+ import * as SelectPrimitive from '@radix-ui/react-select';
24
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
12
25
  import { Drawer as Drawer$1 } from 'vaul';
13
- import useEmblaCarousel from 'embla-carousel-react';
26
+ import * as SliderPrimitive from '@radix-ui/react-slider';
27
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
28
+ import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
29
+ import * as MenubarPrimitive from '@radix-ui/react-menubar';
30
+ import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
31
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
32
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
14
33
  import { getDefaultClassNames, DayPicker } from 'react-day-picker';
34
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
35
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
36
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
37
+ import { useTheme } from 'next-themes';
15
38
  import { Toaster as Toaster$1 } from 'sonner';
16
- import * as RechartsPrimitive from 'recharts';
17
- import { Combobox as Combobox$1 } from '@base-ui/react';
39
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
40
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
18
41
  import { Command as Command$1 } from 'cmdk';
42
+ import * as Direction from '@radix-ui/react-direction';
43
+ import * as LabelPrimitive from '@radix-ui/react-label';
19
44
  import { FormProvider, Controller, useFormContext, useFormState } from 'react-hook-form';
20
45
  import { OTPInput, OTPInputContext } from 'input-otp';
21
46
  import * as ResizablePrimitive from 'react-resizable-panels';
22
- import Image from 'next/image';
47
+ import Image2 from 'next/image';
23
48
  import { usePathname, useSearchParams } from 'next/navigation';
24
- import NProgress from 'nprogress';
25
- import 'nprogress/nprogress.css';
26
49
 
27
- // src/lib/utils.ts
28
- function cn(...inputs) {
29
- return twMerge(clsx(inputs));
30
- }
31
-
32
- // src/lib/color.ts
33
- function hexToOklch(hex) {
34
- const normalized = normalizeHex(hex);
35
- if (!normalized) return null;
36
- const r = srgbToLinear(parseInt(normalized.slice(0, 2), 16) / 255);
37
- const g = srgbToLinear(parseInt(normalized.slice(2, 4), 16) / 255);
38
- const b = srgbToLinear(parseInt(normalized.slice(4, 6), 16) / 255);
39
- const l_ = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
40
- const m_ = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
41
- const s_ = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
42
- const lc = Math.cbrt(l_);
43
- const mc = Math.cbrt(m_);
44
- const sc = Math.cbrt(s_);
45
- const L = 0.2104542553 * lc + 0.793617785 * mc - 0.0040720468 * sc;
46
- const a = 1.9779984951 * lc - 2.428592205 * mc + 0.4505937099 * sc;
47
- const b2 = 0.0259040371 * lc + 0.7827717662 * mc - 0.808675766 * sc;
48
- const c = Math.sqrt(a * a + b2 * b2);
49
- let h = Math.atan2(b2, a) * 180 / Math.PI;
50
- if (h < 0) h += 360;
51
- return { l: L, c, h };
52
- }
53
- function normalizeHex(input) {
54
- if (typeof input !== "string") return null;
55
- const s = input.trim().replace(/^#/, "").toLowerCase();
56
- if (/^[0-9a-f]{3}$/.test(s)) {
57
- return s[0] + s[0] + s[1] + s[1] + s[2] + s[2];
58
- }
59
- if (/^[0-9a-f]{4}$/.test(s)) {
60
- return s[0] + s[0] + s[1] + s[1] + s[2] + s[2];
61
- }
62
- if (/^[0-9a-f]{6}$/.test(s)) {
63
- return s;
64
- }
65
- if (/^[0-9a-f]{8}$/.test(s)) {
66
- return s.slice(0, 6);
67
- }
68
- return null;
69
- }
70
- function srgbToLinear(c) {
71
- return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
72
- }
73
- function isHex(input) {
74
- return typeof input === "string" && /^#?[0-9a-f]{3,8}$/i.test(input.trim());
75
- }
76
50
  var MOBILE_BREAKPOINT = 768;
77
51
  function useIsMobile() {
78
- const [isMobile, setIsMobile] = React13.useState(void 0);
79
- React13.useEffect(() => {
52
+ const [isMobile, setIsMobile] = React9.useState(void 0);
53
+ React9.useEffect(() => {
80
54
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
81
55
  const onChange = () => {
82
56
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -87,17 +61,6 @@ function useIsMobile() {
87
61
  }, []);
88
62
  return !!isMobile;
89
63
  }
90
- var QUERY = "(prefers-reduced-motion: reduce)";
91
- var subscribe = (cb) => {
92
- const mql = window.matchMedia(QUERY);
93
- mql.addEventListener("change", cb);
94
- return () => mql.removeEventListener("change", cb);
95
- };
96
- var getSnapshot = () => window.matchMedia(QUERY).matches;
97
- var getServerSnapshot = () => false;
98
- function useReducedMotion() {
99
- return React13.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
100
- }
101
64
  function useDisclosure(options = {}) {
102
65
  const { defaultOpen = false, isOpen: controlledOpen, onChange } = options;
103
66
  const isControlled = controlledOpen !== void 0;
@@ -215,488 +178,10 @@ function usePagination(options) {
215
178
  }, [activePage, safeTotal, siblings, boundaries]);
216
179
  return { activePage, range, setPage, next, previous, first, last };
217
180
  }
218
-
219
- // src/components/ui/motion-config.ts
220
- var spring = { type: "spring", stiffness: 400, damping: 25 };
221
- var springBouncy = { type: "spring", stiffness: 300, damping: 15 };
222
- var springGentle = { type: "spring", stiffness: 200, damping: 20 };
223
- var springStiff = { type: "spring", stiffness: 500, damping: 30 };
224
- var noMotion = { duration: 0 };
225
- var fadeIn = { initial: { opacity: 0 }, animate: { opacity: 1 } };
226
- var scaleIn = { initial: { opacity: 0, scale: 0.95 }, animate: { opacity: 1, scale: 1 } };
227
- var slideUp = { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 } };
228
- var slideDown = { initial: { opacity: 0, y: -8 }, animate: { opacity: 1, y: 0 } };
229
- var AnimationContext = createContext(
230
- void 0
231
- );
232
- function useAnimation() {
233
- const context = useContext(AnimationContext);
234
- const prefersReduced = useReducedMotion();
235
- if (context) return context;
236
- return { animated: !prefersReduced };
237
- }
238
- function SmoothScrollProvider({
239
- children,
240
- enabled = true
241
- }) {
242
- const reduced = useReducedMotion();
243
- const shouldSmooth = enabled && !reduced;
244
- useEffect(() => {
245
- if (!shouldSmooth) return;
246
- const html = document.documentElement;
247
- const previous = html.style.scrollBehavior;
248
- html.style.scrollBehavior = "smooth";
249
- return () => {
250
- html.style.scrollBehavior = previous;
251
- };
252
- }, [shouldSmooth]);
253
- return /* @__PURE__ */ jsx(Fragment, { children });
254
- }
255
-
256
- // src/lib/constants.ts
257
- var UI_PREFS_STORAGE_KEY = "sf-ui-prefs";
258
- var THEME_STORAGE_KEY = "theme";
259
- var SAASFLARE_DATA_ATTR = {
260
- /** Active brand palette id (matches `:root[data-palette="…"]` in palettes.css). */
261
- palette: "data-palette",
262
- /** Active surface style (matches `[data-style="…"]` in surfaces.css). */
263
- style: "data-style",
264
- /** Active radius preset (matches `:root[data-radius="…"]` in theme.css). */
265
- radius: "data-radius",
266
- /** Animation kill-switch (matches `[data-animated="false"]` in motion.css). */
267
- animated: "data-animated"
268
- };
269
- var SYNC_PREFIX = "sf-ls:";
270
- function useLocalStorage(key, initialValue, options) {
271
- const initialRef = useRef(initialValue);
272
- const optionsRef = useRef(options);
273
- optionsRef.current = options;
274
- const serialize = useCallback(
275
- (value) => (optionsRef.current?.serializer ?? JSON.stringify)(value),
276
- []
277
- );
278
- const deserialize = useCallback(
279
- (raw) => (optionsRef.current?.deserializer ?? JSON.parse)(raw),
280
- []
281
- );
282
- const handleError = useCallback(
283
- (error, operation) => {
284
- if (optionsRef.current?.onError) {
285
- optionsRef.current.onError(error, operation);
286
- } else {
287
- console.warn(`useLocalStorage: ${operation} failed for "${key}"`, error);
288
- }
289
- },
290
- [key]
291
- );
292
- const readValue = useCallback(() => {
293
- if (typeof window === "undefined") return initialRef.current;
294
- try {
295
- const item = window.localStorage.getItem(key);
296
- return item !== null ? deserialize(item) : initialRef.current;
297
- } catch (error) {
298
- handleError(error, "read");
299
- return initialRef.current;
300
- }
301
- }, [key, deserialize, handleError]);
302
- const [storedValue, setStoredValue] = useState(() => readValue());
303
- const setValue = useCallback(
304
- (value) => {
305
- try {
306
- setStoredValue((prev) => {
307
- const next = typeof value === "function" ? value(prev) : value;
308
- if (typeof window !== "undefined") {
309
- window.localStorage.setItem(key, serialize(next));
310
- window.dispatchEvent(new CustomEvent(`${SYNC_PREFIX}${key}`));
311
- }
312
- return next;
313
- });
314
- } catch (error) {
315
- handleError(error, "write");
316
- }
317
- },
318
- [key, serialize, handleError]
319
- );
320
- const removeValue = useCallback(() => {
321
- try {
322
- if (typeof window !== "undefined") {
323
- window.localStorage.removeItem(key);
324
- window.dispatchEvent(new CustomEvent(`${SYNC_PREFIX}${key}`));
325
- }
326
- setStoredValue(initialRef.current);
327
- } catch (error) {
328
- handleError(error, "remove");
329
- }
330
- }, [key, handleError]);
331
- useEffect(() => {
332
- const onStorage = (e) => {
333
- if (e.key === key) setStoredValue(readValue());
334
- };
335
- const onSync = () => setStoredValue(readValue());
336
- const syncEvent = `${SYNC_PREFIX}${key}`;
337
- window.addEventListener("storage", onStorage);
338
- window.addEventListener(syncEvent, onSync);
339
- return () => {
340
- window.removeEventListener("storage", onStorage);
341
- window.removeEventListener(syncEvent, onSync);
342
- };
343
- }, [key, readValue]);
344
- useEffect(() => {
345
- setStoredValue(readValue());
346
- }, [readValue]);
347
- return [storedValue, setValue, removeValue];
348
- }
349
- function encode(value) {
350
- return JSON.stringify(value ?? null).replace(/</g, "\\u003c");
351
- }
352
- function buildSaasflareScript(palette, surface, radius, animated, storageKey = UI_PREFS_STORAGE_KEY) {
353
- return buildScript(palette, surface, radius, animated, storageKey);
354
- }
355
- function buildScript(palette, surface, radius, animated, storageKey) {
356
- const forcePalette = palette || null;
357
- const forceSurface = surface || null;
358
- const forceRadius = radius || null;
359
- const forceAnimated = typeof animated === "boolean" ? animated : null;
360
- return `(function(){try{var r=document.documentElement;var p={};try{p=JSON.parse(localStorage.getItem(${encode(storageKey)})||"{}")||{}}catch(_){}var t=${encode(forcePalette)};if(t===null&&typeof p.palette==="string")t=p.palette;if(typeof t==="string"&&t.length)r.setAttribute(${encode(SAASFLARE_DATA_ATTR.palette)},t);var s=${encode(forceSurface)};if(s===null&&typeof p.surface==="string")s=p.surface;if(typeof s==="string"&&s.length)r.setAttribute(${encode(SAASFLARE_DATA_ATTR.style)},s);var d=${encode(forceRadius)};if(d===null&&typeof p.radius==="string")d=p.radius;if(typeof d==="string"&&d.length)r.setAttribute(${encode(SAASFLARE_DATA_ATTR.radius)},d);var a=${encode(forceAnimated)};if(a===null&&typeof p.animated==="boolean")a=p.animated;if(typeof a==="boolean")r.setAttribute(${encode(SAASFLARE_DATA_ATTR.animated)},String(a));}catch(e){}})();`;
361
- }
362
- function SaasflareScript({ nonce, palette, surface, radius, animated, storageKey = UI_PREFS_STORAGE_KEY }) {
363
- return /* @__PURE__ */ jsx(
364
- "script",
365
- {
366
- nonce,
367
- dangerouslySetInnerHTML: { __html: buildScript(palette, surface, radius, animated, storageKey) }
368
- }
369
- );
370
- }
371
- var DEFAULT_CONTEXT = {
372
- palette: null,
373
- surface: "flat",
374
- radius: "rounded",
375
- setPalette: () => {
376
- },
377
- setSurface: () => {
378
- },
379
- setRadius: () => {
380
- }
381
- };
382
- var SaasflareThemeContext = createContext(DEFAULT_CONTEXT);
383
- function useSaasflareTheme() {
384
- return useContext(SaasflareThemeContext);
385
- }
386
- function applyColorAxis(root, prefix, value, injected) {
387
- if (isHex(value)) {
388
- const oklch = hexToOklch(value);
389
- if (oklch) {
390
- const hKey = `--${prefix}-h`;
391
- const cKey = `--${prefix}-c`;
392
- const lKey = `--${prefix}-l`;
393
- root.style.setProperty(hKey, oklch.h.toFixed(2));
394
- root.style.setProperty(cKey, oklch.c.toFixed(4));
395
- if (prefix === "primary") {
396
- root.style.setProperty(lKey, oklch.l.toFixed(4));
397
- injected.push(lKey);
398
- }
399
- injected.push(hKey, cKey);
400
- return;
401
- }
402
- }
403
- const key = `--${prefix}`;
404
- root.style.setProperty(key, value);
405
- injected.push(key);
406
- }
407
- function CustomPaletteInjector({ palette }) {
408
- const { resolvedTheme } = useTheme();
409
- useEffect(() => {
410
- const root = document.documentElement;
411
- const injected = [];
412
- applyColorAxis(root, "primary", palette.primary, injected);
413
- if (palette.neutral) {
414
- applyColorAxis(root, "neutral", palette.neutral, injected);
415
- }
416
- if (palette.radius) {
417
- root.style.setProperty("--radius", palette.radius);
418
- injected.push("--radius");
419
- }
420
- const extras = resolvedTheme === "dark" ? palette.dark : palette.light;
421
- if (extras) {
422
- for (const [key, value] of Object.entries(extras)) {
423
- root.style.setProperty(key, value);
424
- injected.push(key);
425
- }
426
- }
427
- return () => {
428
- for (const key of injected) {
429
- root.style.removeProperty(key);
430
- }
431
- };
432
- }, [resolvedTheme, palette]);
433
- return null;
434
- }
435
- var PERSISTED_DEFAULTS = {
436
- palette: null,
437
- surface: null,
438
- radius: null,
439
- animated: null
440
- };
441
- function SaasflareProvider({
442
- children,
443
- theme = "system",
444
- palette,
445
- surface,
446
- radius,
447
- animated = true,
448
- smoothScrolling = false,
449
- disableScript = false,
450
- scriptNonce,
451
- storageKey = UI_PREFS_STORAGE_KEY,
452
- themeStorageKey = THEME_STORAGE_KEY
453
- }) {
454
- const isCustomPalette = typeof palette === "object";
455
- const scriptPalette = !isCustomPalette && typeof palette === "string" ? palette : void 0;
456
- const scriptSurface = typeof surface === "string" ? surface : void 0;
457
- const scriptRadius = typeof radius === "string" ? radius : void 0;
458
- const scriptHtml = disableScript ? null : buildSaasflareScript(scriptPalette, scriptSurface, scriptRadius, animated, storageKey);
459
- const [persisted, setPersisted] = useLocalStorage(
460
- storageKey,
461
- PERSISTED_DEFAULTS
462
- );
463
- const currentPalette = isCustomPalette ? palette.name : palette ?? persisted.palette;
464
- const currentStyle = surface ?? persisted.surface ?? "flat";
465
- const currentRadius = radius ?? persisted.radius ?? "rounded";
466
- const setPalette = useCallback(
467
- (id) => setPersisted((prev) => ({ ...prev, palette: id })),
468
- [setPersisted]
469
- );
470
- const setSurface = useCallback(
471
- (style) => setPersisted((prev) => ({ ...prev, surface: style })),
472
- [setPersisted]
473
- );
474
- const setRadius = useCallback(
475
- (r) => setPersisted((prev) => ({ ...prev, radius: r })),
476
- [setPersisted]
477
- );
478
- const prefersReduced = useReducedMotion();
479
- const effectiveAnimated = animated && !prefersReduced;
480
- useEffect(() => {
481
- const root = document.documentElement;
482
- if (currentPalette) {
483
- root.setAttribute(SAASFLARE_DATA_ATTR.palette, currentPalette);
484
- } else {
485
- root.removeAttribute(SAASFLARE_DATA_ATTR.palette);
486
- }
487
- root.setAttribute(SAASFLARE_DATA_ATTR.style, currentStyle);
488
- root.setAttribute(SAASFLARE_DATA_ATTR.radius, currentRadius);
489
- root.setAttribute(SAASFLARE_DATA_ATTR.animated, String(effectiveAnimated));
490
- }, [currentPalette, currentStyle, currentRadius, effectiveAnimated]);
491
- return /* @__PURE__ */ jsxs(
492
- ThemeProvider,
493
- {
494
- attribute: "class",
495
- defaultTheme: theme,
496
- enableSystem: theme === "system",
497
- storageKey: themeStorageKey,
498
- disableTransitionOnChange: true,
499
- children: [
500
- scriptHtml !== null && /* @__PURE__ */ jsx(
501
- "script",
502
- {
503
- nonce: scriptNonce,
504
- dangerouslySetInnerHTML: { __html: scriptHtml }
505
- }
506
- ),
507
- /* @__PURE__ */ jsx(
508
- SaasflareThemeContext.Provider,
509
- {
510
- value: {
511
- palette: currentPalette,
512
- surface: currentStyle,
513
- radius: currentRadius,
514
- setPalette,
515
- setSurface,
516
- setRadius
517
- },
518
- children: /* @__PURE__ */ jsxs(AnimationContext.Provider, { value: { animated: effectiveAnimated }, children: [
519
- isCustomPalette && /* @__PURE__ */ jsx(CustomPaletteInjector, { palette }),
520
- /* @__PURE__ */ jsx(SmoothScrollProvider, { enabled: smoothScrolling, children })
521
- ] })
522
- }
523
- )
524
- ]
525
- }
526
- );
527
- }
528
- function SaasflareShell({
529
- children,
530
- lang = "en",
531
- className,
532
- bodyClassName,
533
- head,
534
- palette,
535
- surface,
536
- radius,
537
- animated,
538
- theme,
539
- smoothScrolling,
540
- storageKey,
541
- themeStorageKey
542
- }) {
543
- const dataPalette = typeof palette === "object" ? palette.name : palette;
544
- const dataAnimated = typeof animated === "boolean" ? String(animated) : void 0;
545
- return /* @__PURE__ */ jsxs(
546
- "html",
547
- {
548
- lang,
549
- className,
550
- suppressHydrationWarning: true,
551
- "data-palette": dataPalette,
552
- "data-style": surface,
553
- "data-radius": radius,
554
- "data-animated": dataAnimated,
555
- children: [
556
- head ? /* @__PURE__ */ jsx("head", { children: head }) : null,
557
- /* @__PURE__ */ jsx("body", { className: bodyClassName, children: /* @__PURE__ */ jsx(
558
- SaasflareProvider,
559
- {
560
- palette,
561
- surface,
562
- radius,
563
- animated,
564
- theme,
565
- smoothScrolling,
566
- storageKey,
567
- themeStorageKey,
568
- disableScript: true,
569
- children
570
- }
571
- ) })
572
- ]
573
- }
574
- );
575
- }
576
- function useSaasflareProps(props = {}) {
577
- const ctx = useSaasflareTheme();
578
- const anim = useContext(AnimationContext);
579
- return {
580
- surface: props.surface ?? ctx.surface,
581
- radius: props.radius ?? ctx.radius,
582
- animated: props.animated ?? anim?.animated ?? true,
583
- palette: ctx.palette
584
- };
585
- }
586
- var LEGACY_VARIANT_MAP = {
587
- default: { variant: "solid", intent: "primary" },
588
- destructive: { variant: "solid", intent: "danger" },
589
- secondary: { variant: "soft", intent: "neutral" }
590
- };
591
- var buttonVariants = cva(
592
- "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
593
- {
594
- variants: {
595
- variant: {
596
- solid: "bg-[var(--intent)] text-[var(--intent-fg)] shadow-xs hover:brightness-110 dark:hover:brightness-125",
597
- soft: "bg-[var(--intent)]/15 text-[var(--intent)] hover:bg-[var(--intent)]/25 dark:bg-[var(--intent)]/20 dark:hover:bg-[var(--intent)]/30",
598
- outline: "border border-[var(--intent)]/30 text-[var(--intent)] shadow-xs hover:bg-[var(--intent)]/10 dark:border-[var(--intent)]/40 dark:hover:bg-[var(--intent)]/15",
599
- ghost: "text-[var(--intent)] hover:bg-[var(--intent)]/10 dark:hover:bg-[var(--intent)]/15",
600
- link: "text-[var(--intent)] underline-offset-4 hover:underline",
601
- glass: "bg-[var(--glass-bg)] text-[var(--intent)] border border-[var(--glass-border)] backdrop-blur-lg shadow-[var(--glass-shadow)] hover:bg-[var(--glass-bg-hover)] hover:border-[var(--glass-border-hover)]",
602
- shadow: "bg-[var(--intent)] text-[var(--intent-fg)] shadow-[var(--btn-shadow)] hover:shadow-[var(--btn-shadow-hover)] hover:brightness-110 dark:hover:brightness-125"
603
- },
604
- size: {
605
- xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
606
- sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
607
- md: "h-9 px-4 py-2 has-[>svg]:px-3",
608
- lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
609
- xl: "h-12 rounded-lg px-8 text-base has-[>svg]:px-5 [&_svg:not([class*='size-'])]:size-5",
610
- icon: "size-9",
611
- "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
612
- "icon-sm": "size-8",
613
- "icon-lg": "size-10"
614
- }
615
- },
616
- defaultVariants: {
617
- variant: "solid",
618
- size: "md"
619
- }
620
- }
621
- );
622
- function Button({
623
- className,
624
- variant: variantProp,
625
- size = "md",
626
- intent: intentProp = "primary",
627
- asChild = false,
628
- loading = false,
629
- fullWidth = false,
630
- surface,
631
- animated,
632
- disabled,
633
- children,
634
- ...props
635
- }) {
636
- const sfProps = useSaasflareProps({ surface, animated });
637
- const reduced = useReducedMotion();
638
- const effectiveVariant = variantProp ?? (sfProps.surface === "glass" ? "glass" : "solid");
639
- let resolvedVariant = effectiveVariant;
640
- let resolvedIntent = intentProp;
641
- const legacy = LEGACY_VARIANT_MAP[effectiveVariant];
642
- if (legacy) {
643
- resolvedVariant = legacy.variant;
644
- if (legacy.intent) {
645
- resolvedIntent = legacy.intent;
646
- }
647
- }
648
- const motionDisabled = !sfProps.animated || reduced || disabled || loading;
649
- const transition = !sfProps.animated || reduced ? noMotion : spring;
650
- if (asChild) {
651
- return /* @__PURE__ */ jsx(
652
- Slot.Root,
653
- {
654
- "data-slot": "button",
655
- "data-variant": resolvedVariant,
656
- "data-intent": resolvedIntent,
657
- "data-size": size,
658
- "data-surface": sfProps.surface,
659
- className: cn(
660
- buttonVariants({ variant: resolvedVariant, size }),
661
- fullWidth && "w-full",
662
- className
663
- ),
664
- ...props,
665
- children
666
- }
667
- );
668
- }
669
- return /* @__PURE__ */ jsxs(
670
- motion.button,
671
- {
672
- "data-slot": "button",
673
- "data-variant": resolvedVariant,
674
- "data-intent": resolvedIntent,
675
- "data-size": size,
676
- "data-surface": sfProps.surface,
677
- whileHover: motionDisabled ? void 0 : { scale: 1.02 },
678
- whileTap: motionDisabled ? void 0 : { scale: 0.97 },
679
- transition,
680
- className: cn(
681
- buttonVariants({ variant: resolvedVariant, size }),
682
- fullWidth && "w-full",
683
- className
684
- ),
685
- disabled,
686
- "aria-busy": loading || void 0,
687
- "aria-disabled": disabled || void 0,
688
- ...props,
689
- children: [
690
- loading && /* @__PURE__ */ jsx(Loader2Icon, { className: "animate-spin", "aria-hidden": "true" }),
691
- children
692
- ]
693
- }
694
- );
695
- }
696
181
  function Card({ className, ...props }) {
697
182
  const reduced = useReducedMotion();
698
183
  return /* @__PURE__ */ jsx(
699
- motion.div,
184
+ m.div,
700
185
  {
701
186
  "data-slot": "card",
702
187
  whileHover: reduced ? void 0 : { y: -2, boxShadow: "0 8px 30px rgba(0,0,0,0.08)" },
@@ -778,29 +263,29 @@ function CardFooter({ className, ...props }) {
778
263
  function Dialog({
779
264
  ...props
780
265
  }) {
781
- return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "dialog", ...props });
266
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
782
267
  }
783
268
  function DialogTrigger({
784
269
  ...props
785
270
  }) {
786
- return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "dialog-trigger", ...props });
271
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
787
272
  }
788
273
  function DialogPortal({
789
274
  ...props
790
275
  }) {
791
- return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "dialog-portal", ...props });
276
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
792
277
  }
793
278
  function DialogClose({
794
279
  ...props
795
280
  }) {
796
- return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "dialog-close", ...props });
281
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
797
282
  }
798
283
  function DialogOverlay({
799
284
  className,
800
285
  ...props
801
286
  }) {
802
287
  return /* @__PURE__ */ jsx(
803
- Dialog$1.Overlay,
288
+ DialogPrimitive.Overlay,
804
289
  {
805
290
  "data-slot": "dialog-overlay",
806
291
  className: cn(
@@ -820,13 +305,13 @@ function DialogContent({
820
305
  return /* @__PURE__ */ jsxs(DialogPortal, { children: [
821
306
  /* @__PURE__ */ jsx(DialogOverlay, {}),
822
307
  /* @__PURE__ */ jsx(
823
- Dialog$1.Content,
308
+ DialogPrimitive.Content,
824
309
  {
825
310
  "data-slot": "dialog-content",
826
311
  asChild: true,
827
312
  ...props,
828
313
  children: /* @__PURE__ */ jsxs(
829
- motion.div,
314
+ m.div,
830
315
  {
831
316
  initial: reduced ? { opacity: 1 } : { opacity: 0, scale: 0.95, y: 10 },
832
317
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -838,7 +323,7 @@ function DialogContent({
838
323
  ),
839
324
  children: [
840
325
  children,
841
- /* @__PURE__ */ jsxs(Dialog$1.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [
326
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [
842
327
  /* @__PURE__ */ jsx(XIcon, {}),
843
328
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
844
329
  ] })
@@ -874,7 +359,7 @@ function DialogTitle({
874
359
  ...props
875
360
  }) {
876
361
  return /* @__PURE__ */ jsx(
877
- Dialog$1.Title,
362
+ DialogPrimitive.Title,
878
363
  {
879
364
  "data-slot": "dialog-title",
880
365
  className: cn("text-lg leading-none font-semibold", className),
@@ -887,7 +372,7 @@ function DialogDescription({
887
372
  ...props
888
373
  }) {
889
374
  return /* @__PURE__ */ jsx(
890
- Dialog$1.Description,
375
+ DialogPrimitive.Description,
891
376
  {
892
377
  "data-slot": "dialog-description",
893
378
  className: cn("text-sm text-muted-foreground", className),
@@ -898,24 +383,24 @@ function DialogDescription({
898
383
  function AlertDialog({
899
384
  ...props
900
385
  }) {
901
- return /* @__PURE__ */ jsx(AlertDialog$1.Root, { "data-slot": "alert-dialog", ...props });
386
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
902
387
  }
903
388
  function AlertDialogTrigger({
904
389
  ...props
905
390
  }) {
906
- return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
391
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
907
392
  }
908
393
  function AlertDialogPortal({
909
394
  ...props
910
395
  }) {
911
- return /* @__PURE__ */ jsx(AlertDialog$1.Portal, { "data-slot": "alert-dialog-portal", ...props });
396
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
912
397
  }
913
398
  function AlertDialogOverlay({
914
399
  className,
915
400
  ...props
916
401
  }) {
917
402
  return /* @__PURE__ */ jsx(
918
- AlertDialog$1.Overlay,
403
+ AlertDialogPrimitive.Overlay,
919
404
  {
920
405
  "data-slot": "alert-dialog-overlay",
921
406
  className: cn(
@@ -935,13 +420,13 @@ function AlertDialogContent({
935
420
  return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
936
421
  /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
937
422
  /* @__PURE__ */ jsx(
938
- AlertDialog$1.Content,
423
+ AlertDialogPrimitive.Content,
939
424
  {
940
425
  "data-slot": "alert-dialog-content",
941
426
  asChild: true,
942
427
  ...props,
943
428
  children: /* @__PURE__ */ jsx(
944
- motion.div,
429
+ m.div,
945
430
  {
946
431
  initial: reduced ? { opacity: 1 } : { opacity: 0, scale: 0.95, y: 10 },
947
432
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -983,7 +468,7 @@ function AlertDialogTitle({
983
468
  ...props
984
469
  }) {
985
470
  return /* @__PURE__ */ jsx(
986
- AlertDialog$1.Title,
471
+ AlertDialogPrimitive.Title,
987
472
  {
988
473
  "data-slot": "alert-dialog-title",
989
474
  className: cn("text-lg font-semibold", className),
@@ -996,7 +481,7 @@ function AlertDialogDescription({
996
481
  ...props
997
482
  }) {
998
483
  return /* @__PURE__ */ jsx(
999
- AlertDialog$1.Description,
484
+ AlertDialogPrimitive.Description,
1000
485
  {
1001
486
  "data-slot": "alert-dialog-description",
1002
487
  className: cn("text-sm text-muted-foreground", className),
@@ -1009,7 +494,7 @@ function AlertDialogAction({
1009
494
  ...props
1010
495
  }) {
1011
496
  return /* @__PURE__ */ jsx(
1012
- AlertDialog$1.Action,
497
+ AlertDialogPrimitive.Action,
1013
498
  {
1014
499
  "data-intent": "primary",
1015
500
  className: cn(buttonVariants({ variant: "solid" }), className),
@@ -1022,7 +507,7 @@ function AlertDialogCancel({
1022
507
  ...props
1023
508
  }) {
1024
509
  return /* @__PURE__ */ jsx(
1025
- AlertDialog$1.Cancel,
510
+ AlertDialogPrimitive.Cancel,
1026
511
  {
1027
512
  "data-intent": "neutral",
1028
513
  className: cn(buttonVariants({ variant: "outline" }), className),
@@ -1033,14 +518,14 @@ function AlertDialogCancel({
1033
518
  function Accordion({
1034
519
  ...props
1035
520
  }) {
1036
- return /* @__PURE__ */ jsx(Accordion$1.Root, { "data-slot": "accordion", ...props });
521
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
1037
522
  }
1038
523
  function AccordionItem({
1039
524
  className,
1040
525
  ...props
1041
526
  }) {
1042
527
  return /* @__PURE__ */ jsx(
1043
- Accordion$1.Item,
528
+ AccordionPrimitive.Item,
1044
529
  {
1045
530
  "data-slot": "accordion-item",
1046
531
  className: cn("border-b last:border-b-0", className),
@@ -1054,8 +539,8 @@ function AccordionTrigger({
1054
539
  ...props
1055
540
  }) {
1056
541
  const reduced = useReducedMotion();
1057
- return /* @__PURE__ */ jsx(Accordion$1.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
1058
- Accordion$1.Trigger,
542
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
543
+ AccordionPrimitive.Trigger,
1059
544
  {
1060
545
  "data-slot": "accordion-trigger",
1061
546
  className: cn(
@@ -1066,7 +551,7 @@ function AccordionTrigger({
1066
551
  children: [
1067
552
  children,
1068
553
  /* @__PURE__ */ jsx(
1069
- motion.div,
554
+ m.div,
1070
555
  {
1071
556
  className: "pointer-events-none shrink-0 translate-y-0.5 text-muted-foreground",
1072
557
  animate: { rotate: 0 },
@@ -1085,13 +570,13 @@ function AccordionContent({
1085
570
  }) {
1086
571
  const reduced = useReducedMotion();
1087
572
  return /* @__PURE__ */ jsx(
1088
- Accordion$1.Content,
573
+ AccordionPrimitive.Content,
1089
574
  {
1090
575
  "data-slot": "accordion-content",
1091
576
  className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
1092
577
  ...props,
1093
578
  children: /* @__PURE__ */ jsx(
1094
- motion.div,
579
+ m.div,
1095
580
  {
1096
581
  initial: reduced ? false : { opacity: 0 },
1097
582
  animate: { opacity: 1 },
@@ -1108,8 +593,8 @@ function Tabs({
1108
593
  orientation = "horizontal",
1109
594
  ...props
1110
595
  }) {
1111
- return /* @__PURE__ */ jsx(LayoutGroup, { children: /* @__PURE__ */ jsx(
1112
- Tabs$1.Root,
596
+ return /* @__PURE__ */ jsx(
597
+ TabsPrimitive.Root,
1113
598
  {
1114
599
  "data-slot": "tabs",
1115
600
  "data-orientation": orientation,
@@ -1120,7 +605,7 @@ function Tabs({
1120
605
  ),
1121
606
  ...props
1122
607
  }
1123
- ) });
608
+ );
1124
609
  }
1125
610
  var tabsListVariants = cva(
1126
611
  "group/tabs-list relative inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none",
@@ -1139,59 +624,96 @@ var tabsListVariants = cva(
1139
624
  function TabsList({
1140
625
  className,
1141
626
  variant = "default",
627
+ children,
1142
628
  ...props
1143
629
  }) {
1144
- return /* @__PURE__ */ jsx(
1145
- Tabs$1.List,
630
+ const listRef = React9.useRef(null);
631
+ const reduced = useReducedMotion();
632
+ const [pos, setPos] = React9.useState(null);
633
+ React9.useLayoutEffect(() => {
634
+ const list = listRef.current;
635
+ if (!list) return;
636
+ const measure = () => {
637
+ const active = list.querySelector(
638
+ '[data-slot="tabs-trigger"][data-state="active"]'
639
+ );
640
+ if (!active) {
641
+ setPos(null);
642
+ return;
643
+ }
644
+ const listRect = list.getBoundingClientRect();
645
+ const activeRect = active.getBoundingClientRect();
646
+ const next = {
647
+ x: activeRect.left - listRect.left,
648
+ y: activeRect.top - listRect.top,
649
+ width: activeRect.width,
650
+ height: activeRect.height
651
+ };
652
+ setPos(
653
+ (prev) => prev && prev.x === next.x && prev.y === next.y && prev.width === next.width && prev.height === next.height ? prev : next
654
+ );
655
+ };
656
+ measure();
657
+ const mutationObserver = new MutationObserver(measure);
658
+ mutationObserver.observe(list, {
659
+ subtree: true,
660
+ attributes: true,
661
+ attributeFilter: ["data-state"]
662
+ });
663
+ const resizeObserver = new ResizeObserver(measure);
664
+ resizeObserver.observe(list);
665
+ return () => {
666
+ mutationObserver.disconnect();
667
+ resizeObserver.disconnect();
668
+ };
669
+ }, []);
670
+ return /* @__PURE__ */ jsxs(
671
+ TabsPrimitive.List,
1146
672
  {
673
+ ref: listRef,
1147
674
  "data-slot": "tabs-list",
1148
675
  "data-variant": variant,
1149
676
  className: cn(tabsListVariants({ variant }), className),
1150
- ...props
677
+ ...props,
678
+ children: [
679
+ pos !== null && /* @__PURE__ */ jsx(
680
+ m.div,
681
+ {
682
+ "data-slot": "tabs-indicator",
683
+ "aria-hidden": true,
684
+ initial: false,
685
+ animate: {
686
+ x: pos.x,
687
+ y: pos.y,
688
+ width: pos.width,
689
+ height: pos.height
690
+ },
691
+ transition: reduced ? noMotion : spring,
692
+ className: "pointer-events-none absolute top-0 left-0 rounded-md bg-background shadow-sm dark:border dark:border-input dark:bg-input/30",
693
+ style: { zIndex: 0 }
694
+ }
695
+ ),
696
+ children
697
+ ]
1151
698
  }
1152
699
  );
1153
700
  }
1154
701
  function TabsTrigger({
1155
702
  className,
1156
703
  children,
1157
- value,
1158
704
  ...props
1159
705
  }) {
1160
- const reduced = useReducedMotion();
1161
- return /* @__PURE__ */ jsxs(
1162
- Tabs$1.Trigger,
706
+ return /* @__PURE__ */ jsx(
707
+ TabsPrimitive.Trigger,
1163
708
  {
1164
709
  "data-slot": "tabs-trigger",
1165
- value,
1166
710
  className: cn(
1167
- "relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-colors group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
711
+ "relative z-10 inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-colors group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1168
712
  "data-[state=active]:text-foreground dark:data-[state=active]:text-foreground",
1169
713
  className
1170
714
  ),
1171
715
  ...props,
1172
- children: [
1173
- children,
1174
- /* @__PURE__ */ jsx(
1175
- Tabs$1.Trigger,
1176
- {
1177
- value,
1178
- asChild: true,
1179
- "data-slot": "tabs-indicator",
1180
- className: "pointer-events-none absolute inset-0",
1181
- tabIndex: -1,
1182
- "aria-hidden": true,
1183
- children: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
1184
- motion.span,
1185
- {
1186
- layoutId: "sf-tab-indicator",
1187
- className: "absolute inset-0 rounded-md bg-background shadow-sm dark:border dark:border-input dark:bg-input/30",
1188
- style: { zIndex: -1 },
1189
- transition: reduced ? noMotion : spring
1190
- }
1191
- ) })
1192
- }
1193
- )
1194
- ]
716
+ children
1195
717
  }
1196
718
  );
1197
719
  }
@@ -1200,7 +722,7 @@ function TabsContent({
1200
722
  ...props
1201
723
  }) {
1202
724
  return /* @__PURE__ */ jsx(
1203
- Tabs$1.Content,
725
+ TabsPrimitive.Content,
1204
726
  {
1205
727
  "data-slot": "tabs-content",
1206
728
  className: cn("flex-1 outline-none", className),
@@ -1210,7 +732,7 @@ function TabsContent({
1210
732
  }
1211
733
  function Input({ className, type, ...props }) {
1212
734
  return /* @__PURE__ */ jsx(
1213
- motion.input,
735
+ m.input,
1214
736
  {
1215
737
  type,
1216
738
  "data-slot": "input",
@@ -1228,7 +750,7 @@ function Input({ className, type, ...props }) {
1228
750
  }
1229
751
  function Textarea({ className, ...props }) {
1230
752
  return /* @__PURE__ */ jsx(
1231
- motion.textarea,
753
+ m.textarea,
1232
754
  {
1233
755
  "data-slot": "textarea",
1234
756
  whileFocus: { boxShadow: "0 0 0 3px hsl(var(--ring) / 0.3)" },
@@ -1249,7 +771,7 @@ function Checkbox({
1249
771
  ...props
1250
772
  }) {
1251
773
  return /* @__PURE__ */ jsx(
1252
- Checkbox$1.Root,
774
+ CheckboxPrimitive.Root,
1253
775
  {
1254
776
  "data-slot": "checkbox",
1255
777
  className: cn(
@@ -1258,13 +780,13 @@ function Checkbox({
1258
780
  ),
1259
781
  ...props,
1260
782
  children: /* @__PURE__ */ jsx(
1261
- Checkbox$1.Indicator,
783
+ CheckboxPrimitive.Indicator,
1262
784
  {
1263
785
  "data-slot": "checkbox-indicator",
1264
786
  className: "grid place-content-center text-current",
1265
787
  asChild: true,
1266
788
  children: /* @__PURE__ */ jsx(
1267
- motion.span,
789
+ m.span,
1268
790
  {
1269
791
  initial: { scale: 0, opacity: 0 },
1270
792
  animate: { scale: 1, opacity: 1 },
@@ -1284,7 +806,7 @@ function Switch({
1284
806
  ...props
1285
807
  }) {
1286
808
  return /* @__PURE__ */ jsx(
1287
- Switch$1.Root,
809
+ SwitchPrimitive.Root,
1288
810
  {
1289
811
  "data-slot": "switch",
1290
812
  "data-size": size,
@@ -1295,12 +817,12 @@ function Switch({
1295
817
  ),
1296
818
  ...props,
1297
819
  children: /* @__PURE__ */ jsx(
1298
- Switch$1.Thumb,
820
+ SwitchPrimitive.Thumb,
1299
821
  {
1300
822
  "data-slot": "switch-thumb",
1301
823
  asChild: true,
1302
824
  children: /* @__PURE__ */ jsx(
1303
- motion.span,
825
+ m.span,
1304
826
  {
1305
827
  className: "pointer-events-none block rounded-full bg-background ring-0 group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground",
1306
828
  layout: true,
@@ -1319,7 +841,7 @@ function Progress({
1319
841
  }) {
1320
842
  const reduced = useReducedMotion();
1321
843
  return /* @__PURE__ */ jsx(
1322
- Progress$1.Root,
844
+ ProgressPrimitive.Root,
1323
845
  {
1324
846
  "data-slot": "progress",
1325
847
  className: cn(
@@ -1327,8 +849,8 @@ function Progress({
1327
849
  className
1328
850
  ),
1329
851
  ...props,
1330
- children: /* @__PURE__ */ jsx(Progress$1.Indicator, { "data-slot": "progress-indicator", asChild: true, children: /* @__PURE__ */ jsx(
1331
- motion.div,
852
+ children: /* @__PURE__ */ jsx(ProgressPrimitive.Indicator, { "data-slot": "progress-indicator", asChild: true, children: /* @__PURE__ */ jsx(
853
+ m.div,
1332
854
  {
1333
855
  className: "h-full bg-primary",
1334
856
  initial: { width: "0%" },
@@ -1339,7 +861,7 @@ function Progress({
1339
861
  }
1340
862
  );
1341
863
  }
1342
- var LEGACY_VARIANT_MAP2 = {
864
+ var LEGACY_VARIANT_MAP = {
1343
865
  default: { variant: "solid", intent: "primary" },
1344
866
  destructive: { variant: "solid", intent: "danger" },
1345
867
  secondary: { variant: "soft", intent: "neutral" }
@@ -1375,7 +897,7 @@ function Badge({
1375
897
  const reduced = useReducedMotion();
1376
898
  let resolvedVariant = variantProp;
1377
899
  let resolvedIntent = intentProp;
1378
- const legacy = LEGACY_VARIANT_MAP2[variantProp];
900
+ const legacy = LEGACY_VARIANT_MAP[variantProp];
1379
901
  if (legacy) {
1380
902
  resolvedVariant = legacy.variant;
1381
903
  if (legacy.intent) {
@@ -1384,7 +906,7 @@ function Badge({
1384
906
  }
1385
907
  if (asChild) {
1386
908
  return /* @__PURE__ */ jsx(
1387
- Slot.Root,
909
+ Slot7.Root,
1388
910
  {
1389
911
  "data-slot": "badge",
1390
912
  "data-variant": resolvedVariant,
@@ -1395,7 +917,7 @@ function Badge({
1395
917
  );
1396
918
  }
1397
919
  return /* @__PURE__ */ jsx(
1398
- motion.span,
920
+ m.span,
1399
921
  {
1400
922
  "data-slot": "badge",
1401
923
  "data-variant": resolvedVariant,
@@ -1412,7 +934,7 @@ function TooltipProvider({
1412
934
  ...props
1413
935
  }) {
1414
936
  return /* @__PURE__ */ jsx(
1415
- Tooltip$1.Provider,
937
+ TooltipPrimitive.Provider,
1416
938
  {
1417
939
  "data-slot": "tooltip-provider",
1418
940
  delayDuration,
@@ -1423,12 +945,12 @@ function TooltipProvider({
1423
945
  function Tooltip({
1424
946
  ...props
1425
947
  }) {
1426
- return /* @__PURE__ */ jsx(Tooltip$1.Root, { "data-slot": "tooltip", ...props });
948
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
1427
949
  }
1428
950
  function TooltipTrigger({
1429
951
  ...props
1430
952
  }) {
1431
- return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
953
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
1432
954
  }
1433
955
  function TooltipContent({
1434
956
  className,
@@ -1436,15 +958,15 @@ function TooltipContent({
1436
958
  children,
1437
959
  ...props
1438
960
  }) {
1439
- return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
1440
- Tooltip$1.Content,
961
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
962
+ TooltipPrimitive.Content,
1441
963
  {
1442
964
  "data-slot": "tooltip-content",
1443
965
  sideOffset,
1444
966
  asChild: true,
1445
967
  ...props,
1446
968
  children: /* @__PURE__ */ jsx(
1447
- motion.div,
969
+ m.div,
1448
970
  {
1449
971
  initial: { opacity: 0, scale: 0.92, y: 2 },
1450
972
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -1463,17 +985,17 @@ function TooltipContent({
1463
985
  function Popover({
1464
986
  ...props
1465
987
  }) {
1466
- return /* @__PURE__ */ jsx(Popover$1.Root, { "data-slot": "popover", ...props });
988
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1467
989
  }
1468
990
  function PopoverTrigger({
1469
991
  ...props
1470
992
  }) {
1471
- return /* @__PURE__ */ jsx(Popover$1.Trigger, { "data-slot": "popover-trigger", ...props });
993
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1472
994
  }
1473
995
  function PopoverAnchor({
1474
996
  ...props
1475
997
  }) {
1476
- return /* @__PURE__ */ jsx(Popover$1.Anchor, { "data-slot": "popover-anchor", ...props });
998
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
1477
999
  }
1478
1000
  function PopoverContent({
1479
1001
  className,
@@ -1481,8 +1003,8 @@ function PopoverContent({
1481
1003
  sideOffset = 4,
1482
1004
  ...props
1483
1005
  }) {
1484
- return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
1485
- Popover$1.Content,
1006
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1007
+ PopoverPrimitive.Content,
1486
1008
  {
1487
1009
  "data-slot": "popover-content",
1488
1010
  align,
@@ -1490,7 +1012,7 @@ function PopoverContent({
1490
1012
  asChild: true,
1491
1013
  ...props,
1492
1014
  children: /* @__PURE__ */ jsx(
1493
- motion.div,
1015
+ m.div,
1494
1016
  {
1495
1017
  initial: { opacity: 0, scale: 0.95, y: -4 },
1496
1018
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -1508,12 +1030,12 @@ function PopoverContent({
1508
1030
  function HoverCard({
1509
1031
  ...props
1510
1032
  }) {
1511
- return /* @__PURE__ */ jsx(HoverCard$1.Root, { "data-slot": "hover-card", ...props });
1033
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
1512
1034
  }
1513
1035
  function HoverCardTrigger({
1514
1036
  ...props
1515
1037
  }) {
1516
- return /* @__PURE__ */ jsx(HoverCard$1.Trigger, { "data-slot": "hover-card-trigger", ...props });
1038
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
1517
1039
  }
1518
1040
  function HoverCardContent({
1519
1041
  className,
@@ -1521,8 +1043,8 @@ function HoverCardContent({
1521
1043
  sideOffset = 4,
1522
1044
  ...props
1523
1045
  }) {
1524
- return /* @__PURE__ */ jsx(HoverCard$1.Portal, { children: /* @__PURE__ */ jsx(
1525
- HoverCard$1.Content,
1046
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1047
+ HoverCardPrimitive.Content,
1526
1048
  {
1527
1049
  "data-slot": "hover-card-content",
1528
1050
  align,
@@ -1530,7 +1052,7 @@ function HoverCardContent({
1530
1052
  asChild: true,
1531
1053
  ...props,
1532
1054
  children: /* @__PURE__ */ jsx(
1533
- motion.div,
1055
+ m.div,
1534
1056
  {
1535
1057
  initial: { opacity: 0, scale: 0.95, y: 4 },
1536
1058
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -1548,17 +1070,17 @@ function HoverCardContent({
1548
1070
  function Select({
1549
1071
  ...props
1550
1072
  }) {
1551
- return /* @__PURE__ */ jsx(Select$1.Root, { "data-slot": "select", ...props });
1073
+ return /* @__PURE__ */ jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
1552
1074
  }
1553
1075
  function SelectGroup({
1554
1076
  ...props
1555
1077
  }) {
1556
- return /* @__PURE__ */ jsx(Select$1.Group, { "data-slot": "select-group", ...props });
1078
+ return /* @__PURE__ */ jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
1557
1079
  }
1558
1080
  function SelectValue({
1559
1081
  ...props
1560
1082
  }) {
1561
- return /* @__PURE__ */ jsx(Select$1.Value, { "data-slot": "select-value", ...props });
1083
+ return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
1562
1084
  }
1563
1085
  function SelectTrigger({
1564
1086
  className,
@@ -1567,7 +1089,7 @@ function SelectTrigger({
1567
1089
  ...props
1568
1090
  }) {
1569
1091
  return /* @__PURE__ */ jsxs(
1570
- Select$1.Trigger,
1092
+ SelectPrimitive.Trigger,
1571
1093
  {
1572
1094
  "data-slot": "select-trigger",
1573
1095
  "data-size": size,
@@ -1579,7 +1101,7 @@ function SelectTrigger({
1579
1101
  ...props,
1580
1102
  children: [
1581
1103
  children,
1582
- /* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
1104
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
1583
1105
  ]
1584
1106
  }
1585
1107
  );
@@ -1590,15 +1112,15 @@ function SelectContent({
1590
1112
  position = "popper",
1591
1113
  ...props
1592
1114
  }) {
1593
- return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(
1594
- Select$1.Content,
1115
+ return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1116
+ SelectPrimitive.Content,
1595
1117
  {
1596
1118
  "data-slot": "select-content",
1597
1119
  position,
1598
1120
  asChild: true,
1599
1121
  ...props,
1600
1122
  children: /* @__PURE__ */ jsxs(
1601
- motion.div,
1123
+ m.div,
1602
1124
  {
1603
1125
  initial: { opacity: 0, scale: 0.96, y: -4 },
1604
1126
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -1611,7 +1133,7 @@ function SelectContent({
1611
1133
  children: [
1612
1134
  /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1613
1135
  /* @__PURE__ */ jsx(
1614
- Select$1.Viewport,
1136
+ SelectPrimitive.Viewport,
1615
1137
  {
1616
1138
  className: cn(
1617
1139
  "p-1",
@@ -1632,7 +1154,7 @@ function SelectLabel({
1632
1154
  ...props
1633
1155
  }) {
1634
1156
  return /* @__PURE__ */ jsx(
1635
- Select$1.Label,
1157
+ SelectPrimitive.Label,
1636
1158
  {
1637
1159
  "data-slot": "select-label",
1638
1160
  className: cn("px-2 py-1.5 text-sm font-medium", className),
@@ -1646,7 +1168,7 @@ function SelectItem({
1646
1168
  ...props
1647
1169
  }) {
1648
1170
  return /* @__PURE__ */ jsxs(
1649
- Select$1.Item,
1171
+ SelectPrimitive.Item,
1650
1172
  {
1651
1173
  "data-slot": "select-item",
1652
1174
  className: cn(
@@ -1655,8 +1177,8 @@ function SelectItem({
1655
1177
  ),
1656
1178
  ...props,
1657
1179
  children: [
1658
- /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1659
- /* @__PURE__ */ jsx(Select$1.ItemText, { children })
1180
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1181
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
1660
1182
  ]
1661
1183
  }
1662
1184
  );
@@ -1666,7 +1188,7 @@ function SelectSeparator({
1666
1188
  ...props
1667
1189
  }) {
1668
1190
  return /* @__PURE__ */ jsx(
1669
- Select$1.Separator,
1191
+ SelectPrimitive.Separator,
1670
1192
  {
1671
1193
  "data-slot": "select-separator",
1672
1194
  className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
@@ -1679,7 +1201,7 @@ function SelectScrollUpButton({
1679
1201
  ...props
1680
1202
  }) {
1681
1203
  return /* @__PURE__ */ jsx(
1682
- Select$1.ScrollUpButton,
1204
+ SelectPrimitive.ScrollUpButton,
1683
1205
  {
1684
1206
  "data-slot": "select-scroll-up-button",
1685
1207
  className: cn("flex cursor-default items-center justify-center py-1", className),
@@ -1693,7 +1215,7 @@ function SelectScrollDownButton({
1693
1215
  ...props
1694
1216
  }) {
1695
1217
  return /* @__PURE__ */ jsx(
1696
- Select$1.ScrollDownButton,
1218
+ SelectPrimitive.ScrollDownButton,
1697
1219
  {
1698
1220
  "data-slot": "select-scroll-down-button",
1699
1221
  className: cn("flex cursor-default items-center justify-center py-1", className),
@@ -1703,37 +1225,37 @@ function SelectScrollDownButton({
1703
1225
  );
1704
1226
  }
1705
1227
  function DropdownMenu({ ...props }) {
1706
- return /* @__PURE__ */ jsx(DropdownMenu$1.Root, { "data-slot": "dropdown-menu", ...props });
1228
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
1707
1229
  }
1708
1230
  function DropdownMenuPortal({ ...props }) {
1709
- return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { "data-slot": "dropdown-menu-portal", ...props });
1231
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
1710
1232
  }
1711
1233
  function DropdownMenuTrigger({ className, ...props }) {
1712
- return /* @__PURE__ */ jsx(DropdownMenu$1.Trigger, { "data-slot": "dropdown-menu-trigger", className: cn("cursor-pointer", className), ...props });
1234
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", className: cn("cursor-pointer", className), ...props });
1713
1235
  }
1714
1236
  function DropdownMenuGroup({ ...props }) {
1715
- return /* @__PURE__ */ jsx(DropdownMenu$1.Group, { "data-slot": "dropdown-menu-group", ...props });
1237
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
1716
1238
  }
1717
1239
  function DropdownMenuSub({ ...props }) {
1718
- return /* @__PURE__ */ jsx(DropdownMenu$1.Sub, { "data-slot": "dropdown-menu-sub", ...props });
1240
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
1719
1241
  }
1720
1242
  function DropdownMenuRadioGroup({ ...props }) {
1721
- return /* @__PURE__ */ jsx(DropdownMenu$1.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
1243
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
1722
1244
  }
1723
1245
  function DropdownMenuContent({
1724
1246
  className,
1725
1247
  sideOffset = 4,
1726
1248
  ...props
1727
1249
  }) {
1728
- return /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { children: /* @__PURE__ */ jsx(
1729
- DropdownMenu$1.Content,
1250
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1251
+ DropdownMenuPrimitive.Content,
1730
1252
  {
1731
1253
  "data-slot": "dropdown-menu-content",
1732
1254
  sideOffset,
1733
1255
  asChild: true,
1734
1256
  ...props,
1735
1257
  children: /* @__PURE__ */ jsx(
1736
- motion.div,
1258
+ m.div,
1737
1259
  {
1738
1260
  initial: { opacity: 0, scale: 0.95, y: -4 },
1739
1261
  animate: { opacity: 1, scale: 1, y: 0 },
@@ -1750,7 +1272,7 @@ function DropdownMenuContent({
1750
1272
  }
1751
1273
  function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
1752
1274
  return /* @__PURE__ */ jsx(
1753
- DropdownMenu$1.Item,
1275
+ DropdownMenuPrimitive.Item,
1754
1276
  {
1755
1277
  "data-slot": "dropdown-menu-item",
1756
1278
  "data-inset": inset,
@@ -1765,7 +1287,7 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
1765
1287
  }
1766
1288
  function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
1767
1289
  return /* @__PURE__ */ jsxs(
1768
- DropdownMenu$1.CheckboxItem,
1290
+ DropdownMenuPrimitive.CheckboxItem,
1769
1291
  {
1770
1292
  "data-slot": "dropdown-menu-checkbox-item",
1771
1293
  className: cn(
@@ -1775,7 +1297,7 @@ function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
1775
1297
  checked,
1776
1298
  ...props,
1777
1299
  children: [
1778
- /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1300
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1779
1301
  children
1780
1302
  ]
1781
1303
  }
@@ -1783,7 +1305,7 @@ function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
1783
1305
  }
1784
1306
  function DropdownMenuRadioItem({ className, children, ...props }) {
1785
1307
  return /* @__PURE__ */ jsxs(
1786
- DropdownMenu$1.RadioItem,
1308
+ DropdownMenuPrimitive.RadioItem,
1787
1309
  {
1788
1310
  "data-slot": "dropdown-menu-radio-item",
1789
1311
  className: cn(
@@ -1792,7 +1314,7 @@ function DropdownMenuRadioItem({ className, children, ...props }) {
1792
1314
  ),
1793
1315
  ...props,
1794
1316
  children: [
1795
- /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
1317
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
1796
1318
  children
1797
1319
  ]
1798
1320
  }
@@ -1800,7 +1322,7 @@ function DropdownMenuRadioItem({ className, children, ...props }) {
1800
1322
  }
1801
1323
  function DropdownMenuLabel({ className, inset, ...props }) {
1802
1324
  return /* @__PURE__ */ jsx(
1803
- DropdownMenu$1.Label,
1325
+ DropdownMenuPrimitive.Label,
1804
1326
  {
1805
1327
  "data-slot": "dropdown-menu-label",
1806
1328
  "data-inset": inset,
@@ -1811,7 +1333,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
1811
1333
  }
1812
1334
  function DropdownMenuSeparator({ className, ...props }) {
1813
1335
  return /* @__PURE__ */ jsx(
1814
- DropdownMenu$1.Separator,
1336
+ DropdownMenuPrimitive.Separator,
1815
1337
  {
1816
1338
  "data-slot": "dropdown-menu-separator",
1817
1339
  className: cn("bg-border -mx-1 my-1 h-px", className),
@@ -1831,7 +1353,7 @@ function DropdownMenuShortcut({ className, ...props }) {
1831
1353
  }
1832
1354
  function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
1833
1355
  return /* @__PURE__ */ jsxs(
1834
- DropdownMenu$1.SubTrigger,
1356
+ DropdownMenuPrimitive.SubTrigger,
1835
1357
  {
1836
1358
  "data-slot": "dropdown-menu-sub-trigger",
1837
1359
  "data-inset": inset,
@@ -1849,7 +1371,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
1849
1371
  }
1850
1372
  function DropdownMenuSubContent({ className, ...props }) {
1851
1373
  return /* @__PURE__ */ jsx(
1852
- DropdownMenu$1.SubContent,
1374
+ DropdownMenuPrimitive.SubContent,
1853
1375
  {
1854
1376
  "data-slot": "dropdown-menu-sub-content",
1855
1377
  className: cn(
@@ -1967,29 +1489,29 @@ function DrawerDescription({
1967
1489
  );
1968
1490
  }
1969
1491
  function Sheet({ ...props }) {
1970
- return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "sheet", ...props });
1492
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
1971
1493
  }
1972
1494
  function SheetTrigger({
1973
1495
  ...props
1974
1496
  }) {
1975
- return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "sheet-trigger", ...props });
1497
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
1976
1498
  }
1977
1499
  function SheetClose({
1978
1500
  ...props
1979
1501
  }) {
1980
- return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "sheet-close", ...props });
1502
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
1981
1503
  }
1982
1504
  function SheetPortal({
1983
1505
  ...props
1984
1506
  }) {
1985
- return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "sheet-portal", ...props });
1507
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
1986
1508
  }
1987
1509
  function SheetOverlay({
1988
1510
  className,
1989
1511
  ...props
1990
1512
  }) {
1991
1513
  return /* @__PURE__ */ jsx(
1992
- Dialog$1.Overlay,
1514
+ DialogPrimitive.Overlay,
1993
1515
  {
1994
1516
  "data-slot": "sheet-overlay",
1995
1517
  className: cn(
@@ -2010,7 +1532,7 @@ function SheetContent({
2010
1532
  return /* @__PURE__ */ jsxs(SheetPortal, { children: [
2011
1533
  /* @__PURE__ */ jsx(SheetOverlay, {}),
2012
1534
  /* @__PURE__ */ jsxs(
2013
- Dialog$1.Content,
1535
+ DialogPrimitive.Content,
2014
1536
  {
2015
1537
  "data-slot": "sheet-content",
2016
1538
  className: cn(
@@ -2024,7 +1546,7 @@ function SheetContent({
2024
1546
  ...props,
2025
1547
  children: [
2026
1548
  children,
2027
- showCloseButton && /* @__PURE__ */ jsxs(Dialog$1.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1549
+ showCloseButton && /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
2028
1550
  /* @__PURE__ */ jsx(XIcon, { className: "size-4" }),
2029
1551
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
2030
1552
  ] })
@@ -2058,7 +1580,7 @@ function SheetTitle({
2058
1580
  ...props
2059
1581
  }) {
2060
1582
  return /* @__PURE__ */ jsx(
2061
- Dialog$1.Title,
1583
+ DialogPrimitive.Title,
2062
1584
  {
2063
1585
  "data-slot": "sheet-title",
2064
1586
  className: cn("font-semibold text-foreground", className),
@@ -2071,7 +1593,7 @@ function SheetDescription({
2071
1593
  ...props
2072
1594
  }) {
2073
1595
  return /* @__PURE__ */ jsx(
2074
- Dialog$1.Description,
1596
+ DialogPrimitive.Description,
2075
1597
  {
2076
1598
  "data-slot": "sheet-description",
2077
1599
  className: cn("text-sm text-muted-foreground", className),
@@ -2087,12 +1609,12 @@ function Slider({
2087
1609
  max = 100,
2088
1610
  ...props
2089
1611
  }) {
2090
- const _values = React13.useMemo(
1612
+ const _values = React9.useMemo(
2091
1613
  () => value ?? defaultValue ?? [min],
2092
1614
  [value, defaultValue, min]
2093
1615
  );
2094
1616
  return /* @__PURE__ */ jsxs(
2095
- Slider$1.Root,
1617
+ SliderPrimitive.Root,
2096
1618
  {
2097
1619
  "data-slot": "slider",
2098
1620
  defaultValue,
@@ -2106,12 +1628,12 @@ function Slider({
2106
1628
  ...props,
2107
1629
  children: [
2108
1630
  /* @__PURE__ */ jsx(
2109
- Slider$1.Track,
1631
+ SliderPrimitive.Track,
2110
1632
  {
2111
1633
  "data-slot": "slider-track",
2112
1634
  className: "relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5",
2113
1635
  children: /* @__PURE__ */ jsx(
2114
- Slider$1.Range,
1636
+ SliderPrimitive.Range,
2115
1637
  {
2116
1638
  "data-slot": "slider-range",
2117
1639
  className: "absolute rounded-full bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
@@ -2120,12 +1642,12 @@ function Slider({
2120
1642
  }
2121
1643
  ),
2122
1644
  Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
2123
- Slider$1.Thumb,
1645
+ SliderPrimitive.Thumb,
2124
1646
  {
2125
1647
  "data-slot": "slider-thumb",
2126
1648
  asChild: true,
2127
1649
  children: /* @__PURE__ */ jsx(
2128
- motion.span,
1650
+ m.span,
2129
1651
  {
2130
1652
  className: "block size-4 shrink-0 cursor-grab rounded-full border border-primary/50 bg-background shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring active:cursor-grabbing",
2131
1653
  whileHover: { scale: 1.2 },
@@ -2209,7 +1731,7 @@ function Avatar({
2209
1731
  ...props
2210
1732
  }) {
2211
1733
  return /* @__PURE__ */ jsx(
2212
- Avatar$1.Root,
1734
+ AvatarPrimitive.Root,
2213
1735
  {
2214
1736
  "data-slot": "avatar",
2215
1737
  "data-size": size,
@@ -2226,7 +1748,7 @@ function AvatarImage({
2226
1748
  ...props
2227
1749
  }) {
2228
1750
  return /* @__PURE__ */ jsx(
2229
- Avatar$1.Image,
1751
+ AvatarPrimitive.Image,
2230
1752
  {
2231
1753
  "data-slot": "avatar-image",
2232
1754
  className: cn("aspect-square size-full", className),
@@ -2239,7 +1761,7 @@ function AvatarFallback({
2239
1761
  ...props
2240
1762
  }) {
2241
1763
  return /* @__PURE__ */ jsx(
2242
- Avatar$1.Fallback,
1764
+ AvatarPrimitive.Fallback,
2243
1765
  {
2244
1766
  "data-slot": "avatar-fallback",
2245
1767
  className: cn(
@@ -2298,33 +1820,33 @@ function AvatarGroupCount({
2298
1820
  function ContextMenu({
2299
1821
  ...props
2300
1822
  }) {
2301
- return /* @__PURE__ */ jsx(ContextMenu$1.Root, { "data-slot": "context-menu", ...props });
1823
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
2302
1824
  }
2303
1825
  function ContextMenuTrigger({
2304
1826
  ...props
2305
1827
  }) {
2306
- return /* @__PURE__ */ jsx(ContextMenu$1.Trigger, { "data-slot": "context-menu-trigger", ...props });
1828
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Trigger, { "data-slot": "context-menu-trigger", ...props });
2307
1829
  }
2308
1830
  function ContextMenuGroup({
2309
1831
  ...props
2310
1832
  }) {
2311
- return /* @__PURE__ */ jsx(ContextMenu$1.Group, { "data-slot": "context-menu-group", ...props });
1833
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Group, { "data-slot": "context-menu-group", ...props });
2312
1834
  }
2313
1835
  function ContextMenuPortal({
2314
1836
  ...props
2315
1837
  }) {
2316
- return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { "data-slot": "context-menu-portal", ...props });
1838
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { "data-slot": "context-menu-portal", ...props });
2317
1839
  }
2318
1840
  function ContextMenuSub({
2319
1841
  ...props
2320
1842
  }) {
2321
- return /* @__PURE__ */ jsx(ContextMenu$1.Sub, { "data-slot": "context-menu-sub", ...props });
1843
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Sub, { "data-slot": "context-menu-sub", ...props });
2322
1844
  }
2323
1845
  function ContextMenuRadioGroup({
2324
1846
  ...props
2325
1847
  }) {
2326
1848
  return /* @__PURE__ */ jsx(
2327
- ContextMenu$1.RadioGroup,
1849
+ ContextMenuPrimitive.RadioGroup,
2328
1850
  {
2329
1851
  "data-slot": "context-menu-radio-group",
2330
1852
  ...props
@@ -2338,7 +1860,7 @@ function ContextMenuSubTrigger({
2338
1860
  ...props
2339
1861
  }) {
2340
1862
  return /* @__PURE__ */ jsxs(
2341
- ContextMenu$1.SubTrigger,
1863
+ ContextMenuPrimitive.SubTrigger,
2342
1864
  {
2343
1865
  "data-slot": "context-menu-sub-trigger",
2344
1866
  "data-inset": inset,
@@ -2359,7 +1881,7 @@ function ContextMenuSubContent({
2359
1881
  ...props
2360
1882
  }) {
2361
1883
  return /* @__PURE__ */ jsx(
2362
- ContextMenu$1.SubContent,
1884
+ ContextMenuPrimitive.SubContent,
2363
1885
  {
2364
1886
  "data-slot": "context-menu-sub-content",
2365
1887
  className: cn(
@@ -2374,8 +1896,8 @@ function ContextMenuContent({
2374
1896
  className,
2375
1897
  ...props
2376
1898
  }) {
2377
- return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
2378
- ContextMenu$1.Content,
1899
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1900
+ ContextMenuPrimitive.Content,
2379
1901
  {
2380
1902
  "data-slot": "context-menu-content",
2381
1903
  className: cn(
@@ -2393,7 +1915,7 @@ function ContextMenuItem({
2393
1915
  ...props
2394
1916
  }) {
2395
1917
  return /* @__PURE__ */ jsx(
2396
- ContextMenu$1.Item,
1918
+ ContextMenuPrimitive.Item,
2397
1919
  {
2398
1920
  "data-slot": "context-menu-item",
2399
1921
  "data-inset": inset,
@@ -2413,7 +1935,7 @@ function ContextMenuCheckboxItem({
2413
1935
  ...props
2414
1936
  }) {
2415
1937
  return /* @__PURE__ */ jsxs(
2416
- ContextMenu$1.CheckboxItem,
1938
+ ContextMenuPrimitive.CheckboxItem,
2417
1939
  {
2418
1940
  "data-slot": "context-menu-checkbox-item",
2419
1941
  className: cn(
@@ -2423,7 +1945,7 @@ function ContextMenuCheckboxItem({
2423
1945
  checked,
2424
1946
  ...props,
2425
1947
  children: [
2426
- /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1948
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
2427
1949
  children
2428
1950
  ]
2429
1951
  }
@@ -2435,7 +1957,7 @@ function ContextMenuRadioItem({
2435
1957
  ...props
2436
1958
  }) {
2437
1959
  return /* @__PURE__ */ jsxs(
2438
- ContextMenu$1.RadioItem,
1960
+ ContextMenuPrimitive.RadioItem,
2439
1961
  {
2440
1962
  "data-slot": "context-menu-radio-item",
2441
1963
  className: cn(
@@ -2444,7 +1966,7 @@ function ContextMenuRadioItem({
2444
1966
  ),
2445
1967
  ...props,
2446
1968
  children: [
2447
- /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
1969
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
2448
1970
  children
2449
1971
  ]
2450
1972
  }
@@ -2456,7 +1978,7 @@ function ContextMenuLabel({
2456
1978
  ...props
2457
1979
  }) {
2458
1980
  return /* @__PURE__ */ jsx(
2459
- ContextMenu$1.Label,
1981
+ ContextMenuPrimitive.Label,
2460
1982
  {
2461
1983
  "data-slot": "context-menu-label",
2462
1984
  "data-inset": inset,
@@ -2473,7 +1995,7 @@ function ContextMenuSeparator({
2473
1995
  ...props
2474
1996
  }) {
2475
1997
  return /* @__PURE__ */ jsx(
2476
- ContextMenu$1.Separator,
1998
+ ContextMenuPrimitive.Separator,
2477
1999
  {
2478
2000
  "data-slot": "context-menu-separator",
2479
2001
  className: cn("-mx-1 my-1 h-px bg-border", className),
@@ -2502,7 +2024,7 @@ function Menubar({
2502
2024
  ...props
2503
2025
  }) {
2504
2026
  return /* @__PURE__ */ jsx(
2505
- Menubar$1.Root,
2027
+ MenubarPrimitive.Root,
2506
2028
  {
2507
2029
  "data-slot": "menubar",
2508
2030
  className: cn(
@@ -2516,29 +2038,29 @@ function Menubar({
2516
2038
  function MenubarMenu({
2517
2039
  ...props
2518
2040
  }) {
2519
- return /* @__PURE__ */ jsx(Menubar$1.Menu, { "data-slot": "menubar-menu", ...props });
2041
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
2520
2042
  }
2521
2043
  function MenubarGroup({
2522
2044
  ...props
2523
2045
  }) {
2524
- return /* @__PURE__ */ jsx(Menubar$1.Group, { "data-slot": "menubar-group", ...props });
2046
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
2525
2047
  }
2526
2048
  function MenubarPortal({
2527
2049
  ...props
2528
2050
  }) {
2529
- return /* @__PURE__ */ jsx(Menubar$1.Portal, { "data-slot": "menubar-portal", ...props });
2051
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
2530
2052
  }
2531
2053
  function MenubarRadioGroup({
2532
2054
  ...props
2533
2055
  }) {
2534
- return /* @__PURE__ */ jsx(Menubar$1.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
2056
+ return /* @__PURE__ */ jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
2535
2057
  }
2536
2058
  function MenubarTrigger({
2537
2059
  className,
2538
2060
  ...props
2539
2061
  }) {
2540
2062
  return /* @__PURE__ */ jsx(
2541
- Menubar$1.Trigger,
2063
+ MenubarPrimitive.Trigger,
2542
2064
  {
2543
2065
  "data-slot": "menubar-trigger",
2544
2066
  className: cn(
@@ -2557,7 +2079,7 @@ function MenubarContent({
2557
2079
  ...props
2558
2080
  }) {
2559
2081
  return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
2560
- Menubar$1.Content,
2082
+ MenubarPrimitive.Content,
2561
2083
  {
2562
2084
  "data-slot": "menubar-content",
2563
2085
  align,
@@ -2578,7 +2100,7 @@ function MenubarItem({
2578
2100
  ...props
2579
2101
  }) {
2580
2102
  return /* @__PURE__ */ jsx(
2581
- Menubar$1.Item,
2103
+ MenubarPrimitive.Item,
2582
2104
  {
2583
2105
  "data-slot": "menubar-item",
2584
2106
  "data-inset": inset,
@@ -2598,7 +2120,7 @@ function MenubarCheckboxItem({
2598
2120
  ...props
2599
2121
  }) {
2600
2122
  return /* @__PURE__ */ jsxs(
2601
- Menubar$1.CheckboxItem,
2123
+ MenubarPrimitive.CheckboxItem,
2602
2124
  {
2603
2125
  "data-slot": "menubar-checkbox-item",
2604
2126
  className: cn(
@@ -2608,7 +2130,7 @@ function MenubarCheckboxItem({
2608
2130
  checked,
2609
2131
  ...props,
2610
2132
  children: [
2611
- /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
2133
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
2612
2134
  children
2613
2135
  ]
2614
2136
  }
@@ -2620,7 +2142,7 @@ function MenubarRadioItem({
2620
2142
  ...props
2621
2143
  }) {
2622
2144
  return /* @__PURE__ */ jsxs(
2623
- Menubar$1.RadioItem,
2145
+ MenubarPrimitive.RadioItem,
2624
2146
  {
2625
2147
  "data-slot": "menubar-radio-item",
2626
2148
  className: cn(
@@ -2629,7 +2151,7 @@ function MenubarRadioItem({
2629
2151
  ),
2630
2152
  ...props,
2631
2153
  children: [
2632
- /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
2154
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
2633
2155
  children
2634
2156
  ]
2635
2157
  }
@@ -2641,7 +2163,7 @@ function MenubarLabel({
2641
2163
  ...props
2642
2164
  }) {
2643
2165
  return /* @__PURE__ */ jsx(
2644
- Menubar$1.Label,
2166
+ MenubarPrimitive.Label,
2645
2167
  {
2646
2168
  "data-slot": "menubar-label",
2647
2169
  "data-inset": inset,
@@ -2658,7 +2180,7 @@ function MenubarSeparator({
2658
2180
  ...props
2659
2181
  }) {
2660
2182
  return /* @__PURE__ */ jsx(
2661
- Menubar$1.Separator,
2183
+ MenubarPrimitive.Separator,
2662
2184
  {
2663
2185
  "data-slot": "menubar-separator",
2664
2186
  className: cn("-mx-1 my-1 h-px bg-border", className),
@@ -2685,7 +2207,7 @@ function MenubarShortcut({
2685
2207
  function MenubarSub({
2686
2208
  ...props
2687
2209
  }) {
2688
- return /* @__PURE__ */ jsx(Menubar$1.Sub, { "data-slot": "menubar-sub", ...props });
2210
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
2689
2211
  }
2690
2212
  function MenubarSubTrigger({
2691
2213
  className,
@@ -2694,7 +2216,7 @@ function MenubarSubTrigger({
2694
2216
  ...props
2695
2217
  }) {
2696
2218
  return /* @__PURE__ */ jsxs(
2697
- Menubar$1.SubTrigger,
2219
+ MenubarPrimitive.SubTrigger,
2698
2220
  {
2699
2221
  "data-slot": "menubar-sub-trigger",
2700
2222
  "data-inset": inset,
@@ -2715,7 +2237,7 @@ function MenubarSubContent({
2715
2237
  ...props
2716
2238
  }) {
2717
2239
  return /* @__PURE__ */ jsx(
2718
- Menubar$1.SubContent,
2240
+ MenubarPrimitive.SubContent,
2719
2241
  {
2720
2242
  "data-slot": "menubar-sub-content",
2721
2243
  className: cn(
@@ -2733,7 +2255,7 @@ function NavigationMenu({
2733
2255
  ...props
2734
2256
  }) {
2735
2257
  return /* @__PURE__ */ jsxs(
2736
- NavigationMenu$1.Root,
2258
+ NavigationMenuPrimitive.Root,
2737
2259
  {
2738
2260
  "data-slot": "navigation-menu",
2739
2261
  "data-viewport": viewport,
@@ -2754,7 +2276,7 @@ function NavigationMenuList({
2754
2276
  ...props
2755
2277
  }) {
2756
2278
  return /* @__PURE__ */ jsx(
2757
- NavigationMenu$1.List,
2279
+ NavigationMenuPrimitive.List,
2758
2280
  {
2759
2281
  "data-slot": "navigation-menu-list",
2760
2282
  className: cn(
@@ -2770,7 +2292,7 @@ function NavigationMenuItem({
2770
2292
  ...props
2771
2293
  }) {
2772
2294
  return /* @__PURE__ */ jsx(
2773
- NavigationMenu$1.Item,
2295
+ NavigationMenuPrimitive.Item,
2774
2296
  {
2775
2297
  "data-slot": "navigation-menu-item",
2776
2298
  className: cn("relative", className),
@@ -2787,7 +2309,7 @@ function NavigationMenuTrigger({
2787
2309
  ...props
2788
2310
  }) {
2789
2311
  return /* @__PURE__ */ jsxs(
2790
- NavigationMenu$1.Trigger,
2312
+ NavigationMenuPrimitive.Trigger,
2791
2313
  {
2792
2314
  "data-slot": "navigation-menu-trigger",
2793
2315
  className: cn(navigationMenuTriggerStyle(), "group", className),
@@ -2811,7 +2333,7 @@ function NavigationMenuContent({
2811
2333
  ...props
2812
2334
  }) {
2813
2335
  return /* @__PURE__ */ jsx(
2814
- NavigationMenu$1.Content,
2336
+ NavigationMenuPrimitive.Content,
2815
2337
  {
2816
2338
  "data-slot": "navigation-menu-content",
2817
2339
  className: cn(
@@ -2834,7 +2356,7 @@ function NavigationMenuViewport({
2834
2356
  "absolute top-full left-0 isolate z-50 flex justify-center"
2835
2357
  ),
2836
2358
  children: /* @__PURE__ */ jsx(
2837
- NavigationMenu$1.Viewport,
2359
+ NavigationMenuPrimitive.Viewport,
2838
2360
  {
2839
2361
  "data-slot": "navigation-menu-viewport",
2840
2362
  className: cn(
@@ -2852,7 +2374,7 @@ function NavigationMenuLink({
2852
2374
  ...props
2853
2375
  }) {
2854
2376
  return /* @__PURE__ */ jsx(
2855
- NavigationMenu$1.Link,
2377
+ NavigationMenuPrimitive.Link,
2856
2378
  {
2857
2379
  "data-slot": "navigation-menu-link",
2858
2380
  className: cn(
@@ -2868,7 +2390,7 @@ function NavigationMenuIndicator({
2868
2390
  ...props
2869
2391
  }) {
2870
2392
  return /* @__PURE__ */ jsx(
2871
- NavigationMenu$1.Indicator,
2393
+ NavigationMenuPrimitive.Indicator,
2872
2394
  {
2873
2395
  "data-slot": "navigation-menu-indicator",
2874
2396
  className: cn(
@@ -2928,7 +2450,7 @@ function Toggle({
2928
2450
  ...props
2929
2451
  }) {
2930
2452
  return /* @__PURE__ */ jsx(
2931
- Toggle$1.Root,
2453
+ TogglePrimitive.Root,
2932
2454
  {
2933
2455
  "data-slot": "toggle",
2934
2456
  className: cn(toggleVariants({ variant, size, className })),
@@ -2936,7 +2458,7 @@ function Toggle({
2936
2458
  }
2937
2459
  );
2938
2460
  }
2939
- var ToggleGroupContext = React13.createContext({
2461
+ var ToggleGroupContext = React9.createContext({
2940
2462
  size: "default",
2941
2463
  variant: "default",
2942
2464
  spacing: 0
@@ -2950,7 +2472,7 @@ function ToggleGroup({
2950
2472
  ...props
2951
2473
  }) {
2952
2474
  return /* @__PURE__ */ jsx(
2953
- ToggleGroup$1.Root,
2475
+ ToggleGroupPrimitive.Root,
2954
2476
  {
2955
2477
  "data-slot": "toggle-group",
2956
2478
  "data-variant": variant,
@@ -2973,9 +2495,9 @@ function ToggleGroupItem({
2973
2495
  size,
2974
2496
  ...props
2975
2497
  }) {
2976
- const context = React13.useContext(ToggleGroupContext);
2498
+ const context = React9.useContext(ToggleGroupContext);
2977
2499
  return /* @__PURE__ */ jsx(
2978
- ToggleGroup$1.Item,
2500
+ ToggleGroupPrimitive.Item,
2979
2501
  {
2980
2502
  "data-slot": "toggle-group-item",
2981
2503
  "data-variant": context.variant || variant,
@@ -2995,210 +2517,25 @@ function ToggleGroupItem({
2995
2517
  }
2996
2518
  );
2997
2519
  }
2998
- var CarouselContext = React13.createContext(null);
2999
- function useCarousel() {
3000
- const context = React13.useContext(CarouselContext);
3001
- if (!context) {
3002
- throw new Error("useCarousel must be used within a <Carousel />");
3003
- }
3004
- return context;
3005
- }
3006
- function Carousel({
3007
- orientation = "horizontal",
3008
- opts,
3009
- setApi,
3010
- plugins,
2520
+ function Calendar({
3011
2521
  className,
3012
- children,
2522
+ classNames,
2523
+ showOutsideDays = true,
2524
+ captionLayout = "label",
2525
+ buttonVariant = "ghost",
2526
+ formatters,
2527
+ components,
3013
2528
  ...props
3014
2529
  }) {
3015
- const [carouselRef, api] = useEmblaCarousel(
3016
- {
3017
- ...opts,
3018
- axis: orientation === "horizontal" ? "x" : "y"
3019
- },
3020
- plugins
3021
- );
3022
- const [canScrollPrev, setCanScrollPrev] = React13.useState(false);
3023
- const [canScrollNext, setCanScrollNext] = React13.useState(false);
3024
- const onSelect = React13.useCallback((api2) => {
3025
- if (!api2) return;
3026
- setCanScrollPrev(api2.canScrollPrev());
3027
- setCanScrollNext(api2.canScrollNext());
3028
- }, []);
3029
- const scrollPrev = React13.useCallback(() => {
3030
- api?.scrollPrev();
3031
- }, [api]);
3032
- const scrollNext = React13.useCallback(() => {
3033
- api?.scrollNext();
3034
- }, [api]);
3035
- const handleKeyDown = React13.useCallback(
3036
- (event) => {
3037
- if (event.key === "ArrowLeft") {
3038
- event.preventDefault();
3039
- scrollPrev();
3040
- } else if (event.key === "ArrowRight") {
3041
- event.preventDefault();
3042
- scrollNext();
3043
- }
3044
- },
3045
- [scrollPrev, scrollNext]
3046
- );
3047
- React13.useEffect(() => {
3048
- if (!api || !setApi) return;
3049
- setApi(api);
3050
- }, [api, setApi]);
3051
- React13.useEffect(() => {
3052
- if (!api) return;
3053
- onSelect(api);
3054
- api.on("reInit", onSelect);
3055
- api.on("select", onSelect);
3056
- return () => {
3057
- api?.off("select", onSelect);
3058
- };
3059
- }, [api, onSelect]);
3060
- return /* @__PURE__ */ jsx(
3061
- CarouselContext.Provider,
3062
- {
3063
- value: {
3064
- carouselRef,
3065
- api,
3066
- opts,
3067
- orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
3068
- scrollPrev,
3069
- scrollNext,
3070
- canScrollPrev,
3071
- canScrollNext
3072
- },
3073
- children: /* @__PURE__ */ jsx(
3074
- "div",
3075
- {
3076
- onKeyDownCapture: handleKeyDown,
3077
- className: cn("relative", className),
3078
- role: "region",
3079
- "aria-roledescription": "carousel",
3080
- "data-slot": "carousel",
3081
- ...props,
3082
- children
3083
- }
3084
- )
3085
- }
3086
- );
3087
- }
3088
- function CarouselContent({ className, ...props }) {
3089
- const { carouselRef, orientation } = useCarousel();
3090
- return /* @__PURE__ */ jsx(
3091
- "div",
3092
- {
3093
- ref: carouselRef,
3094
- className: "overflow-hidden",
3095
- "data-slot": "carousel-content",
3096
- children: /* @__PURE__ */ jsx(
3097
- "div",
3098
- {
3099
- className: cn(
3100
- "flex",
3101
- orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
3102
- className
3103
- ),
3104
- ...props
3105
- }
3106
- )
3107
- }
3108
- );
3109
- }
3110
- function CarouselItem({ className, ...props }) {
3111
- const { orientation } = useCarousel();
2530
+ const defaultClassNames = getDefaultClassNames();
3112
2531
  return /* @__PURE__ */ jsx(
3113
- "div",
2532
+ DayPicker,
3114
2533
  {
3115
- role: "group",
3116
- "aria-roledescription": "slide",
3117
- "data-slot": "carousel-item",
2534
+ showOutsideDays,
3118
2535
  className: cn(
3119
- "min-w-0 shrink-0 grow-0 basis-full",
3120
- orientation === "horizontal" ? "pl-4" : "pt-4",
3121
- className
3122
- ),
3123
- ...props
3124
- }
3125
- );
3126
- }
3127
- function CarouselPrevious({
3128
- className,
3129
- variant = "outline",
3130
- size = "icon",
3131
- ...props
3132
- }) {
3133
- const { orientation, scrollPrev, canScrollPrev } = useCarousel();
3134
- return /* @__PURE__ */ jsxs(
3135
- Button,
3136
- {
3137
- "data-slot": "carousel-previous",
3138
- variant,
3139
- size,
3140
- className: cn(
3141
- "absolute size-8 rounded-full",
3142
- orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
3143
- className
3144
- ),
3145
- disabled: !canScrollPrev,
3146
- onClick: scrollPrev,
3147
- ...props,
3148
- children: [
3149
- /* @__PURE__ */ jsx(ArrowLeft, {}),
3150
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Previous slide" })
3151
- ]
3152
- }
3153
- );
3154
- }
3155
- function CarouselNext({
3156
- className,
3157
- variant = "outline",
3158
- size = "icon",
3159
- ...props
3160
- }) {
3161
- const { orientation, scrollNext, canScrollNext } = useCarousel();
3162
- return /* @__PURE__ */ jsxs(
3163
- Button,
3164
- {
3165
- "data-slot": "carousel-next",
3166
- variant,
3167
- size,
3168
- className: cn(
3169
- "absolute size-8 rounded-full",
3170
- orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
3171
- className
3172
- ),
3173
- disabled: !canScrollNext,
3174
- onClick: scrollNext,
3175
- ...props,
3176
- children: [
3177
- /* @__PURE__ */ jsx(ArrowRight, {}),
3178
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Next slide" })
3179
- ]
3180
- }
3181
- );
3182
- }
3183
- function Calendar({
3184
- className,
3185
- classNames,
3186
- showOutsideDays = true,
3187
- captionLayout = "label",
3188
- buttonVariant = "ghost",
3189
- formatters,
3190
- components,
3191
- ...props
3192
- }) {
3193
- const defaultClassNames = getDefaultClassNames();
3194
- return /* @__PURE__ */ jsx(
3195
- DayPicker,
3196
- {
3197
- showOutsideDays,
3198
- className: cn(
3199
- "group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
3200
- String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
3201
- String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
2536
+ "group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
2537
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
2538
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
3202
2539
  className
3203
2540
  ),
3204
2541
  captionLayout,
@@ -3333,8 +2670,8 @@ function CalendarDayButton({
3333
2670
  ...props
3334
2671
  }) {
3335
2672
  const defaultClassNames = getDefaultClassNames();
3336
- const ref = React13.useRef(null);
3337
- React13.useEffect(() => {
2673
+ const ref = React9.useRef(null);
2674
+ React9.useEffect(() => {
3338
2675
  if (modifiers.focused) ref.current?.focus();
3339
2676
  }, [modifiers.focused]);
3340
2677
  return /* @__PURE__ */ jsx(
@@ -3357,12 +2694,12 @@ function CalendarDayButton({
3357
2694
  }
3358
2695
  );
3359
2696
  }
3360
- function RadioGroup({
2697
+ function RadioGroup4({
3361
2698
  className,
3362
2699
  ...props
3363
2700
  }) {
3364
2701
  return /* @__PURE__ */ jsx(
3365
- RadioGroup$1.Root,
2702
+ RadioGroupPrimitive.Root,
3366
2703
  {
3367
2704
  "data-slot": "radio-group",
3368
2705
  className: cn("grid gap-3", className),
@@ -3375,7 +2712,7 @@ function RadioGroupItem({
3375
2712
  ...props
3376
2713
  }) {
3377
2714
  return /* @__PURE__ */ jsx(
3378
- RadioGroup$1.Item,
2715
+ RadioGroupPrimitive.Item,
3379
2716
  {
3380
2717
  "data-slot": "radio-group-item",
3381
2718
  className: cn(
@@ -3384,7 +2721,7 @@ function RadioGroupItem({
3384
2721
  ),
3385
2722
  ...props,
3386
2723
  children: /* @__PURE__ */ jsx(
3387
- RadioGroup$1.Indicator,
2724
+ RadioGroupPrimitive.Indicator,
3388
2725
  {
3389
2726
  "data-slot": "radio-group-indicator",
3390
2727
  className: "relative flex items-center justify-center",
@@ -3397,24 +2734,24 @@ function RadioGroupItem({
3397
2734
  function Collapsible({
3398
2735
  ...props
3399
2736
  }) {
3400
- return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
2737
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
3401
2738
  }
3402
- function CollapsibleTrigger({
2739
+ function CollapsibleTrigger2({
3403
2740
  ...props
3404
2741
  }) {
3405
2742
  return /* @__PURE__ */ jsx(
3406
- Collapsible$1.CollapsibleTrigger,
2743
+ CollapsiblePrimitive.CollapsibleTrigger,
3407
2744
  {
3408
2745
  "data-slot": "collapsible-trigger",
3409
2746
  ...props
3410
2747
  }
3411
2748
  );
3412
2749
  }
3413
- function CollapsibleContent({
2750
+ function CollapsibleContent2({
3414
2751
  ...props
3415
2752
  }) {
3416
2753
  return /* @__PURE__ */ jsx(
3417
- Collapsible$1.CollapsibleContent,
2754
+ CollapsiblePrimitive.CollapsibleContent,
3418
2755
  {
3419
2756
  "data-slot": "collapsible-content",
3420
2757
  ...props
@@ -3438,14 +2775,14 @@ function ScrollArea({
3438
2775
  ...props
3439
2776
  }) {
3440
2777
  return /* @__PURE__ */ jsxs(
3441
- ScrollArea$1.Root,
2778
+ ScrollAreaPrimitive.Root,
3442
2779
  {
3443
2780
  "data-slot": "scroll-area",
3444
2781
  className: cn("relative", className),
3445
2782
  ...props,
3446
2783
  children: [
3447
2784
  /* @__PURE__ */ jsx(
3448
- ScrollArea$1.Viewport,
2785
+ ScrollAreaPrimitive.Viewport,
3449
2786
  {
3450
2787
  "data-slot": "scroll-area-viewport",
3451
2788
  className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
@@ -3453,7 +2790,7 @@ function ScrollArea({
3453
2790
  }
3454
2791
  ),
3455
2792
  /* @__PURE__ */ jsx(ScrollBar, {}),
3456
- /* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
2793
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
3457
2794
  ]
3458
2795
  }
3459
2796
  );
@@ -3464,7 +2801,7 @@ function ScrollBar({
3464
2801
  ...props
3465
2802
  }) {
3466
2803
  return /* @__PURE__ */ jsx(
3467
- ScrollArea$1.ScrollAreaScrollbar,
2804
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
3468
2805
  {
3469
2806
  "data-slot": "scroll-area-scrollbar",
3470
2807
  orientation,
@@ -3476,7 +2813,7 @@ function ScrollBar({
3476
2813
  ),
3477
2814
  ...props,
3478
2815
  children: /* @__PURE__ */ jsx(
3479
- ScrollArea$1.ScrollAreaThumb,
2816
+ ScrollAreaPrimitive.ScrollAreaThumb,
3480
2817
  {
3481
2818
  "data-slot": "scroll-area-thumb",
3482
2819
  className: "relative flex-1 rounded-full bg-border"
@@ -3512,7 +2849,7 @@ var Toaster = ({ ...props }) => {
3512
2849
  function AspectRatio({
3513
2850
  ...props
3514
2851
  }) {
3515
- return /* @__PURE__ */ jsx(AspectRatio$1.Root, { "data-slot": "aspect-ratio", ...props });
2852
+ return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
3516
2853
  }
3517
2854
  function Breadcrumb({ ...props }) {
3518
2855
  return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
@@ -3545,7 +2882,7 @@ function BreadcrumbLink({
3545
2882
  className,
3546
2883
  ...props
3547
2884
  }) {
3548
- const Comp = asChild ? Slot.Root : "a";
2885
+ const Comp = asChild ? Slot7.Root : "a";
3549
2886
  return /* @__PURE__ */ jsx(
3550
2887
  Comp,
3551
2888
  {
@@ -3604,14 +2941,14 @@ function BreadcrumbEllipsis({
3604
2941
  }
3605
2942
  );
3606
2943
  }
3607
- function Separator({
2944
+ function Separator5({
3608
2945
  className,
3609
2946
  orientation = "horizontal",
3610
2947
  decorative = true,
3611
2948
  ...props
3612
2949
  }) {
3613
2950
  return /* @__PURE__ */ jsx(
3614
- Separator$1.Root,
2951
+ SeparatorPrimitive.Root,
3615
2952
  {
3616
2953
  "data-slot": "separator",
3617
2954
  decorative,
@@ -3659,671 +2996,178 @@ function ButtonGroupText({
3659
2996
  asChild = false,
3660
2997
  ...props
3661
2998
  }) {
3662
- const Comp = asChild ? Slot.Root : "div";
2999
+ const Comp = asChild ? Slot7.Root : "div";
3663
3000
  return /* @__PURE__ */ jsx(
3664
3001
  Comp,
3665
3002
  {
3666
3003
  className: cn(
3667
3004
  "flex items-center gap-2 rounded-md border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
3668
3005
  className
3669
- ),
3670
- ...props
3671
- }
3672
- );
3673
- }
3674
- function ButtonGroupSeparator({
3675
- className,
3676
- orientation = "vertical",
3677
- ...props
3678
- }) {
3679
- return /* @__PURE__ */ jsx(
3680
- Separator,
3681
- {
3682
- "data-slot": "button-group-separator",
3683
- orientation,
3684
- className: cn(
3685
- "relative m-0! self-stretch bg-input data-[orientation=vertical]:h-auto",
3686
- className
3687
- ),
3688
- ...props
3689
- }
3690
- );
3691
- }
3692
- var THEMES = { light: "", dark: ".dark" };
3693
- var ChartContext = React13.createContext(null);
3694
- function useChart() {
3695
- const context = React13.useContext(ChartContext);
3696
- if (!context) {
3697
- throw new Error("useChart must be used within a <ChartContainer />");
3698
- }
3699
- return context;
3700
- }
3701
- function ChartContainer({
3702
- id,
3703
- className,
3704
- children,
3705
- config,
3706
- ...props
3707
- }) {
3708
- const uniqueId = React13.useId();
3709
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
3710
- return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
3711
- "div",
3712
- {
3713
- "data-slot": "chart",
3714
- "data-chart": chartId,
3715
- className: cn(
3716
- "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
3717
- className
3718
- ),
3719
- ...props,
3720
- children: [
3721
- /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
3722
- /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
3723
- ]
3724
- }
3725
- ) });
3726
- }
3727
- var ChartStyle = ({ id, config }) => {
3728
- const colorConfig = Object.entries(config).filter(
3729
- ([, config2]) => config2.theme || config2.color
3730
- );
3731
- if (!colorConfig.length) {
3732
- return null;
3733
- }
3734
- return /* @__PURE__ */ jsx(
3735
- "style",
3736
- {
3737
- dangerouslySetInnerHTML: {
3738
- __html: Object.entries(THEMES).map(
3739
- ([theme, prefix]) => `
3740
- ${prefix} [data-chart=${id}] {
3741
- ${colorConfig.map(([key, itemConfig]) => {
3742
- const color = itemConfig.theme?.[theme] || itemConfig.color;
3743
- return color ? ` --color-${key}: ${color};` : null;
3744
- }).join("\n")}
3745
- }
3746
- `
3747
- ).join("\n")
3748
- }
3749
- }
3750
- );
3751
- };
3752
- var ChartTooltip = RechartsPrimitive.Tooltip;
3753
- function ChartTooltipContent({
3754
- active,
3755
- payload,
3756
- className,
3757
- indicator = "dot",
3758
- hideLabel = false,
3759
- hideIndicator = false,
3760
- label,
3761
- labelFormatter,
3762
- labelClassName,
3763
- formatter,
3764
- color,
3765
- nameKey,
3766
- labelKey
3767
- }) {
3768
- const { config } = useChart();
3769
- const tooltipLabel = React13.useMemo(() => {
3770
- if (hideLabel || !payload?.length) {
3771
- return null;
3772
- }
3773
- const [item] = payload;
3774
- const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
3775
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3776
- const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
3777
- if (labelFormatter) {
3778
- return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
3779
- }
3780
- if (!value) {
3781
- return null;
3782
- }
3783
- return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
3784
- }, [
3785
- label,
3786
- labelFormatter,
3787
- payload,
3788
- hideLabel,
3789
- labelClassName,
3790
- config,
3791
- labelKey
3792
- ]);
3793
- if (!active || !payload?.length) {
3794
- return null;
3795
- }
3796
- const nestLabel = payload.length === 1 && indicator !== "dot";
3797
- return /* @__PURE__ */ jsxs(
3798
- "div",
3799
- {
3800
- className: cn(
3801
- "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
3802
- className
3803
- ),
3804
- children: [
3805
- !nestLabel ? tooltipLabel : null,
3806
- /* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
3807
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
3808
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3809
- const indicatorColor = color || item.payload?.fill || item.color;
3810
- return /* @__PURE__ */ jsx(
3811
- "div",
3812
- {
3813
- className: cn(
3814
- "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
3815
- indicator === "dot" && "items-center"
3816
- ),
3817
- children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
3818
- itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
3819
- "div",
3820
- {
3821
- className: cn(
3822
- "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
3823
- {
3824
- "h-2.5 w-2.5": indicator === "dot",
3825
- "w-1": indicator === "line",
3826
- "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
3827
- "my-0.5": nestLabel && indicator === "dashed"
3828
- }
3829
- ),
3830
- style: {
3831
- "--color-bg": indicatorColor,
3832
- "--color-border": indicatorColor
3833
- }
3834
- }
3835
- ),
3836
- /* @__PURE__ */ jsxs(
3837
- "div",
3838
- {
3839
- className: cn(
3840
- "flex flex-1 justify-between leading-none",
3841
- nestLabel ? "items-end" : "items-center"
3842
- ),
3843
- children: [
3844
- /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
3845
- nestLabel ? tooltipLabel : null,
3846
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
3847
- ] }),
3848
- item.value && /* @__PURE__ */ jsx("span", { className: "font-mono font-medium text-foreground tabular-nums", children: item.value.toLocaleString() })
3849
- ]
3850
- }
3851
- )
3852
- ] })
3853
- },
3854
- item.dataKey
3855
- );
3856
- }) })
3857
- ]
3858
- }
3859
- );
3860
- }
3861
- var ChartLegend = RechartsPrimitive.Legend;
3862
- function ChartLegendContent({
3863
- className,
3864
- hideIcon = false,
3865
- payload,
3866
- verticalAlign = "bottom",
3867
- nameKey
3868
- }) {
3869
- const { config } = useChart();
3870
- if (!payload?.length) {
3871
- return null;
3872
- }
3873
- return /* @__PURE__ */ jsx(
3874
- "div",
3875
- {
3876
- className: cn(
3877
- "flex items-center justify-center gap-4",
3878
- verticalAlign === "top" ? "pb-3" : "pt-3",
3879
- className
3880
- ),
3881
- children: payload.filter((item) => item.type !== "none").map((item) => {
3882
- const key = `${nameKey || item.dataKey || "value"}`;
3883
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3884
- return /* @__PURE__ */ jsxs(
3885
- "div",
3886
- {
3887
- className: cn(
3888
- "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
3889
- ),
3890
- children: [
3891
- itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
3892
- "div",
3893
- {
3894
- className: "h-2 w-2 shrink-0 rounded-[2px]",
3895
- style: {
3896
- backgroundColor: item.color
3897
- }
3898
- }
3899
- ),
3900
- itemConfig?.label
3901
- ]
3902
- },
3903
- item.value
3904
- );
3905
- })
3906
- }
3907
- );
3908
- }
3909
- function getPayloadConfigFromPayload(config, payload, key) {
3910
- if (typeof payload !== "object" || payload === null) {
3911
- return void 0;
3912
- }
3913
- const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
3914
- let configLabelKey = key;
3915
- if (key in payload && typeof payload[key] === "string") {
3916
- configLabelKey = payload[key];
3917
- } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
3918
- configLabelKey = payloadPayload[key];
3919
- }
3920
- return configLabelKey in config ? config[configLabelKey] : config[key];
3921
- }
3922
- function InputGroup({ className, ...props }) {
3923
- return /* @__PURE__ */ jsx(
3924
- "div",
3925
- {
3926
- "data-slot": "input-group",
3927
- role: "group",
3928
- className: cn(
3929
- "group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30",
3930
- "h-9 min-w-0 has-[>textarea]:h-auto",
3931
- // Variants based on alignment.
3932
- "has-[>[data-align=inline-start]]:[&>input]:pl-2",
3933
- "has-[>[data-align=inline-end]]:[&>input]:pr-2",
3934
- "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
3935
- "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
3936
- // Focus state.
3937
- "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
3938
- // Error state.
3939
- "has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
3940
- className
3941
- ),
3942
- ...props
3943
- }
3944
- );
3945
- }
3946
- var inputGroupAddonVariants = cva(
3947
- "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
3948
- {
3949
- variants: {
3950
- align: {
3951
- "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
3952
- "inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
3953
- "block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
3954
- "block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
3955
- }
3956
- },
3957
- defaultVariants: {
3958
- align: "inline-start"
3959
- }
3960
- }
3961
- );
3962
- function InputGroupAddon({
3963
- className,
3964
- align = "inline-start",
3965
- ...props
3966
- }) {
3967
- return /* @__PURE__ */ jsx(
3968
- "div",
3969
- {
3970
- role: "group",
3971
- "data-slot": "input-group-addon",
3972
- "data-align": align,
3973
- className: cn(inputGroupAddonVariants({ align }), className),
3974
- onClick: (e) => {
3975
- if (e.target.closest("button")) {
3976
- return;
3977
- }
3978
- e.currentTarget.parentElement?.querySelector("input")?.focus();
3979
- },
3980
- ...props
3981
- }
3982
- );
3983
- }
3984
- var inputGroupButtonVariants = cva(
3985
- "flex items-center gap-2 text-sm shadow-none",
3986
- {
3987
- variants: {
3988
- size: {
3989
- xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
3990
- sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
3991
- "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
3992
- "icon-sm": "size-8 p-0 has-[>svg]:p-0"
3993
- }
3994
- },
3995
- defaultVariants: {
3996
- size: "xs"
3997
- }
3998
- }
3999
- );
4000
- function InputGroupButton({
4001
- className,
4002
- type = "button",
4003
- variant = "ghost",
4004
- size = "xs",
4005
- ...props
4006
- }) {
4007
- return /* @__PURE__ */ jsx(
4008
- Button,
4009
- {
4010
- type,
4011
- "data-size": size,
4012
- variant,
4013
- className: cn(inputGroupButtonVariants({ size }), className),
4014
- ...props
4015
- }
4016
- );
4017
- }
4018
- function InputGroupText({ className, ...props }) {
4019
- return /* @__PURE__ */ jsx(
4020
- "span",
4021
- {
4022
- className: cn(
4023
- "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
4024
- className
4025
- ),
4026
- ...props
4027
- }
4028
- );
4029
- }
4030
- function InputGroupInput({
4031
- className,
4032
- ...props
4033
- }) {
4034
- return /* @__PURE__ */ jsx(
4035
- Input,
4036
- {
4037
- "data-slot": "input-group-control",
4038
- className: cn(
4039
- "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
4040
- className
4041
- ),
4042
- ...props
4043
- }
4044
- );
4045
- }
4046
- function InputGroupTextarea({
4047
- className,
4048
- ...props
4049
- }) {
4050
- return /* @__PURE__ */ jsx(
4051
- Textarea,
4052
- {
4053
- "data-slot": "input-group-control",
4054
- className: cn(
4055
- "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
4056
- className
4057
- ),
4058
- ...props
4059
- }
4060
- );
4061
- }
4062
- var Combobox = Combobox$1.Root;
4063
- function ComboboxValue({ ...props }) {
4064
- return /* @__PURE__ */ jsx(Combobox$1.Value, { "data-slot": "combobox-value", ...props });
4065
- }
4066
- function ComboboxTrigger({
4067
- className,
4068
- children,
4069
- ...props
4070
- }) {
4071
- return /* @__PURE__ */ jsxs(
4072
- Combobox$1.Trigger,
4073
- {
4074
- "data-slot": "combobox-trigger",
4075
- className: cn("[&_svg:not([class*='size-'])]:size-4", className),
4076
- ...props,
4077
- children: [
4078
- children,
4079
- /* @__PURE__ */ jsx(
4080
- ChevronDownIcon,
4081
- {
4082
- "data-slot": "combobox-trigger-icon",
4083
- className: "pointer-events-none size-4 text-muted-foreground"
4084
- }
4085
- )
4086
- ]
4087
- }
4088
- );
4089
- }
4090
- function ComboboxClear({ className, ...props }) {
4091
- return /* @__PURE__ */ jsx(
4092
- Combobox$1.Clear,
4093
- {
4094
- "data-slot": "combobox-clear",
4095
- render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
4096
- className: cn(className),
4097
- ...props,
4098
- children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
4099
- }
4100
- );
4101
- }
4102
- function ComboboxInput({
4103
- className,
4104
- children,
4105
- disabled = false,
4106
- showTrigger = true,
4107
- showClear = false,
4108
- ...props
4109
- }) {
4110
- return /* @__PURE__ */ jsxs(InputGroup, { className: cn("w-auto", className), children: [
4111
- /* @__PURE__ */ jsx(
4112
- Combobox$1.Input,
4113
- {
4114
- render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
4115
- ...props
4116
- }
4117
- ),
4118
- /* @__PURE__ */ jsxs(InputGroupAddon, { align: "inline-end", children: [
4119
- showTrigger && /* @__PURE__ */ jsx(
4120
- InputGroupButton,
4121
- {
4122
- size: "icon-xs",
4123
- variant: "ghost",
4124
- asChild: true,
4125
- "data-slot": "input-group-button",
4126
- className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
4127
- disabled,
4128
- children: /* @__PURE__ */ jsx(ComboboxTrigger, {})
4129
- }
4130
- ),
4131
- showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })
4132
- ] }),
4133
- children
4134
- ] });
4135
- }
4136
- function ComboboxContent({
4137
- className,
4138
- side = "bottom",
4139
- sideOffset = 6,
4140
- align = "start",
4141
- alignOffset = 0,
4142
- anchor,
4143
- ...props
4144
- }) {
4145
- return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
4146
- Combobox$1.Positioner,
4147
- {
4148
- side,
4149
- sideOffset,
4150
- align,
4151
- alignOffset,
4152
- anchor,
4153
- className: "isolate z-50",
4154
- children: /* @__PURE__ */ jsx(
4155
- Combobox$1.Popup,
4156
- {
4157
- "data-slot": "combobox-content",
4158
- "data-chips": !!anchor,
4159
- className: cn(
4160
- "group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
4161
- className
4162
- ),
4163
- ...props
4164
- }
4165
- )
4166
- }
4167
- ) });
4168
- }
4169
- function ComboboxList({ className, ...props }) {
4170
- return /* @__PURE__ */ jsx(
4171
- Combobox$1.List,
4172
- {
4173
- "data-slot": "combobox-list",
4174
- className: cn(
4175
- "max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0",
4176
- className
4177
- ),
4178
- ...props
4179
- }
4180
- );
4181
- }
4182
- function ComboboxItem({
4183
- className,
4184
- children,
4185
- ...props
4186
- }) {
4187
- return /* @__PURE__ */ jsxs(
4188
- Combobox$1.Item,
4189
- {
4190
- "data-slot": "combobox-item",
4191
- className: cn(
4192
- "relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4193
- className
4194
- ),
4195
- ...props,
4196
- children: [
4197
- children,
4198
- /* @__PURE__ */ jsx(
4199
- Combobox$1.ItemIndicator,
4200
- {
4201
- "data-slot": "combobox-item-indicator",
4202
- render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
4203
- children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none size-4 pointer-coarse:size-5" })
4204
- }
4205
- )
4206
- ]
4207
- }
4208
- );
4209
- }
4210
- function ComboboxGroup({ className, ...props }) {
4211
- return /* @__PURE__ */ jsx(
4212
- Combobox$1.Group,
4213
- {
4214
- "data-slot": "combobox-group",
4215
- className: cn(className),
3006
+ ),
4216
3007
  ...props
4217
3008
  }
4218
3009
  );
4219
3010
  }
4220
- function ComboboxLabel({
3011
+ function ButtonGroupSeparator({
4221
3012
  className,
3013
+ orientation = "vertical",
4222
3014
  ...props
4223
3015
  }) {
4224
3016
  return /* @__PURE__ */ jsx(
4225
- Combobox$1.GroupLabel,
3017
+ Separator5,
4226
3018
  {
4227
- "data-slot": "combobox-label",
3019
+ "data-slot": "button-group-separator",
3020
+ orientation,
4228
3021
  className: cn(
4229
- "px-2 py-1.5 text-xs text-muted-foreground pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm",
3022
+ "relative m-0! self-stretch bg-input data-[orientation=vertical]:h-auto",
4230
3023
  className
4231
3024
  ),
4232
3025
  ...props
4233
3026
  }
4234
3027
  );
4235
3028
  }
4236
- function ComboboxCollection({ ...props }) {
4237
- return /* @__PURE__ */ jsx(Combobox$1.Collection, { "data-slot": "combobox-collection", ...props });
4238
- }
4239
- function ComboboxEmpty({ className, ...props }) {
4240
- return /* @__PURE__ */ jsx(
4241
- Combobox$1.Empty,
3029
+ var Combobox = PopoverPrimitive.Root;
3030
+ var ComboboxTrigger = PopoverPrimitive.Trigger;
3031
+ function ComboboxContent({
3032
+ className,
3033
+ align = "start",
3034
+ sideOffset = 6,
3035
+ children,
3036
+ ...props
3037
+ }) {
3038
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
3039
+ PopoverPrimitive.Content,
4242
3040
  {
4243
- "data-slot": "combobox-empty",
3041
+ "data-slot": "combobox-content",
3042
+ align,
3043
+ sideOffset,
4244
3044
  className: cn(
4245
- "hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex",
3045
+ "z-50 w-[var(--radix-popover-trigger-width)] min-w-[12rem] origin-[var(--radix-popover-content-transform-origin)] overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
4246
3046
  className
4247
3047
  ),
4248
- ...props
3048
+ ...props,
3049
+ children: /* @__PURE__ */ jsx(
3050
+ Command$1,
3051
+ {
3052
+ "data-slot": "combobox",
3053
+ className: "flex w-full flex-col",
3054
+ children
3055
+ }
3056
+ )
4249
3057
  }
4250
- );
3058
+ ) });
4251
3059
  }
4252
- function ComboboxSeparator({
3060
+ function ComboboxInput({
4253
3061
  className,
4254
3062
  ...props
4255
3063
  }) {
4256
- return /* @__PURE__ */ jsx(
4257
- Combobox$1.Separator,
3064
+ return /* @__PURE__ */ jsxs(
3065
+ "div",
4258
3066
  {
4259
- "data-slot": "combobox-separator",
4260
- className: cn("-mx-1 my-1 h-px bg-border", className),
4261
- ...props
3067
+ "data-slot": "combobox-input-wrapper",
3068
+ className: "flex h-9 items-center gap-2 border-b px-3",
3069
+ children: [
3070
+ /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
3071
+ /* @__PURE__ */ jsx(
3072
+ Command$1.Input,
3073
+ {
3074
+ "data-slot": "combobox-input",
3075
+ className: cn(
3076
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
3077
+ className
3078
+ ),
3079
+ ...props
3080
+ }
3081
+ )
3082
+ ]
4262
3083
  }
4263
3084
  );
4264
3085
  }
4265
- function ComboboxChips({
3086
+ function ComboboxList({
4266
3087
  className,
4267
3088
  ...props
4268
3089
  }) {
4269
3090
  return /* @__PURE__ */ jsx(
4270
- Combobox$1.Chips,
3091
+ Command$1.List,
4271
3092
  {
4272
- "data-slot": "combobox-chips",
3093
+ "data-slot": "combobox-list",
4273
3094
  className: cn(
4274
- "flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40",
3095
+ "max-h-[min(24rem,var(--radix-popover-content-available-height))] scroll-py-1 overflow-x-hidden overflow-y-auto p-1",
4275
3096
  className
4276
3097
  ),
4277
3098
  ...props
4278
3099
  }
4279
3100
  );
4280
3101
  }
4281
- function ComboboxChip({
3102
+ function ComboboxItem({
4282
3103
  className,
4283
3104
  children,
4284
- showRemove = true,
3105
+ selected,
4285
3106
  ...props
4286
3107
  }) {
4287
3108
  return /* @__PURE__ */ jsxs(
4288
- Combobox$1.Chip,
3109
+ Command$1.Item,
4289
3110
  {
4290
- "data-slot": "combobox-chip",
3111
+ "data-slot": "combobox-item",
4291
3112
  className: cn(
4292
- "flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0",
3113
+ "relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4293
3114
  className
4294
3115
  ),
4295
3116
  ...props,
4296
3117
  children: [
4297
3118
  children,
4298
- showRemove && /* @__PURE__ */ jsx(
4299
- Combobox$1.ChipRemove,
3119
+ selected ? /* @__PURE__ */ jsx(
3120
+ CheckIcon,
4300
3121
  {
4301
- render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
4302
- className: "-ml-1 opacity-50 hover:opacity-100",
4303
- "data-slot": "combobox-chip-remove",
4304
- children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
3122
+ "data-slot": "combobox-item-indicator",
3123
+ className: "absolute right-2 size-4"
4305
3124
  }
4306
- )
3125
+ ) : null
4307
3126
  ]
4308
3127
  }
4309
3128
  );
4310
3129
  }
4311
- function ComboboxChipsInput({
3130
+ function ComboboxGroup({
3131
+ className,
3132
+ ...props
3133
+ }) {
3134
+ return /* @__PURE__ */ jsx(
3135
+ Command$1.Group,
3136
+ {
3137
+ "data-slot": "combobox-group",
3138
+ className: cn(
3139
+ "overflow-hidden text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
3140
+ className
3141
+ ),
3142
+ ...props
3143
+ }
3144
+ );
3145
+ }
3146
+ function ComboboxEmpty({
4312
3147
  className,
4313
- children,
4314
3148
  ...props
4315
3149
  }) {
4316
3150
  return /* @__PURE__ */ jsx(
4317
- Combobox$1.Input,
3151
+ Command$1.Empty,
4318
3152
  {
4319
- "data-slot": "combobox-chip-input",
4320
- className: cn("min-w-16 flex-1 outline-none", className),
3153
+ "data-slot": "combobox-empty",
3154
+ className: cn("py-6 text-center text-sm text-muted-foreground", className),
4321
3155
  ...props
4322
3156
  }
4323
3157
  );
4324
3158
  }
4325
- function useComboboxAnchor() {
4326
- return React13.useRef(null);
3159
+ function ComboboxSeparator({
3160
+ className,
3161
+ ...props
3162
+ }) {
3163
+ return /* @__PURE__ */ jsx(
3164
+ Command$1.Separator,
3165
+ {
3166
+ "data-slot": "combobox-separator",
3167
+ className: cn("-mx-1 my-1 h-px bg-border", className),
3168
+ ...props
3169
+ }
3170
+ );
4327
3171
  }
4328
3172
  function Command({
4329
3173
  className,
@@ -4477,14 +3321,14 @@ function CommandShortcut({
4477
3321
  }
4478
3322
  );
4479
3323
  }
4480
- function DirectionProvider({
3324
+ function DirectionProvider2({
4481
3325
  dir,
4482
3326
  direction,
4483
3327
  children
4484
3328
  }) {
4485
3329
  return /* @__PURE__ */ jsx(Direction.DirectionProvider, { dir: direction ?? dir, children });
4486
3330
  }
4487
- var useDirection = Direction.useDirection;
3331
+ var useDirection2 = Direction.useDirection;
4488
3332
  function Empty({ className, ...props }) {
4489
3333
  return /* @__PURE__ */ jsx(
4490
3334
  "div",
@@ -4576,12 +3420,12 @@ function EmptyContent({ className, ...props }) {
4576
3420
  }
4577
3421
  );
4578
3422
  }
4579
- function Label({
3423
+ function Label5({
4580
3424
  className,
4581
3425
  ...props
4582
3426
  }) {
4583
3427
  return /* @__PURE__ */ jsx(
4584
- Label$1.Root,
3428
+ LabelPrimitive.Root,
4585
3429
  {
4586
3430
  "data-slot": "label",
4587
3431
  className: cn(
@@ -4696,7 +3540,7 @@ function FieldLabel({
4696
3540
  ...props
4697
3541
  }) {
4698
3542
  return /* @__PURE__ */ jsx(
4699
- Label,
3543
+ Label5,
4700
3544
  {
4701
3545
  "data-slot": "field-label",
4702
3546
  className: cn(
@@ -4753,7 +3597,7 @@ function FieldSeparator({
4753
3597
  ),
4754
3598
  ...props,
4755
3599
  children: [
4756
- /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
3600
+ /* @__PURE__ */ jsx(Separator5, { className: "absolute inset-0 top-1/2" }),
4757
3601
  children && /* @__PURE__ */ jsx(
4758
3602
  "span",
4759
3603
  {
@@ -4804,7 +3648,7 @@ function FieldError({
4804
3648
  );
4805
3649
  }
4806
3650
  var Form = FormProvider;
4807
- var FormFieldContext = React13.createContext(
3651
+ var FormFieldContext = React9.createContext(
4808
3652
  {}
4809
3653
  );
4810
3654
  var FormField = ({
@@ -4813,8 +3657,8 @@ var FormField = ({
4813
3657
  return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
4814
3658
  };
4815
3659
  var useFormField = () => {
4816
- const fieldContext = React13.useContext(FormFieldContext);
4817
- const itemContext = React13.useContext(FormItemContext);
3660
+ const fieldContext = React9.useContext(FormFieldContext);
3661
+ const itemContext = React9.useContext(FormItemContext);
4818
3662
  const { getFieldState } = useFormContext();
4819
3663
  const formState = useFormState({ name: fieldContext.name });
4820
3664
  const fieldState = getFieldState(fieldContext.name, formState);
@@ -4831,11 +3675,11 @@ var useFormField = () => {
4831
3675
  ...fieldState
4832
3676
  };
4833
3677
  };
4834
- var FormItemContext = React13.createContext(
3678
+ var FormItemContext = React9.createContext(
4835
3679
  {}
4836
3680
  );
4837
3681
  function FormItem({ className, ...props }) {
4838
- const id = React13.useId();
3682
+ const id = React9.useId();
4839
3683
  return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx(
4840
3684
  "div",
4841
3685
  {
@@ -4851,7 +3695,7 @@ function FormLabel({
4851
3695
  }) {
4852
3696
  const { error, formItemId } = useFormField();
4853
3697
  return /* @__PURE__ */ jsx(
4854
- Label,
3698
+ Label5,
4855
3699
  {
4856
3700
  "data-slot": "form-label",
4857
3701
  "data-error": !!error,
@@ -4864,7 +3708,7 @@ function FormLabel({
4864
3708
  function FormControl({ ...props }) {
4865
3709
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
4866
3710
  return /* @__PURE__ */ jsx(
4867
- Slot.Root,
3711
+ Slot7.Root,
4868
3712
  {
4869
3713
  "data-slot": "form-control",
4870
3714
  id: formItemId,
@@ -5075,6 +3919,146 @@ var Icons = {
5075
3919
  /* @__PURE__ */ jsx("path", { d: "M18 9a9 9 0 0 1-9 9" })
5076
3920
  ] })
5077
3921
  };
3922
+ function InputGroup({ className, ...props }) {
3923
+ return /* @__PURE__ */ jsx(
3924
+ "div",
3925
+ {
3926
+ "data-slot": "input-group",
3927
+ role: "group",
3928
+ className: cn(
3929
+ "group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30",
3930
+ "h-9 min-w-0 has-[>textarea]:h-auto",
3931
+ // Variants based on alignment.
3932
+ "has-[>[data-align=inline-start]]:[&>input]:pl-2",
3933
+ "has-[>[data-align=inline-end]]:[&>input]:pr-2",
3934
+ "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
3935
+ "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
3936
+ // Focus state.
3937
+ "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
3938
+ // Error state.
3939
+ "has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
3940
+ className
3941
+ ),
3942
+ ...props
3943
+ }
3944
+ );
3945
+ }
3946
+ var inputGroupAddonVariants = cva(
3947
+ "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
3948
+ {
3949
+ variants: {
3950
+ align: {
3951
+ "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
3952
+ "inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
3953
+ "block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
3954
+ "block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
3955
+ }
3956
+ },
3957
+ defaultVariants: {
3958
+ align: "inline-start"
3959
+ }
3960
+ }
3961
+ );
3962
+ function InputGroupAddon({
3963
+ className,
3964
+ align = "inline-start",
3965
+ ...props
3966
+ }) {
3967
+ return /* @__PURE__ */ jsx(
3968
+ "div",
3969
+ {
3970
+ role: "group",
3971
+ "data-slot": "input-group-addon",
3972
+ "data-align": align,
3973
+ className: cn(inputGroupAddonVariants({ align }), className),
3974
+ onClick: (e) => {
3975
+ if (e.target.closest("button")) {
3976
+ return;
3977
+ }
3978
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
3979
+ },
3980
+ ...props
3981
+ }
3982
+ );
3983
+ }
3984
+ var inputGroupButtonVariants = cva(
3985
+ "flex items-center gap-2 text-sm shadow-none",
3986
+ {
3987
+ variants: {
3988
+ size: {
3989
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
3990
+ sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
3991
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
3992
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
3993
+ }
3994
+ },
3995
+ defaultVariants: {
3996
+ size: "xs"
3997
+ }
3998
+ }
3999
+ );
4000
+ function InputGroupButton({
4001
+ className,
4002
+ type = "button",
4003
+ variant = "ghost",
4004
+ size = "xs",
4005
+ ...props
4006
+ }) {
4007
+ return /* @__PURE__ */ jsx(
4008
+ Button,
4009
+ {
4010
+ type,
4011
+ "data-size": size,
4012
+ variant,
4013
+ className: cn(inputGroupButtonVariants({ size }), className),
4014
+ ...props
4015
+ }
4016
+ );
4017
+ }
4018
+ function InputGroupText({ className, ...props }) {
4019
+ return /* @__PURE__ */ jsx(
4020
+ "span",
4021
+ {
4022
+ className: cn(
4023
+ "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
4024
+ className
4025
+ ),
4026
+ ...props
4027
+ }
4028
+ );
4029
+ }
4030
+ function InputGroupInput({
4031
+ className,
4032
+ ...props
4033
+ }) {
4034
+ return /* @__PURE__ */ jsx(
4035
+ Input,
4036
+ {
4037
+ "data-slot": "input-group-control",
4038
+ className: cn(
4039
+ "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
4040
+ className
4041
+ ),
4042
+ ...props
4043
+ }
4044
+ );
4045
+ }
4046
+ function InputGroupTextarea({
4047
+ className,
4048
+ ...props
4049
+ }) {
4050
+ return /* @__PURE__ */ jsx(
4051
+ Textarea,
4052
+ {
4053
+ "data-slot": "input-group-control",
4054
+ className: cn(
4055
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
4056
+ className
4057
+ ),
4058
+ ...props
4059
+ }
4060
+ );
4061
+ }
5078
4062
  function InputOTP({
5079
4063
  className,
5080
4064
  containerClassName,
@@ -5108,7 +4092,7 @@ function InputOTPSlot({
5108
4092
  className,
5109
4093
  ...props
5110
4094
  }) {
5111
- const inputOTPContext = React13.useContext(OTPInputContext);
4095
+ const inputOTPContext = React9.useContext(OTPInputContext);
5112
4096
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
5113
4097
  return /* @__PURE__ */ jsxs(
5114
4098
  "div",
@@ -5146,7 +4130,7 @@ function ItemSeparator({
5146
4130
  ...props
5147
4131
  }) {
5148
4132
  return /* @__PURE__ */ jsx(
5149
- Separator,
4133
+ Separator5,
5150
4134
  {
5151
4135
  "data-slot": "item-separator",
5152
4136
  orientation: "horizontal",
@@ -5175,14 +4159,14 @@ var itemVariants = cva(
5175
4159
  }
5176
4160
  }
5177
4161
  );
5178
- function Item({
4162
+ function Item9({
5179
4163
  className,
5180
4164
  variant = "default",
5181
4165
  size = "default",
5182
4166
  asChild = false,
5183
4167
  ...props
5184
4168
  }) {
5185
- const Comp = asChild ? Slot.Root : "div";
4169
+ const Comp = asChild ? Slot7.Root : "div";
5186
4170
  return /* @__PURE__ */ jsx(
5187
4171
  Comp,
5188
4172
  {
@@ -5642,7 +4626,7 @@ var AnimatedTooltip = ({
5642
4626
  onMouseLeave: () => setHoveredIndex(null),
5643
4627
  children: [
5644
4628
  /* @__PURE__ */ jsx(AnimatePresence, { children: hoveredIndex === item.id && /* @__PURE__ */ jsxs(
5645
- motion.div,
4629
+ m.div,
5646
4630
  {
5647
4631
  initial: { opacity: 0, y: 20, scale: 0.6 },
5648
4632
  animate: {
@@ -5671,7 +4655,7 @@ var AnimatedTooltip = ({
5671
4655
  }
5672
4656
  ) }),
5673
4657
  /* @__PURE__ */ jsx(
5674
- Image,
4658
+ Image2,
5675
4659
  {
5676
4660
  onMouseMove: handleMouseMove,
5677
4661
  height: 100,
@@ -5735,9 +4719,9 @@ var SIDEBAR_WIDTH = "16rem";
5735
4719
  var SIDEBAR_WIDTH_MOBILE = "18rem";
5736
4720
  var SIDEBAR_WIDTH_ICON = "3rem";
5737
4721
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
5738
- var SidebarContext = React13.createContext(null);
4722
+ var SidebarContext = React9.createContext(null);
5739
4723
  function useSidebar() {
5740
- const context = React13.useContext(SidebarContext);
4724
+ const context = React9.useContext(SidebarContext);
5741
4725
  if (!context) {
5742
4726
  throw new Error("useSidebar must be used within a SidebarProvider.");
5743
4727
  }
@@ -5753,10 +4737,10 @@ function SidebarProvider({
5753
4737
  ...props
5754
4738
  }) {
5755
4739
  const isMobile = useIsMobile();
5756
- const [openMobile, setOpenMobile] = React13.useState(false);
5757
- const [_open, _setOpen] = React13.useState(defaultOpenProp ?? true);
5758
- const [hasHydrated, setHasHydrated] = React13.useState(false);
5759
- React13.useEffect(() => {
4740
+ const [openMobile, setOpenMobile] = React9.useState(false);
4741
+ const [_open, _setOpen] = React9.useState(defaultOpenProp ?? true);
4742
+ const [hasHydrated, setHasHydrated] = React9.useState(false);
4743
+ React9.useEffect(() => {
5760
4744
  if (openProp !== void 0 || defaultOpenProp !== void 0) {
5761
4745
  setHasHydrated(true);
5762
4746
  return;
@@ -5767,7 +4751,7 @@ function SidebarProvider({
5767
4751
  }
5768
4752
  setHasHydrated(true);
5769
4753
  }, [openProp, defaultOpenProp]);
5770
- React13.useEffect(() => {
4754
+ React9.useEffect(() => {
5771
4755
  if (!hasHydrated) return;
5772
4756
  if (openProp !== void 0 || defaultOpenProp !== void 0) return;
5773
4757
  const hasCookie = document.cookie.includes(SIDEBAR_COOKIE_NAME);
@@ -5776,7 +4760,7 @@ function SidebarProvider({
5776
4760
  }
5777
4761
  }, [hasHydrated, isMobile, openProp, defaultOpenProp]);
5778
4762
  const open = openProp ?? _open;
5779
- const setOpen = React13.useCallback(
4763
+ const setOpen = React9.useCallback(
5780
4764
  (value) => {
5781
4765
  const openState = typeof value === "function" ? value(open) : value;
5782
4766
  if (setOpenProp) {
@@ -5788,10 +4772,10 @@ function SidebarProvider({
5788
4772
  },
5789
4773
  [setOpenProp, open]
5790
4774
  );
5791
- const toggleSidebar = React13.useCallback(() => {
4775
+ const toggleSidebar = React9.useCallback(() => {
5792
4776
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
5793
4777
  }, [isMobile, setOpen, setOpenMobile]);
5794
- React13.useEffect(() => {
4778
+ React9.useEffect(() => {
5795
4779
  const handleKeyDown = (event) => {
5796
4780
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
5797
4781
  event.preventDefault();
@@ -5802,7 +4786,7 @@ function SidebarProvider({
5802
4786
  return () => window.removeEventListener("keydown", handleKeyDown);
5803
4787
  }, [toggleSidebar]);
5804
4788
  const state = open || openMobile ? "expanded" : "collapsed";
5805
- const contextValue = React13.useMemo(
4789
+ const contextValue = React9.useMemo(
5806
4790
  () => ({
5807
4791
  state,
5808
4792
  open,
@@ -6031,7 +5015,7 @@ function SidebarSeparator({
6031
5015
  ...props
6032
5016
  }) {
6033
5017
  return /* @__PURE__ */ jsx(
6034
- Separator,
5018
+ Separator5,
6035
5019
  {
6036
5020
  "data-slot": "sidebar-separator",
6037
5021
  "data-sidebar": "separator",
@@ -6070,7 +5054,7 @@ function SidebarGroupLabel({
6070
5054
  asChild = false,
6071
5055
  ...props
6072
5056
  }) {
6073
- const Comp = asChild ? Slot.Root : "div";
5057
+ const Comp = asChild ? Slot7.Root : "div";
6074
5058
  return /* @__PURE__ */ jsx(
6075
5059
  Comp,
6076
5060
  {
@@ -6090,7 +5074,7 @@ function SidebarGroupAction({
6090
5074
  asChild = false,
6091
5075
  ...props
6092
5076
  }) {
6093
- const Comp = asChild ? Slot.Root : "button";
5077
+ const Comp = asChild ? Slot7.Root : "button";
6094
5078
  return /* @__PURE__ */ jsx(
6095
5079
  Comp,
6096
5080
  {
@@ -6172,7 +5156,7 @@ function SidebarMenuButton({
6172
5156
  className,
6173
5157
  ...props
6174
5158
  }) {
6175
- const Comp = asChild ? Slot.Root : "button";
5159
+ const Comp = asChild ? Slot7.Root : "button";
6176
5160
  const { isMobile, state } = useSidebar();
6177
5161
  const button = /* @__PURE__ */ jsx(
6178
5162
  Comp,
@@ -6212,7 +5196,7 @@ function SidebarMenuAction({
6212
5196
  showOnHover = false,
6213
5197
  ...props
6214
5198
  }) {
6215
- const Comp = asChild ? Slot.Root : "button";
5199
+ const Comp = asChild ? Slot7.Root : "button";
6216
5200
  return /* @__PURE__ */ jsx(
6217
5201
  Comp,
6218
5202
  {
@@ -6260,7 +5244,7 @@ function SidebarMenuSkeleton({
6260
5244
  showIcon = false,
6261
5245
  ...props
6262
5246
  }) {
6263
- const width = React13.useMemo(() => {
5247
+ const width = React9.useMemo(() => {
6264
5248
  return `${Math.floor(Math.random() * 40) + 50}%`;
6265
5249
  }, []);
6266
5250
  return /* @__PURE__ */ jsxs(
@@ -6328,7 +5312,7 @@ function SidebarMenuSubButton({
6328
5312
  className,
6329
5313
  ...props
6330
5314
  }) {
6331
- const Comp = asChild ? Slot.Root : "a";
5315
+ const Comp = asChild ? Slot7.Root : "a";
6332
5316
  return /* @__PURE__ */ jsx(
6333
5317
  Comp,
6334
5318
  {
@@ -6704,7 +5688,7 @@ function ScrollToTopButton({
6704
5688
  const surfaceClass = surface === "glass" ? "bg-primary/85 text-primary-foreground backdrop-blur-md border border-[oklch(1_0_0_/_0.15)] shadow-[var(--surface-shadow)]" : "bg-primary text-primary-foreground shadow-lg";
6705
5689
  const duration = animated ? 0.3 : 0;
6706
5690
  return /* @__PURE__ */ jsx(AnimatePresence, { children: isVisible && /* @__PURE__ */ jsx(
6707
- motion.button,
5691
+ m.button,
6708
5692
  {
6709
5693
  onClick: scrollToTop,
6710
5694
  "aria-label": "Scroll to top",
@@ -6727,8 +5711,8 @@ function ThemeModeToggle({
6727
5711
  className
6728
5712
  }) {
6729
5713
  const { theme, setTheme } = useTheme();
6730
- const [mounted, setMounted] = React13.useState(false);
6731
- React13.useEffect(() => {
5714
+ const [mounted, setMounted] = React9.useState(false);
5715
+ React9.useEffect(() => {
6732
5716
  setMounted(true);
6733
5717
  }, []);
6734
5718
  if (!mounted) {
@@ -6752,38 +5736,76 @@ function ThemeModeToggle({
6752
5736
  }
6753
5737
  );
6754
5738
  }
6755
- NProgress.configure({ showSpinner: false, trickleSpeed: 100 });
6756
- var NPROGRESS_THEME_CSS = `
6757
- #nprogress .bar {
6758
- background: var(--primary) !important;
6759
- height: 2px;
6760
- }
6761
- #nprogress .peg {
6762
- box-shadow: 0 0 10px var(--primary), 0 0 5px var(--primary) !important;
6763
- }
6764
- #nprogress .spinner-icon {
6765
- border-top-color: var(--primary) !important;
6766
- border-left-color: var(--primary) !important;
6767
- }
6768
- `;
5739
+ var BAR_BASE_STYLE = {
5740
+ position: "fixed",
5741
+ top: 0,
5742
+ left: 0,
5743
+ right: 0,
5744
+ height: 2,
5745
+ background: "var(--primary)",
5746
+ transformOrigin: "left",
5747
+ zIndex: 9999,
5748
+ pointerEvents: "none"
5749
+ };
6769
5750
  function TopLoadingBarAnimated({
6770
5751
  startDelayMs = 100,
6771
5752
  finishDelayMs = 300
6772
5753
  }) {
6773
5754
  const pathname = usePathname();
6774
5755
  const searchParams = useSearchParams();
5756
+ const [progress, setProgress] = useState(0);
5757
+ const [visible, setVisible] = useState(false);
5758
+ const trickleRef = useRef(null);
6775
5759
  useEffect(() => {
6776
- const startDelay = setTimeout(() => NProgress.start(), startDelayMs);
5760
+ const start = setTimeout(() => {
5761
+ setVisible(true);
5762
+ setProgress(0.08);
5763
+ trickleRef.current = setInterval(() => {
5764
+ setProgress((p) => {
5765
+ if (p >= 0.9) return p;
5766
+ const remaining = 0.9 - p;
5767
+ return p + remaining * 0.06;
5768
+ });
5769
+ }, 200);
5770
+ }, startDelayMs);
6777
5771
  const finish = setTimeout(() => {
6778
- clearTimeout(startDelay);
6779
- NProgress.done();
5772
+ clearTimeout(start);
5773
+ if (trickleRef.current) {
5774
+ clearInterval(trickleRef.current);
5775
+ trickleRef.current = null;
5776
+ }
5777
+ setProgress(1);
5778
+ const fade = setTimeout(() => {
5779
+ setVisible(false);
5780
+ setProgress(0);
5781
+ }, 200);
5782
+ return () => clearTimeout(fade);
6780
5783
  }, finishDelayMs);
6781
5784
  return () => {
6782
- clearTimeout(startDelay);
5785
+ clearTimeout(start);
6783
5786
  clearTimeout(finish);
5787
+ if (trickleRef.current) {
5788
+ clearInterval(trickleRef.current);
5789
+ trickleRef.current = null;
5790
+ }
6784
5791
  };
6785
5792
  }, [pathname, searchParams, startDelayMs, finishDelayMs]);
6786
- return null;
5793
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5794
+ /* @__PURE__ */ jsx(
5795
+ "div",
5796
+ {
5797
+ "aria-hidden": "true",
5798
+ style: {
5799
+ ...BAR_BASE_STYLE,
5800
+ transform: `scaleX(${progress})`,
5801
+ opacity: visible ? 1 : 0,
5802
+ transition: "transform 200ms cubic-bezier(0.4, 0, 0.2, 1), opacity 250ms ease-out",
5803
+ boxShadow: "0 0 10px var(--primary), 0 0 5px var(--primary)"
5804
+ }
5805
+ }
5806
+ ),
5807
+ /* @__PURE__ */ jsx("span", { "aria-live": "polite", className: "sr-only", children: visible ? "Loading\u2026" : "" })
5808
+ ] });
6787
5809
  }
6788
5810
  function TopLoadingBarStatic({
6789
5811
  startDelayMs = 100,
@@ -6809,15 +5831,8 @@ function TopLoadingBarStatic({
6809
5831
  {
6810
5832
  "aria-hidden": "true",
6811
5833
  style: {
6812
- position: "fixed",
6813
- top: 0,
6814
- left: 0,
6815
- right: 0,
6816
- height: 2,
6817
- background: "var(--primary)",
6818
- opacity: pending ? 1 : 0,
6819
- zIndex: 9999,
6820
- pointerEvents: "none"
5834
+ ...BAR_BASE_STYLE,
5835
+ opacity: pending ? 1 : 0
6821
5836
  // No transition — this variant is intentionally motion-free.
6822
5837
  }
6823
5838
  }
@@ -6840,16 +5855,13 @@ function TopLoadingBar({
6840
5855
  }
6841
5856
  ) });
6842
5857
  }
6843
- return /* @__PURE__ */ jsxs(Fragment, { children: [
6844
- /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: NPROGRESS_THEME_CSS } }),
6845
- /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
6846
- TopLoadingBarAnimated,
6847
- {
6848
- startDelayMs,
6849
- finishDelayMs
6850
- }
6851
- ) })
6852
- ] });
5858
+ return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
5859
+ TopLoadingBarAnimated,
5860
+ {
5861
+ startDelayMs,
5862
+ finishDelayMs
5863
+ }
5864
+ ) });
6853
5865
  }
6854
5866
  var sizeClasses = {
6855
5867
  sm: "h-7 w-7 text-xs",
@@ -6863,4 +5875,4 @@ function UserAvatar({ src, name, initials, size = "md", className }) {
6863
5875
  ] });
6864
5876
  }
6865
5877
 
6866
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedTooltip, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataToolbar, DataToolbarActions, DataToolbarFilters, DataToolbarSearch, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PALETTES, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PricingCard, Progress, RADII, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, STYLES, SaasflareProvider, SaasflareScript, SaasflareShell, ScrollArea, ScrollBar, ScrollToTopButton, SearchField, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SmoothScrollProvider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeModeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLoadingBar, TypewriterText, UserAvatar, badgeVariants, buttonGroupVariants, buttonVariants, cn, fadeIn, navigationMenuTriggerStyle, noMotion, scaleIn, slideDown, slideUp, spring, springBouncy, springGentle, springStiff, toggleVariants, useAnimation, useComboboxAnchor, useDirection, useDisclosure, useFormField, useIsMobile, useMeasure, usePagination, useReducedMotion, useSaasflareProps, useSaasflareTheme, useSidebar };
5878
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedTooltip, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataToolbar, DataToolbarActions, DataToolbarFilters, DataToolbarSearch, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider2 as DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item9 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label5 as Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PALETTES, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PricingCard, Progress, RADII, RadioGroup4 as RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, STYLES, ScrollArea, ScrollBar, ScrollToTopButton, SearchField, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator5 as Separator, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeModeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLoadingBar, TypewriterText, UserAvatar, badgeVariants, buttonGroupVariants, navigationMenuTriggerStyle, toggleVariants, useDirection2 as useDirection, useDisclosure, useFormField, useIsMobile, useMeasure, usePagination, useSidebar };