@zentauri-ui/zentauri-components 1.7.9 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +9 -4
  2. package/cli/registry.json +3 -0
  3. package/dist/chunk-7TGUGTTQ.mjs +147 -0
  4. package/dist/chunk-7TGUGTTQ.mjs.map +1 -0
  5. package/dist/chunk-CQMV7BB6.js +50 -0
  6. package/dist/chunk-CQMV7BB6.js.map +1 -0
  7. package/dist/chunk-DN7TYUJ6.js +119 -0
  8. package/dist/chunk-DN7TYUJ6.js.map +1 -0
  9. package/dist/chunk-ODBG4Y6R.mjs +48 -0
  10. package/dist/chunk-ODBG4Y6R.mjs.map +1 -0
  11. package/dist/chunk-RKX5MERK.js +150 -0
  12. package/dist/chunk-RKX5MERK.js.map +1 -0
  13. package/dist/chunk-VYI3GS2C.mjs +115 -0
  14. package/dist/chunk-VYI3GS2C.mjs.map +1 -0
  15. package/dist/design-system/animated-number.d.ts +32 -0
  16. package/dist/design-system/animated-number.d.ts.map +1 -0
  17. package/dist/design-system/copy-button.d.ts +43 -0
  18. package/dist/design-system/copy-button.d.ts.map +1 -0
  19. package/dist/design-system/index.d.ts +3 -0
  20. package/dist/design-system/index.d.ts.map +1 -1
  21. package/dist/design-system/kbd.d.ts +44 -0
  22. package/dist/design-system/kbd.d.ts.map +1 -0
  23. package/dist/hooks/useClipboard.js +6 -44
  24. package/dist/hooks/useClipboard.js.map +1 -1
  25. package/dist/hooks/useClipboard.mjs +1 -46
  26. package/dist/hooks/useClipboard.mjs.map +1 -1
  27. package/dist/ui/animated-number/animated-number.d.ts +4 -0
  28. package/dist/ui/animated-number/animated-number.d.ts.map +1 -0
  29. package/dist/ui/animated-number/animations.d.ts +59 -0
  30. package/dist/ui/animated-number/animations.d.ts.map +1 -0
  31. package/dist/ui/animated-number/index.d.ts +4 -0
  32. package/dist/ui/animated-number/index.d.ts.map +1 -0
  33. package/dist/ui/animated-number/types.d.ts +31 -0
  34. package/dist/ui/animated-number/types.d.ts.map +1 -0
  35. package/dist/ui/animated-number/variants.d.ts +5 -0
  36. package/dist/ui/animated-number/variants.d.ts.map +1 -0
  37. package/dist/ui/animated-number.js +181 -0
  38. package/dist/ui/animated-number.js.map +1 -0
  39. package/dist/ui/animated-number.mjs +177 -0
  40. package/dist/ui/animated-number.mjs.map +1 -0
  41. package/dist/ui/copy-button/animated/animations.d.ts +3 -0
  42. package/dist/ui/copy-button/animated/animations.d.ts.map +1 -0
  43. package/dist/ui/copy-button/animated/copy-button-animated.d.ts +6 -0
  44. package/dist/ui/copy-button/animated/copy-button-animated.d.ts.map +1 -0
  45. package/dist/ui/copy-button/animated/index.d.ts +4 -0
  46. package/dist/ui/copy-button/animated/index.d.ts.map +1 -0
  47. package/dist/ui/copy-button/animated/types.d.ts +26 -0
  48. package/dist/ui/copy-button/animated/types.d.ts.map +1 -0
  49. package/dist/ui/copy-button/animated.js +59 -0
  50. package/dist/ui/copy-button/animated.js.map +1 -0
  51. package/dist/ui/copy-button/animated.mjs +56 -0
  52. package/dist/ui/copy-button/animated.mjs.map +1 -0
  53. package/dist/ui/copy-button/copy-button-base.d.ts +6 -0
  54. package/dist/ui/copy-button/copy-button-base.d.ts.map +1 -0
  55. package/dist/ui/copy-button/copy-button.d.ts +6 -0
  56. package/dist/ui/copy-button/copy-button.d.ts.map +1 -0
  57. package/dist/ui/copy-button/index.d.ts +4 -0
  58. package/dist/ui/copy-button/index.d.ts.map +1 -0
  59. package/dist/ui/copy-button/types.d.ts +32 -0
  60. package/dist/ui/copy-button/types.d.ts.map +1 -0
  61. package/dist/ui/copy-button/variants.d.ts +6 -0
  62. package/dist/ui/copy-button/variants.d.ts.map +1 -0
  63. package/dist/ui/copy-button.js +20 -0
  64. package/dist/ui/copy-button.js.map +1 -0
  65. package/dist/ui/copy-button.mjs +15 -0
  66. package/dist/ui/copy-button.mjs.map +1 -0
  67. package/dist/ui/kbd/animated/animations.d.ts +3 -0
  68. package/dist/ui/kbd/animated/animations.d.ts.map +1 -0
  69. package/dist/ui/kbd/animated/index.d.ts +4 -0
  70. package/dist/ui/kbd/animated/index.d.ts.map +1 -0
  71. package/dist/ui/kbd/animated/kbd-animated.d.ts +6 -0
  72. package/dist/ui/kbd/animated/kbd-animated.d.ts.map +1 -0
  73. package/dist/ui/kbd/animated/types.d.ts +10 -0
  74. package/dist/ui/kbd/animated/types.d.ts.map +1 -0
  75. package/dist/ui/kbd/animated.js +42 -0
  76. package/dist/ui/kbd/animated.js.map +1 -0
  77. package/dist/ui/kbd/animated.mjs +39 -0
  78. package/dist/ui/kbd/animated.mjs.map +1 -0
  79. package/dist/ui/kbd/index.d.ts +4 -0
  80. package/dist/ui/kbd/index.d.ts.map +1 -0
  81. package/dist/ui/kbd/kbd-base.d.ts +6 -0
  82. package/dist/ui/kbd/kbd-base.d.ts.map +1 -0
  83. package/dist/ui/kbd/kbd.d.ts +6 -0
  84. package/dist/ui/kbd/kbd.d.ts.map +1 -0
  85. package/dist/ui/kbd/types.d.ts +17 -0
  86. package/dist/ui/kbd/types.d.ts.map +1 -0
  87. package/dist/ui/kbd/variants.d.ts +8 -0
  88. package/dist/ui/kbd/variants.d.ts.map +1 -0
  89. package/dist/ui/kbd.js +23 -0
  90. package/dist/ui/kbd.js.map +1 -0
  91. package/dist/ui/kbd.mjs +14 -0
  92. package/dist/ui/kbd.mjs.map +1 -0
  93. package/package.json +1 -1
  94. package/src/design-system/animated-number.ts +53 -0
  95. package/src/design-system/copy-button.ts +81 -0
  96. package/src/design-system/index.ts +3 -0
  97. package/src/design-system/kbd.ts +83 -0
  98. package/src/ui/animated-number/animated-number.test.tsx +64 -0
  99. package/src/ui/animated-number/animated-number.tsx +120 -0
  100. package/src/ui/animated-number/animations.ts +22 -0
  101. package/src/ui/animated-number/index.ts +4 -0
  102. package/src/ui/animated-number/types.ts +39 -0
  103. package/src/ui/animated-number/variants.ts +14 -0
  104. package/src/ui/copy-button/animated/animations.ts +22 -0
  105. package/src/ui/copy-button/animated/copy-button-animated.tsx +39 -0
  106. package/src/ui/copy-button/animated/index.ts +10 -0
  107. package/src/ui/copy-button/animated/types.ts +21 -0
  108. package/src/ui/copy-button/copy-button-base.tsx +88 -0
  109. package/src/ui/copy-button/copy-button.test.tsx +82 -0
  110. package/src/ui/copy-button/copy-button.tsx +9 -0
  111. package/src/ui/copy-button/index.ts +10 -0
  112. package/src/ui/copy-button/types.ts +37 -0
  113. package/src/ui/copy-button/variants.ts +29 -0
  114. package/src/ui/kbd/animated/animations.ts +15 -0
  115. package/src/ui/kbd/animated/index.ts +9 -0
  116. package/src/ui/kbd/animated/kbd-animated.tsx +26 -0
  117. package/src/ui/kbd/animated/types.ts +16 -0
  118. package/src/ui/kbd/index.ts +5 -0
  119. package/src/ui/kbd/kbd-base.tsx +50 -0
  120. package/src/ui/kbd/kbd.test.tsx +48 -0
  121. package/src/ui/kbd/kbd.tsx +9 -0
  122. package/src/ui/kbd/types.ts +21 -0
  123. package/src/ui/kbd/variants.ts +31 -0
