@moontra/moonui 6.24.0 → 6.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/cdn/moonui.css +2 -2
  2. package/dist/cdn/moonui.esm.js +12 -12
  3. package/dist/cdn/moonui.global.js +12 -12
  4. package/dist/index.d.mts +24 -6
  5. package/dist/index.d.ts +24 -6
  6. package/dist/index.js +417 -87
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +418 -89
  9. package/dist/index.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/src/__tests__/issue-544-kontrast.test.tsx +153 -145
  12. package/src/__tests__/issue-645-overlay-tab-focus.test.tsx +262 -0
  13. package/src/__tests__/issue-646-dark-scope-override.test.tsx +297 -0
  14. package/src/__tests__/issue-661-a11y.test.tsx +113 -0
  15. package/src/__tests__/issue-661-token-kontrast.test.tsx +82 -0
  16. package/src/components/ui/__tests__/accent-foreground-contrast.test.ts +197 -0
  17. package/src/components/ui/__tests__/accordion.test.tsx +6 -4
  18. package/src/components/ui/__tests__/alert.test.tsx +4 -1
  19. package/src/components/ui/__tests__/button.test.tsx +6 -1
  20. package/src/components/ui/__tests__/dark-token-contrast.test.ts +18 -18
  21. package/src/components/ui/__tests__/heading-level-policy.test.tsx +4 -4
  22. package/src/components/ui/__tests__/issue-643-card-token-parite.test.tsx +113 -0
  23. package/src/components/ui/__tests__/issue-649-button-aschild.test.tsx +199 -0
  24. package/src/components/ui/__tests__/issue-664-separator-dekoratif-rol.test.tsx +41 -0
  25. package/src/components/ui/__tests__/preset-color-shadowing.test.ts +10 -10
  26. package/src/components/ui/__tests__/primary-subtle-token.test.ts +7 -7
  27. package/src/components/ui/__tests__/progress-secondary-contrast.test.ts +38 -38
  28. package/src/components/ui/__tests__/progress-warning-error-contrast.test.ts +64 -64
  29. package/src/components/ui/__tests__/quality-group-de.test.tsx +2 -2
  30. package/src/components/ui/__tests__/responsive-color-invariance.test.ts +20 -20
  31. package/src/components/ui/__tests__/select.test.tsx +6 -1
  32. package/src/components/ui/__tests__/semantic-token-usage.test.ts +23 -23
  33. package/src/components/ui/__tests__/size-scale-convention.test.ts +10 -10
  34. package/src/components/ui/__tests__/slider-accent-contrast.test.ts +142 -136
  35. package/src/components/ui/__tests__/slider-secondary-contrast.test.ts +60 -60
  36. package/src/components/ui/__tests__/slider-warning-error-contrast.test.ts +100 -100
  37. package/src/components/ui/__tests__/switch-variant-contrast.test.tsx +103 -103
  38. package/src/components/ui/__tests__/tooltip.test.tsx +122 -0
  39. package/src/components/ui/accordion.tsx +16 -3
  40. package/src/components/ui/alert.tsx +1 -1
  41. package/src/components/ui/badge.tsx +12 -1
  42. package/src/components/ui/button.tsx +76 -18
  43. package/src/components/ui/card.tsx +59 -5
  44. package/src/components/ui/dropdown-menu.tsx +99 -5
  45. package/src/components/ui/file-upload.tsx +4 -0
  46. package/src/components/ui/index.ts +4 -1
  47. package/src/components/ui/popover-pro.tsx +41 -0
  48. package/src/components/ui/popover.tsx +162 -7
  49. package/src/components/ui/rating.tsx +24 -2
  50. package/src/components/ui/select.tsx +4 -4
  51. package/src/components/ui/simple-editor.tsx +3 -18
  52. package/src/components/ui/tabs.tsx +16 -1
  53. package/src/components/ui/textarea.tsx +6 -1
  54. package/src/components/ui/toast.tsx +17 -2
  55. package/src/components/ui/tooltip.tsx +154 -2
  56. package/src/styles/tokens.css +34 -2
package/dist/index.mjs CHANGED
@@ -10,7 +10,7 @@ import { twMerge } from 'tailwind-merge';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import { cva } from 'class-variance-authority';
12
12
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
13
- import { Slot } from '@radix-ui/react-slot';
13
+ import { Slottable, Slot } from '@radix-ui/react-slot';
14
14
  import { motion, AnimatePresence, useMotionValue, useTransform, animate } from 'framer-motion';
15
15
  import { isValid, format, isSameMonth, isToday, subMonths, addMonths, isSameDay, startOfMonth, endOfMonth, eachDayOfInterval, getDay, startOfWeek, endOfWeek } from 'date-fns';
16
16
  export { format } from 'date-fns';
