@zentauri-ui/zentauri-components 0.0.91 → 0.0.93

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 (168) hide show
  1. package/README.md +36 -4
  2. package/dist/chunk-BZSIXBA7.js +70 -0
  3. package/dist/chunk-BZSIXBA7.js.map +1 -0
  4. package/dist/chunk-E5UX537J.js +11 -0
  5. package/dist/chunk-E5UX537J.js.map +1 -0
  6. package/dist/chunk-MEWYFWBX.mjs +14 -0
  7. package/dist/chunk-MEWYFWBX.mjs.map +1 -0
  8. package/dist/chunk-VJHD7QZH.mjs +73 -0
  9. package/dist/chunk-VJHD7QZH.mjs.map +1 -0
  10. package/dist/ui/accordion.js +51 -57
  11. package/dist/ui/accordion.js.map +1 -1
  12. package/dist/ui/{accordion.cjs → accordion.mjs} +38 -67
  13. package/dist/ui/accordion.mjs.map +1 -0
  14. package/dist/ui/{alert.d.cts → alert.d.mts} +1 -1
  15. package/dist/ui/alert.d.ts +1 -1
  16. package/dist/ui/alert.js +40 -46
  17. package/dist/ui/alert.js.map +1 -1
  18. package/dist/ui/{alert.cjs → alert.mjs} +29 -66
  19. package/dist/ui/alert.mjs.map +1 -0
  20. package/dist/ui/{badge.d.cts → badge.d.mts} +1 -1
  21. package/dist/ui/badge.d.ts +1 -1
  22. package/dist/ui/badge.js +20 -26
  23. package/dist/ui/badge.js.map +1 -1
  24. package/dist/ui/{badge.cjs → badge.mjs} +17 -48
  25. package/dist/ui/badge.mjs.map +1 -0
  26. package/dist/ui/{buttons.d.cts → buttons.d.mts} +1 -1
  27. package/dist/ui/buttons.d.ts +1 -1
  28. package/dist/ui/buttons.js +18 -87
  29. package/dist/ui/buttons.js.map +1 -1
  30. package/dist/ui/buttons.mjs +109 -0
  31. package/dist/ui/buttons.mjs.map +1 -0
  32. package/dist/ui/{card.d.cts → card.d.mts} +1 -1
  33. package/dist/ui/card.d.ts +1 -1
  34. package/dist/ui/card.js +40 -46
  35. package/dist/ui/card.js.map +1 -1
  36. package/dist/ui/{card.cjs → card.mjs} +26 -65
  37. package/dist/ui/card.mjs.map +1 -0
  38. package/dist/ui/{divider.d.cts → divider.d.mts} +2 -2
  39. package/dist/ui/divider.d.ts +2 -2
  40. package/dist/ui/divider.js +30 -36
  41. package/dist/ui/divider.js.map +1 -1
  42. package/dist/ui/{divider.cjs → divider.mjs} +22 -55
  43. package/dist/ui/divider.mjs.map +1 -0
  44. package/dist/ui/{drawer.d.cts → drawer.d.mts} +3 -3
  45. package/dist/ui/drawer.d.ts +3 -3
  46. package/dist/ui/drawer.js +64 -70
  47. package/dist/ui/drawer.js.map +1 -1
  48. package/dist/ui/{drawer.cjs → drawer.mjs} +48 -77
  49. package/dist/ui/drawer.mjs.map +1 -0
  50. package/dist/ui/{dropdown.d.cts → dropdown.d.mts} +4 -4
  51. package/dist/ui/dropdown.d.ts +4 -4
  52. package/dist/ui/dropdown.js +43 -49
  53. package/dist/ui/dropdown.js.map +1 -1
  54. package/dist/ui/{dropdown.cjs → dropdown.mjs} +34 -62
  55. package/dist/ui/dropdown.mjs.map +1 -0
  56. package/dist/ui/{empty-state.d.cts → empty-state.d.mts} +1 -1
  57. package/dist/ui/empty-state.d.ts +1 -1
  58. package/dist/ui/empty-state.js +31 -37
  59. package/dist/ui/empty-state.js.map +1 -1
  60. package/dist/ui/empty-state.mjs +150 -0
  61. package/dist/ui/empty-state.mjs.map +1 -0
  62. package/dist/ui/{inputs.d.cts → inputs.d.mts} +2 -2
  63. package/dist/ui/inputs.d.ts +2 -2
  64. package/dist/ui/inputs.js +26 -32
  65. package/dist/ui/inputs.js.map +1 -1
  66. package/dist/ui/{inputs.cjs → inputs.mjs} +21 -51
  67. package/dist/ui/inputs.mjs.map +1 -0
  68. package/dist/ui/{modal.d.cts → modal.d.mts} +3 -3
  69. package/dist/ui/modal.d.ts +3 -3
  70. package/dist/ui/modal.js +69 -75
  71. package/dist/ui/modal.js.map +1 -1
  72. package/dist/ui/{modal.cjs → modal.mjs} +53 -79
  73. package/dist/ui/modal.mjs.map +1 -0
  74. package/dist/ui/{pagination.d.cts → pagination.d.mts} +3 -3
  75. package/dist/ui/pagination.d.ts +3 -3
  76. package/dist/ui/pagination.js +48 -117
  77. package/dist/ui/pagination.js.map +1 -1
  78. package/dist/ui/{pagination.cjs → pagination.mjs} +35 -131
  79. package/dist/ui/pagination.mjs.map +1 -0
  80. package/dist/ui/{progress.d.cts → progress.d.mts} +5 -5
  81. package/dist/ui/progress.d.ts +5 -5
  82. package/dist/ui/progress.js +37 -43
  83. package/dist/ui/progress.js.map +1 -1
  84. package/dist/ui/{progress.cjs → progress.mjs} +25 -60
  85. package/dist/ui/progress.mjs.map +1 -0
  86. package/dist/ui/{select.d.cts → select.d.mts} +4 -4
  87. package/dist/ui/select.d.ts +4 -4
  88. package/dist/ui/select.js +43 -49
  89. package/dist/ui/select.js.map +1 -1
  90. package/dist/ui/{select.cjs → select.mjs} +31 -68
  91. package/dist/ui/select.mjs.map +1 -0
  92. package/dist/ui/{skeleton.d.cts → skeleton.d.mts} +3 -3
  93. package/dist/ui/skeleton.d.ts +3 -3
  94. package/dist/ui/skeleton.js +45 -51
  95. package/dist/ui/skeleton.js.map +1 -1
  96. package/dist/ui/{skeleton.cjs → skeleton.mjs} +31 -67
  97. package/dist/ui/skeleton.mjs.map +1 -0
  98. package/dist/ui/{spinner.d.cts → spinner.d.mts} +3 -3
  99. package/dist/ui/spinner.d.ts +3 -3
  100. package/dist/ui/spinner.js +34 -40
  101. package/dist/ui/spinner.js.map +1 -1
  102. package/dist/ui/{spinner.cjs → spinner.mjs} +27 -57
  103. package/dist/ui/spinner.mjs.map +1 -0
  104. package/dist/ui/{table.d.cts → table.d.mts} +4 -4
  105. package/dist/ui/table.d.ts +4 -4
  106. package/dist/ui/table.js +43 -49
  107. package/dist/ui/table.js.map +1 -1
  108. package/dist/ui/{table.cjs → table.mjs} +26 -65
  109. package/dist/ui/table.mjs.map +1 -0
  110. package/dist/ui/{tabs.d.cts → tabs.d.mts} +1 -1
  111. package/dist/ui/tabs.d.ts +1 -1
  112. package/dist/ui/tabs.js +41 -47
  113. package/dist/ui/tabs.js.map +1 -1
  114. package/dist/ui/{tabs.cjs → tabs.mjs} +29 -59
  115. package/dist/ui/tabs.mjs.map +1 -0
  116. package/dist/ui/{toast.d.cts → toast.d.mts} +1 -1
  117. package/dist/ui/toast.d.ts +1 -1
  118. package/dist/ui/toast.js +57 -63
  119. package/dist/ui/toast.js.map +1 -1
  120. package/dist/ui/{toast.cjs → toast.mjs} +43 -74
  121. package/dist/ui/toast.mjs.map +1 -0
  122. package/dist/ui/{toggle.d.cts → toggle.d.mts} +1 -1
  123. package/dist/ui/toggle.d.ts +1 -1
  124. package/dist/ui/toggle.js +23 -29
  125. package/dist/ui/toggle.js.map +1 -1
  126. package/dist/ui/{toggle.cjs → toggle.mjs} +19 -50
  127. package/dist/ui/toggle.mjs.map +1 -0
  128. package/dist/ui/{tooltip.d.cts → tooltip.d.mts} +2 -2
  129. package/dist/ui/tooltip.d.ts +2 -2
  130. package/dist/ui/tooltip.js +29 -35
  131. package/dist/ui/tooltip.js.map +1 -1
  132. package/dist/ui/{tooltip.cjs → tooltip.mjs} +26 -58
  133. package/dist/ui/tooltip.mjs.map +1 -0
  134. package/dist/variants-Dd9pe-ov.d.mts +8 -0
  135. package/dist/variants-Dd9pe-ov.d.ts +8 -0
  136. package/package.json +10 -15
  137. package/dist/ui/accordion.cjs.map +0 -1
  138. package/dist/ui/alert.cjs.map +0 -1
  139. package/dist/ui/badge.cjs.map +0 -1
  140. package/dist/ui/buttons.cjs +0 -202
  141. package/dist/ui/buttons.cjs.map +0 -1
  142. package/dist/ui/card.cjs.map +0 -1
  143. package/dist/ui/divider.cjs.map +0 -1
  144. package/dist/ui/drawer.cjs.map +0 -1
  145. package/dist/ui/dropdown.cjs.map +0 -1
  146. package/dist/ui/empty-state.cjs +0 -186
  147. package/dist/ui/empty-state.cjs.map +0 -1
  148. package/dist/ui/index.cjs +0 -5764
  149. package/dist/ui/index.cjs.map +0 -1
  150. package/dist/ui/index.d.cts +0 -27
  151. package/dist/ui/index.d.ts +0 -27
  152. package/dist/ui/index.js +0 -5626
  153. package/dist/ui/index.js.map +0 -1
  154. package/dist/ui/inputs.cjs.map +0 -1
  155. package/dist/ui/modal.cjs.map +0 -1
  156. package/dist/ui/pagination.cjs.map +0 -1
  157. package/dist/ui/progress.cjs.map +0 -1
  158. package/dist/ui/select.cjs.map +0 -1
  159. package/dist/ui/skeleton.cjs.map +0 -1
  160. package/dist/ui/spinner.cjs.map +0 -1
  161. package/dist/ui/table.cjs.map +0 -1
  162. package/dist/ui/tabs.cjs.map +0 -1
  163. package/dist/ui/toast.cjs.map +0 -1
  164. package/dist/ui/toggle.cjs.map +0 -1
  165. package/dist/ui/tooltip.cjs.map +0 -1
  166. package/dist/variants-1Bx3BEeS.d.cts +0 -8
  167. package/dist/variants-1Bx3BEeS.d.ts +0 -8
  168. /package/dist/ui/{accordion.d.cts → accordion.d.mts} +0 -0