@@ -0,0 +1,177 @@
1
+ "use client";
2
+ import { cn } from '../chunk-4D54YOL6.mjs';
3
+ import { useReducedMotion, motion, useInView, animate } from 'framer-motion';
4
+ import { cva } from 'class-variance-authority';
5
+ import { useState, useRef, useEffect } from 'react';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ // src/design-system/animated-number.ts
9
+ var zuiAnimatedNumberBase = "relative flex w-full overflow-hidden [perspective:1000px]";
10
+ var zuiAnimatedNumberAppearance = {
11
+ default: "text-[color:var(--zui-animated-number-default-fg,oklch(20.8%_0.042_265.755))] dark:text-[color:var(--zui-animated-number-default-fg-dark,oklch(98.4%_0.003_247.858))]",
12
+ success: "text-[color:var(--zui-animated-number-success-fg,oklch(62.7%_0.194_149.214))] dark:text-[color:var(--zui-animated-number-success-fg-dark,oklch(79.2%_0.209_151.711))]",
13
+ warning: "text-[color:var(--zui-animated-number-warning-fg,oklch(66.6%_0.179_58.318))] dark:text-[color:var(--zui-animated-number-warning-fg-dark,oklch(82.8%_0.189_84.429))]",
14
+ error: "text-[color:var(--zui-animated-number-error-fg,oklch(57.7%_0.245_27.325))] dark:text-[color:var(--zui-animated-number-error-fg-dark,oklch(70.4%_0.191_22.216))]",
15
+ info: "text-[color:var(--zui-animated-number-info-fg,oklch(58.8%_0.158_241.966))] dark:text-[color:var(--zui-animated-number-info-fg-dark,oklch(74.6%_0.16_232.661))]",
16
+ ghost: "text-[color:var(--zui-animated-number-ghost-fg,oklch(55.4%_0.046_257.417))] dark:text-[color:var(--zui-animated-number-ghost-fg-dark,oklch(70.4%_0.04_256.788))]",
17
+ purple: "text-[color:var(--zui-animated-number-purple-fg,oklch(55.8%_0.288_302.321))] dark:text-[color:var(--zui-animated-number-purple-fg-dark,oklch(71.4%_0.203_305.504))]",
18
+ pink: "text-[color:var(--zui-animated-number-pink-fg,oklch(59.2%_0.249_0.584))] dark:text-[color:var(--zui-animated-number-pink-fg-dark,oklch(71.8%_0.202_349.761))]",
19
+ orange: "text-[color:var(--zui-animated-number-orange-fg,oklch(64.6%_0.222_41.116))] dark:text-[color:var(--zui-animated-number-orange-fg-dark,oklch(75%_0.183_55.934))]",
20
+ yellow: "text-[color:var(--zui-animated-number-yellow-fg,oklch(68.1%_0.162_75.834))] dark:text-[color:var(--zui-animated-number-yellow-fg-dark,oklch(85.2%_0.199_91.936))]",
21
+ teal: "text-[color:var(--zui-animated-number-teal-fg,oklch(60%_0.118_184.704))] dark:text-[color:var(--zui-animated-number-teal-fg-dark,oklch(77.7%_0.152_181.912))]",
22
+ indigo: "text-[color:var(--zui-animated-number-indigo-fg,oklch(51.1%_0.262_276.966))] dark:text-[color:var(--zui-animated-number-indigo-fg-dark,oklch(67.3%_0.182_276.935))]",
23
+ gray: "text-[color:var(--zui-animated-number-gray-fg,oklch(44.6%_0.03_256.802))] dark:text-[color:var(--zui-animated-number-gray-fg-dark,oklch(70.7%_0.022_261.325))]",
24
+ violet: "text-[color:var(--zui-animated-number-violet-fg,oklch(54.1%_0.281_293.009))] dark:text-[color:var(--zui-animated-number-violet-fg-dark,oklch(70.2%_0.183_293.541))]",
25
+ "gradient-blue": "bg-linear-to-r from-[var(--zui-animated-number-gradient-blue-from,oklch(42.4%_0.199_265.638))] dark:from-[var(--zui-animated-number-gradient-blue-from-dark,oklch(54.6%_0.245_262.881))] to-[var(--zui-animated-number-gradient-blue-to,oklch(43.8%_0.218_303.724))] dark:to-[var(--zui-animated-number-gradient-blue-to-dark,oklch(55.8%_0.288_302.321))] bg-clip-text text-transparent",
26
+ "gradient-green": "bg-linear-to-r from-[var(--zui-animated-number-gradient-green-from,oklch(44.8%_0.119_151.328))] dark:from-[var(--zui-animated-number-gradient-green-from-dark,oklch(62.7%_0.194_149.214))] to-[var(--zui-animated-number-gradient-green-to,oklch(45.3%_0.124_130.933))] dark:to-[var(--zui-animated-number-gradient-green-to-dark,oklch(64.8%_0.2_131.684))] bg-clip-text text-transparent",
27
+ "gradient-red": "bg-linear-to-r from-[var(--zui-animated-number-gradient-red-from,oklch(44.4%_0.177_26.899))] dark:from-[var(--zui-animated-number-gradient-red-from-dark,oklch(57.7%_0.245_27.325))] to-[var(--zui-animated-number-gradient-red-to,oklch(45.9%_0.187_3.815))] dark:to-[var(--zui-animated-number-gradient-red-to-dark,oklch(59.2%_0.249_0.584))] bg-clip-text text-transparent",
28
+ "gradient-yellow": "bg-linear-to-r from-[var(--zui-animated-number-gradient-yellow-from,oklch(47.6%_0.114_61.907))] dark:from-[var(--zui-animated-number-gradient-yellow-from-dark,oklch(68.1%_0.162_75.834))] to-[var(--zui-animated-number-gradient-yellow-to,oklch(47%_0.157_37.304))] dark:to-[var(--zui-animated-number-gradient-yellow-to-dark,oklch(64.6%_0.222_41.116))] bg-clip-text text-transparent",
29
+ "gradient-purple": "bg-linear-to-r from-[var(--zui-animated-number-gradient-purple-from,oklch(43.8%_0.218_303.724))] dark:from-[var(--zui-animated-number-gradient-purple-from-dark,oklch(55.8%_0.288_302.321))] to-[var(--zui-animated-number-gradient-purple-to,oklch(45.9%_0.187_3.815))] dark:to-[var(--zui-animated-number-gradient-purple-to-dark,oklch(59.2%_0.249_0.584))] bg-clip-text text-transparent",
30
+ "gradient-teal": "bg-linear-to-r from-[var(--zui-animated-number-gradient-teal-from,oklch(43.7%_0.078_188.216))] dark:from-[var(--zui-animated-number-gradient-teal-from-dark,oklch(60%_0.118_184.704))] to-[var(--zui-animated-number-gradient-teal-to,oklch(45%_0.085_224.283))] dark:to-[var(--zui-animated-number-gradient-teal-to-dark,oklch(60.9%_0.126_221.723))] bg-clip-text text-transparent",
31
+ "gradient-indigo": "bg-linear-to-r from-[var(--zui-animated-number-gradient-indigo-from,oklch(39.8%_0.195_277.366))] dark:from-[var(--zui-animated-number-gradient-indigo-from-dark,oklch(51.1%_0.262_276.966))] to-[var(--zui-animated-number-gradient-indigo-to,oklch(43.8%_0.218_303.724))] dark:to-[var(--zui-animated-number-gradient-indigo-to-dark,oklch(55.8%_0.288_302.321))] bg-clip-text text-transparent",
32
+ "gradient-pink": "bg-linear-to-r from-[var(--zui-animated-number-gradient-pink-from,oklch(45.9%_0.187_3.815))] dark:from-[var(--zui-animated-number-gradient-pink-from-dark,oklch(59.2%_0.249_0.584))] to-[var(--zui-animated-number-gradient-pink-to,oklch(45.5%_0.188_13.697))] dark:to-[var(--zui-animated-number-gradient-pink-to-dark,oklch(58.6%_0.253_17.585))] bg-clip-text text-transparent",
33
+ "gradient-orange": "bg-linear-to-r from-[var(--zui-animated-number-gradient-orange-from,oklch(47%_0.157_37.304))] dark:from-[var(--zui-animated-number-gradient-orange-from-dark,oklch(64.6%_0.222_41.116))] to-[var(--zui-animated-number-gradient-orange-to,oklch(44.4%_0.177_26.899))] dark:to-[var(--zui-animated-number-gradient-orange-to-dark,oklch(57.7%_0.245_27.325))] bg-clip-text text-transparent"
34
+ };
35
+ var zuiAnimatedNumberSize = {
36
+ sm: "text-2xl font-semibold tabular-nums",
37
+ md: "text-4xl font-semibold tabular-nums",
38
+ lg: "text-6xl font-bold tabular-nums"
39
+ };
40
+
41
+ // src/ui/animated-number/variants.ts
42
+ var animatedNumberAppearance = cva("inline-flex", {
43
+ variants: {
44
+ appearance: zuiAnimatedNumberAppearance,
45
+ size: zuiAnimatedNumberSize
46
+ },
47
+ defaultVariants: {
48
+ appearance: "default",
49
+ size: "md"
50
+ }
51
+ });
52
+
53
+ // src/ui/animated-number/animations.ts
54
+ var animationInitialType = {
55
+ up: { y: "-100%" },
56
+ down: { y: "100%" },
57
+ scaleUp: { scale: 0 },
58
+ scaleDown: { scale: 1.25 },
59
+ rotateX: { rotateX: "0" },
60
+ rotateY: { rotateY: "0" },
61
+ skewX: { skewX: 20 },
62
+ skewY: { skewY: 20 },
63
+ fade: { opacity: 0 }
64
+ };
65
+ var animationFinalType = {
66
+ up: { y: 0 },
67
+ down: { y: 0 },
68
+ scaleUp: { scale: 1 },
69
+ scaleDown: { scale: 1 },
70
+ rotateX: { rotateX: "360deg" },
71
+ rotateY: { rotateY: "360deg" },
72
+ skewX: { skewX: 0 },
73
+ skewY: { skewY: 0 },
74
+ fade: { opacity: 1 }
75
+ };
76
+ var DEFAULT_VIEWPORT = { once: true, amount: 0.2 };
77
+ var AnimatedNumber = ({
78
+ number,
79
+ wrapperClassName,
80
+ className,
81
+ ref,
82
+ appearance,
83
+ size,
84
+ type = "up",
85
+ delayInSecond = 0.1,
86
+ transition,
87
+ initial,
88
+ whileInView,
89
+ viewport,
90
+ ...rest
91
+ }) => {
92
+ const numbersList = [...number.toString()];
93
+ const reducedMotion = useReducedMotion();
94
+ const motionless = Boolean(reducedMotion);
95
+ const digitVariants = {
96
+ hidden: animationInitialType[type],
97
+ visible: animationFinalType[type]
98
+ };
99
+ return /* @__PURE__ */ jsx(
100
+ motion.div,
101
+ {
102
+ ref,
103
+ initial: motionless ? false : "hidden",
104
+ whileInView: motionless ? void 0 : "visible",
105
+ viewport: viewport ?? DEFAULT_VIEWPORT,
106
+ transition: {
107
+ staggerChildren: delayInSecond
108
+ },
109
+ className: cn(wrapperClassName, zuiAnimatedNumberBase),
110
+ children: numbersList.map((digit, index) => /* @__PURE__ */ jsx(
111
+ motion.span,
112
+ {
113
+ className: cn(
114
+ "inline-block",
115
+ animatedNumberAppearance({ appearance, size }),
116
+ className
117
+ ),
118
+ variants: digitVariants,
119
+ transition,
120
+ ...rest,
121
+ children: digit
122
+ },
123
+ index + "-" + digit
124
+ ))
125
+ }
126
+ );
127
+ };
128
+ var AnimatedNumberCounter = ({
129
+ number,
130
+ className,
131
+ ref: externalRef,
132
+ appearance,
133
+ size,
134
+ duration = 2,
135
+ viewport,
136
+ ...rest
137
+ }) => {
138
+ const [currentNumber, setCurrentNumber] = useState(0);
139
+ const reducedMotion = useReducedMotion();
140
+ const internalRef = useRef(null);
141
+ const isInView = useInView(internalRef, {
142
+ once: false,
143
+ amount: 0.2,
144
+ ...viewport
145
+ });
146
+ useEffect(() => {
147
+ if (!isInView) return;
148
+ if (reducedMotion) {
149
+ setCurrentNumber(number);
150
+ return;
151
+ }
152
+ const controls = animate(currentNumber, number, {
153
+ duration,
154
+ ease: "circOut",
155
+ onUpdate: (latest) => setCurrentNumber(Math.round(latest))
156
+ });
157
+ return () => controls.stop();
158
+ }, [isInView, number, duration, reducedMotion]);
159
+ return /* @__PURE__ */ jsx(
160
+ motion.p,
161
+ {
162
+ className: cn(animatedNumberAppearance({ appearance, size }), className),
163
+ ref: (node) => {
164
+ internalRef.current = node;
165
+ if (externalRef) {
166
+ externalRef.current = node;
167
+ }
168
+ },
169
+ ...rest,
170
+ children: currentNumber
171
+ }
172
+ );
173
+ };
174
+
175
+ export { AnimatedNumber, AnimatedNumberCounter, animatedNumberAppearance };
176
+ //# sourceMappingURL=animated-number.mjs.map
177
+ //# sourceMappingURL=animated-number.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/design-system/animated-number.ts","../../src/ui/animated-number/variants.ts","../../src/ui/animated-number/animations.ts","../../src/ui/animated-number/animated-number.tsx"],"names":[],"mappings":"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","file":"animated-number.mjs","sourcesContent":["export const zuiAnimatedNumberBase =\n \"relative flex w-full overflow-hidden [perspective:1000px]\";\n\nexport const zuiAnimatedNumberAppearance = {\n default:\n \"text-[color:var(--zui-animated-number-default-fg,oklch(20.8%_0.042_265.755))] dark:text-[color:var(--zui-animated-number-default-fg-dark,oklch(98.4%_0.003_247.858))]\",\n success:\n \"text-[color:var(--zui-animated-number-success-fg,oklch(62.7%_0.194_149.214))] dark:text-[color:var(--zui-animated-number-success-fg-dark,oklch(79.2%_0.209_151.711))]\",\n warning:\n \"text-[color:var(--zui-animated-number-warning-fg,oklch(66.6%_0.179_58.318))] dark:text-[color:var(--zui-animated-number-warning-fg-dark,oklch(82.8%_0.189_84.429))]\",\n error:\n \"text-[color:var(--zui-animated-number-error-fg,oklch(57.7%_0.245_27.325))] dark:text-[color:var(--zui-animated-number-error-fg-dark,oklch(70.4%_0.191_22.216))]\",\n info: \"text-[color:var(--zui-animated-number-info-fg,oklch(58.8%_0.158_241.966))] dark:text-[color:var(--zui-animated-number-info-fg-dark,oklch(74.6%_0.16_232.661))]\",\n ghost:\n \"text-[color:var(--zui-animated-number-ghost-fg,oklch(55.4%_0.046_257.417))] dark:text-[color:var(--zui-animated-number-ghost-fg-dark,oklch(70.4%_0.04_256.788))]\",\n purple:\n \"text-[color:var(--zui-animated-number-purple-fg,oklch(55.8%_0.288_302.321))] dark:text-[color:var(--zui-animated-number-purple-fg-dark,oklch(71.4%_0.203_305.504))]\",\n pink: \"text-[color:var(--zui-animated-number-pink-fg,oklch(59.2%_0.249_0.584))] dark:text-[color:var(--zui-animated-number-pink-fg-dark,oklch(71.8%_0.202_349.761))]\",\n orange:\n \"text-[color:var(--zui-animated-number-orange-fg,oklch(64.6%_0.222_41.116))] dark:text-[color:var(--zui-animated-number-orange-fg-dark,oklch(75%_0.183_55.934))]\",\n yellow:\n \"text-[color:var(--zui-animated-number-yellow-fg,oklch(68.1%_0.162_75.834))] dark:text-[color:var(--zui-animated-number-yellow-fg-dark,oklch(85.2%_0.199_91.936))]\",\n teal: \"text-[color:var(--zui-animated-number-teal-fg,oklch(60%_0.118_184.704))] dark:text-[color:var(--zui-animated-number-teal-fg-dark,oklch(77.7%_0.152_181.912))]\",\n indigo:\n \"text-[color:var(--zui-animated-number-indigo-fg,oklch(51.1%_0.262_276.966))] dark:text-[color:var(--zui-animated-number-indigo-fg-dark,oklch(67.3%_0.182_276.935))]\",\n gray: \"text-[color:var(--zui-animated-number-gray-fg,oklch(44.6%_0.03_256.802))] dark:text-[color:var(--zui-animated-number-gray-fg-dark,oklch(70.7%_0.022_261.325))]\",\n violet:\n \"text-[color:var(--zui-animated-number-violet-fg,oklch(54.1%_0.281_293.009))] dark:text-[color:var(--zui-animated-number-violet-fg-dark,oklch(70.2%_0.183_293.541))]\",\n \"gradient-blue\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-blue-from,oklch(42.4%_0.199_265.638))] dark:from-[var(--zui-animated-number-gradient-blue-from-dark,oklch(54.6%_0.245_262.881))] to-[var(--zui-animated-number-gradient-blue-to,oklch(43.8%_0.218_303.724))] dark:to-[var(--zui-animated-number-gradient-blue-to-dark,oklch(55.8%_0.288_302.321))] bg-clip-text text-transparent\",\n \"gradient-green\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-green-from,oklch(44.8%_0.119_151.328))] dark:from-[var(--zui-animated-number-gradient-green-from-dark,oklch(62.7%_0.194_149.214))] to-[var(--zui-animated-number-gradient-green-to,oklch(45.3%_0.124_130.933))] dark:to-[var(--zui-animated-number-gradient-green-to-dark,oklch(64.8%_0.2_131.684))] bg-clip-text text-transparent\",\n \"gradient-red\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-red-from,oklch(44.4%_0.177_26.899))] dark:from-[var(--zui-animated-number-gradient-red-from-dark,oklch(57.7%_0.245_27.325))] to-[var(--zui-animated-number-gradient-red-to,oklch(45.9%_0.187_3.815))] dark:to-[var(--zui-animated-number-gradient-red-to-dark,oklch(59.2%_0.249_0.584))] bg-clip-text text-transparent\",\n \"gradient-yellow\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-yellow-from,oklch(47.6%_0.114_61.907))] dark:from-[var(--zui-animated-number-gradient-yellow-from-dark,oklch(68.1%_0.162_75.834))] to-[var(--zui-animated-number-gradient-yellow-to,oklch(47%_0.157_37.304))] dark:to-[var(--zui-animated-number-gradient-yellow-to-dark,oklch(64.6%_0.222_41.116))] bg-clip-text text-transparent\",\n \"gradient-purple\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-purple-from,oklch(43.8%_0.218_303.724))] dark:from-[var(--zui-animated-number-gradient-purple-from-dark,oklch(55.8%_0.288_302.321))] to-[var(--zui-animated-number-gradient-purple-to,oklch(45.9%_0.187_3.815))] dark:to-[var(--zui-animated-number-gradient-purple-to-dark,oklch(59.2%_0.249_0.584))] bg-clip-text text-transparent\",\n \"gradient-teal\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-teal-from,oklch(43.7%_0.078_188.216))] dark:from-[var(--zui-animated-number-gradient-teal-from-dark,oklch(60%_0.118_184.704))] to-[var(--zui-animated-number-gradient-teal-to,oklch(45%_0.085_224.283))] dark:to-[var(--zui-animated-number-gradient-teal-to-dark,oklch(60.9%_0.126_221.723))] bg-clip-text text-transparent\",\n \"gradient-indigo\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-indigo-from,oklch(39.8%_0.195_277.366))] dark:from-[var(--zui-animated-number-gradient-indigo-from-dark,oklch(51.1%_0.262_276.966))] to-[var(--zui-animated-number-gradient-indigo-to,oklch(43.8%_0.218_303.724))] dark:to-[var(--zui-animated-number-gradient-indigo-to-dark,oklch(55.8%_0.288_302.321))] bg-clip-text text-transparent\",\n \"gradient-pink\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-pink-from,oklch(45.9%_0.187_3.815))] dark:from-[var(--zui-animated-number-gradient-pink-from-dark,oklch(59.2%_0.249_0.584))] to-[var(--zui-animated-number-gradient-pink-to,oklch(45.5%_0.188_13.697))] dark:to-[var(--zui-animated-number-gradient-pink-to-dark,oklch(58.6%_0.253_17.585))] bg-clip-text text-transparent\",\n \"gradient-orange\":\n \"bg-linear-to-r from-[var(--zui-animated-number-gradient-orange-from,oklch(47%_0.157_37.304))] dark:from-[var(--zui-animated-number-gradient-orange-from-dark,oklch(64.6%_0.222_41.116))] to-[var(--zui-animated-number-gradient-orange-to,oklch(44.4%_0.177_26.899))] dark:to-[var(--zui-animated-number-gradient-orange-to-dark,oklch(57.7%_0.245_27.325))] bg-clip-text text-transparent\",\n} as const;\n\nexport const zuiAnimatedNumberSize = {\n sm: \"text-2xl font-semibold tabular-nums\",\n md: \"text-4xl font-semibold tabular-nums\",\n lg: \"text-6xl font-bold tabular-nums\",\n} as const;\n","import { cva } from \"class-variance-authority\";\n\nimport { zuiAnimatedNumberAppearance, zuiAnimatedNumberSize } from \"../../design-system/animated-number\";\n\nexport const animatedNumberAppearance = cva(\"inline-flex\",{\n variants: {\n appearance: zuiAnimatedNumberAppearance,\n size: zuiAnimatedNumberSize\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});","export const animationInitialType = {\n up: { y: \"-100%\" },\n down: { y: \"100%\" },\n scaleUp: { scale: 0 },\n scaleDown: { scale: 1.25 },\n rotateX: { rotateX: \"0\" },\n rotateY: { rotateY: \"0\" },\n skewX: { skewX: 20 },\n skewY: { skewY: 20 },\n fade: { opacity: 0 },\n};\nexport const animationFinalType = {\n up: { y: 0 },\n down: { y: 0 },\n scaleUp: { scale: 1 },\n scaleDown: { scale: 1 },\n rotateX: { rotateX: \"360deg\" },\n rotateY: { rotateY: \"360deg\" },\n skewX: { skewX: 0 },\n skewY: { skewY: 0 },\n fade: { opacity: 1 },\n};\n","\"use client\";\nimport { animate, motion, useInView, useReducedMotion, type UseInViewOptions } from \"framer-motion\";\nimport { animatedNumberAppearance } from \"./variants\";\nimport { AnimatedNumberCounterProps, AnimatedNumberProps } from \"./types\";\nimport { cn } from \"../../lib/utils\";\nimport { zuiAnimatedNumberBase } from \"../../design-system/animated-number\";\nimport { animationFinalType, animationInitialType } from \"./animations\";\nimport { useEffect, useRef, useState } from \"react\";\n\nconst DEFAULT_VIEWPORT = { once: true, amount: 0.2 } as const;\n\nexport const AnimatedNumber = ({\n number,\n wrapperClassName,\n className,\n ref,\n appearance,\n size,\n type = \"up\",\n delayInSecond = 0.1,\n transition,\n initial,\n whileInView,\n viewport,\n ...rest\n}: AnimatedNumberProps) => {\n const numbersList = [...number.toString()];\n const reducedMotion = useReducedMotion();\n const motionless = Boolean(reducedMotion);\n\n const digitVariants = {\n hidden: animationInitialType[type],\n visible: animationFinalType[type],\n };\n\n return (\n <motion.div\n ref={ref}\n initial={motionless ? false : \"hidden\"}\n whileInView={motionless ? undefined : \"visible\"}\n viewport={viewport ?? DEFAULT_VIEWPORT}\n transition={{\n staggerChildren: delayInSecond,\n }}\n className={cn(wrapperClassName, zuiAnimatedNumberBase)}\n >\n {numbersList.map((digit, index) => (\n <motion.span\n key={index + \"-\" + digit}\n className={cn(\n \"inline-block\",\n animatedNumberAppearance({ appearance, size }),\n className,\n )}\n variants={digitVariants}\n transition={transition}\n {...rest}\n >\n {digit}\n </motion.span>\n ))}\n </motion.div>\n );\n};\n\nexport const AnimatedNumberCounter = ({\n number,\n className,\n ref: externalRef,\n appearance,\n size,\n duration = 2,\n viewport,\n ...rest\n}: AnimatedNumberCounterProps) => {\n const [currentNumber, setCurrentNumber] = useState(0);\n const reducedMotion = useReducedMotion();\n const internalRef = useRef<HTMLParagraphElement>(null);\n // once: false gives real two-way tracking so isInView flips false when scrolled away,\n // preventing offscreen animations when the number prop changes later.\n const isInView = useInView(internalRef, {\n once: false,\n amount: 0.2,\n ...viewport,\n } as UseInViewOptions);\n\n useEffect(() => {\n if (!isInView) return;\n\n if (reducedMotion) {\n setCurrentNumber(number);\n return;\n }\n\n const controls = animate(currentNumber, number, {\n duration,\n ease: \"circOut\",\n onUpdate: (latest) => setCurrentNumber(Math.round(latest)),\n });\n\n return () => controls.stop();\n // currentNumber intentionally omitted — captured value gives smooth from→to on prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isInView, number, duration, reducedMotion]);\n\n return (\n <motion.p\n className={cn(animatedNumberAppearance({ appearance, size }), className)}\n ref={(node: HTMLParagraphElement) => {\n internalRef.current = node;\n if (externalRef) {\n externalRef.current = node;\n }\n }}\n {...rest}\n >\n {currentNumber}\n </motion.p>\n );\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import type { CopyButtonAnimationPresets } from "./types";
2
+ export declare const copyButtonAnimationPresets: CopyButtonAnimationPresets;
3
+ //# sourceMappingURL=animations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../../../src/ui/copy-button/animated/animations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,0BAA0B,EAAE,0BAmBxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CopyButtonAnimatedProps } from "./types";
2
+ export declare function CopyButtonAnimated({ animation, ...props }: CopyButtonAnimatedProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace CopyButtonAnimated {
4
+ var displayName: string;
5
+ }
6
+ //# sourceMappingURL=copy-button-animated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button-animated.d.ts","sourceRoot":"","sources":["../../../../src/ui/copy-button/animated/copy-button-animated.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,EACjC,SAAkB,EAClB,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAuBzB;yBA1Be,kBAAkB"}
@@ -0,0 +1,4 @@
1
+ export { CopyButtonAnimated } from "./copy-button-animated";
2
+ export { copyButtonAnimationPresets } from "./animations";
3
+ export type { CopyButtonAnimatedProps, CopyButtonAnimation, CopyButtonAnimationPreset, CopyButtonAnimationPresets, } from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/copy-button/animated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Transition } from "framer-motion";
2
+ import type { CopyButtonProps } from "../types";
3
+ export type CopyButtonAnimation = "swap" | "pop" | "fade";
4
+ export type CopyButtonAnimatedProps = CopyButtonProps & {
5
+ animation?: CopyButtonAnimation;
6
+ };
7
+ export type CopyButtonAnimationPreset = {
8
+ initial: {
9
+ opacity: number;
10
+ scale: number;
11
+ rotate: number;
12
+ };
13
+ animate: {
14
+ opacity: number;
15
+ scale: number;
16
+ rotate: number;
17
+ };
18
+ exit: {
19
+ opacity: number;
20
+ scale: number;
21
+ rotate: number;
22
+ };
23
+ transition: Transition;
24
+ };
25
+ export type CopyButtonAnimationPresets = Record<CopyButtonAnimation, CopyButtonAnimationPreset>;
26
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/copy-button/animated/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACtD,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAC7C,mBAAmB,EACnB,yBAAyB,CAC1B,CAAC"}
@@ -0,0 +1,59 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkRKX5MERK_js = require('../../chunk-RKX5MERK.js');
5
+ require('../../chunk-CQMV7BB6.js');
6
+ require('../../chunk-ZS5756ZC.js');
7
+ var framerMotion = require('framer-motion');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // src/ui/copy-button/animated/animations.ts
11
+ var copyButtonAnimationPresets = {
12
+ swap: {
13
+ initial: { opacity: 0, scale: 0.6, rotate: -45 },
14
+ animate: { opacity: 1, scale: 1, rotate: 0 },
15
+ exit: { opacity: 0, scale: 0.6, rotate: 45 },
16
+ transition: { type: "spring", stiffness: 520, damping: 24 }
17
+ },
18
+ pop: {
19
+ initial: { opacity: 0, scale: 0.4, rotate: 0 },
20
+ animate: { opacity: 1, scale: 1, rotate: 0 },
21
+ exit: { opacity: 0, scale: 0.4, rotate: 0 },
22
+ transition: { type: "spring", stiffness: 600, damping: 20 }
23
+ },
24
+ fade: {
25
+ initial: { opacity: 0, scale: 1, rotate: 0 },
26
+ animate: { opacity: 1, scale: 1, rotate: 0 },
27
+ exit: { opacity: 0, scale: 1, rotate: 0 },
28
+ transition: { duration: 0.16 }
29
+ }
30
+ };
31
+ function CopyButtonAnimated({
32
+ animation = "swap",
33
+ ...props
34
+ }) {
35
+ const preset = copyButtonAnimationPresets[animation];
36
+ const renderIcon = ({
37
+ copied,
38
+ copyIcon,
39
+ copiedIcon
40
+ }) => /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
41
+ framerMotion.motion.span,
42
+ {
43
+ className: "inline-flex items-center justify-center",
44
+ initial: preset.initial,
45
+ animate: preset.animate,
46
+ exit: preset.exit,
47
+ transition: preset.transition,
48
+ children: copied ? copiedIcon : copyIcon
49
+ },
50
+ copied ? "copied" : "idle"
51
+ ) });
52
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkRKX5MERK_js.CopyButtonBase, { ...props, renderIcon });
53
+ }
54
+ CopyButtonAnimated.displayName = "CopyButtonAnimated";
55
+
56
+ exports.CopyButtonAnimated = CopyButtonAnimated;
57
+ exports.copyButtonAnimationPresets = copyButtonAnimationPresets;
58
+ //# sourceMappingURL=animated.js.map
59
+ //# sourceMappingURL=animated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/copy-button/animated/animations.ts","../../../src/ui/copy-button/animated/copy-button-animated.tsx"],"names":["jsx","AnimatePresence","motion","CopyButtonBase"],"mappings":";;;;;;;;;AAEO,IAAM,0BAAA,GAAyD;AAAA,EACpE,IAAA,EAAM;AAAA,IACJ,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,IAC/C,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,MAAM,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,EAAA,EAAG;AAAA,IAC3C,YAAY,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA;AAAG,GAC5D;AAAA,EACA,GAAA,EAAK;AAAA,IACH,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,CAAA,EAAE;AAAA,IAC7C,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,MAAM,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,CAAA,EAAE;AAAA,IAC1C,YAAY,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA;AAAG,GAC5D;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,MAAM,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACxC,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA;AAAK;AAEjC;ACXO,SAAS,kBAAA,CAAmB;AAAA,EACjC,SAAA,GAAY,MAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,MAAA,GAAS,2BAA2B,SAAS,CAAA;AAEnD,EAAA,MAAM,aAAqC,CAAC;AAAA,IAC1C,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,wBAEAA,cAAA,CAACC,4BAAA,EAAA,EAAgB,OAAA,EAAS,KAAA,EAAO,MAAK,MAAA,EACpC,QAAA,kBAAAD,cAAA;AAAA,IAACE,mBAAA,CAAO,IAAA;AAAA,IAAP;AAAA,MAEC,SAAA,EAAU,yCAAA;AAAA,MACV,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,YAAY,MAAA,CAAO,UAAA;AAAA,MAElB,mBAAS,UAAA,GAAa;AAAA,KAAA;AAAA,IAPlB,SAAS,QAAA,GAAW;AAAA,GAQ3B,EACF,CAAA;AAGF,EAAA,uBAAOF,cAAA,CAACG,+BAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,UAAA,EAAwB,CAAA;AAC5D;AAEA,kBAAA,CAAmB,WAAA,GAAc,oBAAA","file":"animated.js","sourcesContent":["import type { CopyButtonAnimationPresets } from \"./types\";\n\nexport const copyButtonAnimationPresets: CopyButtonAnimationPresets = {\n swap: {\n initial: { opacity: 0, scale: 0.6, rotate: -45 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 0.6, rotate: 45 },\n transition: { type: \"spring\", stiffness: 520, damping: 24 },\n },\n pop: {\n initial: { opacity: 0, scale: 0.4, rotate: 0 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 0.4, rotate: 0 },\n transition: { type: \"spring\", stiffness: 600, damping: 20 },\n },\n fade: {\n initial: { opacity: 0, scale: 1, rotate: 0 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 1, rotate: 0 },\n transition: { duration: 0.16 },\n },\n};\n","\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\n\nimport { CopyButtonBase } from \"../copy-button-base\";\nimport type { CopyButtonIconRenderer } from \"../types\";\n\nimport { copyButtonAnimationPresets } from \"./animations\";\nimport type { CopyButtonAnimatedProps } from \"./types\";\n\nexport function CopyButtonAnimated({\n animation = \"swap\",\n ...props\n}: CopyButtonAnimatedProps) {\n const preset = copyButtonAnimationPresets[animation];\n\n const renderIcon: CopyButtonIconRenderer = ({\n copied,\n copyIcon,\n copiedIcon,\n }) => (\n <AnimatePresence initial={false} mode=\"wait\">\n <motion.span\n key={copied ? \"copied\" : \"idle\"}\n className=\"inline-flex items-center justify-center\"\n initial={preset.initial}\n animate={preset.animate}\n exit={preset.exit}\n transition={preset.transition}\n >\n {copied ? copiedIcon : copyIcon}\n </motion.span>\n </AnimatePresence>\n );\n\n return <CopyButtonBase {...props} renderIcon={renderIcon} />;\n}\n\nCopyButtonAnimated.displayName = \"CopyButtonAnimated\";\n"]}
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { CopyButtonBase } from '../../chunk-7TGUGTTQ.mjs';
3
+ import '../../chunk-ODBG4Y6R.mjs';
4
+ import '../../chunk-4D54YOL6.mjs';
5
+ import { AnimatePresence, motion } from 'framer-motion';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ // src/ui/copy-button/animated/animations.ts
9
+ var copyButtonAnimationPresets = {
10
+ swap: {
11
+ initial: { opacity: 0, scale: 0.6, rotate: -45 },
12
+ animate: { opacity: 1, scale: 1, rotate: 0 },
13
+ exit: { opacity: 0, scale: 0.6, rotate: 45 },
14
+ transition: { type: "spring", stiffness: 520, damping: 24 }
15
+ },
16
+ pop: {
17
+ initial: { opacity: 0, scale: 0.4, rotate: 0 },
18
+ animate: { opacity: 1, scale: 1, rotate: 0 },
19
+ exit: { opacity: 0, scale: 0.4, rotate: 0 },
20
+ transition: { type: "spring", stiffness: 600, damping: 20 }
21
+ },
22
+ fade: {
23
+ initial: { opacity: 0, scale: 1, rotate: 0 },
24
+ animate: { opacity: 1, scale: 1, rotate: 0 },
25
+ exit: { opacity: 0, scale: 1, rotate: 0 },
26
+ transition: { duration: 0.16 }
27
+ }
28
+ };
29
+ function CopyButtonAnimated({
30
+ animation = "swap",
31
+ ...props
32
+ }) {
33
+ const preset = copyButtonAnimationPresets[animation];
34
+ const renderIcon = ({
35
+ copied,
36
+ copyIcon,
37
+ copiedIcon
38
+ }) => /* @__PURE__ */ jsx(AnimatePresence, { initial: false, mode: "wait", children: /* @__PURE__ */ jsx(
39
+ motion.span,
40
+ {
41
+ className: "inline-flex items-center justify-center",
42
+ initial: preset.initial,
43
+ animate: preset.animate,
44
+ exit: preset.exit,
45
+ transition: preset.transition,
46
+ children: copied ? copiedIcon : copyIcon
47
+ },
48
+ copied ? "copied" : "idle"
49
+ ) });
50
+ return /* @__PURE__ */ jsx(CopyButtonBase, { ...props, renderIcon });
51
+ }
52
+ CopyButtonAnimated.displayName = "CopyButtonAnimated";
53
+
54
+ export { CopyButtonAnimated, copyButtonAnimationPresets };
55
+ //# sourceMappingURL=animated.mjs.map
56
+ //# sourceMappingURL=animated.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/copy-button/animated/animations.ts","../../../src/ui/copy-button/animated/copy-button-animated.tsx"],"names":[],"mappings":";;;;;;;AAEO,IAAM,0BAAA,GAAyD;AAAA,EACpE,IAAA,EAAM;AAAA,IACJ,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,IAC/C,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,MAAM,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,EAAA,EAAG;AAAA,IAC3C,YAAY,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA;AAAG,GAC5D;AAAA,EACA,GAAA,EAAK;AAAA,IACH,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,CAAA,EAAE;AAAA,IAC7C,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,MAAM,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,EAAK,QAAQ,CAAA,EAAE;AAAA,IAC1C,YAAY,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA;AAAG,GAC5D;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,SAAS,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC3C,MAAM,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACxC,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA;AAAK;AAEjC;ACXO,SAAS,kBAAA,CAAmB;AAAA,EACjC,SAAA,GAAY,MAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,MAAA,GAAS,2BAA2B,SAAS,CAAA;AAEnD,EAAA,MAAM,aAAqC,CAAC;AAAA,IAC1C,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,wBAEA,GAAA,CAAC,eAAA,EAAA,EAAgB,OAAA,EAAS,KAAA,EAAO,MAAK,MAAA,EACpC,QAAA,kBAAA,GAAA;AAAA,IAAC,MAAA,CAAO,IAAA;AAAA,IAAP;AAAA,MAEC,SAAA,EAAU,yCAAA;AAAA,MACV,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,YAAY,MAAA,CAAO,UAAA;AAAA,MAElB,mBAAS,UAAA,GAAa;AAAA,KAAA;AAAA,IAPlB,SAAS,QAAA,GAAW;AAAA,GAQ3B,EACF,CAAA;AAGF,EAAA,uBAAO,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,UAAA,EAAwB,CAAA;AAC5D;AAEA,kBAAA,CAAmB,WAAA,GAAc,oBAAA","file":"animated.mjs","sourcesContent":["import type { CopyButtonAnimationPresets } from \"./types\";\n\nexport const copyButtonAnimationPresets: CopyButtonAnimationPresets = {\n swap: {\n initial: { opacity: 0, scale: 0.6, rotate: -45 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 0.6, rotate: 45 },\n transition: { type: \"spring\", stiffness: 520, damping: 24 },\n },\n pop: {\n initial: { opacity: 0, scale: 0.4, rotate: 0 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 0.4, rotate: 0 },\n transition: { type: \"spring\", stiffness: 600, damping: 20 },\n },\n fade: {\n initial: { opacity: 0, scale: 1, rotate: 0 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 1, rotate: 0 },\n transition: { duration: 0.16 },\n },\n};\n","\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\n\nimport { CopyButtonBase } from \"../copy-button-base\";\nimport type { CopyButtonIconRenderer } from \"../types\";\n\nimport { copyButtonAnimationPresets } from \"./animations\";\nimport type { CopyButtonAnimatedProps } from \"./types\";\n\nexport function CopyButtonAnimated({\n animation = \"swap\",\n ...props\n}: CopyButtonAnimatedProps) {\n const preset = copyButtonAnimationPresets[animation];\n\n const renderIcon: CopyButtonIconRenderer = ({\n copied,\n copyIcon,\n copiedIcon,\n }) => (\n <AnimatePresence initial={false} mode=\"wait\">\n <motion.span\n key={copied ? \"copied\" : \"idle\"}\n className=\"inline-flex items-center justify-center\"\n initial={preset.initial}\n animate={preset.animate}\n exit={preset.exit}\n transition={preset.transition}\n >\n {copied ? copiedIcon : copyIcon}\n </motion.span>\n </AnimatePresence>\n );\n\n return <CopyButtonBase {...props} renderIcon={renderIcon} />;\n}\n\nCopyButtonAnimated.displayName = \"CopyButtonAnimated\";\n"]}
@@ -0,0 +1,6 @@
1
+ import type { CopyButtonBaseProps } from "./types";
2
+ export declare function CopyButtonBase({ value, timeout, appearance, size, iconOnly, label, copiedLabel, copyIcon, copiedIcon, onCopy, renderIcon, className, type, disabled, onClick, "aria-label": ariaLabel, ref, ...rest }: CopyButtonBaseProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace CopyButtonBase {
4
+ var displayName: string;
5
+ }
6
+ //# sourceMappingURL=copy-button-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button-base.d.ts","sourceRoot":"","sources":["../../../src/ui/copy-button/copy-button-base.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAA0B,MAAM,SAAS,CAAC;AAS3E,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,OAAc,EACd,UAAU,EACV,IAAI,EACJ,QAAe,EACf,KAAc,EACd,WAAsB,EACtB,QAAiC,EACjC,UAAoC,EACpC,MAAM,EACN,UAA8B,EAC9B,SAAS,EACT,IAAe,EACf,QAAQ,EACR,OAAO,EACP,YAAY,EAAE,SAAS,EACvB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,mBAAmB,2CAkDrB;yBArEe,cAAc"}
@@ -0,0 +1,6 @@
1
+ import type { CopyButtonProps } from "./types";
2
+ export declare function CopyButton(props: CopyButtonProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace CopyButton {
4
+ var displayName: string;
5
+ }
6
+ //# sourceMappingURL=copy-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button.d.ts","sourceRoot":"","sources":["../../../src/ui/copy-button/copy-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAEhD;yBAFe,UAAU"}
@@ -0,0 +1,4 @@
1
+ export { CopyButton } from "./copy-button";
2
+ export type { CopyButtonBaseProps, CopyButtonIconRenderer, CopyButtonProps, CopyButtonVariantProps, } from "./types";
3
+ export { copyButtonVariants } from "./variants";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/copy-button/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { VariantProps } from "class-variance-authority";
2
+ import type { ComponentPropsWithRef, ReactNode } from "react";
3
+ import type { copyButtonVariants } from "./variants";
4
+ export type CopyButtonVariantProps = VariantProps<typeof copyButtonVariants>;
5
+ /** Renders the icon region for a given copied state. Lets the animated entry swap the static icons for motion ones. */
6
+ export type CopyButtonIconRenderer = (state: {
7
+ copied: boolean;
8
+ copyIcon: ReactNode;
9
+ copiedIcon: ReactNode;
10
+ }) => ReactNode;
11
+ export interface CopyButtonBaseProps extends Omit<ComponentPropsWithRef<"button">, "value" | "onCopy"> {
12
+ /** Text written to the clipboard when the button is pressed. */
13
+ value: string;
14
+ /** Milliseconds the copied state stays active before resetting. `0` keeps it until re-copied. */
15
+ timeout?: number;
16
+ appearance?: CopyButtonVariantProps["appearance"];
17
+ size?: CopyButtonVariantProps["size"];
18
+ /** Render only the icon (default). Pass `false` to show the label text alongside the icon. */
19
+ iconOnly?: boolean;
20
+ /** Label shown (and used for `aria-label`) in the idle state. */
21
+ label?: string;
22
+ /** Label shown (and used for `aria-label`) after a successful copy. */
23
+ copiedLabel?: string;
24
+ copyIcon?: ReactNode;
25
+ copiedIcon?: ReactNode;
26
+ /** Called with `value` after the clipboard write succeeds. */
27
+ onCopy?: (value: string) => void;
28
+ /** Overrides how the icon region renders; the animated entry uses this for motion. */
29
+ renderIcon?: CopyButtonIconRenderer;
30
+ }
31
+ export type CopyButtonProps = Omit<CopyButtonBaseProps, "renderIcon">;
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/copy-button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE7E,uHAAuH;AACvH,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,SAAS,CAAC;CACvB,KAAK,SAAS,CAAC;AAEhB,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjE,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtC,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,sFAAsF;IACtF,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const copyButtonVariants: (props?: ({
2
+ appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "orange" | "pink" | "purple" | "teal" | "yellow" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "secondary" | "destructive" | "ghost" | null | undefined;
3
+ size?: "md" | "sm" | "lg" | null | undefined;
4
+ iconOnly?: boolean | 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/copy-button/variants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB;;;;8EAmB7B,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkRKX5MERK_js = require('../chunk-RKX5MERK.js');
5
+ require('../chunk-CQMV7BB6.js');
6
+ require('../chunk-ZS5756ZC.js');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function CopyButton(props) {
10
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkRKX5MERK_js.CopyButtonBase, { ...props });
11
+ }
12
+ CopyButton.displayName = "CopyButton";
13
+
14
+ Object.defineProperty(exports, "copyButtonVariants", {
15
+ enumerable: true,
16
+ get: function () { return chunkRKX5MERK_js.copyButtonVariants; }
17
+ });
18
+ exports.CopyButton = CopyButton;
19
+ //# sourceMappingURL=copy-button.js.map
20
+ //# sourceMappingURL=copy-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/copy-button/copy-button.tsx"],"names":["jsx","CopyButtonBase"],"mappings":";;;;;;;AAIO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,uBAAOA,cAAA,CAACC,+BAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpC;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA","file":"copy-button.js","sourcesContent":["// copy-button.tsx — default static entry (no framer-motion)\nimport { CopyButtonBase } from \"./copy-button-base\";\nimport type { CopyButtonProps } from \"./types\";\n\nexport function CopyButton(props: CopyButtonProps) {\n return <CopyButtonBase {...props} />;\n}\n\nCopyButton.displayName = \"CopyButton\";\n"]}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { CopyButtonBase } from '../chunk-7TGUGTTQ.mjs';
3
+ export { copyButtonVariants } from '../chunk-7TGUGTTQ.mjs';
4
+ import '../chunk-ODBG4Y6R.mjs';
5
+ import '../chunk-4D54YOL6.mjs';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ function CopyButton(props) {
9
+ return /* @__PURE__ */ jsx(CopyButtonBase, { ...props });
10
+ }
11
+ CopyButton.displayName = "CopyButton";
12
+
13
+ export { CopyButton };
14
+ //# sourceMappingURL=copy-button.mjs.map
15
+ //# sourceMappingURL=copy-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/copy-button/copy-button.tsx"],"names":[],"mappings":";;;;;;AAIO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,uBAAO,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpC;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA","file":"copy-button.mjs","sourcesContent":["// copy-button.tsx — default static entry (no framer-motion)\nimport { CopyButtonBase } from \"./copy-button-base\";\nimport type { CopyButtonProps } from \"./types\";\n\nexport function CopyButton(props: CopyButtonProps) {\n return <CopyButtonBase {...props} />;\n}\n\nCopyButton.displayName = \"CopyButton\";\n"]}
@@ -0,0 +1,3 @@
1
+ import type { KbdAnimationPresets } from "./types";
2
+ export declare const kbdAnimationPresets: KbdAnimationPresets;
3
+ //# sourceMappingURL=animations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../../../src/ui/kbd/animated/animations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAM,mBAAmB,EAAE,mBAYjC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { KbdAnimated } from "./kbd-animated";
2
+ export { kbdAnimationPresets } from "./animations";
3
+ export type { KbdAnimatedProps, KbdAnimation, KbdAnimationPresets, } from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/kbd/animated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { KbdAnimatedProps } from "./types";
2
+ export declare function KbdAnimated({ animation, ...props }: KbdAnimatedProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace KbdAnimated {
4
+ var displayName: string;
5
+ }
6
+ //# sourceMappingURL=kbd-animated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd-animated.d.ts","sourceRoot":"","sources":["../../../../src/ui/kbd/animated/kbd-animated.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,WAAW,CAAC,EAAE,SAAkB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAa7E;yBAbe,WAAW"}
@@ -0,0 +1,10 @@
1
+ import type { HTMLMotionProps } from "framer-motion";
2
+ import type { KbdBaseProps } from "../types";
3
+ export type KbdAnimation = "none" | "press" | "pop";
4
+ export type KbdAnimatedProps = Omit<KbdBaseProps, "as"> & {
5
+ animation?: KbdAnimation;
6
+ };
7
+ type KbdPresetMotionProps = Pick<HTMLMotionProps<"span">, "transition" | "whileHover" | "whileTap" | "animate" | "initial">;
8
+ export type KbdAnimationPresets = Record<KbdAnimation, KbdPresetMotionProps>;
9
+ export {};
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/kbd/animated/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG;IACxD,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,KAAK,oBAAoB,GAAG,IAAI,CAC9B,eAAe,CAAC,MAAM,CAAC,EACvB,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CACjE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC"}