@@ -57,7 +57,7 @@ var AccordionItem = React12.forwardRef(({ className, ...props }, ref) => /* @__P
57
57
  AccordionPrimitive.Item,
58
58
  {
59
59
  ref,
60
- className: cn("moonui-theme", "border-b border-gray-200 dark:border-gray-800", className),
60
+ className: cn("moonui-theme", "border-b border-border", className),
61
61
  ...props
62
62
  }
63
63
  ));
@@ -67,7 +67,9 @@ var AccordionTrigger = React12.forwardRef(({ className, children, ...props }, re
67
67
  {
68
68
  ref,
69
69
  className: cn(
70
- "flex flex-1 items-center justify-between py-4 font-medium transition-all dark:text-gray-100",
70
+ // #661-17: `dark:text-gray-100` KALDIRILDI — tetikleyici artık iki temada
71
+ // da `--foreground`u miras alır (koyu temada 213 31% 91% ≈ gray-100).
72
+ "flex flex-1 items-center justify-between py-4 font-medium transition-all",
71
73
  "hover:underline hover:text-primary",
72
74
  "[&[data-state=open]>svg]:rotate-180",
73
75
  className
@@ -85,7 +87,13 @@ var AccordionContent = React12.forwardRef(({ className, children, ...props }, re
85
87
  {
86
88
  ref,
87
89
  className: cn(
88
- "overflow-hidden text-sm text-gray-700 dark:text-gray-300 transition-all",
90
+ // #661-17: ham `text-gray-700 dark:text-gray-300` → `text-foreground/80`.
91
+ // Ölçüldü (iki tema, kart zemini): açık 10.30 → 11.48, koyu 12.19 → 9.44.
92
+ // İkisi de AA'nın (4.5) çok üstünde, yani eşik geçilmiyor — `#545 ihlal
93
+ // takası` sınıfı bir gerileme YOK. `text-muted-foreground` bilerek
94
+ // SEÇİLMEDİ: açık temada 4.76'ya inip gövde metnini görünür biçimde
95
+ // soldururdu (§9 estetik değişiklik olurdu).
96
+ "overflow-hidden text-sm text-foreground/80 transition-all",
89
97
  "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
90
98
  className
91
99
  ),
@@ -102,7 +110,7 @@ var alertVariants = cva(
102
110
  default: "bg-background text-foreground border-border",
103
111
  primary: "bg-primary/10 text-primary border-primary/30",
104
112
  success: "bg-success/10 text-success border-success/30",
105
- warning: "bg-warning/10 text-warning border-warning/30",
113
+ warning: "bg-warning/10 text-warning-subtle-foreground border-warning/30",
106
114
  error: "bg-destructive/10 text-destructive border-destructive/30",
107
115
  // `--info` token'ı (tokens.css) blue-500 ile birebir aynı değeri
108
116
  // taşır → görsel değişiklik yok, ancak varyant artık temaya ve
@@ -390,11 +398,22 @@ var badgeVariants = cva(
390
398
  // aynı varyant pro pakette token'lıydı → free ve pro `primary` için
391
399
  // farklı renk üretiyordu. Artık token'a bağlı (tema/karanlık moda duyarlı).
392
400
  // `primary` VARSAYILAN varyant olduğu için görünür bir renk değişimidir.
401
+ // #646: `dark:bg-primary/90` KALDIRILDI. `primary` VARSAYILAN varyant olduğu
402
+ // için varyant verilmeyen HER `<Badge>` bu sınıfı alıyordu; `tailwind-merge`
403
+ // `dark:` önekli arka planı tüketicinin ÖNEKSİZ `bg-*` sınıfıyla aynı grupta
404
+ // görmediğinden ikisi birden hayatta kalıyor ve koyu temada `dark:` özgüllükle
405
+ // kazanıyordu. Sonuç: `<Badge className="bg-green-500/20 text-green-300">`
406
+ // koyu temada near-white zemin + açık yeşil metin = 1.10:1 (ölçüldü,
407
+ // magnetic-button "Pending"; swipe-actions'ta 6 rozet 1.10–1.48 aralığında).
408
+ // ÖNEKSİZ `bg-primary` bırakıldı: tüketici sınıfıyla AYNI grupta çakışır ve
409
+ // doğru şekilde ezilir. Rozetin kendi görünümü BOZULMAZ — koyu temada
410
+ // `bg-primary` + `text-primary-foreground` 16.16 → 19.80'e çıkar
411
+ // (yarı saydamlık kalktığı için); açık temada değişiklik yok.
393
412
  primary: [
394
413
  "border-transparent bg-primary text-primary-foreground",
395
414
  "hover:bg-primary/90",
396
415
  "focus-visible:ring-primary/30 dark:focus-visible:ring-primary/40",
397
- "dark:bg-primary/90 dark:shadow-inner dark:shadow-primary/10"
416
+ "dark:shadow-inner dark:shadow-primary/10"
398
417
  ],
399
418
  secondary: [
400
419
  "border-transparent bg-secondary text-secondary-foreground",
@@ -842,9 +861,11 @@ var buttonVariants = cva(
842
861
  ],
843
862
  glow: [
844
863
  "bg-blue-500 text-white",
845
- "shadow-[0_0_30px_rgba(59,130,246,0.5)]",
846
- "hover:shadow-[0_0_40px_rgba(59,130,246,0.7)]",
847
- "active:shadow-[0_0_20px_rgba(59,130,246,0.4)]",
864
+ // #664 S3: rgba(59,130,246,…) → --glow-blue-rgb (tokens.css). Değer AYNI
865
+ // (Tailwind blue-500), yalnız merkezi token'a taşındı — görsel değişiklik yok.
866
+ "shadow-[0_0_30px_rgba(var(--glow-blue-rgb),0.5)]",
867
+ "hover:shadow-[0_0_40px_rgba(var(--glow-blue-rgb),0.7)]",
868
+ "active:shadow-[0_0_20px_rgba(var(--glow-blue-rgb),0.4)]",
848
869
  "hover:bg-blue-600",
849
870
  "focus-visible:ring-blue-500/50",
850
871
  "transition-all duration-300"
@@ -873,8 +894,9 @@ var buttonVariants = cva(
873
894
  "bg-transparent text-green-400",
874
895
  "border-2 border-green-400",
875
896
  "hover:bg-green-400 hover:text-gray-900",
876
- "hover:shadow-[0_0_30px_rgba(74,222,128,0.6)]",
877
- "active:shadow-[0_0_15px_rgba(74,222,128,0.4)]",
897
+ // #664 S3: rgba(74,222,128,…) → --glow-green-rgb (tokens.css), piksel-özdeş.
898
+ "hover:shadow-[0_0_30px_rgba(var(--glow-green-rgb),0.6)]",
899
+ "active:shadow-[0_0_15px_rgba(var(--glow-green-rgb),0.4)]",
878
900
  "focus-visible:ring-green-400/50",
879
901
  "transition-all duration-300"
880
902
  ]
@@ -921,22 +943,40 @@ var Button = React12.forwardRef(
921
943
  rightIcon,
922
944
  children,
923
945
  disabled,
946
+ onClick,
924
947
  ...props
925
948
  }, ref) => {
926
- const Comp = asChild ? "button" : "button";
949
+ const renderAsSlot = asChild && React12.isValidElement(children);
950
+ const Comp = renderAsSlot ? Slot : "button";
951
+ const isDisabled = disabled || loading;
952
+ const disabledProps = renderAsSlot ? {
953
+ "aria-disabled": isDisabled || void 0,
954
+ "data-disabled": isDisabled ? "" : void 0
955
+ } : { disabled: isDisabled };
956
+ const handleClick = renderAsSlot && isDisabled ? (event) => {
957
+ event.preventDefault();
958
+ event.stopPropagation();
959
+ } : onClick;
927
960
  return /* @__PURE__ */ jsxs(
928
961
  Comp,
929
962
  {
930
- className: cn("moonui-theme", buttonVariants({ variant, size, rounded, fullWidth, className })),
963
+ className: cn(
964
+ "moonui-theme",
965
+ buttonVariants({ variant, size, rounded, fullWidth, className }),
966
+ // `:disabled` eşleşmediği için görsel/etkileşimsel devre dışılık Slot
967
+ // dalında açık sınıflarla verilir.
968
+ renderAsSlot && isDisabled && "opacity-50 cursor-not-allowed pointer-events-none"
969
+ ),
931
970
  ref,
932
- disabled: disabled || loading,
971
+ ...disabledProps,
933
972
  "aria-busy": loading || void 0,
934
973
  "data-loading": loading ? "" : void 0,
935
974
  ...props,
975
+ onClick: handleClick,
936
976
  children: [
937
977
  loading && /* @__PURE__ */ jsx(Loader2, { className: "w-4 h-4 animate-spin", "aria-hidden": "true" }),
938
978
  !loading && leftIcon,
939
- children,
979
+ renderAsSlot ? /* @__PURE__ */ jsx(Slottable, { children }) : children,
940
980
  !loading && rightIcon
941
981
  ]
942
982
  }
@@ -1087,16 +1127,16 @@ var skeletonAnimation = {
1087
1127
  }
1088
1128
  };
1089
1129
  var cardVariants = cva(
1090
- "rounded-lg border bg-card text-card-foreground shadow-sm dark:shadow-gray-900/20 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-100 transition-all duration-200",
1130
+ "rounded-lg border border-border bg-card text-card-foreground shadow-sm dark:shadow-black/20 transition-all duration-200",
1091
1131
  {
1092
1132
  variants: {
1093
1133
  variant: {
1094
1134
  default: "",
1095
- outline: "border border-border shadow-none bg-transparent dark:border-gray-700 dark:bg-transparent dark:text-gray-200",
1096
- filled: "border-none bg-secondary dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10",
1097
- elevated: "border-none shadow-md dark:shadow-lg dark:shadow-gray-900/30 dark:bg-card dark:text-gray-100",
1135
+ outline: "border border-border shadow-none bg-transparent dark:bg-transparent",
1136
+ filled: "border-none bg-secondary dark:bg-muted dark:shadow-inner dark:shadow-black/10",
1137
+ elevated: "border-none shadow-md dark:shadow-lg dark:shadow-black/30 dark:bg-card",
1098
1138
  gradient: "border-none bg-gradient-to-br from-primary/5 to-primary/10 dark:from-primary/10 dark:to-primary/20",
1099
- glass: "border border-white/20 bg-white/10 backdrop-blur-md dark:border-gray-700/30 dark:bg-gray-800/10"
1139
+ glass: "border border-white/20 bg-white/10 backdrop-blur-md dark:border-white/10 dark:bg-black/10"
1100
1140
  },
1101
1141
  size: {
1102
1142
  md: "",
@@ -2298,7 +2338,76 @@ var popoverContentVariants = cva(
2298
2338
  }
2299
2339
  }
2300
2340
  );
2301
- var Popover = PopoverPrimitive.Root;
2341
+ var PopoverModalContext = React12.createContext(false);
2342
+ var POPOVER_TAB_STOP_SELECTOR = "a[href],button,input,select,textarea,[tabindex],audio[controls],video[controls],[contenteditable]";
2343
+ function isPopoverElementHidden(node) {
2344
+ const view = node.ownerDocument.defaultView;
2345
+ if (!view)
2346
+ return false;
2347
+ if (view.getComputedStyle(node).visibility === "hidden")
2348
+ return true;
2349
+ let current = node;
2350
+ while (current) {
2351
+ if (view.getComputedStyle(current).display === "none")
2352
+ return true;
2353
+ current = current.parentElement;
2354
+ }
2355
+ return false;
2356
+ }
2357
+ function isPopoverTabStop(node) {
2358
+ if (node.hasAttribute("data-radix-focus-guard"))
2359
+ return false;
2360
+ if (node.tabIndex < 0)
2361
+ return false;
2362
+ if (node.disabled)
2363
+ return false;
2364
+ if (node.hidden)
2365
+ return false;
2366
+ if (node.getAttribute("aria-hidden") === "true")
2367
+ return false;
2368
+ if (node.closest("[inert]"))
2369
+ return false;
2370
+ return !isPopoverElementHidden(node);
2371
+ }
2372
+ function getPopoverTabStopsWithin(container) {
2373
+ return Array.from(
2374
+ container.querySelectorAll(POPOVER_TAB_STOP_SELECTOR)
2375
+ ).filter(isPopoverTabStop);
2376
+ }
2377
+ function getPopoverTrigger(content) {
2378
+ if (!content.id)
2379
+ return null;
2380
+ const id = typeof CSS !== "undefined" && typeof CSS.escape === "function" ? CSS.escape(content.id) : content.id;
2381
+ return content.ownerDocument.querySelector(
2382
+ `[aria-controls="${id}"]`
2383
+ );
2384
+ }
2385
+ function getPopoverTabStopOutside(reference, content, direction) {
2386
+ const candidates = Array.from(
2387
+ content.ownerDocument.querySelectorAll(
2388
+ POPOVER_TAB_STOP_SELECTOR
2389
+ )
2390
+ ).filter((node) => !content.contains(node) && isPopoverTabStop(node));
2391
+ if (direction === "next") {
2392
+ return candidates.find(
2393
+ (node) => Boolean(
2394
+ reference.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING
2395
+ )
2396
+ ) ?? null;
2397
+ }
2398
+ let previous = null;
2399
+ for (const node of candidates) {
2400
+ const relation = reference.compareDocumentPosition(node);
2401
+ if (node === reference || relation & Node.DOCUMENT_POSITION_PRECEDING) {
2402
+ previous = node;
2403
+ } else {
2404
+ break;
2405
+ }
2406
+ }
2407
+ return previous;
2408
+ }
2409
+ var Popover = ({ modal = false, children, ...props }) => /* @__PURE__ */ jsx(PopoverModalContext.Provider, { value: modal, children: /* @__PURE__ */ jsx(PopoverPrimitive.Root, { ...props, modal, children }) });
2410
+ Popover.displayName = "Popover";
2302
2411
  var PopoverTrigger = PopoverPrimitive.Trigger;
2303
2412
  var PopoverAnchor = PopoverPrimitive.Anchor;
2304
2413
  var PopoverContent = React12.forwardRef(({
@@ -2313,42 +2422,79 @@ var PopoverContent = React12.forwardRef(({
2313
2422
  closeOnInteractOutside = true,
2314
2423
  overlayBackdrop = false,
2315
2424
  sideOffset = 4,
2425
+ onKeyDown,
2316
2426
  ...props
2317
- }, ref) => /* @__PURE__ */ jsxs(Fragment, { children: [
2318
- overlayBackdrop && /* @__PURE__ */ jsx(
2319
- "div",
2320
- {
2321
- className: "fixed inset-0 z-40 bg-black/50"
2322
- }
2323
- ),
2324
- /* @__PURE__ */ jsx(
2325
- PopoverPrimitive.Content,
2326
- {
2327
- ref,
2328
- side,
2329
- sideOffset,
2330
- collisionPadding: 8,
2331
- onInteractOutside: (e) => {
2332
- if (!closeOnInteractOutside) {
2333
- e.preventDefault();
2334
- }
2335
- },
2336
- className: cn(
2337
- popoverContentVariants({
2338
- variant,
2339
- size,
2340
- side,
2341
- position,
2342
- radius,
2343
- shadow
2344
- }),
2345
- backdrop && "backdrop-blur-md bg-opacity-80",
2346
- className
2347
- ),
2348
- ...props
2427
+ }, ref) => {
2428
+ const isModal = React12.useContext(PopoverModalContext);
2429
+ const handleKeyDown = (event) => {
2430
+ onKeyDown?.(event);
2431
+ if (event.defaultPrevented)
2432
+ return;
2433
+ if (isModal)
2434
+ return;
2435
+ if (event.key !== "Tab")
2436
+ return;
2437
+ if (event.altKey || event.ctrlKey || event.metaKey)
2438
+ return;
2439
+ const content = event.currentTarget;
2440
+ const active = content.ownerDocument.activeElement;
2441
+ if (!active || active !== content && !content.contains(active))
2442
+ return;
2443
+ const tabStops = getPopoverTabStopsWithin(content);
2444
+ const forward = !event.shiftKey;
2445
+ const atEdge = tabStops.length === 0 ? active === content : active === (forward ? tabStops[tabStops.length - 1] : tabStops[0]);
2446
+ if (!atEdge)
2447
+ return;
2448
+ const reference = getPopoverTrigger(content) ?? content;
2449
+ const target = getPopoverTabStopOutside(
2450
+ reference,
2451
+ content,
2452
+ forward ? "next" : "previous"
2453
+ );
2454
+ event.preventDefault();
2455
+ if (target) {
2456
+ target.focus();
2457
+ } else {
2458
+ active.blur();
2349
2459
  }
2350
- )
2351
- ] }));
2460
+ };
2461
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
2462
+ overlayBackdrop && /* @__PURE__ */ jsx(
2463
+ "div",
2464
+ {
2465
+ className: "fixed inset-0 z-40 bg-black/50"
2466
+ }
2467
+ ),
2468
+ /* @__PURE__ */ jsx(
2469
+ PopoverPrimitive.Content,
2470
+ {
2471
+ ref,
2472
+ side,
2473
+ sideOffset,
2474
+ collisionPadding: 8,
2475
+ onInteractOutside: (e) => {
2476
+ if (!closeOnInteractOutside) {
2477
+ e.preventDefault();
2478
+ }
2479
+ },
2480
+ onKeyDown: handleKeyDown,
2481
+ className: cn(
2482
+ popoverContentVariants({
2483
+ variant,
2484
+ size,
2485
+ side,
2486
+ position,
2487
+ radius,
2488
+ shadow
2489
+ }),
2490
+ backdrop && "backdrop-blur-md bg-opacity-80",
2491
+ className
2492
+ ),
2493
+ ...props
2494
+ }
2495
+ )
2496
+ ] });
2497
+ });
2352
2498
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2353
2499
  var PopoverClose = PopoverPrimitive.Close;
2354
2500
  var PopoverSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(
@@ -2440,7 +2586,22 @@ var tabsTriggerVariants = cva(
2440
2586
  variant: {
2441
2587
  default: "rounded-md data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/10",
2442
2588
  underline: "rounded-none border-b-2 border-transparent pb-2 data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground dark:data-[state=active]:border-primary/80 dark:data-[state=active]:text-gray-100",
2443
- pills: "rounded-lg bg-gray-100 hover:bg-gray-200/80 border border-gray-300 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-primary dark:bg-gray-800 dark:hover:bg-gray-700 dark:border-gray-700 dark:data-[state=active]:bg-primary/90 dark:data-[state=active]:text-white dark:data-[state=active]:border-primary",
2589
+ // #646: `dark:data-[state=active]:text-white` KALDIRILDI. `--primary` koyu
2590
+ // temada BİLİNÇLİ near-white'tır (tokens.css:500, #368 kararı — DEĞİŞMEZ),
2591
+ // dolayısıyla aktif pill'e açıkça beyaz metin yazmak beyaz-üstüne-beyaz
2592
+ // demekti: ölçülen 1.28:1 (gerçek tarayıcı, /docs/components/tabs, koyu tema).
2593
+ // Sınıf kalkınca öneksiz `data-[state=active]:text-primary-foreground`
2594
+ // (koyu temada near-black) devreye girer → 15.91:1. Açık temada hiçbir
2595
+ // değişiklik yok (`dark:` sınıfı orada zaten uygulanmıyordu; ölçülen 4.70:1).
2596
+ //
2597
+ // ⚠️ `dark:data-[state=active]:bg-primary/90` BİLEREK KORUNDU: onu da
2598
+ // kaldırmak #545'in "ihlal takası" tuzağına düşürüyor. Aynı varyanttaki
2599
+ // `dark:bg-gray-800` (inaktif zemin) ile `data-[state=active]:bg-primary`
2600
+ // ÖZGÜLLÜKÇE EŞİT (0,2,0); kaynak sırası nedeniyle `dark:bg-gray-800`
2601
+ // kazanıyor ve aktif pill koyu temada inaktif görünüyordu — near-black metin
2602
+ // gray-800 üstünde 1.41:1 ile YENİ bir ihlal (ölçüldü). Koyu temada aktif
2603
+ // durumun zemini bu yüzden `dark:` özgüllüğünde kalmak ZORUNDA.
2604
+ pills: "rounded-lg bg-gray-100 hover:bg-gray-200/80 border border-gray-300 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-primary dark:bg-gray-800 dark:hover:bg-gray-700 dark:border-gray-700 dark:data-[state=active]:bg-primary/90 dark:data-[state=active]:border-primary",
2444
2605
  cards: "rounded-md bg-muted/50 hover:bg-muted data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md dark:bg-gray-800/50 dark:hover:bg-gray-700/50 dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/20",
2445
2606
  minimal: "rounded-sm bg-transparent hover:bg-muted/30 data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:underline data-[state=active]:underline-offset-4 dark:hover:bg-gray-800/30 dark:data-[state=active]:text-gray-200"
2446
2607
  },
@@ -4823,7 +4984,61 @@ function DraggableList({
4823
4984
  keyExtractor(item)
4824
4985
  )) });
4825
4986
  }