@@ -1,47 +1,16 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use client";
19
2
 
20
- // src/ui/tooltip/index.ts
21
- var tooltip_exports = {};
22
- __export(tooltip_exports, {
23
- Tooltip: () => Tooltip,
24
- TooltipContent: () => TooltipContent,
25
- TooltipTrigger: () => TooltipTrigger,
26
- tooltipVariants: () => tooltipVariants,
27
- useTooltip: () => useTooltip
28
- });
29
- module.exports = __toCommonJS(tooltip_exports);
3
+ import {
4
+ cn
5
+ } from "../chunk-MEWYFWBX.mjs";
30
6
 
31
7
  // src/ui/tooltip/tooltip.tsx
32
- var import_react = require("react");
33
- var import_react2 = require("react");
34
-
35
- // src/lib/utils.ts
36
- var import_clsx = require("clsx");
37
- var import_tailwind_merge = require("tailwind-merge");
38
- function cn(...inputs) {
39
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
40
- }
8
+ import { useCallback, useEffect, useRef, useState } from "react";
9
+ import { createContext, useContext } from "react";
41
10
 
42
11
  // src/ui/tooltip/variants.ts
43
- var import_class_variance_authority = require("class-variance-authority");
44
- var tooltipVariants = (0, import_class_variance_authority.cva)(
12
+ import { cva } from "class-variance-authority";
13
+ var tooltipVariants = cva(
45
14
  "absolute z-50 rounded-md shadow-md transition-all duration-200 pointer-events-none",
46
15
  {
47
16
  variants: {
@@ -94,7 +63,7 @@ var tooltipVariants = (0, import_class_variance_authority.cva)(
94
63
  );
95
64
 
96
65
  // src/ui/tooltip/tooltip.tsx
97
- var import_framer_motion = require("framer-motion");
66
+ import { motion } from "framer-motion";
98
67
 
99
68
  // src/ui/tooltip/animation.ts
100
69
  var tooltipAnimationPresets = {
@@ -112,10 +81,10 @@ var tooltipAnimationPresets = {
112
81
  };
113
82
 
114
83
  // src/ui/tooltip/tooltip.tsx
115
- var import_jsx_runtime = require("react/jsx-runtime");
116
- var TooltipContext = (0, import_react2.createContext)(null);
84
+ import { jsx } from "react/jsx-runtime";
85
+ var TooltipContext = createContext(null);
117
86
  var useTooltip = () => {
118
- const context = (0, import_react2.useContext)(TooltipContext);
87
+ const context = useContext(TooltipContext);
119
88
  if (!context) {
120
89
  throw new Error("Tooltip components must be used within Tooltip");
121
90
  }
@@ -129,32 +98,32 @@ var Tooltip = ({
129
98
  position = "top",
130
99
  delay = 100
131
100
  }) => {
132
- const [uncontrolledOpen, setUncontrolledOpen] = (0, import_react.useState)(defaultOpen);
101
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
133
102
  const isControlled = controlledOpen !== void 0;
134
103
  const open = isControlled ? controlledOpen : uncontrolledOpen;
135
- const setOpen = (0, import_react.useCallback)(
104
+ const setOpen = useCallback(
136
105
  (value) => {
137
106
  if (!isControlled) setUncontrolledOpen(value);
138
107
  onOpenChange?.(value);
139
108
  },
140
109
  [isControlled, onOpenChange]
141
110
  );
142
- const showTimeoutRef = (0, import_react.useRef)(null);
143
- const cancelDelayedOpen = (0, import_react.useCallback)(() => {
111
+ const showTimeoutRef = useRef(null);
112
+ const cancelDelayedOpen = useCallback(() => {
144
113
  if (showTimeoutRef.current !== null) {
145
114
  clearTimeout(showTimeoutRef.current);
146
115
  showTimeoutRef.current = null;
147
116
  }
148
117
  }, []);
149
- const scheduleDelayedOpen = (0, import_react.useCallback)(() => {
118
+ const scheduleDelayedOpen = useCallback(() => {
150
119
  cancelDelayedOpen();
151
120
  showTimeoutRef.current = setTimeout(() => {
152
121
  showTimeoutRef.current = null;
153
122
  setOpen(true);
154
123
  }, delay);
155
124
  }, [cancelDelayedOpen, delay, setOpen]);
156
- (0, import_react.useEffect)(() => () => cancelDelayedOpen(), [cancelDelayedOpen]);
157
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
125
+ useEffect(() => () => cancelDelayedOpen(), [cancelDelayedOpen]);
126
+ return /* @__PURE__ */ jsx(
158
127
  TooltipContext.Provider,
159
128
  {
160
129
  value: {
@@ -165,7 +134,7 @@ var Tooltip = ({
165
134
  scheduleDelayedOpen,
166
135
  cancelDelayedOpen
167
136
  },
168
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative inline-block", children })
137
+ children: /* @__PURE__ */ jsx("div", { className: "relative inline-block", children })
169
138
  }
170
139
  );
171
140
  };
@@ -197,7 +166,7 @@ var TooltipTrigger = ({
197
166
  className,
198
167
  tabIndex: 0
199
168
  };
200
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { ...triggerProps, children });
169
+ return /* @__PURE__ */ jsx("span", { ...triggerProps, children });
201
170
  };
202
171
  var TooltipContent = ({
203
172
  children,
@@ -216,8 +185,8 @@ var TooltipContent = ({
216
185
  right: "left-full top-1/2 -translate-y-1/2 ml-2"
217
186
  };
218
187
  const motionProps = tooltipAnimationPresets[animation];
219
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
220
- import_framer_motion.motion.div,
188
+ return /* @__PURE__ */ jsx(
189
+ motion.div,
221
190
  {
222
191
  "data-open": open,
223
192
  role: "tooltip",
@@ -231,12 +200,11 @@ var TooltipContent = ({
231
200
  }
232
201
  );
233
202
  };
234
- // Annotate the CommonJS export names for ESM import in node:
235
- 0 && (module.exports = {
203
+ export {
236
204
  Tooltip,
237
205
  TooltipContent,
238
206
  TooltipTrigger,
239
207
  tooltipVariants,
240
208
  useTooltip
241
- });
242
- //# sourceMappingURL=tooltip.cjs.map
209
+ };
210
+ //# sourceMappingURL=tooltip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/tooltip/tooltip.tsx","../../src/ui/tooltip/variants.ts","../../src/ui/tooltip/animation.ts"],"sourcesContent":["\"use client\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n TooltipProps,\n TooltipContextType,\n TooltipTriggerProps,\n TooltipContentProps,\n} from \"./types\";\n\nimport { createContext, useContext } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { tooltipVariants } from \"./variants\";\nimport { motion } from \"framer-motion\";\nimport { tooltipAnimationPresets } from \"./animation\";\n\nexport const TooltipContext = createContext<TooltipContextType | null>(null);\n\nexport const useTooltip = () => {\n const context = useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within Tooltip\");\n }\n return context;\n};\nexport const Tooltip = ({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n position = \"top\",\n delay = 100,\n}: TooltipProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) setUncontrolledOpen(value);\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const showTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const cancelDelayedOpen = useCallback(() => {\n if (showTimeoutRef.current !== null) {\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleDelayedOpen = useCallback(() => {\n cancelDelayedOpen();\n showTimeoutRef.current = setTimeout(() => {\n showTimeoutRef.current = null;\n setOpen(true);\n }, delay);\n }, [cancelDelayedOpen, delay, setOpen]);\n\n useEffect(() => () => cancelDelayedOpen(), [cancelDelayedOpen]);\n\n return (\n <TooltipContext.Provider\n value={{\n open,\n setOpen,\n position,\n delay,\n scheduleDelayedOpen,\n cancelDelayedOpen,\n }}\n >\n <div className=\"relative inline-block\">{children}</div>\n </TooltipContext.Provider>\n );\n};\n\nexport const TooltipTrigger = ({\n children,\n className,\n}: TooltipTriggerProps) => {\n const { setOpen, scheduleDelayedOpen, cancelDelayedOpen } = useTooltip();\n\n const triggerProps = {\n onMouseEnter: () => scheduleDelayedOpen(),\n onMouseLeave: () => {\n cancelDelayedOpen();\n setOpen(false);\n },\n onFocus: () => {\n cancelDelayedOpen();\n setOpen(true);\n },\n onBlur: () => {\n cancelDelayedOpen();\n setOpen(false);\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") {\n cancelDelayedOpen();\n setOpen(false);\n }\n },\n className,\n tabIndex: 0,\n };\n\n return <span {...triggerProps}>{children}</span>;\n};\n\nexport const TooltipContent = ({\n children,\n className,\n variant,\n size,\n width,\n animation = \"none\",\n}: TooltipContentProps) => {\n const { open, position } = useTooltip();\n\n if (!open) return null;\n\n const positionStyles = {\n top: \"bottom-full mb-2\",\n bottom: \"top-full mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n };\n\n const motionProps = tooltipAnimationPresets[animation];\n\n return (\n <motion.div\n data-open={open}\n role=\"tooltip\"\n {...motionProps}\n className={cn(\n tooltipVariants({ variant, size, width }),\n positionStyles[position],\n className,\n )}\n >\n {children}\n </motion.div>\n );\n};\n","import { cva } from \"class-variance-authority\"\n\nexport const tooltipVariants = cva(\n \"absolute z-50 rounded-md shadow-md transition-all duration-200 pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-black text-white\",\n outline: \"border bg-white text-black\",\n ghost: \"bg-gray-800 text-white/90\",\n glass: \"border border-white/15 bg-white/10 text-white backdrop-blur-md\",\n emerald: \"bg-emerald-600 text-white\",\n indigo: \"bg-indigo-600 text-white\",\n purple: \"bg-purple-600 text-white\",\n pink: \"bg-pink-600 text-white\",\n rose: \"bg-rose-600 text-white\",\n sky: \"bg-sky-600 text-white\",\n teal: \"bg-teal-600 text-white\",\n yellow: \"bg-yellow-600 text-white\",\n orange: \"bg-orange-600 text-white\",\n green: \"bg-green-600 text-white\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 text-white\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 text-white\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 text-white\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 text-white\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 text-white\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-1.5\",\n lg: \"text-base px-4 py-2\",\n },\n width:{\n fit: \"min-w-75 md:min-w-fit\",\n xs: \"min-w-75 md:min-w-xs\",\n sm: \"min-w-75 md:min-w-sm\",\n md: \"min-w-75 md:min-w-md\",\n lg: \"min-w-75 md:min-w-lg\",\n xl: \"min-w-75 md:min-w-xl\",\n \"2xl\": \"min-w-75 md:min-w-2xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n width: \"xs\",\n },\n }\n)","import type { HTMLMotionProps } from \"framer-motion\";\nimport { TooltipAnimation } from \"./types\";\n\ntype TooltipPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"style\" | \"transition\"\n>;\n\nexport type TooltipAnimationPresets = Record<TooltipAnimation, TooltipPresetMotionProps>;\n\n/** Runs when TooltipContent mounts after open (e.g. trigger hover + delay), not viewport scroll. */\nexport const tooltipAnimationPresets: TooltipAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.15, ease: \"easeOut\" },\n },\n scale: {\n initial: { opacity: 0, scale: 0.96 },\n animate: { opacity: 1, scale: 1 },\n transition: { duration: 0.15, ease: \"easeIn\" },\n },\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,8 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+
3
+ declare const buttonVariants: (props?: ({
4
+ appearance?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | "glass" | "emerald" | "indigo" | "purple" | "pink" | "rose" | "sky" | "teal" | "yellow" | "orange" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "10xl" | "icon" | null | undefined;
6
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
7
+
8
+ export { buttonVariants as b };
@@ -0,0 +1,8 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+
3
+ declare const buttonVariants: (props?: ({
4
+ appearance?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | "glass" | "emerald" | "indigo" | "purple" | "pink" | "rose" | "sky" | "teal" | "yellow" | "orange" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "10xl" | "icon" | null | undefined;
6
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
7
+
8
+ export { buttonVariants as b };
package/package.json CHANGED
@@ -1,21 +1,14 @@
1
1
  {
2
2
  "name": "@zentauri-ui/zentauri-components",
3
- "type": "module",
4
- "version": "0.0.91",
3
+ "version": "0.0.93",
5
4
  "description": "A UI component library built with React and Tailwind CSS",
6
5
  "license": "MIT",
7
6
  "files": ["dist"],
8
- "main": "./dist/ui/index.js",
9
7
  "sideEffects": false,
10
8
  "publishConfig": {
11
9
  "access": "public"
12
10
  },
13
11
  "exports": {
14
- "./ui": {
15
- "types": "./dist/ui/index.d.ts",
16
- "import": "./dist/ui/index.js",
17
- "require": "./dist/ui/index.cjs"
18
- },
19
12
  "./ui/*": {
20
13
  "types": "./dist/ui/*.d.ts",
21
14
  "import": "./dist/ui/*.js",
@@ -30,14 +23,16 @@
30
23
  },
31
24
  "peerDependencies": {
32
25
  "react": ">=18",
33
- "react-dom": ">=18"
26
+ "react-dom": ">=18",
27
+ "class-variance-authority": "*",
28
+ "clsx": "*",
29
+ "tailwind-merge": "*",
30
+ "framer-motion": "*",
31
+ "react-icons": "*"
34
32
  },
35
- "dependencies": {
36
- "class-variance-authority": "^0.7.1",
37
- "clsx": "^2.1.1",
38
- "framer-motion": "^12.38.0",
39
- "react-icons": "^5.6.0",
40
- "tailwind-merge": "^3.5.0"
33
+ "peerDependenciesMeta": {
34
+ "framer-motion": { "optional": true },
35
+ "react-icons": { "optional": true }
41
36
  },
42
37
  "devDependencies": {
43
38
  "@repo/typescript-config": "workspace:*",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/accordion/index.ts","../../src/ui/accordion/accordion.tsx","../../src/lib/utils.ts","../../src/ui/accordion/animations.ts","../../src/ui/accordion/variants.ts"],"sourcesContent":["export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from \"./accordion\";\nexport type {\n AccordionContentProps,\n AccordionItemProps,\n AccordionProps,\n AccordionTransition,\n AccordionTriggerProps,\n AccordionType,\n} from \"./types\";\nexport { accordionContentTransitionPresets } from \"./animations\";\nexport {\n accordionVariants,\n accordionItemVariants,\n accordionTriggerVariants,\n accordionContentVariants,\n} from \"./variants\";\n","\"use client\";\nimport { motion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState,\n} from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { accordionContentTransitionPresets } from \"./animations\";\nimport type {\n AccordionContentProps,\n AccordionItemProps,\n AccordionProps,\n AccordionTriggerProps,\n AccordionCtx,\n} from \"./types\";\nimport {\n accordionContentVariants,\n accordionItemVariants,\n accordionTriggerVariants,\n accordionVariants,\n} from \"./variants\";\n\n\nconst AccordionContext = createContext<AccordionCtx | null>(null);\n\nconst AccordionItemValueContext = createContext<string | null>(null);\n\nfunction useAccordionContext(component: string): AccordionCtx {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Accordion>`);\n }\n return ctx;\n}\n\nfunction useAccordionItemValue(component: string): string {\n const value = useContext(AccordionItemValueContext);\n if (!value) {\n throw new Error(`${component} must be used within <AccordionItem>`);\n }\n return value;\n}\n\nexport function Accordion({\n type = \"single\",\n value,\n values,\n defaultValue,\n defaultValues,\n onValueChange,\n onValuesChange,\n transition = \"default\",\n appearance = \"default\",\n size = \"md\",\n className,\n children,\n}: AccordionProps) {\n const isSingleControlled = value !== undefined;\n const isMultipleControlled = values !== undefined;\n const [singleUncontrolled, setSingleUncontrolled] = useState<string | undefined>(defaultValue);\n const [multipleUncontrolled, setMultipleUncontrolled] = useState<string[]>(defaultValues ?? []);\n\n const singleValue = isSingleControlled ? value : singleUncontrolled;\n const multipleValues = useMemo(() => isMultipleControlled ? values ?? [] : multipleUncontrolled, [isMultipleControlled, values, multipleUncontrolled]);\n\n const isOpen = useCallback(\n (itemValue: string) => {\n if (type === \"single\") {\n return singleValue === itemValue;\n }\n return multipleValues.includes(itemValue);\n },\n [multipleValues, singleValue, type],\n );\n\n const toggle = useCallback(\n (itemValue: string) => {\n if (type === \"single\") {\n const next = singleValue === itemValue ? undefined : itemValue;\n if (!isSingleControlled) {\n setSingleUncontrolled(next);\n }\n onValueChange?.(next);\n return;\n }\n const exists = multipleValues.includes(itemValue);\n const next = exists\n ? multipleValues.filter((entry) => entry !== itemValue)\n : [...multipleValues, itemValue];\n if (!isMultipleControlled) {\n setMultipleUncontrolled(next);\n }\n onValuesChange?.(next);\n },\n [\n isMultipleControlled,\n isSingleControlled,\n multipleValues,\n onValueChange,\n onValuesChange,\n singleValue,\n type,\n ],\n );\n\n const ctx = useMemo(\n () => ({\n type,\n transition: transition ?? \"default\",\n appearance: appearance ?? \"default\",\n size: size ?? \"md\",\n isOpen,\n toggle,\n }),\n [appearance, isOpen, size, toggle, transition, type],\n );\n\n return (\n <AccordionContext.Provider value={ctx}>\n <div data-slot=\"accordion\" className={cn(accordionVariants({ appearance, size }), className)}>\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\nAccordion.displayName = \"Accordion\";\n\nexport function AccordionItem({ className, value, children, ref, ...rest }: AccordionItemProps) {\n const { appearance } = useAccordionContext(\"AccordionItem\");\n return (\n <AccordionItemValueContext.Provider value={value}>\n <div\n ref={ref}\n data-slot=\"accordion-item\"\n data-value={value}\n className={cn(accordionItemVariants({ appearance }), className)}\n {...rest}\n >\n {children}\n </div>\n </AccordionItemValueContext.Provider>\n );\n}\n\nAccordionItem.displayName = \"AccordionItem\";\n\nexport function AccordionTrigger({ className, children, ref, ...rest }: AccordionTriggerProps) {\n const itemValue = useAccordionItemValue(\"AccordionTrigger\");\n const { isOpen, toggle, size } = useAccordionContext(\"AccordionTrigger\");\n const open = isOpen(itemValue);\n const panelId = `${itemValue}-panel`;\n const baseId = useId();\n\n return (\n <h3 className=\"m-0\">\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"accordion-trigger\"\n id={`${baseId}-trigger-${itemValue}`}\n aria-expanded={open}\n aria-controls={panelId}\n className={cn(accordionTriggerVariants({ size }), className)}\n onClick={() => toggle(itemValue)}\n {...rest}\n >\n {children}\n </button>\n </h3>\n );\n}\n\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport function AccordionContent({ className, children, ref }: AccordionContentProps) {\n const itemValue = useAccordionItemValue(\"AccordionContent\");\n const { isOpen, transition: transitionVariant, size } = useAccordionContext(\"AccordionContent\");\n const open = isOpen(itemValue);\n const panelId = `${itemValue}-panel`;\n const transitionConfig = accordionContentTransitionPresets[transitionVariant];\n const motionless = transitionVariant === \"none\";\n\n return (\n open ? (\n <motion.div\n key={itemValue}\n ref={ref}\n id={panelId}\n role=\"region\"\n data-slot=\"accordion-content\"\n className={cn(accordionContentVariants({ size }), className)}\n initial={motionless ? false : { opacity: 0 }}\n animate={motionless ? undefined : { opacity: 1 }}\n exit={motionless ? undefined : { opacity: 0 }}\n transition={transitionConfig}\n >\n {children}\n </motion.div>\n ) : null\n );\n}\n\nAccordionContent.displayName = \"AccordionContent\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { Transition } from \"framer-motion\";\n\n/** Easing and duration presets for accordion panel open/close (opacity only). */\nexport type AccordionTransition = \"none\" | \"default\" | \"smooth\" | \"slow\";\n\nexport type AccordionTransitionPresets = Record<AccordionTransition, Transition>;\n\nexport const accordionContentTransitionPresets: AccordionTransitionPresets = {\n none: { duration: 0 },\n default: { duration: 0.2, ease: [0.4, 0, 0.2, 1] },\n smooth: { duration: 0.28, ease: [0.22, 1, 0.36, 1] },\n slow: { duration: 0.38, ease: [0.4, 0, 0.2, 1] },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const accordionVariants = cva(\"w-full\", {\n variants: {\n appearance: {\n default: \"divide-y divide-white/10 rounded-xl border border-white/10\",\n outline: \"divide-y divide-white/10 rounded-xl border border-white/15\",\n ghost: \"divide-y divide-white/5\",\n card: \"space-y-2\",\n separated: \"space-y-3\",\n sky: \"divide-y divide-sky-600 rounded-xl border border-sky-600\",\n rose: \"divide-y divide-rose-600 rounded-xl border border-rose-600\",\n purple: \"divide-y divide-purple-600 rounded-xl border border-purple-600\",\n pink: \"divide-y divide-pink-600 rounded-xl border border-pink-600\",\n orange: \"divide-y divide-orange-600 rounded-xl border border-orange-600\",\n yellow: \"divide-y divide-yellow-600 rounded-xl border border-yellow-600\",\n teal: \"divide-y divide-teal-600 rounded-xl border border-teal-600\",\n indigo: \"divide-y divide-indigo-600 rounded-xl border border-indigo-600\",\n emerald: \"divide-y divide-emerald-600 rounded-xl border border-emerald-600\",\n \"gradient-blue\": \"divide-y divide-gradient-to-r from-blue-600 to-purple-600 rounded-xl border border-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"divide-y divide-gradient-to-r from-green-600 to-lime-600 rounded-xl border border-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"divide-y divide-gradient-to-r from-red-600 to-pink-600 rounded-xl border border-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"divide-y divide-gradient-to-r from-yellow-600 to-orange-600 rounded-xl border border-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"divide-y divide-gradient-to-r from-purple-600 to-pink-600 rounded-xl border border-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"divide-y divide-gradient-to-r from-teal-600 to-cyan-600 rounded-xl border border-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"divide-y divide-gradient-to-r from-indigo-600 to-purple-600 rounded-xl border border-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"divide-y divide-gradient-to-r from-pink-600 to-rose-600 rounded-xl border border-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"divide-y divide-gradient-to-r from-orange-600 to-red-600 rounded-xl border border-gradient-to-r from-orange-600 to-red-600\",\n },\n size: {\n sm: \"px-3 py-2 text-sm\",\n md: \"px-4 py-3 text-sm\",\n lg: \"px-5 py-4 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n\nexport const accordionItemVariants = cva(\"\", {\n variants: {\n appearance: {\n default: \"\",\n outline: \"\",\n ghost: \"\",\n card: \"rounded-xl border border-white/10 bg-white/[0.03] p-2\",\n separated: \"rounded-xl border border-white/10 bg-slate-950/40 p-2\",\n sky: \"rounded-xl border border-sky-600 bg-sky-600/[0.03] p-2\",\n rose: \"rounded-xl border border-rose-600 bg-rose-600/[0.03] p-2\",\n purple: \"rounded-xl border border-purple-600 bg-purple-600/[0.03] p-2\",\n pink: \"rounded-xl border border-pink-600 bg-pink-600/[0.03] p-2\",\n orange: \"rounded-xl border border-orange-600 bg-orange-600/[0.03] p-2\",\n yellow: \"rounded-xl border border-yellow-600 bg-yellow-600/[0.03] p-2\",\n teal: \"rounded-xl border border-teal-600 bg-teal-600/[0.03] p-2\",\n indigo: \"rounded-xl border border-indigo-600 bg-indigo-600/[0.03] p-2\",\n emerald: \"rounded-xl border border-emerald-600 bg-emerald-600/[0.03] p-2\",\n \"gradient-blue\": \"rounded-xl bg-linear-to-r from-blue-600 to-purple-600/[0.03] p-2 text-white\",\n \"gradient-green\": \"rounded-xl bg-linear-to-r from-green-600 to-lime-600/[0.03] p-2 text-white\",\n \"gradient-red\": \"rounded-xl bg-linear-to-r from-red-600 to-pink-600/[0.03] p-2 text-white\",\n \"gradient-yellow\": \"rounded-xl bg-linear-to-r from-yellow-600 to-orange-600/[0.03] p-2 text-white\",\n \"gradient-purple\": \"rounded-xl bg-linear-to-r from-purple-600 to-pink-600/[0.03] p-2 text-white\",\n \"gradient-teal\": \"rounded-xl bg-linear-to-r from-teal-600 to-cyan-600/[0.03] p-2 text-white\",\n \"gradient-indigo\": \"rounded-xl bg-linear-to-r from-indigo-600 to-purple-600/[0.03] p-2 text-white\",\n \"gradient-pink\": \"rounded-xl bg-linear-to-r from-pink-600 to-rose-600/[0.03] p-2 text-white\",\n \"gradient-orange\": \"rounded-xl bg-linear-to-r from-orange-600 to-red-600/[0.03] p-2 text-white\",\n },\n },\n defaultVariants: { appearance: \"default\" },\n});\n\nexport const accordionTriggerVariants = cva(\n \"flex w-full items-center justify-between gap-3 py-3 text-left font-medium text-slate-50 outline-none transition hover:text-white focus-visible:ring-2 focus-visible:ring-white/30\",\n {\n variants: {\n size: {\n sm: \"py-2 text-sm\",\n md: \"py-3 text-sm\",\n lg: \"py-4 text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const accordionContentVariants = cva(\"pb-3 text-sm\", {\n variants: {\n size: {\n sm: \"pb-2 text-xs\",\n md: \"pb-3 text-sm\",\n lg: \"pb-4 text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n"],"mappings":"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","names":["next"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/alert/index.ts","../../src/ui/alert/alert.tsx","../../src/lib/utils.ts","../../src/ui/alert/animations.ts","../../src/ui/alert/variants.ts"],"sourcesContent":["export {\n Alert,\n AlertClose,\n AlertDefaultIcon,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n} from \"./alert\";\nexport type { AlertAnimation, AlertProps, AlertSectionProps, AlertSize } from \"./types\";\nexport { alertAnimationPresets } from \"./animations\";\nexport {\n alertVariants,\n alertTitleVariants,\n alertDescriptionVariants,\n} from \"./variants\";\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { HiExclamationTriangle, HiInformationCircle, HiXMark } from \"react-icons/hi2\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { alertAnimationPresets } from \"./animations\";\nimport type { AlertProps, AlertSectionProps, AlertSize } from \"./types\";\nimport {\n alertDescriptionVariants,\n alertTitleVariants,\n alertVariants,\n} from \"./variants\";\n\nconst AlertSizeContext = createContext<AlertSize>(\"md\");\n\nfunction useAlertSize(): AlertSize {\n const ctx = useContext(AlertSizeContext);\n if (!ctx) {\n throw new Error(\"useAlertSize must be used within an Alert\");\n }\n return ctx;\n}\n\nexport function Alert(props: AlertProps) {\n const {\n className,\n triggerClassName,\n appearance,\n size = \"md\",\n animation = \"none\",\n closable = false,\n onClose,\n closeLabel = \"Dismiss alert\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = alertAnimationPresets[animation];\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <AlertSizeContext.Provider value={ctx}>\n <motion.div\n ref={ref}\n data-slot=\"alert\"\n role=\"alert\"\n aria-live={live}\n className={cn(\n alertVariants({ appearance, size }),\n closable ? \"pr-12\" : \"\",\n className,\n )}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {children}\n {closable ? (\n <button\n type=\"button\"\n data-slot=\"alert-close\"\n aria-label={closeLabel}\n onClick={onClose}\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n triggerClassName,\n )}\n >\n <HiXMark className=\"size-4\" aria-hidden />\n </button>\n ) : null}\n </motion.div>\n </AlertSizeContext.Provider>\n );\n}\n\nAlert.displayName = \"Alert\";\n\nexport function AlertIcon({ className, children }: AlertSectionProps) {\n return (\n <span data-slot=\"alert-icon\" className={cn(\"mt-0.5 shrink-0 text-current\", className)}>\n {children}\n </span>\n );\n}\n\nAlertIcon.displayName = \"AlertIcon\";\n\nexport function AlertTitle({ className, children }: AlertSectionProps) {\n const size = useAlertSize();\n return (\n <div data-slot=\"alert-title\" className={cn(alertTitleVariants({ size }), className)}>\n {children}\n </div>\n );\n}\n\nAlertTitle.displayName = \"AlertTitle\";\n\nexport function AlertDescription({ className, children }: AlertSectionProps) {\n const size = useAlertSize();\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(alertDescriptionVariants({ size }), className)}\n >\n {children}\n </div>\n );\n}\n\nAlertDescription.displayName = \"AlertDescription\";\n\nexport function AlertClose({\n className,\n children,\n \"aria-label\": ariaLabel = \"Dismiss alert\",\n onClick,\n}: AlertSectionProps & { onClick?: () => void; \"aria-label\"?: string }) {\n return (\n <button\n type=\"button\"\n data-slot=\"alert-close\"\n aria-label={ariaLabel}\n onClick={onClick}\n className={cn(\n \"inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n >\n {children ?? <HiXMark className=\"size-4\" aria-hidden />}\n </button>\n );\n}\n\nAlertClose.displayName = \"AlertClose\";\n\nexport function AlertDefaultIcon({ appearance }: { appearance?: AlertProps[\"appearance\"] }) {\n if (appearance === \"error\") {\n return <HiExclamationTriangle className=\"size-5\" aria-hidden />;\n }\n return <HiInformationCircle className=\"size-5\" aria-hidden />;\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { AlertAnimation } from \"./types\";\n\ntype AlertPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type AlertAnimationPresets = Record<AlertAnimation, AlertPresetMotionProps>;\n\nexport const alertAnimationPresets: AlertAnimationPresets = {\n none: {},\n \"slide-down\": {\n initial: { y: -8, opacity: 0 },\n animate: { y: 0, opacity: 1 },\n transition: { type: \"spring\", stiffness: 420, damping: 30 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.2 },\n },\n pop: {\n initial: { scale: 0.96, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 520, damping: 28 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const alertVariants = cva(\n \"relative flex w-full gap-3 border text-sm ring-offset-slate-950 transition-colors\",\n {\n variants: {\n appearance: {\n default: \"border-white/10 bg-white/5 text-slate-50\",\n success: \"border-emerald-500/40 bg-emerald-500/10 text-emerald-50\",\n warning: \"border-amber-500/40 bg-amber-500/10 text-amber-50\",\n error: \"border-rose-500/50 bg-rose-500/10 text-rose-50\",\n info: \"border-sky-500/40 bg-sky-500/10 text-sky-50\",\n ghost: \"border-transparent bg-transparent text-slate-200\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"rounded-lg p-3\",\n md: \"rounded-xl p-4\",\n lg: \"rounded-2xl p-5 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport const alertTitleVariants = cva(\"font-semibold leading-tight\", {\n variants: {\n size: {\n sm: \"text-xs md:text-sm\",\n md: \"text-xs md:text-sm\",\n lg: \"text-xs md:text-sm\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const alertDescriptionVariants = cva(\"text-slate-300\", {\n variants: {\n size: {\n sm: \"text-xs md:text-sm\",\n md: \"text-xs md:text-sm\",\n lg: \"text-xs md:text-sm\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/badge/index.ts","../../src/ui/badge/badge.tsx","../../src/lib/utils.ts","../../src/ui/badge/animations.ts","../../src/ui/badge/variants.ts"],"sourcesContent":["export { Badge } from \"./badge\";\nexport type { BadgeAnimation, BadgeProps } from \"./types\";\nexport { badgeAnimationPresets } from \"./animations\";\nexport { badgeVariants, badgeCloseButtonVariants } from \"./variants\";\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { HiXMark } from \"react-icons/hi2\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { badgeAnimationPresets } from \"./animations\";\nimport type { BadgeProps } from \"./types\";\nimport { badgeCloseButtonVariants, badgeVariants } from \"./variants\";\n\nexport function Badge(props: BadgeProps) {\n const {\n className,\n appearance,\n size,\n shape,\n animation = \"none\",\n closable = false,\n onClose,\n closeLabel = \"Remove\",\n children,\n ref,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n const motionProps = badgeAnimationPresets[animation];\n const isDot = shape === \"dot\";\n const resolvedAriaLabel =\n ariaLabel ?? (isDot ? \"Status indicator\" : undefined);\n\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"badge\"\n aria-label={resolvedAriaLabel}\n className={cn(badgeVariants({ appearance, size, shape }), className)}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {!isDot ? children : null}\n {closable ? (\n <button\n type=\"button\"\n data-slot=\"badge-close\"\n aria-label={closeLabel}\n onClick={onClose}\n className={badgeCloseButtonVariants({ size })}\n >\n <HiXMark className=\"size-3.5\" aria-hidden />\n </button>\n ) : null}\n </motion.span>\n );\n}\n\nBadge.displayName = \"Badge\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { BadgeAnimation } from \"./types\";\n\ntype BadgePresetMotionProps = Pick<\n HTMLMotionProps<\"span\">,\n \"style\" | \"transition\" | \"whileHover\" | \"whileTap\" | \"animate\" | \"initial\"\n>;\n\nexport type BadgeAnimationPresets = Record<\n BadgeAnimation,\n BadgePresetMotionProps\n>;\n\nexport const badgeAnimationPresets: BadgeAnimationPresets = {\n none: {},\n pop: {\n initial: { scale: 0.92, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 520, damping: 28 },\n },\n bounce: {\n whileHover: { y: -2, scale: 1.04 },\n whileTap: { scale: 0.96 },\n transition: { type: \"spring\", bounce: 0.45, stiffness: 420, damping: 18 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.2 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\n/**\n * Tailwind class maps mirroring `buttons/variants.ts` appearance tokens.\n * Reused by primitives that should stay visually aligned with Button.\n */\nexport const buttonLikeSolidAppearances = {\n default:\n \"bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)]\",\n secondary: \"bg-slate-800 text-slate-50\",\n destructive: \"bg-rose-600 text-white\",\n outline: \"border border-white/10 bg-white/5 text-slate-50\",\n ghost: \"bg-transparent text-slate-200\",\n glass: \"border border-white/15 bg-white/10 text-white backdrop-blur-md\",\n emerald: \"bg-emerald-600 text-white\",\n indigo: \"bg-indigo-600 text-white\",\n purple: \"bg-purple-600 text-white\",\n pink: \"bg-pink-600 text-white\",\n rose: \"bg-rose-600 text-white\",\n sky: \"bg-sky-600 text-white\",\n teal: \"bg-teal-600 text-white\",\n yellow: \"bg-yellow-600 text-white\",\n orange: \"bg-orange-600 text-white\",\n \"gradient-blue\":\n \"bg-gradient-to-r from-blue-600 to-purple-600 text-white\",\n \"gradient-green\":\n \"bg-gradient-to-r from-green-600 to-lime-600 text-white\",\n \"gradient-red\":\n \"bg-gradient-to-r from-red-600 to-pink-600 text-white\",\n \"gradient-yellow\":\n \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white\",\n \"gradient-purple\":\n \"bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"gradient-teal\":\n \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white\",\n \"gradient-indigo\":\n \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white\",\n \"gradient-pink\":\n \"bg-gradient-to-r from-pink-600 to-rose-600 text-white\",\n \"gradient-orange\":\n \"bg-gradient-to-r from-orange-600 to-red-600 text-white\",\n} as const;\n\nexport type ButtonLikeSolidAppearance = keyof typeof buttonLikeSolidAppearances;\n\n\nconst badgeAppearances = {\n ...buttonLikeSolidAppearances,\n outline:\n \"border border-white/15 bg-transparent text-slate-200 shadow-none\",\n ghost: \"bg-transparent text-slate-300 shadow-none\",\n} as const;\n\nexport const badgeVariants = cva(\n [\n \"inline-flex max-w-full items-center justify-center gap-1 font-medium\",\n \"whitespace-nowrap ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n \"select-none\",\n ],\n {\n variants: {\n appearance: badgeAppearances,\n size: {\n sm: \"h-6 min-h-6 px-2 text-[0.65rem] leading-none\",\n md: \"h-7 min-h-7 px-2.5 text-xs leading-none\",\n lg: \"h-8 min-h-8 px-3 text-sm leading-none\",\n },\n shape: {\n pill: \"rounded-full\",\n square: \"rounded-md\",\n dot: \"h-2.5 min-h-2.5 w-2.5 min-w-2.5 rounded-full p-0 px-0 text-[0]\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n shape: \"pill\",\n },\n },\n);\n\nexport const badgeCloseButtonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center rounded-md p-0.5 text-current opacity-70 transition hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40\",\n {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-6\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n"],"mappings":"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","names":[]}
@@ -1,202 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/ui/buttons/index.ts
21
- var buttons_exports = {};
22
- __export(buttons_exports, {
23
- Button: () => Button,
24
- buttonAnimationPresets: () => buttonAnimationPresets,
25
- buttonVariants: () => buttonVariants
26
- });
27
- module.exports = __toCommonJS(buttons_exports);
28
-
29
- // src/ui/buttons/button.tsx
30
- var import_framer_motion = require("framer-motion");
31
-
32
- // src/lib/utils.ts
33
- var import_clsx = require("clsx");
34
- var import_tailwind_merge = require("tailwind-merge");
35
- function cn(...inputs) {
36
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
37
- }
38
-
39
- // src/ui/buttons/animations.ts
40
- var buttonAnimationPresets = {
41
- none: {},
42
- lift: {
43
- whileHover: { y: -2, scale: 1.02 },
44
- whileTap: { y: 0, scale: 0.98 },
45
- transition: { type: "spring", stiffness: 420, damping: 28 }
46
- },
47
- press: {
48
- whileTap: { scale: 0.96 },
49
- transition: { type: "spring", stiffness: 520, damping: 30 }
50
- },
51
- glow: {
52
- whileHover: {
53
- boxShadow: "0 0 0 1px rgba(255,255,255,0.25), 0 18px 42px rgba(15,23,42,0.35)",
54
- scale: 1.01
55
- },
56
- whileTap: { scale: 0.98 },
57
- transition: { duration: 0.2, ease: "easeOut" }
58
- },
59
- tilt: {
60
- whileHover: { rotateX: 6, rotateY: -6, scale: 1.01 },
61
- whileTap: { scale: 0.98, rotateX: 0, rotateY: 0 },
62
- transition: { type: "spring", stiffness: 300, damping: 20 },
63
- style: { transformStyle: "preserve-3d" }
64
- },
65
- bounce: {
66
- whileHover: { y: -4, scale: 1.03 },
67
- whileTap: { y: 0, scale: 0.97 },
68
- transition: { type: "spring", bounce: 0.45, duration: 0.45 }
69
- }
70
- };
71
-
72
- // src/ui/buttons/variants.ts
73
- var import_class_variance_authority = require("class-variance-authority");
74
- var buttonVariants = (0, import_class_variance_authority.cva)(
75
- [
76
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl",
77
- "text-sm font-medium ring-offset-slate-950 transition-colors",
78
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2",
79
- "disabled:pointer-events-none disabled:opacity-50",
80
- "select-none"
81
- ],
82
- {
83
- variants: {
84
- appearance: {
85
- default: "bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-white",
86
- secondary: "bg-slate-800 text-slate-50 hover:bg-slate-700",
87
- destructive: "bg-rose-600 text-white hover:bg-rose-600",
88
- outline: "border border-white/10 bg-white/5 text-slate-50 hover:bg-white/10",
89
- ghost: "bg-transparent text-slate-200 hover:bg-white/5",
90
- link: "bg-transparent text-cyan-300 underline-offset-4 hover:underline",
91
- glass: "border border-white/15 bg-white/10 text-white backdrop-blur-md hover:bg-white/15",
92
- emerald: "bg-emerald-600 text-white hover:bg-emerald-600",
93
- indigo: "bg-indigo-600 text-white hover:bg-indigo-600",
94
- purple: "bg-purple-600 text-white hover:bg-purple-600",
95
- pink: "bg-pink-600 text-white hover:bg-pink-600",
96
- rose: "bg-rose-600 text-white hover:bg-rose-600",
97
- sky: "bg-sky-600 text-white hover:bg-sky-600",
98
- teal: "bg-teal-600 text-white hover:bg-teal-600",
99
- yellow: "bg-yellow-600 text-white hover:bg-yellow-600",
100
- orange: "bg-orange-600 text-white hover:bg-orange-600",
101
- gray: "bg-gray-600 text-white hover:bg-gray-600",
102
- amber: "bg-amber-600 text-white hover:bg-amber-600",
103
- violet: "bg-violet-600 text-white hover:bg-violet-600",
104
- "gradient-blue": "bg-gradient-to-r from-blue-600 to-purple-600 text-white hover:from-blue-600 hover:to-purple-600",
105
- "gradient-green": "bg-gradient-to-r from-green-600 to-lime-600 text-white hover:from-green-600 hover:to-lime-600",
106
- "gradient-red": "bg-gradient-to-r from-red-600 to-pink-600 text-white hover:from-red-600 hover:to-pink-600",
107
- "gradient-yellow": "bg-gradient-to-r from-yellow-600 to-orange-600 text-white hover:from-yellow-600 hover:to-orange-600",
108
- "gradient-purple": "bg-gradient-to-r from-purple-600 to-pink-600 text-white hover:from-purple-600 hover:to-pink-600",
109
- "gradient-teal": "bg-gradient-to-r from-teal-600 to-cyan-600 text-white hover:from-teal-600 hover:to-cyan-600",
110
- "gradient-indigo": "bg-gradient-to-r from-indigo-600 to-purple-600 text-white hover:from-indigo-600 hover:to-purple-600",
111
- "gradient-pink": "bg-gradient-to-r from-pink-600 to-rose-600 text-white hover:from-pink-600 hover:to-rose-600",
112
- "gradient-orange": "bg-gradient-to-r from-orange-600 to-red-600 text-white hover:from-orange-600 hover:to-red-600"
113
- },
114
- size: {
115
- sm: "h-7 md:h-9 px-3 text-xs",
116
- md: "h-9 md:h-11 px-4",
117
- lg: "h-10 md:h-12 px-5 text-base",
118
- xl: "h-12 md:h-14 px-6 text-lg",
119
- "2xl": "h-14 md:h-16 px-6 md:px-8 text-xl",
120
- "3xl": "h-16 md:h-18 px-8 md:px-10 text-2xl",
121
- "4xl": "h-18 md:h-20 px-10 md:px-12 text-2xl",
122
- "5xl": "h-20 md:h-22 px-12 md:px-14 text-2xl",
123
- "6xl": "h-22 md:h-24 px-14 md:px-16 text-2xl",
124
- "7xl": "h-24 md:h-26 px-16 md:px-18 text-2xl",
125
- "8xl": "h-26 md:h-28 px-20 text-2xl",
126
- "9xl": "h-24 md:h-30 px-18 md:px-22 text-2xl",
127
- "10xl": "h-26 md:h-32 px-20 md:px-24 text-2xl",
128
- icon: "h-10 w-10"
129
- }
130
- },
131
- defaultVariants: {
132
- appearance: "default",
133
- size: "md"
134
- }
135
- }
136
- );
137
-
138
- // src/ui/buttons/button.tsx
139
- var import_jsx_runtime = require("react/jsx-runtime");
140
- var Button = (props) => {
141
- if (props.as === "link") {
142
- const {
143
- className: className2,
144
- appearance: appearance2,
145
- size: size2,
146
- children: children2,
147
- ref: ref2,
148
- href,
149
- target,
150
- animation: animation2 = "none",
151
- ...rest2
152
- } = props;
153
- const motionProps2 = buttonAnimationPresets[animation2];
154
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
155
- import_framer_motion.motion.a,
156
- {
157
- ref: ref2,
158
- href,
159
- target,
160
- rel: target === "_blank" ? "noopener noreferrer" : void 0,
161
- "data-slot": "button",
162
- className: cn(buttonVariants({ appearance: appearance2, size: size2 }), className2),
163
- initial: false,
164
- ...motionProps2,
165
- ...rest2,
166
- children: children2
167
- }
168
- );
169
- }
170
- const {
171
- className,
172
- appearance,
173
- size,
174
- type = "button",
175
- children,
176
- ref,
177
- animation = "none",
178
- ...rest
179
- } = props;
180
- const motionProps = buttonAnimationPresets[animation];
181
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
182
- import_framer_motion.motion.button,
183
- {
184
- ref,
185
- type,
186
- "data-slot": "button",
187
- className: cn(buttonVariants({ appearance, size }), className),
188
- initial: false,
189
- ...motionProps,
190
- ...rest,
191
- children
192
- }
193
- );
194
- };
195
- Button.displayName = "Button";
196
- // Annotate the CommonJS export names for ESM import in node:
197
- 0 && (module.exports = {
198
- Button,
199
- buttonAnimationPresets,
200
- buttonVariants
201
- });
202
- //# sourceMappingURL=buttons.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/buttons/index.ts","../../src/ui/buttons/button.tsx","../../src/lib/utils.ts","../../src/ui/buttons/animations.ts","../../src/ui/buttons/variants.ts"],"sourcesContent":["export { Button } from \"./button\";\nexport type { ButtonProps, ButtonAnimation } from \"./types\";\nexport { buttonAnimationPresets } from \"./animations\";\nexport { buttonVariants } from \"./variants\";","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { ButtonProps } from \"./types\";\nimport { buttonAnimationPresets } from \"./animations\";\nimport { buttonVariants } from \"./variants\";\n\nexport const Button = (props: ButtonProps) => {\n if (props.as === \"link\") {\n const {\n className,\n appearance,\n size,\n children,\n ref,\n href,\n target,\n animation = \"none\",\n ...rest\n } = props;\n const motionProps = buttonAnimationPresets[animation];\n\n return (\n <motion.a\n ref={ref}\n href={href}\n target={target}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.a>\n );\n }\n\n const {\n className,\n appearance,\n size,\n type = \"button\",\n children,\n ref,\n animation = \"none\",\n ...rest\n } = props;\n const motionProps = buttonAnimationPresets[animation];\n\n return (\n <motion.button\n ref={ref}\n type={type}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.button>\n );\n};\n\nButton.displayName = \"Button\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { AnimationPresets } from \"./types\";\n\nexport const buttonAnimationPresets: AnimationPresets = {\n none: {},\n lift: {\n whileHover: { y: -2, scale: 1.02 },\n whileTap: { y: 0, scale: 0.98 },\n transition: { type: \"spring\", stiffness: 420, damping: 28 },\n },\n press: {\n whileTap: { scale: 0.96 },\n transition: { type: \"spring\", stiffness: 520, damping: 30 },\n },\n glow: {\n whileHover: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.25), 0 18px 42px rgba(15,23,42,0.35)\",\n scale: 1.01,\n },\n whileTap: { scale: 0.98 },\n transition: { duration: 0.2, ease: \"easeOut\" },\n },\n tilt: {\n whileHover: { rotateX: 6, rotateY: -6, scale: 1.01 },\n whileTap: { scale: 0.98, rotateX: 0, rotateY: 0 },\n transition: { type: \"spring\", stiffness: 300, damping: 20 },\n style: { transformStyle: \"preserve-3d\" },\n },\n bounce: {\n whileHover: { y: -4, scale: 1.03 },\n whileTap: { y: 0, scale: 0.97 },\n transition: { type: \"spring\", bounce: 0.45, duration: 0.45 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl\",\n \"text-sm font-medium ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"select-none\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-white\",\n secondary: \"bg-slate-800 text-slate-50 hover:bg-slate-700\",\n destructive: \"bg-rose-600 text-white hover:bg-rose-600\",\n outline:\n \"border border-white/10 bg-white/5 text-slate-50 hover:bg-white/10\",\n ghost: \"bg-transparent text-slate-200 hover:bg-white/5\",\n link: \"bg-transparent text-cyan-300 underline-offset-4 hover:underline\",\n glass:\n \"border border-white/15 bg-white/10 text-white backdrop-blur-md hover:bg-white/15\",\n emerald: \"bg-emerald-600 text-white hover:bg-emerald-600\",\n indigo: \"bg-indigo-600 text-white hover:bg-indigo-600\",\n purple: \"bg-purple-600 text-white hover:bg-purple-600\",\n pink: \"bg-pink-600 text-white hover:bg-pink-600\",\n rose: \"bg-rose-600 text-white hover:bg-rose-600\",\n sky: \"bg-sky-600 text-white hover:bg-sky-600\",\n teal: \"bg-teal-600 text-white hover:bg-teal-600\",\n yellow: \"bg-yellow-600 text-white hover:bg-yellow-600\",\n orange: \"bg-orange-600 text-white hover:bg-orange-600\",\n gray: \"bg-gray-600 text-white hover:bg-gray-600\",\n amber: \"bg-amber-600 text-white hover:bg-amber-600\",\n violet: \"bg-violet-600 text-white hover:bg-violet-600\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 text-white hover:from-blue-600 hover:to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 text-white hover:from-green-600 hover:to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 text-white hover:from-red-600 hover:to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white hover:from-yellow-600 hover:to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 text-white hover:from-purple-600 hover:to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white hover:from-teal-600 hover:to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white hover:from-indigo-600 hover:to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 text-white hover:from-pink-600 hover:to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 text-white hover:from-orange-600 hover:to-red-600\",\n },\n size: {\n sm: \"h-7 md:h-9 px-3 text-xs\",\n md: \"h-9 md:h-11 px-4\",\n lg: \"h-10 md:h-12 px-5 text-base\",\n xl: \"h-12 md:h-14 px-6 text-lg\",\n \"2xl\": \"h-14 md:h-16 px-6 md:px-8 text-xl\",\n \"3xl\": \"h-16 md:h-18 px-8 md:px-10 text-2xl\",\n \"4xl\": \"h-18 md:h-20 px-10 md:px-12 text-2xl\",\n \"5xl\": \"h-20 md:h-22 px-12 md:px-14 text-2xl\",\n \"6xl\": \"h-22 md:h-24 px-14 md:px-16 text-2xl\",\n \"7xl\": \"h-24 md:h-26 px-16 md:px-18 text-2xl\",\n \"8xl\": \"h-26 md:h-28 px-20 text-2xl\",\n \"9xl\": \"h-24 md:h-30 px-18 md:px-22 text-2xl\",\n \"10xl\": \"h-26 md:h-32 px-20 md:px-24 text-2xl\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n"],"mappings":"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","names":["className","appearance","size","children","ref","animation","rest","motionProps"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/card/index.ts","../../src/ui/card/card.tsx","../../src/lib/utils.ts","../../src/ui/card/animations.ts","../../src/ui/card/variants.ts"],"sourcesContent":["export {\n Card,\n CardBody,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"./card\";\nexport type {\n CardAnimation,\n CardDescriptionProps,\n CardProps,\n CardSectionProps,\n CardTitleProps,\n} from \"./types\";\nexport { cardAnimationPresets } from \"./animations\";\nexport {\n cardVariants,\n cardHeaderVariants,\n cardFooterVariants,\n cardTitleVariants,\n cardDescriptionVariants,\n} from \"./variants\";\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { cardAnimationPresets } from \"./animations\";\nimport type {\n CardDescriptionProps,\n CardProps,\n CardSectionProps,\n CardTitleProps,\n} from \"./types\";\nimport {\n cardDescriptionVariants,\n cardFooterVariants,\n cardHeaderVariants,\n cardTitleVariants,\n cardVariants,\n} from \"./variants\";\n\ntype CardSize = NonNullable<CardProps[\"size\"]>;\n\nconst CardSizeContext = createContext<CardSize>(\"md\");\n\nfunction useCardSize(): CardSize {\n return useContext(CardSizeContext);\n}\n\nexport function Card(props: CardProps) {\n const {\n className,\n appearance,\n size = \"md\",\n rounded,\n animation = \"none\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = cardAnimationPresets[animation];\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <CardSizeContext.Provider value={ctx}>\n <motion.article\n ref={ref}\n data-slot=\"card\"\n className={cn(cardVariants({ appearance, size, rounded }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.article>\n </CardSizeContext.Provider>\n );\n}\n\nCard.displayName = \"Card\";\n\nexport function CardHeader({ className, children }: CardSectionProps) {\n const size = useCardSize();\n return (\n <header\n data-slot=\"card-header\"\n className={cn(cardHeaderVariants({ size }), className)}\n >\n {children}\n </header>\n );\n}\n\nCardHeader.displayName = \"CardHeader\";\n\nexport function CardBody({ className, children }: CardSectionProps) {\n return (\n <div data-slot=\"card-body\" className={cn(\"flex flex-1 flex-col gap-2\", className)}>\n {children}\n </div>\n );\n}\n\nCardBody.displayName = \"CardBody\";\n\nexport function CardFooter({ className, children }: CardSectionProps) {\n const size = useCardSize();\n return (\n <footer\n data-slot=\"card-footer\"\n className={cn(cardFooterVariants({ size }), className)}\n >\n {children}\n </footer>\n );\n}\n\nCardFooter.displayName = \"CardFooter\";\n\nexport function CardTitle({\n className,\n children,\n as = \"h3\",\n ref,\n ...rest\n}: CardTitleProps) {\n const size = useCardSize();\n const Tag = as;\n return (\n <Tag\n ref={ref as never}\n data-slot=\"card-title\"\n className={cn(cardTitleVariants({ size }), className)}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n\nCardTitle.displayName = \"CardTitle\";\n\nexport function CardDescription({\n className,\n children,\n as = \"p\",\n ref,\n ...rest\n}: CardDescriptionProps) {\n const size = useCardSize();\n const Tag = as;\n return (\n <Tag\n ref={ref as never}\n data-slot=\"card-description\"\n className={cn(cardDescriptionVariants({ size }), className)}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n\nCardDescription.displayName = \"CardDescription\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { CardAnimation } from \"./types\";\n\ntype CardPresetMotionProps = Pick<\n HTMLMotionProps<\"article\">,\n \"style\" | \"transition\" | \"whileHover\" | \"whileTap\"\n>;\n\nexport type CardAnimationPresets = Record<CardAnimation, CardPresetMotionProps>;\n\nexport const cardAnimationPresets: CardAnimationPresets = {\n none: {},\n lift: {\n whileHover: { y: -4, scale: 1.01 },\n whileTap: { y: 0, scale: 0.995 },\n transition: { type: \"spring\", stiffness: 380, damping: 26 },\n },\n glow: {\n whileHover: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.18), 0 22px 48px rgba(15,23,42,0.45)\",\n },\n transition: { duration: 0.22, ease: \"easeOut\" },\n },\n tilt: {\n whileHover: { rotateX: 4, rotateY: -4, scale: 1.01 },\n whileTap: { rotateX: 0, rotateY: 0, scale: 0.99 },\n transition: { type: \"spring\", stiffness: 280, damping: 22 },\n style: { transformStyle: \"preserve-3d\" },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const cardVariants = cva(\n [\n \"relative flex w-full flex-col overflow-hidden text-slate-50\",\n \"ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"border border-white/10 bg-white/5 shadow-[0_1px_2px_rgba(15,23,42,0.12)]\",\n glass:\n \"border border-white/15 bg-white/10 backdrop-blur-md shadow-[0_18px_48px_rgba(15,23,42,0.35)]\",\n outline: \"border border-white/15 bg-transparent\",\n ghost: \"border border-transparent bg-transparent\",\n elevated:\n \"border border-white/10 bg-slate-900/80 shadow-[0_24px_64px_rgba(15,23,42,0.45)]\",\n sky: \"border border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"gap-2 p-3 text-sm\",\n md: \"gap-3 p-4 text-sm\",\n lg: \"gap-4 p-6 text-base\",\n },\n rounded: {\n sm: \"rounded-lg\",\n md: \"rounded-xl\",\n lg: \"rounded-2xl\",\n full: \"rounded-3xl\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n rounded: \"md\",\n },\n },\n);\n\nexport const cardHeaderVariants = cva(\n \"flex flex-col gap-1 border-b border-white/10 pb-3\",\n {\n variants: {\n size: {\n sm: \"pb-2\",\n md: \"pb-3\",\n lg: \"pb-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const cardFooterVariants = cva(\n \"flex flex-col gap-2 border-t border-white/10 pt-3\",\n {\n variants: {\n size: {\n sm: \"pt-2\",\n md: \"pt-3\",\n lg: \"pt-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const cardTitleVariants = cva(\"font-semibold tracking-tight text-slate-50\", {\n variants: {\n size: {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const cardDescriptionVariants = cva(\"text-slate-400\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n"],"mappings":"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","names":[]}