@zentauri-ui/zentauri-components 1.7.1 → 1.7.3

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 (92) hide show
  1. package/README.md +9 -5
  2. package/cli/registry.json +2 -0
  3. package/dist/chunk-BC6M42HQ.mjs +251 -0
  4. package/dist/chunk-BC6M42HQ.mjs.map +1 -0
  5. package/dist/chunk-KEKMMNL5.mjs +600 -0
  6. package/dist/chunk-KEKMMNL5.mjs.map +1 -0
  7. package/dist/chunk-NZDHSIIC.js +616 -0
  8. package/dist/chunk-NZDHSIIC.js.map +1 -0
  9. package/dist/chunk-QSPXPU72.js +259 -0
  10. package/dist/chunk-QSPXPU72.js.map +1 -0
  11. package/dist/design-system/command.d.ts +41 -0
  12. package/dist/design-system/command.d.ts.map +1 -0
  13. package/dist/design-system/index.d.ts +2 -0
  14. package/dist/design-system/index.d.ts.map +1 -1
  15. package/dist/design-system/popover.d.ts +40 -0
  16. package/dist/design-system/popover.d.ts.map +1 -0
  17. package/dist/ui/command/animated/animations.d.ts +3 -0
  18. package/dist/ui/command/animated/animations.d.ts.map +1 -0
  19. package/dist/ui/command/animated/command-content-animated.d.ts +6 -0
  20. package/dist/ui/command/animated/command-content-animated.d.ts.map +1 -0
  21. package/dist/ui/command/animated/index.d.ts +4 -0
  22. package/dist/ui/command/animated/index.d.ts.map +1 -0
  23. package/dist/ui/command/animated/types.d.ts +9 -0
  24. package/dist/ui/command/animated/types.d.ts.map +1 -0
  25. package/dist/ui/command/animated.js +92 -0
  26. package/dist/ui/command/animated.js.map +1 -0
  27. package/dist/ui/command/animated.mjs +89 -0
  28. package/dist/ui/command/animated.mjs.map +1 -0
  29. package/dist/ui/command/command-base.d.ts +53 -0
  30. package/dist/ui/command/command-base.d.ts.map +1 -0
  31. package/dist/ui/command/command.d.ts +6 -0
  32. package/dist/ui/command/command.d.ts.map +1 -0
  33. package/dist/ui/command/index.d.ts +5 -0
  34. package/dist/ui/command/index.d.ts.map +1 -0
  35. package/dist/ui/command/types.d.ts +111 -0
  36. package/dist/ui/command/types.d.ts.map +1 -0
  37. package/dist/ui/command/variants.d.ts +15 -0
  38. package/dist/ui/command/variants.d.ts.map +1 -0
  39. package/dist/ui/command.js +69 -0
  40. package/dist/ui/command.js.map +1 -0
  41. package/dist/ui/command.mjs +16 -0
  42. package/dist/ui/command.mjs.map +1 -0
  43. package/dist/ui/popover/animated/animations.d.ts +3 -0
  44. package/dist/ui/popover/animated/animations.d.ts.map +1 -0
  45. package/dist/ui/popover/animated/index.d.ts +4 -0
  46. package/dist/ui/popover/animated/index.d.ts.map +1 -0
  47. package/dist/ui/popover/animated/popover-content-animated.d.ts +3 -0
  48. package/dist/ui/popover/animated/popover-content-animated.d.ts.map +1 -0
  49. package/dist/ui/popover/animated/types.d.ts +9 -0
  50. package/dist/ui/popover/animated/types.d.ts.map +1 -0
  51. package/dist/ui/popover/animated.js +67 -0
  52. package/dist/ui/popover/animated.js.map +1 -0
  53. package/dist/ui/popover/animated.mjs +64 -0
  54. package/dist/ui/popover/animated.mjs.map +1 -0
  55. package/dist/ui/popover/index.d.ts +4 -0
  56. package/dist/ui/popover/index.d.ts.map +1 -0
  57. package/dist/ui/popover/popover-base.d.ts +8 -0
  58. package/dist/ui/popover/popover-base.d.ts.map +1 -0
  59. package/dist/ui/popover/popover.d.ts +2 -0
  60. package/dist/ui/popover/popover.d.ts.map +1 -0
  61. package/dist/ui/popover/types.d.ts +34 -0
  62. package/dist/ui/popover/types.d.ts.map +1 -0
  63. package/dist/ui/popover/variants.d.ts +6 -0
  64. package/dist/ui/popover/variants.d.ts.map +1 -0
  65. package/dist/ui/popover.js +34 -0
  66. package/dist/ui/popover.js.map +1 -0
  67. package/dist/ui/popover.mjs +5 -0
  68. package/dist/ui/popover.mjs.map +1 -0
  69. package/package.json +1 -1
  70. package/src/design-system/command.ts +80 -0
  71. package/src/design-system/index.ts +2 -0
  72. package/src/design-system/popover.ts +66 -0
  73. package/src/ui/command/animated/animations.ts +29 -0
  74. package/src/ui/command/animated/command-content-animated.tsx +58 -0
  75. package/src/ui/command/animated/index.ts +10 -0
  76. package/src/ui/command/animated/types.ts +23 -0
  77. package/src/ui/command/command-base.tsx +660 -0
  78. package/src/ui/command/command.test.tsx +130 -0
  79. package/src/ui/command/command.tsx +8 -0
  80. package/src/ui/command/index.ts +34 -0
  81. package/src/ui/command/types.ts +129 -0
  82. package/src/ui/command/variants.ts +41 -0
  83. package/src/ui/popover/animated/animations.ts +15 -0
  84. package/src/ui/popover/animated/index.ts +10 -0
  85. package/src/ui/popover/animated/popover-content-animated.tsx +54 -0
  86. package/src/ui/popover/animated/types.ts +18 -0
  87. package/src/ui/popover/index.ts +18 -0
  88. package/src/ui/popover/popover-base.tsx +261 -0
  89. package/src/ui/popover/popover.test.tsx +84 -0
  90. package/src/ui/popover/popover.tsx +8 -0
  91. package/src/ui/popover/types.ts +38 -0
  92. package/src/ui/popover/variants.ts +21 -0
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkQSPXPU72_js = require('../../chunk-QSPXPU72.js');
5
+ var chunkZS5756ZC_js = require('../../chunk-ZS5756ZC.js');
6
+ var framerMotion = require('framer-motion');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ // src/ui/popover/animated/animations.ts
10
+ var popoverAnimationPresets = {
11
+ none: {},
12
+ fade: {
13
+ initial: { opacity: 0, y: -4 },
14
+ animate: { opacity: 1, y: 0 },
15
+ transition: { duration: 0.16, ease: "easeOut" }
16
+ },
17
+ scale: {
18
+ initial: { opacity: 0, scale: 0.96 },
19
+ animate: { opacity: 1, scale: 1 },
20
+ transition: { duration: 0.16, ease: "easeOut" }
21
+ }
22
+ };
23
+ var PopoverContentAnimated = ({
24
+ children,
25
+ className,
26
+ variant,
27
+ size,
28
+ width,
29
+ side = "bottom",
30
+ align = "center",
31
+ role = "dialog",
32
+ animation = "none",
33
+ onDrag: _onDrag,
34
+ onDragStart: _onDragStart,
35
+ onDragEnd: _onDragEnd,
36
+ onAnimationStart: _onAnimationStart,
37
+ ...props
38
+ }) => {
39
+ const { open, contentId, contentRef } = chunkQSPXPU72_js.usePopover();
40
+ if (!open) {
41
+ return null;
42
+ }
43
+ const motionProps = popoverAnimationPresets[animation];
44
+ return /* @__PURE__ */ jsxRuntime.jsx(
45
+ framerMotion.motion.div,
46
+ {
47
+ ref: contentRef,
48
+ id: contentId,
49
+ "data-open": open,
50
+ role,
51
+ tabIndex: -1,
52
+ ...motionProps,
53
+ className: chunkZS5756ZC_js.cn(
54
+ chunkQSPXPU72_js.popoverContentVariants({ variant, size, width }),
55
+ chunkQSPXPU72_js.sideAlignClass(side, align),
56
+ className
57
+ ),
58
+ ...props,
59
+ children
60
+ }
61
+ );
62
+ };
63
+
64
+ exports.PopoverContentAnimated = PopoverContentAnimated;
65
+ exports.popoverAnimationPresets = popoverAnimationPresets;
66
+ //# sourceMappingURL=animated.js.map
67
+ //# sourceMappingURL=animated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/popover/animated/animations.ts","../../../src/ui/popover/animated/popover-content-animated.tsx"],"names":["usePopover","jsx","motion","cn","popoverContentVariants","sideAlignClass"],"mappings":";;;;;;;;AAEO,IAAM,uBAAA,GAAmD;AAAA,EAC9D,MAAM,EAAC;AAAA,EACP,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,IAC7B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,IAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,SAAA;AAAU,GAChD;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA,EAAK;AAAA,IACnC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,IAChC,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,SAAA;AAAU;AAElD;ACHO,IAAM,yBAAyB,CAAC;AAAA,EACrC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,SAAA,GAAY,MAAA;AAAA,EACZ,MAAA,EAAQ,OAAA;AAAA,EACR,WAAA,EAAa,YAAA;AAAA,EACb,SAAA,EAAW,UAAA;AAAA,EACX,gBAAA,EAAkB,iBAAA;AAAA,EAClB,GAAG;AACL,CAAA,KAAmC;AACjC,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,UAAA,KAAeA,2BAAA,EAAW;AAEnD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,wBAAwB,SAAS,CAAA;AAErD,EAAA,uBACEC,cAAA;AAAA,IAACC,mBAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,EAAA,EAAI,SAAA;AAAA,MACJ,WAAA,EAAW,IAAA;AAAA,MACX,IAAA;AAAA,MACA,QAAA,EAAU,EAAA;AAAA,MACT,GAAG,WAAA;AAAA,MACJ,SAAA,EAAWC,mBAAA;AAAA,QACTC,uCAAA,CAAuB,EAAE,OAAA,EAAS,IAAA,EAAM,OAAO,CAAA;AAAA,QAC/CC,+BAAA,CAAe,MAAM,KAAK,CAAA;AAAA,QAC1B;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"animated.js","sourcesContent":["import type { PopoverAnimationPresets } from \"./types\";\n\nexport const popoverAnimationPresets: PopoverAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0, y: -4 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.16, ease: \"easeOut\" },\n },\n scale: {\n initial: { opacity: 0, scale: 0.96 },\n animate: { opacity: 1, scale: 1 },\n transition: { duration: 0.16, ease: \"easeOut\" },\n },\n};\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../../lib/utils\";\n\nimport { popoverAnimationPresets } from \"./animations\";\nimport type { PopoverContentAnimatedProps } from \"./types\";\nimport { sideAlignClass, usePopover } from \"../popover-base\";\nimport { popoverContentVariants } from \"../variants\";\n\nexport const PopoverContentAnimated = ({\n children,\n className,\n variant,\n size,\n width,\n side = \"bottom\",\n align = \"center\",\n role = \"dialog\",\n animation = \"none\",\n onDrag: _onDrag,\n onDragStart: _onDragStart,\n onDragEnd: _onDragEnd,\n onAnimationStart: _onAnimationStart,\n ...props\n}: PopoverContentAnimatedProps) => {\n const { open, contentId, contentRef } = usePopover();\n\n if (!open) {\n return null;\n }\n\n const motionProps = popoverAnimationPresets[animation];\n\n return (\n <motion.div\n ref={contentRef}\n id={contentId}\n data-open={open}\n role={role}\n tabIndex={-1}\n {...motionProps}\n className={cn(\n popoverContentVariants({ variant, size, width }),\n sideAlignClass(side, align),\n className,\n )}\n {...props}\n >\n {children}\n </motion.div>\n );\n};\n"]}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { usePopover, popoverContentVariants, sideAlignClass } from '../../chunk-BC6M42HQ.mjs';
3
+ import { cn } from '../../chunk-4D54YOL6.mjs';
4
+ import { motion } from 'framer-motion';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ // src/ui/popover/animated/animations.ts
8
+ var popoverAnimationPresets = {
9
+ none: {},
10
+ fade: {
11
+ initial: { opacity: 0, y: -4 },
12
+ animate: { opacity: 1, y: 0 },
13
+ transition: { duration: 0.16, ease: "easeOut" }
14
+ },
15
+ scale: {
16
+ initial: { opacity: 0, scale: 0.96 },
17
+ animate: { opacity: 1, scale: 1 },
18
+ transition: { duration: 0.16, ease: "easeOut" }
19
+ }
20
+ };
21
+ var PopoverContentAnimated = ({
22
+ children,
23
+ className,
24
+ variant,
25
+ size,
26
+ width,
27
+ side = "bottom",
28
+ align = "center",
29
+ role = "dialog",
30
+ animation = "none",
31
+ onDrag: _onDrag,
32
+ onDragStart: _onDragStart,
33
+ onDragEnd: _onDragEnd,
34
+ onAnimationStart: _onAnimationStart,
35
+ ...props
36
+ }) => {
37
+ const { open, contentId, contentRef } = usePopover();
38
+ if (!open) {
39
+ return null;
40
+ }
41
+ const motionProps = popoverAnimationPresets[animation];
42
+ return /* @__PURE__ */ jsx(
43
+ motion.div,
44
+ {
45
+ ref: contentRef,
46
+ id: contentId,
47
+ "data-open": open,
48
+ role,
49
+ tabIndex: -1,
50
+ ...motionProps,
51
+ className: cn(
52
+ popoverContentVariants({ variant, size, width }),
53
+ sideAlignClass(side, align),
54
+ className
55
+ ),
56
+ ...props,
57
+ children
58
+ }
59
+ );
60
+ };
61
+
62
+ export { PopoverContentAnimated, popoverAnimationPresets };
63
+ //# sourceMappingURL=animated.mjs.map
64
+ //# sourceMappingURL=animated.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/popover/animated/animations.ts","../../../src/ui/popover/animated/popover-content-animated.tsx"],"names":[],"mappings":";;;;;;AAEO,IAAM,uBAAA,GAAmD;AAAA,EAC9D,MAAM,EAAC;AAAA,EACP,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,IAC7B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,IAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,SAAA;AAAU,GAChD;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA,EAAK;AAAA,IACnC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,IAChC,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,SAAA;AAAU;AAElD;ACHO,IAAM,yBAAyB,CAAC;AAAA,EACrC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,SAAA,GAAY,MAAA;AAAA,EACZ,MAAA,EAAQ,OAAA;AAAA,EACR,WAAA,EAAa,YAAA;AAAA,EACb,SAAA,EAAW,UAAA;AAAA,EACX,gBAAA,EAAkB,iBAAA;AAAA,EAClB,GAAG;AACL,CAAA,KAAmC;AACjC,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,UAAA,KAAe,UAAA,EAAW;AAEnD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,wBAAwB,SAAS,CAAA;AAErD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,EAAA,EAAI,SAAA;AAAA,MACJ,WAAA,EAAW,IAAA;AAAA,MACX,IAAA;AAAA,MACA,QAAA,EAAU,EAAA;AAAA,MACT,GAAG,WAAA;AAAA,MACJ,SAAA,EAAW,EAAA;AAAA,QACT,sBAAA,CAAuB,EAAE,OAAA,EAAS,IAAA,EAAM,OAAO,CAAA;AAAA,QAC/C,cAAA,CAAe,MAAM,KAAK,CAAA;AAAA,QAC1B;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"animated.mjs","sourcesContent":["import type { PopoverAnimationPresets } from \"./types\";\n\nexport const popoverAnimationPresets: PopoverAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0, y: -4 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.16, ease: \"easeOut\" },\n },\n scale: {\n initial: { opacity: 0, scale: 0.96 },\n animate: { opacity: 1, scale: 1 },\n transition: { duration: 0.16, ease: \"easeOut\" },\n },\n};\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../../lib/utils\";\n\nimport { popoverAnimationPresets } from \"./animations\";\nimport type { PopoverContentAnimatedProps } from \"./types\";\nimport { sideAlignClass, usePopover } from \"../popover-base\";\nimport { popoverContentVariants } from \"../variants\";\n\nexport const PopoverContentAnimated = ({\n children,\n className,\n variant,\n size,\n width,\n side = \"bottom\",\n align = \"center\",\n role = \"dialog\",\n animation = \"none\",\n onDrag: _onDrag,\n onDragStart: _onDragStart,\n onDragEnd: _onDragEnd,\n onAnimationStart: _onAnimationStart,\n ...props\n}: PopoverContentAnimatedProps) => {\n const { open, contentId, contentRef } = usePopover();\n\n if (!open) {\n return null;\n }\n\n const motionProps = popoverAnimationPresets[animation];\n\n return (\n <motion.div\n ref={contentRef}\n id={contentId}\n data-open={open}\n role={role}\n tabIndex={-1}\n {...motionProps}\n className={cn(\n popoverContentVariants({ variant, size, width }),\n sideAlignClass(side, align),\n className,\n )}\n {...props}\n >\n {children}\n </motion.div>\n );\n};\n"]}
@@ -0,0 +1,4 @@
1
+ export { Popover, PopoverTrigger, PopoverContent, PopoverContext, usePopover, } from "./popover";
2
+ export { popoverContentVariants } from "./variants";
3
+ export type { PopoverAlign, PopoverContentProps, PopoverContextType, PopoverProps, PopoverSide, PopoverTriggerProps, } from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { PopoverAlign, PopoverContentProps, PopoverContextType, PopoverProps, PopoverSide, PopoverTriggerProps } from "./types";
2
+ export declare const PopoverContext: import("react").Context<PopoverContextType | null>;
3
+ export declare const usePopover: () => PopoverContextType;
4
+ export declare function sideAlignClass(side: PopoverSide, align: PopoverAlign): string;
5
+ export declare const Popover: ({ children, defaultOpen, open: controlledOpen, onOpenChange, closeOnEscape, closeOnOutsideClick, }: PopoverProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const PopoverTrigger: ({ children, className, }: PopoverTriggerProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const PopoverContent: ({ children, className, variant, size, width, side, align, role, ...props }: PopoverContentProps) => import("react/jsx-runtime").JSX.Element | null;
8
+ //# sourceMappingURL=popover-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-base.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/popover-base.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,cAAc,oDAAiD,CAAC;AAE7E,eAAO,MAAM,UAAU,0BAMtB,CAAC;AAcF,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,UA0BpE;AAED,eAAO,MAAM,OAAO,GAAI,oGAOrB,YAAY,4CA2Ed,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,0BAG5B,mBAAmB,4CAsDrB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,4EAU5B,mBAAmB,mDAwBrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Popover, PopoverTrigger, PopoverContent, PopoverContext, usePopover, } from "./popover-base";
2
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/popover.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { VariantProps } from "class-variance-authority";
2
+ import type { ComponentPropsWithRef, ReactNode } from "react";
3
+ import { popoverContentVariants } from "./variants";
4
+ export type PopoverSide = "top" | "left" | "bottom" | "right";
5
+ export type PopoverAlign = "start" | "center" | "end";
6
+ export type PopoverContextType = {
7
+ open: boolean;
8
+ setOpen: (value: boolean) => void;
9
+ toggleOpen: () => void;
10
+ contentId: string;
11
+ triggerRef: React.RefObject<HTMLElement | null>;
12
+ contentRef: React.RefObject<HTMLDivElement | null>;
13
+ };
14
+ export type PopoverProps = {
15
+ children: ReactNode;
16
+ defaultOpen?: boolean;
17
+ open?: boolean;
18
+ onOpenChange?: (open: boolean) => void;
19
+ closeOnEscape?: boolean;
20
+ closeOnOutsideClick?: boolean;
21
+ };
22
+ export type PopoverTriggerProps = {
23
+ children: ReactNode;
24
+ className?: string;
25
+ };
26
+ export type PopoverContentProps = ComponentPropsWithRef<"div"> & {
27
+ children: ReactNode;
28
+ variant?: VariantProps<typeof popoverContentVariants>["variant"];
29
+ size?: VariantProps<typeof popoverContentVariants>["size"];
30
+ width?: VariantProps<typeof popoverContentVariants>["width"];
31
+ side?: PopoverSide;
32
+ align?: PopoverAlign;
33
+ };
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG;IAC/D,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAA;IAChE,IAAI,CAAC,EAAE,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const popoverContentVariants: (props?: ({
2
+ variant?: "default" | "outline" | "glass" | "sky" | "emerald" | "rose" | "indigo" | "green" | "orange" | "pink" | "purple" | "teal" | "yellow" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "ghost" | null | undefined;
3
+ size?: "md" | "sm" | "lg" | null | undefined;
4
+ width?: "md" | "sm" | "lg" | "xl" | "2xl" | "xs" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ //# sourceMappingURL=variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/variants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sBAAsB;;;;8EAWjC,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkQSPXPU72_js = require('../chunk-QSPXPU72.js');
5
+ require('../chunk-ZS5756ZC.js');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, "Popover", {
10
+ enumerable: true,
11
+ get: function () { return chunkQSPXPU72_js.Popover; }
12
+ });
13
+ Object.defineProperty(exports, "PopoverContent", {
14
+ enumerable: true,
15
+ get: function () { return chunkQSPXPU72_js.PopoverContent; }
16
+ });
17
+ Object.defineProperty(exports, "PopoverContext", {
18
+ enumerable: true,
19
+ get: function () { return chunkQSPXPU72_js.PopoverContext; }
20
+ });
21
+ Object.defineProperty(exports, "PopoverTrigger", {
22
+ enumerable: true,
23
+ get: function () { return chunkQSPXPU72_js.PopoverTrigger; }
24
+ });
25
+ Object.defineProperty(exports, "popoverContentVariants", {
26
+ enumerable: true,
27
+ get: function () { return chunkQSPXPU72_js.popoverContentVariants; }
28
+ });
29
+ Object.defineProperty(exports, "usePopover", {
30
+ enumerable: true,
31
+ get: function () { return chunkQSPXPU72_js.usePopover; }
32
+ });
33
+ //# sourceMappingURL=popover.js.map
34
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"popover.js"}
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ export { Popover, PopoverContent, PopoverContext, PopoverTrigger, popoverContentVariants, usePopover } from '../chunk-BC6M42HQ.mjs';
3
+ import '../chunk-4D54YOL6.mjs';
4
+ //# sourceMappingURL=popover.mjs.map
5
+ //# sourceMappingURL=popover.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"popover.mjs"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zentauri-ui/zentauri-components",
3
- "version": "1.7.1",
3
+ "version": "1.7.3",
4
4
  "description": "React + Tailwind UI kit with charts, ESM/CJS builds, per-entry exports, and a zentauri-components / zentauri-ui CLI to vendor UI or hook source into your app",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -0,0 +1,80 @@
1
+ export const zuiCommandOverlayBase =
2
+ "fixed inset-0 z-9999 bg-[var(--zui-command-overlay-bg,oklch(12.9%_0.042_264.695_/_0.6))] backdrop-blur-sm";
3
+
4
+ export const zuiCommandTriggerBase =
5
+ "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";
6
+
7
+ export const zuiCommandContentBase =
8
+ "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";
9
+
10
+ export const zuiCommandContentSizes = {
11
+ sm: "max-w-md",
12
+ md: "max-w-lg",
13
+ lg: "max-w-2xl",
14
+ } as const;
15
+
16
+ export const zuiCommandInputRowBase =
17
+ "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";
18
+
19
+ export const zuiCommandInputBase =
20
+ "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
+
22
+ export const zuiCommandListBase =
23
+ "max-h-[min(60vh,420px)] overflow-y-auto overscroll-contain p-2";
24
+
25
+ export const zuiCommandGroupHeadingBase =
26
+ "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))]";
27
+
28
+ export const zuiCommandItemBase =
29
+ "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";
30
+
31
+ export const zuiCommandSeparatorBase =
32
+ "my-1 h-px bg-[var(--zui-command-separator-bg,#0000000f)] dark:bg-[var(--zui-command-separator-bg-dark,#ffffff14)]";
33
+
34
+ export const zuiCommandEmptyBase =
35
+ "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))]";
36
+
37
+ export const zuiCommandFooterBase =
38
+ "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))]";
39
+
40
+ export const zuiCommandContentAppearances = {
41
+ default:
42
+ "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))]",
43
+ glass:
44
+ "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",
45
+ 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",
46
+ 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",
47
+ purple:
48
+ "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",
49
+ 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",
50
+ orange:
51
+ "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",
52
+ yellow:
53
+ "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",
54
+ 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",
55
+ indigo:
56
+ "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",
57
+ emerald:
58
+ "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",
59
+ 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",
60
+ amber:
61
+ "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",
62
+ violet:
63
+ "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",
64
+ "gradient-blue":
65
+ "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",
66
+ "gradient-green":
67
+ "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",
68
+ "gradient-red":
69
+ "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",
70
+ "gradient-yellow":
71
+ "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",
72
+ "gradient-purple":
73
+ "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",
74
+ "gradient-teal":
75
+ "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",
76
+ "gradient-indigo":
77
+ "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",
78
+ "gradient-pink":
79
+ "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",
80
+ } as const;
@@ -6,6 +6,7 @@ export * from "./breadcrumb";
6
6
  export * from "./button";
7
7
  export * from "./card";
8
8
  export * from "./checkbox";
9
+ export * from "./command";
9
10
  export * from "./divider";
10
11
  export * from "./drawer";
11
12
  export * from "./dropdown";
@@ -15,6 +16,7 @@ export * from "./file-upload";
15
16
  export * from "./inputs";
16
17
  export * from "./modal";
17
18
  export * from "./pagination";
19
+ export * from "./popover";
18
20
  export * from "./progress";
19
21
  export * from "./radio-group";
20
22
  export * from "./select";
@@ -0,0 +1,66 @@
1
+ export const zuiPopoverContentBase =
2
+ "absolute z-50 rounded-lg border shadow-lg transition-all duration-200 outline-none";
3
+
4
+ export const zuiPopoverContentVariants = {
5
+ default:
6
+ "border-[color:var(--zui-popover-default-border,oklch(20.8%_0.042_265.755_/_0.1))] dark:border-[color:var(--zui-popover-default-border-dark,#ffffff1a)] bg-[var(--zui-popover-default-bg,#ffffff)] dark:bg-[var(--zui-popover-default-bg-dark,oklch(20.8%_0.042_265.755))] text-[color:var(--zui-popover-default-fg,oklch(20.8%_0.042_265.755))] dark:text-[color:var(--zui-popover-default-fg-dark,oklch(96.8%_0.007_247.896))]",
7
+ outline:
8
+ "border-[color:var(--zui-popover-outline-border,oklch(37.3%_0.034_259.733))] dark:border-[color:var(--zui-popover-outline-border-dark,oklch(87.2%_0.01_258.338))] bg-[var(--zui-popover-outline-bg,#ffffff)] dark:bg-[var(--zui-popover-outline-bg-dark,#000000)] text-[color:var(--zui-popover-outline-fg,oklch(21%_0.034_264.665))] dark:text-[color:var(--zui-popover-outline-fg-dark,#ffffff)]",
9
+ ghost:
10
+ "border-transparent bg-[var(--zui-popover-ghost-bg,oklch(96.7%_0.003_264.542))] dark:bg-[var(--zui-popover-ghost-bg-dark,oklch(27.8%_0.033_256.848))] text-[color:var(--zui-popover-ghost-fg,oklch(21%_0.034_264.665))] dark:text-[color:var(--zui-popover-ghost-fg-dark,#ffffffe6)]",
11
+ glass:
12
+ "border-[color:var(--zui-popover-glass-border,#00000026)] dark:border-[color:var(--zui-popover-glass-border-dark,#ffffff26)] bg-[var(--zui-popover-glass-bg,#ffffffb3)] dark:bg-[var(--zui-popover-glass-bg-dark,#020617b3)] text-[color:var(--zui-popover-glass-fg,oklch(20.8%_0.042_265.755))] dark:text-[color:var(--zui-popover-glass-fg-dark,#ffffff)] backdrop-blur-md",
13
+ emerald:
14
+ "border-[color:var(--zui-popover-emerald-border,oklch(43.2%_0.095_166.913_/_0.35))] bg-[var(--zui-popover-emerald-bg,oklch(90.5%_0.093_164.15))] text-[color:var(--zui-popover-emerald-fg,oklch(37.8%_0.077_168.94))] dark:bg-[var(--zui-popover-emerald-bg-dark,oklch(26.2%_0.051_172.552))] dark:text-[color:var(--zui-popover-emerald-fg-dark,oklch(90.5%_0.093_164.15))]",
15
+ indigo:
16
+ "border-[color:var(--zui-popover-indigo-border,oklch(39.8%_0.195_277.366_/_0.35))] bg-[var(--zui-popover-indigo-bg,oklch(87%_0.065_274.039))] text-[color:var(--zui-popover-indigo-fg,oklch(35.9%_0.144_278.697))] dark:bg-[var(--zui-popover-indigo-bg-dark,oklch(25.7%_0.09_281.288))] dark:text-[color:var(--zui-popover-indigo-fg-dark,oklch(87%_0.065_274.039))]",
17
+ purple:
18
+ "border-[color:var(--zui-popover-purple-border,oklch(43.8%_0.218_303.724_/_0.35))] bg-[var(--zui-popover-purple-bg,oklch(90.2%_0.063_306.703))] text-[color:var(--zui-popover-purple-fg,oklch(38.1%_0.176_304.987))] dark:bg-[var(--zui-popover-purple-bg-dark,oklch(29.1%_0.149_302.717))] dark:text-[color:var(--zui-popover-purple-fg-dark,oklch(90.2%_0.063_306.703))]",
19
+ pink:
20
+ "border-[color:var(--zui-popover-pink-border,oklch(45.9%_0.187_3.815_/_0.35))] bg-[var(--zui-popover-pink-bg,oklch(89.9%_0.061_343.231))] text-[color:var(--zui-popover-pink-fg,oklch(40.8%_0.153_2.432))] dark:bg-[var(--zui-popover-pink-bg-dark,oklch(28.4%_0.109_3.907))] dark:text-[color:var(--zui-popover-pink-fg-dark,oklch(89.9%_0.061_343.231))]",
21
+ rose:
22
+ "border-[color:var(--zui-popover-rose-border,oklch(45.5%_0.188_13.697_/_0.35))] bg-[var(--zui-popover-rose-bg,oklch(89.2%_0.058_10.001))] text-[color:var(--zui-popover-rose-fg,oklch(41%_0.159_10.272))] dark:bg-[var(--zui-popover-rose-bg-dark,oklch(27.1%_0.105_12.094))] dark:text-[color:var(--zui-popover-rose-fg-dark,oklch(89.2%_0.058_10.001))]",
23
+ sky:
24
+ "border-[color:var(--zui-popover-sky-border,oklch(44.3%_0.11_240.79_/_0.35))] bg-[var(--zui-popover-sky-bg,oklch(90.1%_0.058_230.902))] text-[color:var(--zui-popover-sky-fg,oklch(39.1%_0.09_240.876))] dark:bg-[var(--zui-popover-sky-bg-dark,oklch(29.3%_0.066_243.157))] dark:text-[color:var(--zui-popover-sky-fg-dark,oklch(90.1%_0.058_230.902))]",
25
+ teal:
26
+ "border-[color:var(--zui-popover-teal-border,oklch(43.7%_0.078_188.216_/_0.35))] bg-[var(--zui-popover-teal-bg,oklch(91%_0.096_180.426))] text-[color:var(--zui-popover-teal-fg,oklch(38.6%_0.063_188.416))] dark:bg-[var(--zui-popover-teal-bg-dark,oklch(27.7%_0.046_192.524))] dark:text-[color:var(--zui-popover-teal-fg-dark,oklch(91%_0.096_180.426))]",
27
+ yellow:
28
+ "border-[color:var(--zui-popover-yellow-border,oklch(47.6%_0.114_61.907_/_0.35))] bg-[var(--zui-popover-yellow-bg,oklch(94.5%_0.129_101.54))] text-[color:var(--zui-popover-yellow-fg,oklch(42.1%_0.095_57.708))] dark:bg-[var(--zui-popover-yellow-bg-dark,oklch(28.6%_0.066_53.813))] dark:text-[color:var(--zui-popover-yellow-fg-dark,oklch(94.5%_0.129_101.54))]",
29
+ orange:
30
+ "border-[color:var(--zui-popover-orange-border,oklch(47%_0.157_37.304_/_0.35))] bg-[var(--zui-popover-orange-bg,oklch(90.1%_0.076_70.697))] text-[color:var(--zui-popover-orange-fg,oklch(40.8%_0.123_38.172))] dark:bg-[var(--zui-popover-orange-bg-dark,oklch(26.6%_0.079_36.259))] dark:text-[color:var(--zui-popover-orange-fg-dark,oklch(90.1%_0.076_70.697))]",
31
+ green:
32
+ "border-[color:var(--zui-popover-green-border,oklch(44.8%_0.119_151.328_/_0.35))] bg-[var(--zui-popover-green-bg,oklch(92.5%_0.084_155.995))] text-[color:var(--zui-popover-green-fg,oklch(39.3%_0.095_152.535))] dark:bg-[var(--zui-popover-green-bg-dark,oklch(26.6%_0.065_152.934))] dark:text-[color:var(--zui-popover-green-fg-dark,oklch(92.5%_0.084_155.995))]",
33
+ "gradient-blue":
34
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-blue-from,oklch(42.4%_0.199_265.638))] to-[var(--zui-popover-gradient-blue-to,oklch(43.8%_0.218_303.724))] text-[color:var(--zui-popover-gradient-blue-fg,#ffffff)]",
35
+ "gradient-green":
36
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-green-from,oklch(44.8%_0.119_151.328))] to-[var(--zui-popover-gradient-green-to,oklch(45.3%_0.124_130.933))] text-[color:var(--zui-popover-gradient-green-fg,#ffffff)]",
37
+ "gradient-red":
38
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-red-from,oklch(44.4%_0.177_26.899))] to-[var(--zui-popover-gradient-red-to,oklch(45.9%_0.187_3.815))] text-[color:var(--zui-popover-gradient-red-fg,#ffffff)]",
39
+ "gradient-yellow":
40
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-yellow-from,oklch(47.6%_0.114_61.907))] to-[var(--zui-popover-gradient-yellow-to,oklch(47%_0.157_37.304))] text-[color:var(--zui-popover-gradient-yellow-fg,#ffffff)]",
41
+ "gradient-purple":
42
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-purple-from,oklch(43.8%_0.218_303.724))] to-[var(--zui-popover-gradient-purple-to,oklch(45.9%_0.187_3.815))] text-[color:var(--zui-popover-gradient-purple-fg,#ffffff)]",
43
+ "gradient-teal":
44
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-teal-from,oklch(43.7%_0.078_188.216))] to-[var(--zui-popover-gradient-teal-to,oklch(45%_0.085_224.283))] text-[color:var(--zui-popover-gradient-teal-fg,#ffffff)]",
45
+ "gradient-indigo":
46
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-indigo-from,oklch(39.8%_0.195_277.366))] to-[var(--zui-popover-gradient-indigo-to,oklch(43.8%_0.218_303.724))] text-[color:var(--zui-popover-gradient-indigo-fg,#ffffff)]",
47
+ "gradient-pink":
48
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-pink-from,oklch(45.9%_0.187_3.815))] to-[var(--zui-popover-gradient-pink-to,oklch(45.5%_0.188_13.697))] text-[color:var(--zui-popover-gradient-pink-fg,#ffffff)]",
49
+ "gradient-orange":
50
+ "border-transparent bg-linear-to-r from-[var(--zui-popover-gradient-orange-from,oklch(47%_0.157_37.304))] to-[var(--zui-popover-gradient-orange-to,oklch(44.4%_0.177_26.899))] text-[color:var(--zui-popover-gradient-orange-fg,#ffffff)]",
51
+ } as const;
52
+
53
+ export const zuiPopoverContentSizes = {
54
+ sm: "p-3 text-sm",
55
+ md: "p-4 text-sm",
56
+ lg: "p-5 text-base",
57
+ } as const;
58
+
59
+ export const zuiPopoverContentWidths = {
60
+ xs: "min-w-50 md:min-w-xs",
61
+ sm: "min-w-50 md:min-w-sm",
62
+ md: "min-w-50 md:min-w-md",
63
+ lg: "min-w-50 md:min-w-lg",
64
+ xl: "min-w-50 md:min-w-xl",
65
+ "2xl": "min-w-50 md:min-w-2xl",
66
+ } as const;
@@ -0,0 +1,29 @@
1
+ import type { CommandAnimationPresets } from "./types";
2
+
3
+ export const commandOverlayAnimationPresets: CommandAnimationPresets = {
4
+ none: {},
5
+ fade: {
6
+ initial: { opacity: 0 },
7
+ animate: { opacity: 1 },
8
+ exit: { opacity: 0 },
9
+ transition: { duration: 0.18 },
10
+ },
11
+ scale: {
12
+ initial: { opacity: 0, scale: 0.97 },
13
+ animate: { opacity: 1, scale: 1 },
14
+ exit: { opacity: 0, scale: 0.97 },
15
+ transition: { type: "spring", stiffness: 440, damping: 34 },
16
+ },
17
+ "slide-down": {
18
+ initial: { opacity: 0, y: -20 },
19
+ animate: { opacity: 1, y: 0 },
20
+ exit: { opacity: 0, y: -12 },
21
+ transition: { type: "spring", stiffness: 420, damping: 32 },
22
+ },
23
+ "slide-up": {
24
+ initial: { opacity: 0, y: 20 },
25
+ animate: { opacity: 1, y: 0 },
26
+ exit: { opacity: 0, y: 12 },
27
+ transition: { type: "spring", stiffness: 420, damping: 32 },
28
+ },
29
+ };
@@ -0,0 +1,58 @@
1
+ "use client";
2
+
3
+ import { AnimatePresence, motion, useReducedMotion } from "framer-motion";
4
+
5
+ import { commandOverlayAnimationPresets } from "./animations";
6
+ import type { CommandContentAnimatedProps } from "./types";
7
+ import { CommandContentLayer } from "../command-base";
8
+
9
+ export function CommandContentAnimated({
10
+ className,
11
+ size,
12
+ appearance,
13
+ animation = "slide-down",
14
+ children,
15
+ ref,
16
+ id,
17
+ style,
18
+ }: CommandContentAnimatedProps) {
19
+ const reduceMotion = useReducedMotion();
20
+ const overlayMotion = commandOverlayAnimationPresets.fade;
21
+ const panelMotion =
22
+ commandOverlayAnimationPresets[reduceMotion ? "fade" : animation];
23
+
24
+ return (
25
+ <CommandContentLayer
26
+ appearance={appearance}
27
+ className={className}
28
+ componentName="CommandContent"
29
+ id={id}
30
+ ref={ref}
31
+ renderOverlay={(overlayProps) => (
32
+ <motion.div
33
+ {...overlayProps}
34
+ initial={overlayMotion.initial}
35
+ animate={overlayMotion.animate}
36
+ exit={overlayMotion.exit}
37
+ transition={overlayMotion.transition}
38
+ />
39
+ )}
40
+ renderPanel={(panelProps) => (
41
+ <motion.div
42
+ {...panelProps}
43
+ initial={animation === "none" ? false : panelMotion.initial}
44
+ animate={animation === "none" ? undefined : panelMotion.animate}
45
+ exit={animation === "none" ? undefined : panelMotion.exit}
46
+ transition={panelMotion.transition}
47
+ />
48
+ )}
49
+ renderPresence={(content) => <AnimatePresence>{content}</AnimatePresence>}
50
+ size={size}
51
+ style={style}
52
+ >
53
+ {children}
54
+ </CommandContentLayer>
55
+ );
56
+ }
57
+
58
+ CommandContentAnimated.displayName = "CommandContent";
@@ -0,0 +1,10 @@
1
+ "use client";
2
+
3
+ export { CommandContentAnimated } from "./command-content-animated";
4
+ export type {
5
+ CommandContentAnimatedProps,
6
+ CommandAnimation,
7
+ CommandAnimationPresets,
8
+ CommandPresetMotionProps,
9
+ } from "./types";
10
+ export { commandOverlayAnimationPresets } from "./animations";
@@ -0,0 +1,23 @@
1
+ import { HTMLMotionProps } from "framer-motion";
2
+ import type { CommandContentProps } from "../types";
3
+
4
+ export type CommandAnimation =
5
+ | "none"
6
+ | "fade"
7
+ | "scale"
8
+ | "slide-down"
9
+ | "slide-up";
10
+
11
+ export type CommandContentAnimatedProps = CommandContentProps & {
12
+ animation?: CommandAnimation;
13
+ };
14
+
15
+ export type CommandPresetMotionProps = Pick<
16
+ HTMLMotionProps<"div">,
17
+ "initial" | "animate" | "exit" | "transition"
18
+ >;
19
+
20
+ export type CommandAnimationPresets = Record<
21
+ CommandAnimation,
22
+ CommandPresetMotionProps
23
+ >;