4826
- var DropdownMenu = DropdownMenuPrimitive.Root;
4987
+ var DropdownMenuCloseContext = React12.createContext(null);
4988
+ var DropdownMenu = ({
4989
+ open,
4990
+ defaultOpen,
4991
+ onOpenChange,
4992
+ children,
4993
+ ...props
4994
+ }) => {
4995
+ const [uncontrolledOpen, setUncontrolledOpen] = React12.useState(
4996
+ defaultOpen ?? false
4997
+ );
4998
+ const isControlled = open !== void 0;
4999
+ const currentOpen = isControlled ? open : uncontrolledOpen;
5000
+ const handleOpenChange = React12.useCallback(
5001
+ (nextOpen) => {
5002
+ if (!isControlled)
5003
+ setUncontrolledOpen(nextOpen);
5004
+ onOpenChange?.(nextOpen);
5005
+ },
5006
+ [isControlled, onOpenChange]
5007
+ );
5008
+ const close = React12.useCallback(() => handleOpenChange(false), [
5009
+ handleOpenChange
5010
+ ]);
5011
+ return /* @__PURE__ */ jsx(DropdownMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx(
5012
+ DropdownMenuPrimitive.Root,
5013
+ {
5014
+ ...props,
5015
+ open: currentOpen,
5016
+ onOpenChange: handleOpenChange,
5017
+ children
5018
+ }
5019
+ ) });
5020
+ };
5021
+ DropdownMenu.displayName = "DropdownMenu";
5022
+ function useDropdownMenuTabDismiss(onKeyDown) {
5023
+ const close = React12.useContext(DropdownMenuCloseContext);
5024
+ return (event) => {
5025
+ onKeyDown?.(event);
5026
+ if (event.defaultPrevented)
5027
+ return;
5028
+ if (event.key !== "Tab")
5029
+ return;
5030
+ if (event.altKey || event.ctrlKey || event.metaKey)
5031
+ return;
5032
+ if (!close)
5033
+ return;
5034
+ const target = event.target;
5035
+ if (target?.closest("[data-radix-menu-content]") !== event.currentTarget) {
5036
+ return;
5037
+ }
5038
+ event.preventDefault();
5039
+ close();
5040
+ };
5041
+ }
4827
5042
  var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
