@zentauri-ui/zentauri-components 1.7.2 → 1.7.4

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 (69) hide show
  1. package/README.md +10 -6
  2. package/cli/registry.json +2 -0
  3. package/dist/chunk-KEKMMNL5.mjs +600 -0
  4. package/dist/chunk-KEKMMNL5.mjs.map +1 -0
  5. package/dist/chunk-NZDHSIIC.js +616 -0
  6. package/dist/chunk-NZDHSIIC.js.map +1 -0
  7. package/dist/design-system/command.d.ts +41 -0
  8. package/dist/design-system/command.d.ts.map +1 -0
  9. package/dist/design-system/index.d.ts +2 -0
  10. package/dist/design-system/index.d.ts.map +1 -1
  11. package/dist/design-system/otp-input.d.ts +27 -0
  12. package/dist/design-system/otp-input.d.ts.map +1 -0
  13. package/dist/ui/command/animated/animations.d.ts +3 -0
  14. package/dist/ui/command/animated/animations.d.ts.map +1 -0
  15. package/dist/ui/command/animated/command-content-animated.d.ts +6 -0
  16. package/dist/ui/command/animated/command-content-animated.d.ts.map +1 -0
  17. package/dist/ui/command/animated/index.d.ts +4 -0
  18. package/dist/ui/command/animated/index.d.ts.map +1 -0
  19. package/dist/ui/command/animated/types.d.ts +9 -0
  20. package/dist/ui/command/animated/types.d.ts.map +1 -0
  21. package/dist/ui/command/animated.js +92 -0
  22. package/dist/ui/command/animated.js.map +1 -0
  23. package/dist/ui/command/animated.mjs +89 -0
  24. package/dist/ui/command/animated.mjs.map +1 -0
  25. package/dist/ui/command/command-base.d.ts +53 -0
  26. package/dist/ui/command/command-base.d.ts.map +1 -0
  27. package/dist/ui/command/command.d.ts +6 -0
  28. package/dist/ui/command/command.d.ts.map +1 -0
  29. package/dist/ui/command/index.d.ts +5 -0
  30. package/dist/ui/command/index.d.ts.map +1 -0
  31. package/dist/ui/command/types.d.ts +111 -0
  32. package/dist/ui/command/types.d.ts.map +1 -0
  33. package/dist/ui/command/variants.d.ts +15 -0
  34. package/dist/ui/command/variants.d.ts.map +1 -0
  35. package/dist/ui/command.js +69 -0
  36. package/dist/ui/command.js.map +1 -0
  37. package/dist/ui/command.mjs +16 -0
  38. package/dist/ui/command.mjs.map +1 -0
  39. package/dist/ui/otp-input/index.d.ts +4 -0
  40. package/dist/ui/otp-input/index.d.ts.map +1 -0
  41. package/dist/ui/otp-input/otp-input.d.ts +6 -0
  42. package/dist/ui/otp-input/otp-input.d.ts.map +1 -0
  43. package/dist/ui/otp-input/types.d.ts +23 -0
  44. package/dist/ui/otp-input/types.d.ts.map +1 -0
  45. package/dist/ui/otp-input/variants.d.ts +5 -0
  46. package/dist/ui/otp-input/variants.d.ts.map +1 -0
  47. package/dist/ui/otp-input.js +302 -0
  48. package/dist/ui/otp-input.js.map +1 -0
  49. package/dist/ui/otp-input.mjs +299 -0
  50. package/dist/ui/otp-input.mjs.map +1 -0
  51. package/package.json +1 -1
  52. package/src/design-system/command.ts +80 -0
  53. package/src/design-system/index.ts +2 -0
  54. package/src/design-system/otp-input.ts +50 -0
  55. package/src/ui/command/animated/animations.ts +29 -0
  56. package/src/ui/command/animated/command-content-animated.tsx +58 -0
  57. package/src/ui/command/animated/index.ts +10 -0
  58. package/src/ui/command/animated/types.ts +23 -0
  59. package/src/ui/command/command-base.tsx +660 -0
  60. package/src/ui/command/command.test.tsx +130 -0
  61. package/src/ui/command/command.tsx +8 -0
  62. package/src/ui/command/index.ts +34 -0
  63. package/src/ui/command/types.ts +129 -0
  64. package/src/ui/command/variants.ts +41 -0
  65. package/src/ui/otp-input/index.ts +9 -0
  66. package/src/ui/otp-input/otp-input.test.tsx +99 -0
  67. package/src/ui/otp-input/otp-input.tsx +327 -0
  68. package/src/ui/otp-input/types.ts +32 -0
  69. package/src/ui/otp-input/variants.ts +18 -0