4828
5043
  var DropdownMenuGroup = DropdownMenuPrimitive.Group;
4829
5044
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
@@ -4846,30 +5061,38 @@ var DropdownMenuSubTrigger = React12.forwardRef(({ className, inset, children, .
4846
5061
  }
4847
5062
  ));
4848
5063
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
4849
- var DropdownMenuSubContent = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
4850
- DropdownMenuPrimitive.SubContent,
4851
- {
4852
- ref,
4853
- className: cn(
4854
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
4855
- className
4856
- ),
4857
- ...props
4858
- }
4859
- ));
5064
+ var DropdownMenuSubContent = React12.forwardRef(({ className, onKeyDown, ...props }, ref) => {
5065
+ const handleKeyDown = useDropdownMenuTabDismiss(onKeyDown);
5066
+ return /* @__PURE__ */ jsx(
5067
+ DropdownMenuPrimitive.SubContent,
5068
+ {
5069
+ ref,
5070
+ onKeyDown: handleKeyDown,
5071
+ className: cn(
5072
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
5073
+ className
5074
+ ),
5075
+ ...props
5076
+ }
5077
+ );
5078
+ });
4860
5079
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
4861
- var DropdownMenuContent = React12.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
4862
- DropdownMenuPrimitive.Content,
4863
- {
4864
- ref,
4865
- sideOffset,
4866
- className: cn(
4867
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
4868
- className
4869
- ),
4870
- ...props
4871
- }
4872
- ) }));
5080
+ var DropdownMenuContent = React12.forwardRef(({ className, sideOffset = 4, onKeyDown, ...props }, ref) => {
5081
+ const handleKeyDown = useDropdownMenuTabDismiss(onKeyDown);
5082
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
5083
+ DropdownMenuPrimitive.Content,
5084
+ {
5085
+ ref,
5086
+ sideOffset,
5087
+ onKeyDown: handleKeyDown,
5088
+ className: cn(
5089
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
5090
+ className
5091
+ ),
5092
+ ...props
5093
+ }
5094
+ ) });
5095
+ });
4873
5096
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
4874
5097
  var DropdownMenuItem = React12.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
4875
5098
  DropdownMenuPrimitive.Item,