@@ -0,0 +1,616 @@
1
+ 'use strict';
2
+
3
+ var chunkGBWGVNDA_js = require('./chunk-GBWGVNDA.js');
4
+ var chunkZS5756ZC_js = require('./chunk-ZS5756ZC.js');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var react = require('react');
7
+ var reactDom = require('react-dom');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // src/design-system/command.ts
11
+ var zuiCommandOverlayBase = "fixed inset-0 z-9999 bg-[var(--zui-command-overlay-bg,oklch(12.9%_0.042_264.695_/_0.6))] backdrop-blur-sm";
12
+ var zuiCommandTriggerBase = "relative inline-flex shrink-0 cursor-pointer items-center gap-2 rounded-md border border-[color:var(--zui-command-trigger-border,#0000001a)] dark:border-[color:var(--zui-command-trigger-border-dark,#ffffff1a)] bg-[var(--zui-command-trigger-bg,oklch(98.4%_0.003_247.858))] dark:bg-[var(--zui-command-trigger-bg-dark,oklch(12.9%_0.042_264.695))] px-3 py-2 text-sm text-[color:var(--zui-command-trigger-fg,oklch(44.6%_0.03_256.802))] dark:text-[color:var(--zui-command-trigger-fg-dark,oklch(86.9%_0.022_252.894))] transition hover:bg-black/5 dark:hover:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-500/40";
13
+ var zuiCommandContentBase = "fixed left-1/2 top-[15%] z-9999 w-[calc(100%-2rem)] -translate-x-1/2 overflow-hidden rounded-xl border border-[color:var(--zui-command-content-border,#0000001a)] dark:border-[color:var(--zui-command-content-border-dark,#ffffff1a)] bg-[var(--zui-command-content-bg,oklch(98.4%_0.003_247.858))] dark:bg-[var(--zui-command-content-bg-dark,oklch(12.9%_0.042_264.695))] text-[color:var(--zui-command-content-fg,oklch(20.8%_0.042_265.755))] dark:text-[color:var(--zui-command-content-fg-dark,oklch(98.4%_0.003_247.858))] shadow-[var(--zui-command-content-shadow,0_12px_40px_rgba(15,23,42,0.18))] dark:shadow-[var(--zui-command-content-shadow-dark,0_24px_80px_rgba(15,23,42,0.6))] focus:outline-none";
14
+ var zuiCommandContentSizes = {
15
+ sm: "max-w-md",
16
+ md: "max-w-lg",
17
+ lg: "max-w-2xl"
18
+ };
19
+ var zuiCommandInputRowBase = "flex items-center gap-2 border-b border-[color:var(--zui-command-input-border,#0000000f)] dark:border-[color:var(--zui-command-input-border-dark,#ffffff14)] px-4";
20
+ var zuiCommandInputBase = "h-12 w-full bg-transparent text-sm text-[color:var(--zui-command-input-fg,oklch(20.8%_0.042_265.755))] dark:text-[color:var(--zui-command-input-fg-dark,oklch(98.4%_0.003_247.858))] placeholder:text-[color:var(--zui-command-input-placeholder,oklch(55.1%_0.027_264.364))] dark:placeholder:text-[color:var(--zui-command-input-placeholder-dark,oklch(55.1%_0.027_264.364))] focus:outline-none";
21
+ var zuiCommandListBase = "max-h-[min(60vh,420px)] overflow-y-auto overscroll-contain p-2";
22
+ var zuiCommandGroupHeadingBase = "px-2 pb-1 pt-3 text-xs font-semibold uppercase tracking-[0.12em] text-[color:var(--zui-command-group-heading-fg,oklch(55.1%_0.027_264.364))] dark:text-[color:var(--zui-command-group-heading-fg-dark,oklch(70.7%_0.022_261.325))]";
23
+ var zuiCommandItemBase = "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 text-sm text-[color:var(--zui-command-item-fg,oklch(27.8%_0.033_256.848))] dark:text-[color:var(--zui-command-item-fg-dark,oklch(86.9%_0.022_252.894))] transition-colors data-[active=true]:bg-[var(--zui-command-item-active-bg,oklch(95.1%_0.026_236.824))] dark:data-[active=true]:bg-[var(--zui-command-item-active-bg-dark,oklch(28.2%_0.091_267.935_/_0.55))] data-[active=true]:text-[color:var(--zui-command-item-active-fg,oklch(20.8%_0.042_265.755))] dark:data-[active=true]:text-[color:var(--zui-command-item-active-fg-dark,oklch(98.4%_0.003_247.858))] aria-disabled:cursor-not-allowed aria-disabled:opacity-50";
24
+ var zuiCommandSeparatorBase = "my-1 h-px bg-[var(--zui-command-separator-bg,#0000000f)] dark:bg-[var(--zui-command-separator-bg-dark,#ffffff14)]";
25
+ var zuiCommandEmptyBase = "px-3 py-8 text-center text-sm text-[color:var(--zui-command-empty-fg,oklch(55.1%_0.027_264.364))] dark:text-[color:var(--zui-command-empty-fg-dark,oklch(70.7%_0.022_261.325))]";
26
+ var zuiCommandFooterBase = "flex items-center gap-3 border-t border-[color:var(--zui-command-footer-border,#0000000f)] dark:border-[color:var(--zui-command-footer-border-dark,#ffffff14)] px-4 py-2 text-xs text-[color:var(--zui-command-footer-fg,oklch(55.1%_0.027_264.364))] dark:text-[color:var(--zui-command-footer-fg-dark,oklch(70.7%_0.022_261.325))]";
27
+ var zuiCommandContentAppearances = {
28
+ default: "bg-[var(--zui-command-content-default-bg,oklch(98.4%_0.003_247.858))] dark:bg-[var(--zui-command-content-default-bg-dark,oklch(12.9%_0.042_264.695))]",
29
+ glass: "border-[color:var(--zui-command-content-glass-border,#00000026)] dark:border-[color:var(--zui-command-content-glass-border-dark,#ffffff26)] bg-[var(--zui-command-content-glass-bg,oklch(98.4%_0.003_247.858_/_0.7))] dark:bg-[var(--zui-command-content-glass-bg-dark,oklch(12.9%_0.042_264.695_/_0.7))] backdrop-blur-xl",
30
+ sky: "border-[color:var(--zui-command-content-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-command-content-sky-border-dark,oklch(58.8%_0.158_241.966))] bg-[var(--zui-command-content-sky-bg,oklch(97.7%_0.013_236.62))] dark:bg-[var(--zui-command-content-sky-bg-dark,oklch(29.3%_0.066_243.157_/_0.7))] backdrop-blur-xl",
31
+ rose: "border-[color:var(--zui-command-content-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-command-content-rose-border-dark,oklch(58.6%_0.253_17.585))] bg-[var(--zui-command-content-rose-bg,oklch(96.9%_0.015_12.422))] dark:bg-[var(--zui-command-content-rose-bg-dark,oklch(27.1%_0.105_12.094_/_0.7))] backdrop-blur-xl",
32
+ purple: "border-[color:var(--zui-command-content-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-command-content-purple-border-dark,oklch(55.8%_0.288_302.321))] bg-[var(--zui-command-content-purple-bg,oklch(97.7%_0.014_308.299))] dark:bg-[var(--zui-command-content-purple-bg-dark,oklch(29.1%_0.149_302.717_/_0.7))] backdrop-blur-xl",
33
+ pink: "border-[color:var(--zui-command-content-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-command-content-pink-border-dark,oklch(59.2%_0.249_0.584))] bg-[var(--zui-command-content-pink-bg,oklch(97.1%_0.014_343.198))] dark:bg-[var(--zui-command-content-pink-bg-dark,oklch(28.4%_0.109_3.907_/_0.7))] backdrop-blur-xl",
34
+ orange: "border-[color:var(--zui-command-content-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-command-content-orange-border-dark,oklch(64.6%_0.222_41.116))] bg-[var(--zui-command-content-orange-bg,oklch(98%_0.016_73.684))] dark:bg-[var(--zui-command-content-orange-bg-dark,oklch(26.6%_0.079_36.259_/_0.7))] backdrop-blur-xl",
35
+ yellow: "border-[color:var(--zui-command-content-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-command-content-yellow-border-dark,oklch(68.1%_0.162_75.834))] bg-[var(--zui-command-content-yellow-bg,oklch(98.7%_0.026_102.212))] dark:bg-[var(--zui-command-content-yellow-bg-dark,oklch(28.6%_0.066_53.813_/_0.7))] backdrop-blur-xl",
36
+ teal: "border-[color:var(--zui-command-content-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-command-content-teal-border-dark,oklch(60%_0.118_184.704))] bg-[var(--zui-command-content-teal-bg,oklch(98.4%_0.014_180.72))] dark:bg-[var(--zui-command-content-teal-bg-dark,oklch(27.7%_0.046_192.524_/_0.7))] backdrop-blur-xl",
37
+ indigo: "border-[color:var(--zui-command-content-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-command-content-indigo-border-dark,oklch(51.1%_0.262_276.966))] bg-[var(--zui-command-content-indigo-bg,oklch(96.2%_0.018_272.314))] dark:bg-[var(--zui-command-content-indigo-bg-dark,oklch(25.7%_0.09_281.288_/_0.7))] backdrop-blur-xl",
38
+ emerald: "border-[color:var(--zui-command-content-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-command-content-emerald-border-dark,oklch(59.6%_0.145_163.225))] bg-[var(--zui-command-content-emerald-bg,oklch(97.9%_0.021_166.113))] dark:bg-[var(--zui-command-content-emerald-bg-dark,oklch(26.2%_0.051_172.552_/_0.7))] backdrop-blur-xl",
39
+ gray: "border-[color:var(--zui-command-content-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-command-content-gray-border-dark,oklch(44.6%_0.03_256.802))] bg-[var(--zui-command-content-gray-bg,oklch(98.5%_0.002_247.839))] dark:bg-[var(--zui-command-content-gray-bg-dark,oklch(13%_0.028_261.692_/_0.7))] backdrop-blur-xl",
40
+ amber: "border-[color:var(--zui-command-content-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-command-content-amber-border-dark,oklch(66.6%_0.179_58.318))] bg-[var(--zui-command-content-amber-bg,oklch(98.7%_0.022_95.277))] dark:bg-[var(--zui-command-content-amber-bg-dark,oklch(27.9%_0.077_45.635_/_0.7))] backdrop-blur-xl",
41
+ violet: "border-[color:var(--zui-command-content-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-command-content-violet-border-dark,oklch(54.1%_0.281_293.009))] bg-[var(--zui-command-content-violet-bg,oklch(96.9%_0.016_293.756))] dark:bg-[var(--zui-command-content-violet-bg-dark,oklch(28.3%_0.141_291.089_/_0.7))] backdrop-blur-xl",
42
+ "gradient-blue": "border-[color:var(--zui-command-content-gradient-blue-border,oklch(42.4%_0.199_265.638))] dark:border-[color:var(--zui-command-content-gradient-blue-border-dark,oklch(54.6%_0.245_262.881))] bg-linear-to-br from-[var(--zui-command-content-gradient-blue-from,oklch(97%_0.014_254.604))] dark:from-[var(--zui-command-content-gradient-blue-from-dark,oklch(28.2%_0.091_267.935_/_0.85))] to-[var(--zui-command-content-gradient-blue-to,oklch(97.7%_0.014_308.299))] dark:to-[var(--zui-command-content-gradient-blue-to-dark,oklch(29.1%_0.149_302.717_/_0.85))] backdrop-blur-xl",
43
+ "gradient-green": "border-[color:var(--zui-command-content-gradient-green-border,oklch(44.8%_0.119_151.328))] dark:border-[color:var(--zui-command-content-gradient-green-border-dark,oklch(62.7%_0.194_149.214))] bg-linear-to-br from-[var(--zui-command-content-gradient-green-from,oklch(98.2%_0.018_155.826))] dark:from-[var(--zui-command-content-gradient-green-from-dark,oklch(26.6%_0.065_152.934_/_0.85))] to-[var(--zui-command-content-gradient-green-to,oklch(98.6%_0.031_120.757))] dark:to-[var(--zui-command-content-gradient-green-to-dark,oklch(27.4%_0.072_132.109_/_0.85))] backdrop-blur-xl",
44
+ "gradient-red": "border-[color:var(--zui-command-content-gradient-red-border,oklch(44.4%_0.177_26.899))] dark:border-[color:var(--zui-command-content-gradient-red-border-dark,oklch(57.7%_0.245_27.325))] bg-linear-to-br from-[var(--zui-command-content-gradient-red-from,oklch(97.1%_0.013_17.38))] dark:from-[var(--zui-command-content-gradient-red-from-dark,oklch(25.8%_0.092_26.042_/_0.85))] to-[var(--zui-command-content-gradient-red-to,oklch(97.1%_0.014_343.198))] dark:to-[var(--zui-command-content-gradient-red-to-dark,oklch(28.4%_0.109_3.907_/_0.85))] backdrop-blur-xl",
45
+ "gradient-yellow": "border-[color:var(--zui-command-content-gradient-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-command-content-gradient-yellow-border-dark,oklch(68.1%_0.162_75.834))] bg-linear-to-br from-[var(--zui-command-content-gradient-yellow-from,oklch(98.7%_0.026_102.212))] dark:from-[var(--zui-command-content-gradient-yellow-from-dark,oklch(28.6%_0.066_53.813_/_0.85))] to-[var(--zui-command-content-gradient-yellow-to,oklch(98%_0.016_73.684))] dark:to-[var(--zui-command-content-gradient-yellow-to-dark,oklch(26.6%_0.079_36.259_/_0.85))] backdrop-blur-xl",
46
+ "gradient-purple": "border-[color:var(--zui-command-content-gradient-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-command-content-gradient-purple-border-dark,oklch(55.8%_0.288_302.321))] bg-linear-to-br from-[var(--zui-command-content-gradient-purple-from,oklch(97.7%_0.014_308.299))] dark:from-[var(--zui-command-content-gradient-purple-from-dark,oklch(29.1%_0.149_302.717_/_0.85))] to-[var(--zui-command-content-gradient-purple-to,oklch(97.1%_0.014_343.198))] dark:to-[var(--zui-command-content-gradient-purple-to-dark,oklch(28.4%_0.109_3.907_/_0.85))] backdrop-blur-xl",
47
+ "gradient-teal": "border-[color:var(--zui-command-content-gradient-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-command-content-gradient-teal-border-dark,oklch(60%_0.118_184.704))] bg-linear-to-br from-[var(--zui-command-content-gradient-teal-from,oklch(98.4%_0.014_180.72))] dark:from-[var(--zui-command-content-gradient-teal-from-dark,oklch(27.7%_0.046_192.524_/_0.85))] to-[var(--zui-command-content-gradient-teal-to,oklch(98.4%_0.019_200.873))] dark:to-[var(--zui-command-content-gradient-teal-to-dark,oklch(30.2%_0.056_229.695_/_0.85))] backdrop-blur-xl",
48
+ "gradient-indigo": "border-[color:var(--zui-command-content-gradient-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-command-content-gradient-indigo-border-dark,oklch(51.1%_0.262_276.966))] bg-linear-to-br from-[var(--zui-command-content-gradient-indigo-from,oklch(96.2%_0.018_272.314))] dark:from-[var(--zui-command-content-gradient-indigo-from-dark,oklch(25.7%_0.09_281.288_/_0.85))] to-[var(--zui-command-content-gradient-indigo-to,oklch(97.7%_0.014_308.299))] dark:to-[var(--zui-command-content-gradient-indigo-to-dark,oklch(29.1%_0.149_302.717_/_0.85))] backdrop-blur-xl",
49
+ "gradient-pink": "border-[color:var(--zui-command-content-gradient-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-command-content-gradient-pink-border-dark,oklch(59.2%_0.249_0.584))] bg-linear-to-br from-[var(--zui-command-content-gradient-pink-from,oklch(97.1%_0.014_343.198))] dark:from-[var(--zui-command-content-gradient-pink-from-dark,oklch(28.4%_0.109_3.907_/_0.85))] to-[var(--zui-command-content-gradient-pink-to,oklch(96.9%_0.015_12.422))] dark:to-[var(--zui-command-content-gradient-pink-to-dark,oklch(27.1%_0.105_12.094_/_0.85))] backdrop-blur-xl"
50
+ };
51
+
52
+ // src/ui/command/variants.ts
53
+ var commandOverlayVariants = classVarianceAuthority.cva(zuiCommandOverlayBase);
54
+ var commandTriggerVariants = classVarianceAuthority.cva(zuiCommandTriggerBase);
55
+ var commandContentVariants = classVarianceAuthority.cva(zuiCommandContentBase, {
56
+ variants: {
57
+ size: zuiCommandContentSizes,
58
+ appearance: zuiCommandContentAppearances
59
+ },
60
+ defaultVariants: {
61
+ size: "md",
62
+ appearance: "default"
63
+ }
64
+ });
65
+ var commandInputRowVariants = classVarianceAuthority.cva(zuiCommandInputRowBase);
66
+ var commandInputVariants = classVarianceAuthority.cva(zuiCommandInputBase);
67
+ var commandListVariants = classVarianceAuthority.cva(zuiCommandListBase);
68
+ var commandGroupHeadingVariants = classVarianceAuthority.cva(zuiCommandGroupHeadingBase);
69
+ var commandItemVariants = classVarianceAuthority.cva(zuiCommandItemBase);
70
+ var commandSeparatorVariants = classVarianceAuthority.cva(zuiCommandSeparatorBase);
71
+ var commandEmptyVariants = classVarianceAuthority.cva(zuiCommandEmptyBase);
72
+ var commandFooterVariants = classVarianceAuthority.cva(zuiCommandFooterBase);
73
+ var CommandContext = react.createContext(null);
74
+ function useCommandContext(component) {
75
+ const ctx = react.useContext(CommandContext);
76
+ if (!ctx) {
77
+ throw new Error(`${component} must be used within <Command>`);
78
+ }
79
+ return ctx;
80
+ }
81
+ function itemMatches(value, meta, normalized) {
82
+ if (!normalized) {
83
+ return true;
84
+ }
85
+ if (value.toLowerCase().includes(normalized)) {
86
+ return true;
87
+ }
88
+ if (meta.searchText?.toLowerCase().includes(normalized)) {
89
+ return true;
90
+ }
91
+ return Boolean(
92
+ meta.keywords?.some(
93
+ (keyword) => keyword.toLowerCase().includes(normalized)
94
+ )
95
+ );
96
+ }
97
+ function isEditableEventTarget(target) {
98
+ if (!(target instanceof HTMLElement)) {
99
+ return false;
100
+ }
101
+ if (target.isContentEditable) {
102
+ return true;
103
+ }
104
+ return Boolean(
105
+ target.closest("input, textarea, select, [contenteditable=true]")
106
+ );
107
+ }
108
+ function useCommandPortalTarget() {
109
+ const [isMounted, setIsMounted] = react.useState(false);
110
+ react.useEffect(() => {
111
+ setIsMounted(true);
112
+ }, []);
113
+ if (!isMounted) {
114
+ return null;
115
+ }
116
+ return document.body;
117
+ }
118
+ function CommandPortal({ children }) {
119
+ const portalTarget = useCommandPortalTarget();
120
+ if (!portalTarget) {
121
+ return null;
122
+ }
123
+ return reactDom.createPortal(children, portalTarget);
124
+ }
125
+ function CommandPortalFrame({ children }) {
126
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-9999", "data-slot": "command-portal", children });
127
+ }
128
+ function CommandContentLayer({
129
+ className,
130
+ size,
131
+ appearance,
132
+ children,
133
+ ref,
134
+ id,
135
+ style,
136
+ componentName,
137
+ renderPresence,
138
+ renderOverlay,
139
+ renderPanel
140
+ }) {
141
+ const { open, setOpen, labelId, contentRef, triggerRef } = useCommandContext(componentName);
142
+ chunkGBWGVNDA_js.useFocusManagement({
143
+ open,
144
+ setOpen,
145
+ contentRef,
146
+ triggerRef
147
+ });
148
+ const overlayProps = {
149
+ role: "presentation",
150
+ "data-slot": "command-overlay",
151
+ className: commandOverlayVariants(),
152
+ onClick: () => setOpen(false)
153
+ };
154
+ const panelProps = {
155
+ ref: (node) => {
156
+ contentRef.current = node;
157
+ if (typeof ref === "function") {
158
+ ref(node);
159
+ } else if (ref) {
160
+ ref.current = node;
161
+ }
162
+ },
163
+ role: "dialog",
164
+ "aria-modal": true,
165
+ "aria-labelledby": labelId,
166
+ "data-slot": "command-content",
167
+ tabIndex: -1,
168
+ className: chunkZS5756ZC_js.cn(commandContentVariants({ size, appearance }), className),
169
+ id,
170
+ style,
171
+ children
172
+ };
173
+ const content = open ? /* @__PURE__ */ jsxRuntime.jsxs(CommandPortalFrame, { children: [
174
+ renderOverlay ? renderOverlay(overlayProps) : /* @__PURE__ */ jsxRuntime.jsx("div", { ...overlayProps }),
175
+ renderPanel ? renderPanel(panelProps) : /* @__PURE__ */ jsxRuntime.jsx("div", { ...panelProps })
176
+ ] }) : null;
177
+ return /* @__PURE__ */ jsxRuntime.jsx(CommandPortal, { children: renderPresence ? renderPresence(content) : content });
178
+ }
179
+ function Command({
180
+ open,
181
+ defaultOpen = false,
182
+ onOpenChange,
183
+ hotkey,
184
+ label = "Command menu",
185
+ children
186
+ }) {
187
+ const isControlled = open !== void 0;
188
+ const [uncontrolledOpen, setUncontrolledOpen] = react.useState(defaultOpen);
189
+ const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;
190
+ const setOpen = react.useCallback(
191
+ (next) => {
192
+ if (!isControlled) {
193
+ setUncontrolledOpen(next);
194
+ }
195
+ onOpenChange?.(next);
196
+ },
197
+ [isControlled, onOpenChange]
198
+ );
199
+ const labelId = react.useId();
200
+ const listId = react.useId();
201
+ const contentRef = react.useRef(null);
202
+ const triggerRef = react.useRef(null);
203
+ const inputRef = react.useRef(null);
204
+ const [query, setQuery] = react.useState("");
205
+ const [activeValue, setActiveValue] = react.useState(null);
206
+ const itemsRef = react.useRef([]);
207
+ const [registryVersion, setRegistryVersion] = react.useState(0);
208
+ const registerItem = react.useCallback((item) => {
209
+ itemsRef.current = [...itemsRef.current, item];
210
+ setRegistryVersion((version) => version + 1);
211
+ return () => {
212
+ itemsRef.current = itemsRef.current.filter((entry) => entry !== item);
213
+ setRegistryVersion((version) => version + 1);
214
+ };
215
+ }, []);
216
+ const invalidateRegistry = react.useCallback(() => {
217
+ setRegistryVersion((version) => version + 1);
218
+ }, []);
219
+ const visibleValues = react.useMemo(() => {
220
+ const normalized = query.trim().toLowerCase();
221
+ return itemsRef.current.filter((item) => {
222
+ const meta = item.metaRef.current;
223
+ if (meta.disabled) {
224
+ return false;
225
+ }
226
+ return itemMatches(item.value, meta, normalized);
227
+ }).map((item) => item.value);
228
+ }, [query, registryVersion]);
229
+ const visibleSet = react.useMemo(() => new Set(visibleValues), [visibleValues]);
230
+ const isVisible = react.useCallback(
231
+ (value) => visibleSet.has(value),
232
+ [visibleSet]
233
+ );
234
+ const selectValue = react.useCallback((value) => {
235
+ const entry = itemsRef.current.find((item) => item.value === value);
236
+ if (!entry || entry.metaRef.current.disabled) {
237
+ return false;
238
+ }
239
+ entry?.metaRef.current.onSelect?.(value);
240
+ return true;
241
+ }, []);
242
+ react.useEffect(() => {
243
+ if (!resolvedOpen) {
244
+ setQuery("");
245
+ setActiveValue(null);
246
+ }
247
+ }, [resolvedOpen]);
248
+ react.useEffect(() => {
249
+ if (!resolvedOpen) {
250
+ return;
251
+ }
252
+ if (activeValue && visibleSet.has(activeValue)) {
253
+ return;
254
+ }
255
+ setActiveValue(visibleValues[0] ?? null);
256
+ }, [resolvedOpen, activeValue, visibleSet, visibleValues]);
257
+ react.useEffect(() => {
258
+ if (!hotkey) {
259
+ return;
260
+ }
261
+ const key = (typeof hotkey === "string" ? hotkey : "k").toLowerCase();
262
+ const handler = (event) => {
263
+ if (isEditableEventTarget(event.target)) {
264
+ return;
265
+ }
266
+ if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === key) {
267
+ event.preventDefault();
268
+ setOpen(!resolvedOpen);
269
+ }
270
+ };
271
+ window.addEventListener("keydown", handler);
272
+ return () => window.removeEventListener("keydown", handler);
273
+ }, [hotkey, resolvedOpen, setOpen]);
274
+ const ctx = react.useMemo(
275
+ () => ({
276
+ open: resolvedOpen,
277
+ setOpen,
278
+ labelId,
279
+ listId,
280
+ query,
281
+ setQuery,
282
+ activeValue,
283
+ setActiveValue,
284
+ visibleValues,
285
+ isVisible,
286
+ registerItem,
287
+ invalidateRegistry,
288
+ selectValue,
289
+ contentRef,
290
+ triggerRef,
291
+ inputRef
292
+ }),
293
+ [
294
+ resolvedOpen,
295
+ setOpen,
296
+ labelId,
297
+ listId,
298
+ query,
299
+ activeValue,
300
+ visibleValues,
301
+ isVisible,
302
+ registerItem,
303
+ invalidateRegistry,
304
+ selectValue
305
+ ]
306
+ );
307
+ return /* @__PURE__ */ jsxRuntime.jsxs(CommandContext.Provider, { value: ctx, children: [
308
+ /* @__PURE__ */ jsxRuntime.jsx("span", { hidden: true, id: labelId, children: label }),
309
+ children
310
+ ] });
311
+ }
312
+ Command.displayName = "Command";
313
+ function CommandTrigger({
314
+ className,
315
+ children,
316
+ onClick,
317
+ ref: refProp
318
+ }) {
319
+ const { setOpen, triggerRef } = useCommandContext("CommandTrigger");
320
+ return /* @__PURE__ */ jsxRuntime.jsx(
321
+ "button",
322
+ {
323
+ ref: (node) => {
324
+ triggerRef.current = node;
325
+ if (typeof refProp === "function") {
326
+ refProp(node);
327
+ } else if (refProp) {
328
+ refProp.current = node;
329
+ }
330
+ },
331
+ type: "button",
332
+ "data-slot": "command-trigger",
333
+ className: chunkZS5756ZC_js.cn(commandTriggerVariants(), className),
334
+ onClick: (event) => {
335
+ onClick?.(event);
336
+ if (!event.defaultPrevented) {
337
+ setOpen(true);
338
+ }
339
+ },
340
+ children
341
+ }
342
+ );
343
+ }
344
+ CommandTrigger.displayName = "CommandTrigger";
345
+ function CommandContent({
346
+ className,
347
+ size,
348
+ appearance,
349
+ children,
350
+ ref,
351
+ id,
352
+ style
353
+ }) {
354
+ return /* @__PURE__ */ jsxRuntime.jsx(
355
+ CommandContentLayer,
356
+ {
357
+ appearance,
358
+ className,
359
+ componentName: "CommandContent",
360
+ id,
361
+ ref,
362
+ size,
363
+ style,
364
+ children
365
+ }
366
+ );
367
+ }
368
+ CommandContent.displayName = "CommandContent";
369
+ function CommandInput({
370
+ className,
371
+ placeholder,
372
+ ref
373
+ }) {
374
+ const {
375
+ query,
376
+ setQuery,
377
+ visibleValues,
378
+ activeValue,
379
+ setActiveValue,
380
+ selectValue,
381
+ setOpen,
382
+ inputRef,
383
+ listId
384
+ } = useCommandContext("CommandInput");
385
+ const moveActive = (direction) => {
386
+ if (visibleValues.length === 0) {
387
+ return;
388
+ }
389
+ const currentIndex = activeValue ? visibleValues.indexOf(activeValue) : -1;
390
+ const nextIndex = currentIndex === -1 ? direction === 1 ? 0 : visibleValues.length - 1 : (currentIndex + direction + visibleValues.length) % visibleValues.length;
391
+ setActiveValue(visibleValues[nextIndex] ?? null);
392
+ };
393
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: commandInputRowVariants(), "data-slot": "command-input-row", children: [
394
+ /* @__PURE__ */ jsxRuntime.jsxs(
395
+ "svg",
396
+ {
397
+ "aria-hidden": true,
398
+ viewBox: "0 0 24 24",
399
+ className: "size-4 shrink-0 opacity-60",
400
+ fill: "none",
401
+ stroke: "currentColor",
402
+ strokeWidth: "2",
403
+ strokeLinecap: "round",
404
+ strokeLinejoin: "round",
405
+ children: [
406
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "11", cy: "11", r: "8" }),
407
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m21 21-4.3-4.3" })
408
+ ]
409
+ }
410
+ ),
411
+ /* @__PURE__ */ jsxRuntime.jsx(
412
+ "input",
413
+ {
414
+ ref: (node) => {
415
+ inputRef.current = node;
416
+ if (typeof ref === "function") {
417
+ ref(node);
418
+ } else if (ref) {
419
+ ref.current = node;
420
+ }
421
+ },
422
+ type: "text",
423
+ autoFocus: true,
424
+ role: "combobox",
425
+ "aria-expanded": true,
426
+ "aria-controls": listId,
427
+ "aria-autocomplete": "list",
428
+ "data-slot": "command-input",
429
+ className: chunkZS5756ZC_js.cn(commandInputVariants(), className),
430
+ placeholder,
431
+ value: query,
432
+ onChange: (event) => setQuery(event.target.value),
433
+ onKeyDown: (event) => {
434
+ if (event.key === "ArrowDown") {
435
+ event.preventDefault();
436
+ moveActive(1);
437
+ } else if (event.key === "ArrowUp") {
438
+ event.preventDefault();
439
+ moveActive(-1);
440
+ } else if (event.key === "Enter") {
441
+ if (activeValue && visibleValues.includes(activeValue)) {
442
+ event.preventDefault();
443
+ if (selectValue(activeValue)) {
444
+ setOpen(false);
445
+ }
446
+ }
447
+ }
448
+ }
449
+ }
450
+ )
451
+ ] });
452
+ }
453
+ CommandInput.displayName = "CommandInput";
454
+ function CommandList({ className, children }) {
455
+ const { listId } = useCommandContext("CommandList");
456
+ return /* @__PURE__ */ jsxRuntime.jsx(
457
+ "div",
458
+ {
459
+ id: listId,
460
+ role: "listbox",
461
+ "aria-label": "Commands",
462
+ "data-slot": "command-list",
463
+ className: chunkZS5756ZC_js.cn(commandListVariants(), className),
464
+ children
465
+ }
466
+ );
467
+ }
468
+ CommandList.displayName = "CommandList";
469
+ function CommandGroup({
470
+ className,
471
+ heading,
472
+ children
473
+ }) {
474
+ return /* @__PURE__ */ jsxRuntime.jsxs(
475
+ "div",
476
+ {
477
+ role: "group",
478
+ "data-slot": "command-group",
479
+ className: chunkZS5756ZC_js.cn(
480
+ "[&:not(:has([data-slot=command-item]:not([hidden])))]:hidden",
481
+ className
482
+ ),
483
+ children: [
484
+ heading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: commandGroupHeadingVariants(), "aria-hidden": true, children: heading }) : null,
485
+ children
486
+ ]
487
+ }
488
+ );
489
+ }
490
+ CommandGroup.displayName = "CommandGroup";
491
+ function CommandItem({
492
+ className,
493
+ value,
494
+ keywords,
495
+ disabled,
496
+ onSelect,
497
+ children
498
+ }) {
499
+ const {
500
+ registerItem,
501
+ invalidateRegistry,
502
+ isVisible,
503
+ activeValue,
504
+ setActiveValue,
505
+ selectValue,
506
+ setOpen
507
+ } = useCommandContext("CommandItem");
508
+ const itemRef = react.useRef(null);
509
+ const keywordSignature = keywords?.join("\0") ?? "";
510
+ const metaRef = react.useRef({ keywords, disabled, onSelect });
511
+ metaRef.current = {
512
+ keywords,
513
+ disabled,
514
+ onSelect,
515
+ searchText: metaRef.current.searchText
516
+ };
517
+ react.useEffect(() => {
518
+ const unregister = registerItem({ value, metaRef });
519
+ return unregister;
520
+ }, [registerItem, value]);
521
+ react.useEffect(() => {
522
+ metaRef.current = {
523
+ keywords: metaRef.current.keywords,
524
+ disabled,
525
+ onSelect: metaRef.current.onSelect,
526
+ searchText: itemRef.current?.textContent ?? void 0
527
+ };
528
+ invalidateRegistry();
529
+ }, [children, disabled, invalidateRegistry, keywordSignature]);
530
+ const visible = isVisible(value);
531
+ const active = activeValue === value;
532
+ return /* @__PURE__ */ jsxRuntime.jsx(
533
+ "div",
534
+ {
535
+ ref: itemRef,
536
+ role: "option",
537
+ "aria-selected": active,
538
+ "aria-disabled": disabled || void 0,
539
+ "data-slot": "command-item",
540
+ "data-value": value,
541
+ "data-active": active || void 0,
542
+ hidden: !visible || void 0,
543
+ className: chunkZS5756ZC_js.cn(commandItemVariants(), className),
544
+ onMouseEnter: () => {
545
+ if (!disabled) {
546
+ setActiveValue(value);
547
+ }
548
+ },
549
+ onClick: () => {
550
+ if (disabled) {
551
+ return;
552
+ }
553
+ if (selectValue(value)) {
554
+ setOpen(false);
555
+ }
556
+ },
557
+ children
558
+ }
559
+ );
560
+ }
561
+ CommandItem.displayName = "CommandItem";
562
+ function CommandSeparator({ className }) {
563
+ return /* @__PURE__ */ jsxRuntime.jsx(
564
+ "div",
565
+ {
566
+ role: "separator",
567
+ "data-slot": "command-separator",
568
+ className: chunkZS5756ZC_js.cn(commandSeparatorVariants(), className)
569
+ }
570
+ );
571
+ }
572
+ CommandSeparator.displayName = "CommandSeparator";
573
+ function CommandEmpty({ className, children }) {
574
+ const { visibleValues } = useCommandContext("CommandEmpty");
575
+ if (visibleValues.length > 0) {
576
+ return null;
577
+ }
578
+ return /* @__PURE__ */ jsxRuntime.jsx(
579
+ "div",
580
+ {
581
+ "data-slot": "command-empty",
582
+ className: chunkZS5756ZC_js.cn(commandEmptyVariants(), className),
583
+ children
584
+ }
585
+ );
586
+ }
587
+ CommandEmpty.displayName = "CommandEmpty";
588
+ function CommandFooter({ className, children }) {
589
+ return /* @__PURE__ */ jsxRuntime.jsx(
590
+ "div",
591
+ {
592
+ "data-slot": "command-footer",
593
+ className: chunkZS5756ZC_js.cn(commandFooterVariants(), className),
594
+ children
595
+ }
596
+ );
597
+ }
598
+ CommandFooter.displayName = "CommandFooter";
599
+
600
+ exports.Command = Command;
601
+ exports.CommandContent = CommandContent;
602
+ exports.CommandContentLayer = CommandContentLayer;
603
+ exports.CommandEmpty = CommandEmpty;
604
+ exports.CommandFooter = CommandFooter;
605
+ exports.CommandGroup = CommandGroup;
606
+ exports.CommandInput = CommandInput;
607
+ exports.CommandItem = CommandItem;
608
+ exports.CommandList = CommandList;
609
+ exports.CommandSeparator = CommandSeparator;
610
+ exports.CommandTrigger = CommandTrigger;
611
+ exports.commandContentVariants = commandContentVariants;
612
+ exports.commandItemVariants = commandItemVariants;
613
+ exports.commandOverlayVariants = commandOverlayVariants;
614
+ exports.useCommandContext = useCommandContext;
615
+ //# sourceMappingURL=chunk-NZDHSIIC.js.map
616
+ //# sourceMappingURL=chunk-NZDHSIIC.js.map