@@ -5353,6 +5576,10 @@ var FileUpload = React12__default.forwardRef(
5353
5576
  {
5354
5577
  className: cn(
5355
5578
  "relative border-2 border-dashed rounded-lg p-8 text-center transition-colors",
5579
+ // #661-2: dosya girdisi `opacity-0` ile tum alani kapliyor; klavyeyle
5580
+ // Tab'landiginda HICBIR gorsel iz yoktu (WCAG 2.4.7). Odak halkasi
5581
+ // sarmalayiciya `focus-within` ile bagli — kutunun kendisi odaklanamaz.
5582
+ "focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2",
5356
5583
  isDragOver && "border-primary bg-primary/5",
5357
5584
  disabled && "opacity-50 cursor-not-allowed",
5358
5585
  !disabled && "hover:border-primary/50 cursor-pointer"
@@ -6268,7 +6495,7 @@ var selectTriggerVariants = cva(
6268
6495
  );
6269
6496
  var SelectTrigger = React12.forwardRef(({ className, children, variant, size, error, success, loading, leftIcon, rightIcon, ...props }, ref) => {
6270
6497
  const icerikId = React12.useId();
6271
- const adVerilmis = props["aria-label"] != null || props["aria-labelledby"] != null;
6498
+ const isNamed = props["aria-label"] != null || props["aria-labelledby"] != null;
6272
6499
  return /* @__PURE__ */ jsxs(
6273
6500
  SelectPrimitive.Trigger,
6274
6501
  {
@@ -6287,7 +6514,7 @@ var SelectTrigger = React12.forwardRef(({ className, children, variant, size, er
6287
6514
  "data-error": error ? true : void 0,
6288
6515
  "data-success": success ? true : void 0,
6289
6516
  "data-loading": loading ? true : void 0,
6290
- "aria-labelledby": adVerilmis ? props["aria-labelledby"] : icerikId,
6517
+ "aria-labelledby": isNamed ? props["aria-labelledby"] : icerikId,
6291
6518
  children: [
6292
6519
  /* @__PURE__ */ jsxs("div", { id: icerikId, className: "flex items-center flex-1 gap-2", children: [
6293
6520
  leftIcon && /* @__PURE__ */ jsx("span", { className: "flex items-center justify-center text-muted-foreground", children: leftIcon }),
@@ -6395,8 +6622,8 @@ var SelectItem = React12.forwardRef(({ className, children, variant = "default",
6395
6622
  variant === "default" && "focus:bg-accent focus:text-accent-foreground dark:focus:bg-gray-700 dark:focus:text-gray-100",
6396
6623
  variant === "subtle" && "focus:bg-gray-100 dark:focus:bg-gray-800 focus:text-foreground dark:focus:text-gray-200",
6397
6624
  variant === "destructive" && "text-error dark:text-red-400 focus:bg-error/10 dark:focus:bg-red-900/20 focus:text-error dark:focus:text-red-300",
6398
- variant === "success" && "text-success dark:text-green-400 focus:bg-success/10 dark:focus:bg-green-900/20 focus:text-success dark:focus:text-green-300",
6399
- variant === "warning" && "text-warning dark:text-yellow-400 focus:bg-warning/10 dark:focus:bg-yellow-900/20 focus:text-warning dark:focus:text-yellow-300",
6625
+ variant === "success" && "text-success focus:bg-success/10 focus:text-success",
6626
+ variant === "warning" && "text-warning-700 dark:text-warning-500 focus:bg-warning/10 focus:text-warning-700 dark:focus:text-warning-500",
6400
6627
  className
6401
6628
  ),
6402
6629
  ...props,
@@ -7169,8 +7396,100 @@ var tooltipVariants = cva(
7169
7396
  }
7170
7397
  }
7171
7398
  );
7172
- var Tooltip = TooltipPrimitive.Root;
7173
- var TooltipTrigger = TooltipPrimitive.Trigger;
7399
+ var TooltipFocusHoldContext = React12.createContext(null);
7400
+ function isKeyboardFocus(element) {
7401
+ if (!element)
7402
+ return false;
7403
+ try {
7404
+ return element.matches(":focus-visible");
7405
+ } catch {
7406
+ return true;
7407
+ }
7408
+ }
7409
+ var Tooltip = ({
7410
+ open,
7411
+ defaultOpen,
7412
+ onOpenChange,
7413
+ children,
7414
+ ...props
7415
+ }) => {
7416
+ const isControlled = open !== void 0;
7417
+ const [uncontrolledOpen, setUncontrolledOpen] = React12.useState(defaultOpen ?? false);
7418
+ const resolvedOpen = isControlled ? open : uncontrolledOpen;
7419
+ const isFocusHeldRef = React12.useRef(false);
7420
+ const hold = React12.useCallback(() => {
7421
+ isFocusHeldRef.current = true;
7422
+ }, []);
7423
+ const release = React12.useCallback(() => {
7424
+ isFocusHeldRef.current = false;
7425
+ }, []);
7426
+ const setOpen = React12.useCallback(
7427
+ (next) => {
7428
+ if (!isControlled)
7429
+ setUncontrolledOpen(next);
7430
+ onOpenChange?.(next);
7431
+ },
7432
+ [isControlled, onOpenChange]
7433
+ );
7434
+ const handleOpenChange = React12.useCallback(
7435
+ (next) => {
7436
+ if (!next && isFocusHeldRef.current)
7437
+ return;
7438
+ setOpen(next);
7439
+ },
7440
+ [setOpen]
7441
+ );
7442
+ React12.useEffect(() => {
7443
+ if (!resolvedOpen)
7444
+ return;
7445
+ const handleEscape = (event) => {
7446
+ if (event.key !== "Escape")
7447
+ return;
7448
+ isFocusHeldRef.current = false;
7449
+ setOpen(false);
7450
+ };
7451
+ document.addEventListener("keydown", handleEscape, true);
7452
+ return () => document.removeEventListener("keydown", handleEscape, true);
7453
+ }, [resolvedOpen, setOpen]);
7454
+ const focusHold = React12.useMemo(
7455
+ () => ({ hold, release }),
7456
+ [hold, release]
7457
+ );
7458
+ return /* @__PURE__ */ jsx(TooltipFocusHoldContext.Provider, { value: focusHold, children: /* @__PURE__ */ jsx(
7459
+ TooltipPrimitive.Root,
7460
+ {
7461
+ ...props,
7462
+ open: resolvedOpen,
7463
+ onOpenChange: handleOpenChange,
7464
+ children
7465
+ }
7466
+ ) });
7467
+ };
7468
+ Tooltip.displayName = "Tooltip";
7469
+ var TooltipTrigger = React12.forwardRef(({ onFocus, onBlur, onPointerDown, ...props }, ref) => {
7470
+ const focusHold = React12.useContext(TooltipFocusHoldContext);
7471
+ return /* @__PURE__ */ jsx(
7472
+ TooltipPrimitive.Trigger,
7473
+ {
7474
+ ref,
7475
+ ...props,
7476
+ onFocus: (event) => {
7477
+ if (isKeyboardFocus(event.currentTarget))
7478
+ focusHold?.hold();
7479
+ onFocus?.(event);
7480
+ },
7481
+ onBlur: (event) => {
7482
+ focusHold?.release();
7483
+ onBlur?.(event);
7484
+ },
7485
+ onPointerDown: (event) => {
7486
+ focusHold?.release();
7487
+ onPointerDown?.(event);
7488
+ }
7489
+ }
7490
+ );
7491
+ });
7492
+ TooltipTrigger.displayName = TooltipPrimitive.Trigger.displayName;
7174
7493
  var TooltipArrow = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7175
7494
  TooltipPrimitive.Arrow,
7176
7495
  {
@@ -8549,7 +8868,7 @@ var Textarea = React12.forwardRef(
8549
8868
  children: errorMessage || successMessage
8550
8869
  }
8551
8870
  ),
8552
- showCharCount && /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground dark:text-gray-500 ml-auto", children: [
8871
+ showCharCount && /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground ml-auto", children: [
8553
8872
  currentLength,
8554
8873
  maxLength !== void 0 && ` / ${maxLength}`
8555
8874
  ] })
@@ -8896,6 +9215,12 @@ var Rating = React12.forwardRef(
8896
9215
  },
8897
9216
  [readOnly, max, currentValue, step, commit]
8898
9217
  );
9218
+ const reactId = React12.useId();
9219
+ const optionId = React12.useCallback(
9220
+ (optionValue) => `${reactId}-option-${String(optionValue).replace(".", "-")}`,
9221
+ [reactId]
9222
+ );
9223
+ const activeValue = currentValue >= step && currentValue <= max ? currentValue : step;
8899
9224
  const renderIcon = (filled) => {
8900
9225
  if (React12.isValidElement(icon)) {
8901
9226
  const element = icon;
@@ -8925,6 +9250,7 @@ var Rating = React12.forwardRef(
8925
9250
  "aria-label": ariaLabel,
8926
9251
  "aria-orientation": "horizontal",
8927
9252
  "aria-readonly": readOnly || void 0,
9253
+ "aria-activedescendant": readOnly ? void 0 : optionId(activeValue),
8928
9254
  tabIndex: readOnly ? void 0 : 0,
8929
9255
  onKeyDown: handleKeyDown,
8930
9256
  onMouseLeave: () => setHoverValue(null),
@@ -8947,7 +9273,7 @@ var Rating = React12.forwardRef(
8947
9273
  "span",
8948
9274
  {
8949
9275
  "aria-hidden": "true",
8950
- className: "pointer-events-none absolute left-0 top-0 h-full overflow-hidden text-amber-400",
9276
+ className: "pointer-events-none absolute left-0 top-0 h-full overflow-hidden text-[rgb(var(--rating-star-rgb))]",
8951
9277
  style: { width: `${fraction * 100}%` },
8952
9278
  children: renderIcon(true)
8953
9279
  }
@@ -8958,6 +9284,7 @@ var Rating = React12.forwardRef(
8958
9284
  {
8959
9285
  type: "button",
8960
9286
  role: "radio",
9287
+ id: optionId(halfValue),
8961
9288
  "aria-checked": currentValue === halfValue,
8962
9289
  "aria-label": `${halfValue} stars`,
8963
9290
  tabIndex: -1,
@@ -8971,6 +9298,7 @@ var Rating = React12.forwardRef(
8971
9298
  {
8972
9299
  type: "button",
8973
9300
  role: "radio",
9301
+ id: optionId(starValue),
8974
9302
  "aria-checked": currentValue === starValue,
8975
9303
  "aria-label": `${starValue} stars`,
8976
9304
  tabIndex: -1,
@@ -8985,6 +9313,7 @@ var Rating = React12.forwardRef(
8985
9313
  {
8986
9314
  type: "button",
8987
9315
  role: "radio",
9316
+ id: optionId(starValue),
8988
9317
  "aria-checked": currentValue === starValue,
8989
9318
  "aria-label": `${starValue} ${starValue === 1 ? "star" : "stars"}`,
8990
9319
  tabIndex: -1,
@@ -9182,6 +9511,6 @@ var ToggleGroupItem = React12.forwardRef(({ className, children, variant, size,
9182
9511
  });
9183
9512
  ToggleGroupItem.displayName = "ToggleGroupItem";
9184
9513
 
9185
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, Card, CardCVCInput, CardContent, CardDescription, CardExpiryInput, CardFooter, CardHeader, CardNumberInput, CardTitle, CardZipInput, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxGroup, CheckboxLabel, CheckboxWithLabel, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorPicker, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DatePicker, DateRangePicker, DateTimePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogForm, DialogHeader, DialogTitle, DialogTrigger, DraggableList, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, FreeBadge, GestureDrawer, GitHubStarButton, GitHubStars, GradientPicker, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label, LockedComponent, MonthPicker, MoonLogo, MoonLogoAnimated, MoonLogoIcon, Accordion as MoonUIAccordion, AccordionContent as MoonUIAccordionContent, AccordionItem as MoonUIAccordionItem, AccordionTrigger as MoonUIAccordionTrigger, Alert as MoonUIAlert, AlertDescription as MoonUIAlertDescription, AlertTitle as MoonUIAlertTitle, AspectRatio as MoonUIAspectRatio, Avatar as MoonUIAvatar, AvatarFallback as MoonUIAvatarFallback, AvatarGroup as MoonUIAvatarGroup, AvatarImage as MoonUIAvatarImage, Badge as MoonUIBadge, Breadcrumb as MoonUIBreadcrumb, BreadcrumbEllipsis as MoonUIBreadcrumbEllipsis, BreadcrumbItem as MoonUIBreadcrumbItem, BreadcrumbLink as MoonUIBreadcrumbLink, BreadcrumbList as MoonUIBreadcrumbList, BreadcrumbPage as MoonUIBreadcrumbPage, BreadcrumbSeparator as MoonUIBreadcrumbSeparator, Button as MoonUIButton, ButtonGroup as MoonUIButtonGroup, Calendar as MoonUICalendar, Card as MoonUICard, CardCVCInput as MoonUICardCVCInput, CardContent as MoonUICardContent, CardDescription as MoonUICardDescription, CardExpiryInput as MoonUICardExpiryInput, CardFooter as MoonUICardFooter, CardHeader as MoonUICardHeader, CardNumberInput as MoonUICardNumberInput, CardTitle as MoonUICardTitle, CardZipInput as MoonUICardZipInput, Carousel as MoonUICarousel, CarouselContent as MoonUICarouselContent, CarouselItem as MoonUICarouselItem, CarouselNext as MoonUICarouselNext, CarouselPrevious as MoonUICarouselPrevious, Checkbox as MoonUICheckbox, CheckboxGroup as MoonUICheckboxGroup, CheckboxLabel as MoonUICheckboxLabel, CheckboxWithLabel as MoonUICheckboxWithLabel, Collapsible as MoonUICollapsible, CollapsibleContent as MoonUICollapsibleContent, CollapsibleTrigger as MoonUICollapsibleTrigger, ColorPicker as MoonUIColorPicker, Command as MoonUICommand, CommandDialog as MoonUICommandDialog, CommandEmpty as MoonUICommandEmpty, CommandGroup as MoonUICommandGroup, CommandInput as MoonUICommandInput, CommandItem as MoonUICommandItem, CommandList as MoonUICommandList, CommandSeparator as MoonUICommandSeparator, CommandShortcut as MoonUICommandShortcut, DataTableBasic as MoonUIDataTableBasic, DatePicker as MoonUIDatePicker, DateRangePicker as MoonUIDateRangePicker, DateTimePicker as MoonUIDateTimePicker, Dialog as MoonUIDialog, DialogClose as MoonUIDialogClose, DialogContent as MoonUIDialogContent, DialogDescription as MoonUIDialogDescription, DialogFooter as MoonUIDialogFooter, DialogForm as MoonUIDialogForm, DialogHeader as MoonUIDialogHeader, DialogTitle as MoonUIDialogTitle, DialogTrigger as MoonUIDialogTrigger, DraggableList as MoonUIDraggableList, DropdownMenu as MoonUIDropdownMenu, DropdownMenuCheckboxItem as MoonUIDropdownMenuCheckboxItem, DropdownMenuContent as MoonUIDropdownMenuContent, DropdownMenuGroup as MoonUIDropdownMenuGroup, DropdownMenuItem as MoonUIDropdownMenuItem, DropdownMenuLabel as MoonUIDropdownMenuLabel, DropdownMenuPortal as MoonUIDropdownMenuPortal, DropdownMenuRadioGroup as MoonUIDropdownMenuRadioGroup, DropdownMenuRadioItem as MoonUIDropdownMenuRadioItem, DropdownMenuSeparator as MoonUIDropdownMenuSeparator, DropdownMenuShortcut as MoonUIDropdownMenuShortcut, DropdownMenuSub as MoonUIDropdownMenuSub, DropdownMenuSubContent as MoonUIDropdownMenuSubContent, DropdownMenuSubTrigger as MoonUIDropdownMenuSubTrigger, DropdownMenuTrigger as MoonUIDropdownMenuTrigger, FileUpload as MoonUIFileUpload, FreeBadge as MoonUIFreeBadge, GestureDrawer as MoonUIGestureDrawer, GitHubStars as MoonUIGitHubStars, GradientPicker as MoonUIGradientPicker, Input as MoonUIInput, InputOTP as MoonUIInputOTP, InputOTPGroup as MoonUIInputOTPGroup, InputOTPSeparator as MoonUIInputOTPSeparator, InputOTPSlot as MoonUIInputOTPSlot, Kbd as MoonUIKbd, Label as MoonUILabel, LockedComponent as MoonUILockedComponent, MonthPicker as MoonUIMonthPicker, MoonLogo as MoonUIMoonLogo, Pagination as MoonUIPagination, PaginationContent as MoonUIPaginationContent, PaginationEllipsis as MoonUIPaginationEllipsis, PaginationItem as MoonUIPaginationItem, PaginationLink as MoonUIPaginationLink, PaginationNext as MoonUIPaginationNext, PaginationPrevious as MoonUIPaginationPrevious, PhoneInput as MoonUIPhoneInput, Popover as MoonUIPopover, PopoverAnchor as MoonUIPopoverAnchor, PopoverClose as MoonUIPopoverClose, PopoverContent as MoonUIPopoverContent, PopoverFooter as MoonUIPopoverFooter, PopoverHeader as MoonUIPopoverHeader, PopoverSeparator as MoonUIPopoverSeparator, PopoverTrigger as MoonUIPopoverTrigger, ProBadge as MoonUIProBadge, ProComponentWrapper as MoonUIProComponentWrapper, Progress as MoonUIProgress, RadioGroup2 as MoonUIRadioGroup, RadioGroupItem as MoonUIRadioGroupItem, RadioItemWithLabel as MoonUIRadioItemWithLabel, RadioLabel as MoonUIRadioLabel, Rating as MoonUIRating, RichTextEditor as MoonUIRichTextEditor, ScrollArea as MoonUIScrollArea, ScrollBar as MoonUIScrollBar, ScrollReveal as MoonUIScrollReveal, ScrollRevealContainer as MoonUIScrollRevealContainer, ScrollRevealItem as MoonUIScrollRevealItem, Select as MoonUISelect, SelectContent as MoonUISelectContent, SelectGroup as MoonUISelectGroup, SelectItem as MoonUISelectItem, SelectLabel as MoonUISelectLabel, SelectScrollDownButton as MoonUISelectScrollDownButton, SelectScrollUpButton as MoonUISelectScrollUpButton, SelectSeparator as MoonUISelectSeparator, SelectTrigger as MoonUISelectTrigger, SelectValue as MoonUISelectValue, Separator3 as MoonUISeparator, SimpleColorPicker as MoonUISimpleColorPicker, SimpleEditor as MoonUISimpleEditor, SimpleTooltip as MoonUISimpleTooltip, Skeleton as MoonUISkeleton, SkeletonAvatar as MoonUISkeletonAvatar, SkeletonCard as MoonUISkeletonCard, SkeletonText as MoonUISkeletonText, Slider as MoonUISlider, Spinner as MoonUISpinner, SwipeableCard as MoonUISwipeableCard, Switch as MoonUISwitch, Table as MoonUITable, TableBody as MoonUITableBody, TableCaption as MoonUITableCaption, TableCell as MoonUITableCell, TableFooter as MoonUITableFooter, TableHead as MoonUITableHead, TableHeader as MoonUITableHeader, TableRow as MoonUITableRow, Tabs as MoonUITabs, TabsContent as MoonUITabsContent, TabsList as MoonUITabsList, TabsTrigger as MoonUITabsTrigger, TagsInput as MoonUITagsInput, Textarea as MoonUITextarea, Toast as MoonUIToast, ToastAction as MoonUIToastAction, ToastClose as MoonUIToastClose, ToastDescription as MoonUIToastDescription, ToastProvider as MoonUIToastProvider, ToastTitle as MoonUIToastTitle, ToastViewport as MoonUIToastViewport, Toaster as MoonUIToaster, Toggle as MoonUIToggle, ToggleGroup as MoonUIToggleGroup, ToggleGroupItem as MoonUIToggleGroupItem, Tooltip as MoonUITooltip, TooltipArrow as MoonUITooltipArrow, TooltipContent as MoonUITooltipContent, TooltipProvider as MoonUITooltipProvider, TooltipTrigger as MoonUITooltipTrigger, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneInput, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverFooter, PopoverHeader, PopoverSeparator, PopoverTrigger, ProBadge, ProComponentWrapper, Progress, RadioGroup2 as RadioGroup, RadioGroupItem, RadioItemWithLabel, RadioLabel, Rating, RichTextEditor, ScrollArea, ScrollBar, ScrollReveal, ScrollRevealContainer, ScrollRevealItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, SimpleColorPicker, SimpleEditor, SimpleTooltip, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, Spinner, SwipeableCard, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, aspectRatioVariants, badgeVariants, breadcrumbVariants, buttonGroupVariants, buttonVariants, cardVariants, carouselContentVariants, carouselItemVariants, cn, collapsibleContentVariants, collapsibleTriggerVariants, inputOTPSlotVariants, kbdVariants, badgeVariants as moonUIBadgeVariants, buttonGroupVariants as moonUIButtonGroupVariants, buttonVariants as moonUIButtonVariants, carouselContentVariants as moonUICarouselContentVariants, carouselItemVariants as moonUICarouselItemVariants, createSortableHeader as moonUICreateSortableHeader, inputOTPSlotVariants as moonUIInputOTPSlotVariants, kbdVariants as moonUIKbdVariants, popoverContentVariants as moonUIPopoverContentVariants, ratingVariants as moonUIRatingVariants, skeletonVariants as moonUISkeletonVariants, spinnerVariants as moonUISpinnerVariants, toggleVariants as moonUIToggleVariants, tooltipVariants as moonUITooltipVariants, popoverContentVariants, progressVariants, ratingVariants, separatorVariants, skeletonVariants, spinnerVariants, switchVariants, tabsListVariants, tabsTriggerVariants, toast, toggleVariants, tooltipVariants, useCarousel, useToast };
9514
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, Card, CardCVCInput, CardContent, CardDescription, CardExpiryInput, CardFooter, CardHeader, CardNumberInput, CardTitle, CardZipInput, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxGroup, CheckboxLabel, CheckboxWithLabel, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorPicker, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DatePicker, DateRangePicker, DateTimePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogForm, DialogHeader, DialogTitle, DialogTrigger, DraggableList, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, FreeBadge, GestureDrawer, GitHubStarButton, GitHubStars, GradientPicker, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label, LockedComponent, MonthPicker, MoonLogo, MoonLogoAnimated, MoonLogoIcon, Accordion as MoonUIAccordion, AccordionContent as MoonUIAccordionContent, AccordionItem as MoonUIAccordionItem, AccordionTrigger as MoonUIAccordionTrigger, Alert as MoonUIAlert, AlertDescription as MoonUIAlertDescription, AlertTitle as MoonUIAlertTitle, AspectRatio as MoonUIAspectRatio, Avatar as MoonUIAvatar, AvatarFallback as MoonUIAvatarFallback, AvatarGroup as MoonUIAvatarGroup, AvatarImage as MoonUIAvatarImage, Badge as MoonUIBadge, Breadcrumb as MoonUIBreadcrumb, BreadcrumbEllipsis as MoonUIBreadcrumbEllipsis, BreadcrumbItem as MoonUIBreadcrumbItem, BreadcrumbLink as MoonUIBreadcrumbLink, BreadcrumbList as MoonUIBreadcrumbList, BreadcrumbPage as MoonUIBreadcrumbPage, BreadcrumbSeparator as MoonUIBreadcrumbSeparator, Button as MoonUIButton, ButtonGroup as MoonUIButtonGroup, Calendar as MoonUICalendar, Card as MoonUICard, CardCVCInput as MoonUICardCVCInput, CardContent as MoonUICardContent, CardDescription as MoonUICardDescription, CardExpiryInput as MoonUICardExpiryInput, CardFooter as MoonUICardFooter, CardHeader as MoonUICardHeader, CardNumberInput as MoonUICardNumberInput, CardTitle as MoonUICardTitle, CardZipInput as MoonUICardZipInput, Carousel as MoonUICarousel, CarouselContent as MoonUICarouselContent, CarouselItem as MoonUICarouselItem, CarouselNext as MoonUICarouselNext, CarouselPrevious as MoonUICarouselPrevious, Checkbox as MoonUICheckbox, CheckboxGroup as MoonUICheckboxGroup, CheckboxLabel as MoonUICheckboxLabel, CheckboxWithLabel as MoonUICheckboxWithLabel, Collapsible as MoonUICollapsible, CollapsibleContent as MoonUICollapsibleContent, CollapsibleTrigger as MoonUICollapsibleTrigger, ColorPicker as MoonUIColorPicker, Command as MoonUICommand, CommandDialog as MoonUICommandDialog, CommandEmpty as MoonUICommandEmpty, CommandGroup as MoonUICommandGroup, CommandInput as MoonUICommandInput, CommandItem as MoonUICommandItem, CommandList as MoonUICommandList, CommandSeparator as MoonUICommandSeparator, CommandShortcut as MoonUICommandShortcut, DataTableBasic as MoonUIDataTableBasic, DatePicker as MoonUIDatePicker, DateRangePicker as MoonUIDateRangePicker, DateTimePicker as MoonUIDateTimePicker, Dialog as MoonUIDialog, DialogClose as MoonUIDialogClose, DialogContent as MoonUIDialogContent, DialogDescription as MoonUIDialogDescription, DialogFooter as MoonUIDialogFooter, DialogForm as MoonUIDialogForm, DialogHeader as MoonUIDialogHeader, DialogTitle as MoonUIDialogTitle, DialogTrigger as MoonUIDialogTrigger, DraggableList as MoonUIDraggableList, DropdownMenu as MoonUIDropdownMenu, DropdownMenuCheckboxItem as MoonUIDropdownMenuCheckboxItem, DropdownMenuContent as MoonUIDropdownMenuContent, DropdownMenuGroup as MoonUIDropdownMenuGroup, DropdownMenuItem as MoonUIDropdownMenuItem, DropdownMenuLabel as MoonUIDropdownMenuLabel, DropdownMenuPortal as MoonUIDropdownMenuPortal, DropdownMenuRadioGroup as MoonUIDropdownMenuRadioGroup, DropdownMenuRadioItem as MoonUIDropdownMenuRadioItem, DropdownMenuSeparator as MoonUIDropdownMenuSeparator, DropdownMenuShortcut as MoonUIDropdownMenuShortcut, DropdownMenuSub as MoonUIDropdownMenuSub, DropdownMenuSubContent as MoonUIDropdownMenuSubContent, DropdownMenuSubTrigger as MoonUIDropdownMenuSubTrigger, DropdownMenuTrigger as MoonUIDropdownMenuTrigger, FileUpload as MoonUIFileUpload, FreeBadge as MoonUIFreeBadge, GestureDrawer as MoonUIGestureDrawer, GitHubStars as MoonUIGitHubStars, GradientPicker as MoonUIGradientPicker, Input as MoonUIInput, InputOTP as MoonUIInputOTP, InputOTPGroup as MoonUIInputOTPGroup, InputOTPSeparator as MoonUIInputOTPSeparator, InputOTPSlot as MoonUIInputOTPSlot, Kbd as MoonUIKbd, Label as MoonUILabel, LockedComponent as MoonUILockedComponent, MonthPicker as MoonUIMonthPicker, MoonLogo as MoonUIMoonLogo, Pagination as MoonUIPagination, PaginationContent as MoonUIPaginationContent, PaginationEllipsis as MoonUIPaginationEllipsis, PaginationItem as MoonUIPaginationItem, PaginationLink as MoonUIPaginationLink, PaginationNext as MoonUIPaginationNext, PaginationPrevious as MoonUIPaginationPrevious, PhoneInput as MoonUIPhoneInput, Popover as MoonUIPopover, PopoverAnchor as MoonUIPopoverAnchor, PopoverClose as MoonUIPopoverClose, PopoverContent as MoonUIPopoverContent, PopoverFooter as MoonUIPopoverFooter, PopoverHeader as MoonUIPopoverHeader, PopoverSeparator as MoonUIPopoverSeparator, PopoverTrigger as MoonUIPopoverTrigger, ProBadge as MoonUIProBadge, ProComponentWrapper as MoonUIProComponentWrapper, Progress as MoonUIProgress, RadioGroup2 as MoonUIRadioGroup, RadioGroupItem as MoonUIRadioGroupItem, RadioItemWithLabel as MoonUIRadioItemWithLabel, RadioLabel as MoonUIRadioLabel, Rating as MoonUIRating, RichTextEditor as MoonUIRichTextEditor, ScrollArea as MoonUIScrollArea, ScrollBar as MoonUIScrollBar, ScrollReveal as MoonUIScrollReveal, ScrollRevealContainer as MoonUIScrollRevealContainer, ScrollRevealItem as MoonUIScrollRevealItem, Select as MoonUISelect, SelectContent as MoonUISelectContent, SelectGroup as MoonUISelectGroup, SelectItem as MoonUISelectItem, SelectLabel as MoonUISelectLabel, SelectScrollDownButton as MoonUISelectScrollDownButton, SelectScrollUpButton as MoonUISelectScrollUpButton, SelectSeparator as MoonUISelectSeparator, SelectTrigger as MoonUISelectTrigger, SelectValue as MoonUISelectValue, Separator3 as MoonUISeparator, SimpleColorPicker as MoonUISimpleColorPicker, SimpleEditor as MoonUISimpleEditor, SimpleTooltip as MoonUISimpleTooltip, Skeleton as MoonUISkeleton, SkeletonAvatar as MoonUISkeletonAvatar, SkeletonCard as MoonUISkeletonCard, SkeletonText as MoonUISkeletonText, Slider as MoonUISlider, Spinner as MoonUISpinner, SwipeableCard as MoonUISwipeableCard, Switch as MoonUISwitch, Table as MoonUITable, TableBody as MoonUITableBody, TableCaption as MoonUITableCaption, TableCell as MoonUITableCell, TableFooter as MoonUITableFooter, TableHead as MoonUITableHead, TableHeader as MoonUITableHeader, TableRow as MoonUITableRow, Tabs as MoonUITabs, TabsContent as MoonUITabsContent, TabsList as MoonUITabsList, TabsTrigger as MoonUITabsTrigger, TagsInput as MoonUITagsInput, Textarea as MoonUITextarea, Toast as MoonUIToast, ToastAction as MoonUIToastAction, ToastClose as MoonUIToastClose, ToastDescription as MoonUIToastDescription, ToastProvider as MoonUIToastProvider, ToastTitle as MoonUIToastTitle, ToastViewport as MoonUIToastViewport, Toaster as MoonUIToaster, Toggle as MoonUIToggle, ToggleGroup as MoonUIToggleGroup, ToggleGroupItem as MoonUIToggleGroupItem, Tooltip as MoonUITooltip, TooltipArrow as MoonUITooltipArrow, TooltipContent as MoonUITooltipContent, TooltipProvider as MoonUITooltipProvider, TooltipTrigger as MoonUITooltipTrigger, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneInput, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverFooter, PopoverHeader, PopoverSeparator, PopoverTrigger, ProBadge, ProComponentWrapper, Progress, RadioGroup2 as RadioGroup, RadioGroupItem, RadioItemWithLabel, RadioLabel, Rating, RichTextEditor, ScrollArea, ScrollBar, ScrollReveal, ScrollRevealContainer, ScrollRevealItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, SimpleColorPicker, SimpleEditor, SimpleTooltip, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, Spinner, SwipeableCard, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, aspectRatioVariants, badgeVariants, breadcrumbVariants, buttonGroupVariants, buttonVariants, cardVariants, carouselContentVariants, carouselItemVariants, cn, collapsibleContentVariants, collapsibleTriggerVariants, inputOTPSlotVariants, kbdVariants, badgeVariants as moonUIBadgeVariants, buttonGroupVariants as moonUIButtonGroupVariants, buttonVariants as moonUIButtonVariants, carouselContentVariants as moonUICarouselContentVariants, carouselItemVariants as moonUICarouselItemVariants, createSortableHeader as moonUICreateSortableHeader, inputOTPSlotVariants as moonUIInputOTPSlotVariants, kbdVariants as moonUIKbdVariants, popoverContentVariants as moonUIPopoverContentVariants, ratingVariants as moonUIRatingVariants, separatorVariants as moonUISeparatorVariants, skeletonVariants as moonUISkeletonVariants, spinnerVariants as moonUISpinnerVariants, toggleVariants as moonUIToggleVariants, tooltipVariants as moonUITooltipVariants, popoverContentVariants, progressVariants, ratingVariants, separatorVariants, skeletonVariants, spinnerVariants, switchVariants, tabsListVariants, tabsTriggerVariants, toast, toggleVariants, tooltipVariants, useCarousel, useToast };
9186
9515
  //# sourceMappingURL=out.js.map
9187
9516
  //# sourceMappingURL=index.mjs.map