@readdy/anim 0.0.21

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 (310) hide show
  1. package/animations/button/3d-flip/index.js +60 -0
  2. package/animations/button/3d-flip/react.tsx +29 -0
  3. package/animations/button/3d-flip/style.css +17 -0
  4. package/animations/button/blur-fade-in/index.js +21 -0
  5. package/animations/button/blur-fade-in/react.tsx +26 -0
  6. package/animations/button/blur-fade-in/style.css +27 -0
  7. package/animations/button/border-beam/index.js +172 -0
  8. package/animations/button/border-beam/react.tsx +55 -0
  9. package/animations/button/border-beam/style.css +59 -0
  10. package/animations/button/bounce-elastic/index.js +21 -0
  11. package/animations/button/bounce-elastic/react.tsx +26 -0
  12. package/animations/button/bounce-elastic/style.css +31 -0
  13. package/animations/button/bubble-button/index.js +317 -0
  14. package/animations/button/bubble-button/react.tsx +19 -0
  15. package/animations/button/bubble-button/style.css +245 -0
  16. package/animations/button/confetti-button/index.js +66 -0
  17. package/animations/button/confetti-button/react.tsx +30 -0
  18. package/animations/button/confetti-button/style.css +48 -0
  19. package/animations/button/glow-cta/index.js +69 -0
  20. package/animations/button/glow-cta/react.tsx +45 -0
  21. package/animations/button/glow-cta/style.css +78 -0
  22. package/animations/button/magnetic-hover/index.js +61 -0
  23. package/animations/button/magnetic-hover/react.tsx +29 -0
  24. package/animations/button/magnetic-hover/style.css +18 -0
  25. package/animations/button/pulse/index.js +21 -0
  26. package/animations/button/pulse/react.tsx +26 -0
  27. package/animations/button/pulse/style.css +24 -0
  28. package/animations/button/rainbow-button/index.js +21 -0
  29. package/animations/button/rainbow-button/react.tsx +26 -0
  30. package/animations/button/rainbow-button/style.css +54 -0
  31. package/animations/button/shimmer-border/index.js +28 -0
  32. package/animations/button/shimmer-border/react.tsx +41 -0
  33. package/animations/button/shimmer-border/style.css +53 -0
  34. package/animations/button/sketch-button/index.js +16 -0
  35. package/animations/button/sketch-button/react.tsx +19 -0
  36. package/animations/button/sketch-button/style.css +25 -0
  37. package/animations/card/blur-rise/index.js +21 -0
  38. package/animations/card/blur-rise/react.tsx +26 -0
  39. package/animations/card/blur-rise/style.css +27 -0
  40. package/animations/card/bounce-in-bottom/index.js +21 -0
  41. package/animations/card/bounce-in-bottom/react.tsx +26 -0
  42. package/animations/card/bounce-in-bottom/style.css +31 -0
  43. package/animations/card/card-fan-spread/index.js +146 -0
  44. package/animations/card/card-fan-spread/react.tsx +35 -0
  45. package/animations/card/card-fan-spread/style.css +90 -0
  46. package/animations/card/card-flip/index.js +203 -0
  47. package/animations/card/card-flip/react.tsx +35 -0
  48. package/animations/card/card-flip/style.css +71 -0
  49. package/animations/card/float-idle/index.js +21 -0
  50. package/animations/card/float-idle/react.tsx +26 -0
  51. package/animations/card/float-idle/style.css +21 -0
  52. package/animations/card/image-magnifier/index.js +333 -0
  53. package/animations/card/image-magnifier/react.tsx +31 -0
  54. package/animations/card/image-magnifier/style.css +42 -0
  55. package/animations/card/image-zoom-rotate/index.js +48 -0
  56. package/animations/card/image-zoom-rotate/react.tsx +31 -0
  57. package/animations/card/image-zoom-rotate/style.css +20 -0
  58. package/animations/card/pop-in-stack/index.js +25 -0
  59. package/animations/card/pop-in-stack/react.tsx +33 -0
  60. package/animations/card/pop-in-stack/style.css +25 -0
  61. package/animations/card/reveal-from-top/index.js +21 -0
  62. package/animations/card/reveal-from-top/react.tsx +26 -0
  63. package/animations/card/reveal-from-top/style.css +28 -0
  64. package/animations/card/rgb-split-glitch/index.js +28 -0
  65. package/animations/card/rgb-split-glitch/react.tsx +41 -0
  66. package/animations/card/rgb-split-glitch/style.css +33 -0
  67. package/animations/card/tilted-card/index.js +64 -0
  68. package/animations/card/tilted-card/react.tsx +33 -0
  69. package/animations/card/tilted-card/style.css +27 -0
  70. package/animations/header/anime-splittext/index.js +108 -0
  71. package/animations/header/anime-splittext/react.tsx +30 -0
  72. package/animations/header/anime-splittext/style.css +71 -0
  73. package/animations/header/bounce-in-down/index.js +40 -0
  74. package/animations/header/bounce-in-down/react.tsx +29 -0
  75. package/animations/header/bounce-in-down/style.css +40 -0
  76. package/animations/header/fly-in-chars/index.js +46 -0
  77. package/animations/header/fly-in-chars/react.tsx +30 -0
  78. package/animations/header/fly-in-chars/style.css +29 -0
  79. package/animations/header/gradient-text/index.js +21 -0
  80. package/animations/header/gradient-text/react.tsx +26 -0
  81. package/animations/header/gradient-text/style.css +28 -0
  82. package/animations/header/letter-bounce/index.js +33 -0
  83. package/animations/header/letter-bounce/react.tsx +34 -0
  84. package/animations/header/letter-bounce/style.css +25 -0
  85. package/animations/header/roll-in/index.js +40 -0
  86. package/animations/header/roll-in/react.tsx +29 -0
  87. package/animations/header/roll-in/style.css +31 -0
  88. package/animations/header/shimmer-text/index.js +16 -0
  89. package/animations/header/shimmer-text/react.tsx +28 -0
  90. package/animations/header/shimmer-text/style.css +29 -0
  91. package/animations/header/shuffle/index.js +118 -0
  92. package/animations/header/shuffle/react.tsx +50 -0
  93. package/animations/header/shuffle/style.css +25 -0
  94. package/animations/header/split-text/index.js +72 -0
  95. package/animations/header/split-text/react.tsx +38 -0
  96. package/animations/header/split-text/style.css +31 -0
  97. package/animations/header/text-type/index.js +267 -0
  98. package/animations/header/text-type/react.tsx +63 -0
  99. package/animations/header/text-type/style.css +37 -0
  100. package/animations/header/word-curtain-reveal/index.js +97 -0
  101. package/animations/header/word-curtain-reveal/react.tsx +30 -0
  102. package/animations/header/word-curtain-reveal/style.css +39 -0
  103. package/dist/button/3d-flip/react.js +21 -0
  104. package/dist/button/3d-flip.js +61 -0
  105. package/dist/button/blur-fade-in/react.js +28 -0
  106. package/dist/button/blur-fade-in.js +17 -0
  107. package/dist/button/border-beam/react.js +22 -0
  108. package/dist/button/border-beam.js +168 -0
  109. package/dist/button/bounce-elastic/react.js +28 -0
  110. package/dist/button/bounce-elastic.js +17 -0
  111. package/dist/button/bubble-button/react.js +20 -0
  112. package/dist/button/bubble-button.js +318 -0
  113. package/dist/button/confetti-button/react.js +21 -0
  114. package/dist/button/confetti-button.js +67 -0
  115. package/dist/button/glow-cta/react.js +23 -0
  116. package/dist/button/glow-cta.js +65 -0
  117. package/dist/button/magnetic-hover/react.js +21 -0
  118. package/dist/button/magnetic-hover.js +62 -0
  119. package/dist/button/pulse/react.js +28 -0
  120. package/dist/button/pulse.js +17 -0
  121. package/dist/button/rainbow-button/react.js +28 -0
  122. package/dist/button/rainbow-button.js +17 -0
  123. package/dist/button/shimmer-border/react.js +22 -0
  124. package/dist/button/shimmer-border.js +24 -0
  125. package/dist/button/sketch-button/react.js +20 -0
  126. package/dist/button/sketch-button.js +17 -0
  127. package/dist/card/blur-rise/react.js +28 -0
  128. package/dist/card/blur-rise.js +17 -0
  129. package/dist/card/bounce-in-bottom/react.js +28 -0
  130. package/dist/card/bounce-in-bottom.js +17 -0
  131. package/dist/card/card-fan-spread/react.js +20 -0
  132. package/dist/card/card-fan-spread.js +147 -0
  133. package/dist/card/float-idle/react.js +28 -0
  134. package/dist/card/float-idle.js +17 -0
  135. package/dist/card/image-magnifier/react.js +22 -0
  136. package/dist/card/image-magnifier.js +334 -0
  137. package/dist/card/image-zoom-rotate/react.js +21 -0
  138. package/dist/card/image-zoom-rotate.js +49 -0
  139. package/dist/card/pop-in-stack/react.js +20 -0
  140. package/dist/card/pop-in-stack.js +26 -0
  141. package/dist/card/reveal-from-top/react.js +28 -0
  142. package/dist/card/reveal-from-top.js +17 -0
  143. package/dist/card/rgb-split-glitch/react.js +22 -0
  144. package/dist/card/rgb-split-glitch.js +24 -0
  145. package/dist/card/tilted-card/react.js +21 -0
  146. package/dist/card/tilted-card.js +65 -0
  147. package/dist/chunks/constants-EnH6-Pz4.js +66 -0
  148. package/dist/chunks/constants-ZTHic1pf.js +66 -0
  149. package/dist/chunks/pointer-follow-B3RFnn_q.js +93 -0
  150. package/dist/chunks/pointer-follow-BETANySn.js +93 -0
  151. package/dist/chunks/reduced-motion-BpQYuEzK.js +17 -0
  152. package/dist/chunks/reduced-motion-HX79Ac8G.js +17 -0
  153. package/dist/chunks/resolve-card-media-Cj3V_oms.js +43 -0
  154. package/dist/chunks/resolve-card-media-DBIU-duL.js +43 -0
  155. package/dist/chunks/text-split-D02jltVh.js +191 -0
  156. package/dist/chunks/text-split-frOR4UpH.js +191 -0
  157. package/dist/full.css +1 -0
  158. package/dist/full.js +3192 -0
  159. package/dist/header/anime-splittext/react.js +22 -0
  160. package/dist/header/anime-splittext.js +109 -0
  161. package/dist/header/bounce-in-down/react.js +32 -0
  162. package/dist/header/bounce-in-down.js +36 -0
  163. package/dist/header/fly-in-chars/react.js +23 -0
  164. package/dist/header/fly-in-chars.js +47 -0
  165. package/dist/header/gradient-text/react.js +28 -0
  166. package/dist/header/gradient-text.js +17 -0
  167. package/dist/header/letter-bounce/react.js +23 -0
  168. package/dist/header/letter-bounce.js +34 -0
  169. package/dist/header/roll-in/react.js +32 -0
  170. package/dist/header/roll-in.js +36 -0
  171. package/dist/header/shimmer-text/react.js +27 -0
  172. package/dist/header/shimmer-text.js +17 -0
  173. package/dist/header/shuffle/react.js +30 -0
  174. package/dist/header/shuffle.js +119 -0
  175. package/dist/header/split-text/react.js +26 -0
  176. package/dist/header/split-text.js +73 -0
  177. package/dist/header/text-type/react.js +43 -0
  178. package/dist/header/text-type.js +268 -0
  179. package/dist/header/word-curtain-reveal/react.js +22 -0
  180. package/dist/header/word-curtain-reveal.js +98 -0
  181. package/dist/meta.json +6 -0
  182. package/dist/metadata.json +1051 -0
  183. package/dist/react.css +1 -0
  184. package/dist/types/animations/button/3d-flip/index.d.ts +3 -0
  185. package/dist/types/animations/button/3d-flip/react.d.ts +8 -0
  186. package/dist/types/animations/button/blur-fade-in/index.d.ts +3 -0
  187. package/dist/types/animations/button/blur-fade-in/react.d.ts +13 -0
  188. package/dist/types/animations/button/border-beam/index.d.ts +3 -0
  189. package/dist/types/animations/button/border-beam/react.d.ts +25 -0
  190. package/dist/types/animations/button/bounce-elastic/index.d.ts +3 -0
  191. package/dist/types/animations/button/bounce-elastic/react.d.ts +13 -0
  192. package/dist/types/animations/button/bubble-button/index.d.ts +3 -0
  193. package/dist/types/animations/button/bubble-button/react.d.ts +4 -0
  194. package/dist/types/animations/button/confetti-button/index.d.ts +3 -0
  195. package/dist/types/animations/button/confetti-button/react.d.ts +8 -0
  196. package/dist/types/animations/button/glow-cta/index.d.ts +3 -0
  197. package/dist/types/animations/button/glow-cta/react.d.ts +20 -0
  198. package/dist/types/animations/button/magnetic-hover/index.d.ts +3 -0
  199. package/dist/types/animations/button/magnetic-hover/react.d.ts +8 -0
  200. package/dist/types/animations/button/pulse/index.d.ts +3 -0
  201. package/dist/types/animations/button/pulse/react.d.ts +13 -0
  202. package/dist/types/animations/button/rainbow-button/index.d.ts +3 -0
  203. package/dist/types/animations/button/rainbow-button/react.d.ts +13 -0
  204. package/dist/types/animations/button/shimmer-border/index.d.ts +3 -0
  205. package/dist/types/animations/button/shimmer-border/react.d.ts +18 -0
  206. package/dist/types/animations/button/sketch-button/index.d.ts +3 -0
  207. package/dist/types/animations/button/sketch-button/react.d.ts +4 -0
  208. package/dist/types/animations/card/blur-rise/index.d.ts +3 -0
  209. package/dist/types/animations/card/blur-rise/react.d.ts +13 -0
  210. package/dist/types/animations/card/bounce-in-bottom/index.d.ts +3 -0
  211. package/dist/types/animations/card/bounce-in-bottom/react.d.ts +13 -0
  212. package/dist/types/animations/card/card-fan-spread/index.d.ts +3 -0
  213. package/dist/types/animations/card/card-fan-spread/react.d.ts +11 -0
  214. package/dist/types/animations/card/card-flip/index.d.ts +3 -0
  215. package/dist/types/animations/card/card-flip/react.d.ts +11 -0
  216. package/dist/types/animations/card/float-idle/index.d.ts +3 -0
  217. package/dist/types/animations/card/float-idle/react.d.ts +13 -0
  218. package/dist/types/animations/card/image-magnifier/index.d.ts +3 -0
  219. package/dist/types/animations/card/image-magnifier/react.d.ts +9 -0
  220. package/dist/types/animations/card/image-zoom-rotate/index.d.ts +3 -0
  221. package/dist/types/animations/card/image-zoom-rotate/react.d.ts +9 -0
  222. package/dist/types/animations/card/pop-in-stack/index.d.ts +3 -0
  223. package/dist/types/animations/card/pop-in-stack/react.d.ts +10 -0
  224. package/dist/types/animations/card/reveal-from-top/index.d.ts +3 -0
  225. package/dist/types/animations/card/reveal-from-top/react.d.ts +13 -0
  226. package/dist/types/animations/card/rgb-split-glitch/index.d.ts +3 -0
  227. package/dist/types/animations/card/rgb-split-glitch/react.d.ts +18 -0
  228. package/dist/types/animations/card/tilted-card/index.d.ts +3 -0
  229. package/dist/types/animations/card/tilted-card/react.d.ts +10 -0
  230. package/dist/types/animations/header/anime-splittext/index.d.ts +3 -0
  231. package/dist/types/animations/header/anime-splittext/react.d.ts +8 -0
  232. package/dist/types/animations/header/bounce-in-down/index.d.ts +3 -0
  233. package/dist/types/animations/header/bounce-in-down/react.d.ts +13 -0
  234. package/dist/types/animations/header/fly-in-chars/index.d.ts +3 -0
  235. package/dist/types/animations/header/fly-in-chars/react.d.ts +8 -0
  236. package/dist/types/animations/header/gradient-text/index.d.ts +3 -0
  237. package/dist/types/animations/header/gradient-text/react.d.ts +13 -0
  238. package/dist/types/animations/header/letter-bounce/index.d.ts +3 -0
  239. package/dist/types/animations/header/letter-bounce/react.d.ts +10 -0
  240. package/dist/types/animations/header/roll-in/index.d.ts +3 -0
  241. package/dist/types/animations/header/roll-in/react.d.ts +13 -0
  242. package/dist/types/animations/header/shimmer-text/index.d.ts +3 -0
  243. package/dist/types/animations/header/shimmer-text/react.d.ts +4 -0
  244. package/dist/types/animations/header/shuffle/index.d.ts +3 -0
  245. package/dist/types/animations/header/shuffle/react.d.ts +14 -0
  246. package/dist/types/animations/header/split-text/index.d.ts +3 -0
  247. package/dist/types/animations/header/split-text/react.d.ts +10 -0
  248. package/dist/types/animations/header/text-type/index.d.ts +3 -0
  249. package/dist/types/animations/header/text-type/react.d.ts +13 -0
  250. package/dist/types/animations/header/word-curtain-reveal/index.d.ts +3 -0
  251. package/dist/types/animations/header/word-curtain-reveal/react.d.ts +8 -0
  252. package/dist/types/react-barrel.d.ts +34 -0
  253. package/dist/types/scripts/bundle-all.d.ts +173 -0
  254. package/dist/types/scripts/check-metadata.d.ts +1 -0
  255. package/dist/types/scripts/copy-metadata.d.ts +1 -0
  256. package/dist/types/scripts/generate-animation-id-map.d.ts +1 -0
  257. package/dist/types/scripts/generate-dist-meta.d.ts +1 -0
  258. package/dist/types/scripts/generate-preview-manifest.d.ts +1 -0
  259. package/dist/types/scripts/update-metadata.d.ts +1 -0
  260. package/dist/types/shared/constants.d.ts +34 -0
  261. package/dist/types/shared/meta.d.ts +18 -0
  262. package/dist/types/shared/pointer-follow.d.ts +8 -0
  263. package/dist/types/shared/reduced-motion.d.ts +11 -0
  264. package/dist/types/shared/resolve-card-media.d.ts +1 -0
  265. package/dist/types/shared/text-split.d.ts +19 -0
  266. package/dist/types/stories/3d-flip.stories.d.ts +7 -0
  267. package/dist/types/stories/_helpers.d.ts +24 -0
  268. package/dist/types/stories/anime-splittext.stories.d.ts +8 -0
  269. package/dist/types/stories/blur-fade-in.stories.d.ts +8 -0
  270. package/dist/types/stories/blur-rise.stories.d.ts +8 -0
  271. package/dist/types/stories/blur-to-sharp-rise-header.stories.d.ts +8 -0
  272. package/dist/types/stories/border-beam.stories.d.ts +8 -0
  273. package/dist/types/stories/bounce-elastic.stories.d.ts +8 -0
  274. package/dist/types/stories/bounce-in-bottom.stories.d.ts +8 -0
  275. package/dist/types/stories/bounce-in-down.stories.d.ts +9 -0
  276. package/dist/types/stories/bubble-button.stories.d.ts +8 -0
  277. package/dist/types/stories/card-fan-spread.stories.d.ts +7 -0
  278. package/dist/types/stories/card-flip.stories.d.ts +7 -0
  279. package/dist/types/stories/confetti-button.stories.d.ts +7 -0
  280. package/dist/types/stories/float-idle.stories.d.ts +8 -0
  281. package/dist/types/stories/fly-in-chars.stories.d.ts +8 -0
  282. package/dist/types/stories/glow-cta.stories.d.ts +9 -0
  283. package/dist/types/stories/gradient-text.stories.d.ts +9 -0
  284. package/dist/types/stories/image-magnifier.stories.d.ts +10 -0
  285. package/dist/types/stories/image-zoom-rotate.stories.d.ts +7 -0
  286. package/dist/types/stories/letter-bounce.stories.d.ts +8 -0
  287. package/dist/types/stories/magic-ui-border-beam-card.stories.d.ts +8 -0
  288. package/dist/types/stories/magnetic-hover.stories.d.ts +7 -0
  289. package/dist/types/stories/pop-in-stack.stories.d.ts +7 -0
  290. package/dist/types/stories/pulse.stories.d.ts +8 -0
  291. package/dist/types/stories/rainbow-button.stories.d.ts +8 -0
  292. package/dist/types/stories/reveal-from-top.stories.d.ts +8 -0
  293. package/dist/types/stories/rgb-split-glitch.stories.d.ts +8 -0
  294. package/dist/types/stories/roll-in.stories.d.ts +9 -0
  295. package/dist/types/stories/shimmer-border.stories.d.ts +9 -0
  296. package/dist/types/stories/shimmer-text.stories.d.ts +8 -0
  297. package/dist/types/stories/shuffle.stories.d.ts +8 -0
  298. package/dist/types/stories/sketch-button.stories.d.ts +7 -0
  299. package/dist/types/stories/split-text.stories.d.ts +8 -0
  300. package/dist/types/stories/text-type.stories.d.ts +8 -0
  301. package/dist/types/stories/tilted-card.stories.d.ts +7 -0
  302. package/dist/types/stories/word-curtain-reveal.stories.d.ts +8 -0
  303. package/package.json +166 -0
  304. package/react-barrel.js +44 -0
  305. package/shared/constants.js +64 -0
  306. package/shared/meta.js +21 -0
  307. package/shared/pointer-follow.js +91 -0
  308. package/shared/reduced-motion.js +15 -0
  309. package/shared/resolve-card-media.js +41 -0
  310. package/shared/text-split.js +188 -0
@@ -0,0 +1,1051 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "libraryVersion": "0.0.21",
4
+ "animations": [
5
+ {
6
+ "id": "anim-readdy-header-letter-bounce",
7
+ "animationName": "Readdy Letter Bounce",
8
+ "description": "Bouncy letters: each character of my headline gently bobs up and down in a wave, slightly out of sync with neighbors.",
9
+ "category": "header",
10
+ "applyTo": [
11
+ "header"
12
+ ],
13
+ "options": {
14
+ "duration": {
15
+ "type": "number",
16
+ "default": 850,
17
+ "description": "Animation duration in milliseconds."
18
+ },
19
+ "amplitude": {
20
+ "type": "number",
21
+ "default": 6,
22
+ "description": "Vertical movement amplitude in pixels."
23
+ },
24
+ "stagger": {
25
+ "type": "number",
26
+ "default": 60,
27
+ "description": "Delay between animated units in milliseconds."
28
+ },
29
+ "maxChars": {
30
+ "type": "number",
31
+ "default": 160,
32
+ "description": "Maximum characters before falling back to a simpler strategy."
33
+ }
34
+ },
35
+ "conflictsWith": [],
36
+ "previewVariant": "text-wave",
37
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/letter-bounce.gif",
38
+ "prompt": "Apply Letter Bounce animation from @readdy/anim@0.0.21\n\nImport: import { AnimLetterBounce } from '@readdy/anim/header/letter-bounce/react';\nUsage: Replace the target text element with <AnimLetterBounce text=\"...\" tag=\"h1\" stagger={60} duration={700} />. Use the original element tag for the tag prop. Preserve dynamic expressions such as i18n calls when possible.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render plain text without character animation.\n\nTarget element selector: {selectorContext}",
39
+ "enabled": true,
40
+ "sortOrder": 101
41
+ },
42
+ {
43
+ "id": "anim-readdy-header-bounce-in-down",
44
+ "animationName": "Bounce In Down",
45
+ "description": "A Bounce In Down effect for header elements.",
46
+ "category": "header",
47
+ "applyTo": [
48
+ "header"
49
+ ],
50
+ "options": {
51
+ "stagger": {
52
+ "type": "number",
53
+ "default": 40,
54
+ "description": "Delay between animated units in milliseconds."
55
+ },
56
+ "maxChars": {
57
+ "type": "number",
58
+ "default": 160,
59
+ "description": "Maximum characters before falling back to a simpler strategy."
60
+ }
61
+ },
62
+ "conflictsWith": [],
63
+ "previewVariant": "bounce-in-down",
64
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/bounce-in-down.gif",
65
+ "prompt": "Apply Bounce In Down animation from @readdy/anim@0.0.21\n\nImport: import { AnimBounceInDown } from '@readdy/anim/header/bounce-in-down/react';\nUsage: Wrap the target text element without adding an extra wrapper: <AnimBounceInDown duration={800}>...</AnimBounceInDown>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the text visible without bounce motion.\n\nTarget element selector: {selectorContext}",
66
+ "enabled": true,
67
+ "sortOrder": 102
68
+ },
69
+ {
70
+ "id": "anim-readdy-header-shimmer-text",
71
+ "animationName": "Shimmer Text",
72
+ "description": "A Shimmer Text effect for header elements.",
73
+ "category": "header",
74
+ "applyTo": [
75
+ "header"
76
+ ],
77
+ "options": {},
78
+ "conflictsWith": [],
79
+ "previewVariant": "text-shimmer",
80
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/shimmer-text.gif",
81
+ "prompt": "Apply Shimmer Text animation from @readdy/anim@0.0.21\n\nImport: import { AnimShimmerText } from '@readdy/anim/header/shimmer-text/react';\nUsage: Replace the target text element with <AnimShimmerText text=\"...\" tag=\"h1\" stagger={45} duration={900} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render plain text without shimmer motion.\n\nTarget element selector: {selectorContext}",
82
+ "enabled": true,
83
+ "sortOrder": 102
84
+ },
85
+ {
86
+ "id": "anim-readdy-header-text-type",
87
+ "animationName": "Text Type",
88
+ "description": "A Text Type effect for header elements.",
89
+ "category": "header",
90
+ "applyTo": [
91
+ "header"
92
+ ],
93
+ "options": {
94
+ "gap": {
95
+ "type": "string",
96
+ "default": "0.08em",
97
+ "description": "Gap between content and caret."
98
+ },
99
+ "caretWidth": {
100
+ "type": "string",
101
+ "default": "0.08em",
102
+ "description": "Caret width."
103
+ },
104
+ "caretBlinkDuration": {
105
+ "type": "number",
106
+ "default": 900,
107
+ "description": "Caret blink duration in milliseconds."
108
+ },
109
+ "typingSpeed": {
110
+ "type": "number",
111
+ "default": 75,
112
+ "description": "Typing speed in milliseconds per character."
113
+ },
114
+ "deletingSpeed": {
115
+ "type": "number",
116
+ "default": 45,
117
+ "description": "Deleting speed in milliseconds per character."
118
+ },
119
+ "pauseDuration": {
120
+ "type": "number",
121
+ "default": 1500,
122
+ "description": "Pause duration between animation phases in milliseconds."
123
+ }
124
+ },
125
+ "conflictsWith": [],
126
+ "previewVariant": "text-type",
127
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/text-type.gif",
128
+ "prompt": "Apply Text Type animation from @readdy/anim@0.0.21\n\nImport: import { AnimTextType } from '@readdy/anim/header/text-type/react';\nUsage: Replace the target text element with <AnimTextType text=\"...\" tag=\"h1\" stagger={35} duration={500} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render the full text immediately.\n\nTarget element selector: {selectorContext}",
129
+ "enabled": true,
130
+ "sortOrder": 103
131
+ },
132
+ {
133
+ "id": "anim-readdy-header-gradient-text",
134
+ "animationName": "Gradient Text",
135
+ "description": "Style my headline with two or more bright colors in a smooth gradient across the letters.",
136
+ "category": "header",
137
+ "applyTo": [
138
+ "header"
139
+ ],
140
+ "options": {},
141
+ "conflictsWith": [],
142
+ "previewVariant": "text-gradient",
143
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/gradient-text.gif",
144
+ "prompt": "Apply Gradient Text animation from @readdy/anim@0.0.21\n\nImport: import { AnimGradientText } from '@readdy/anim/header/gradient-text/react';\nUsage: Wrap the target text element without adding an extra wrapper: <AnimGradientText duration={2400}>...</AnimGradientText>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the gradient static.\n\nTarget element selector: {selectorContext}",
145
+ "enabled": true,
146
+ "sortOrder": 104
147
+ },
148
+ {
149
+ "id": "anim-readdy-header-fly-in-chars",
150
+ "animationName": "Readdy Fly In Chars",
151
+ "description": "Fly-in characters: each letter arrives from a random off-screen direction with slight rotation, then settles into the final line.",
152
+ "category": "header",
153
+ "applyTo": [
154
+ "header"
155
+ ],
156
+ "options": {
157
+ "stagger": {
158
+ "type": "number",
159
+ "default": 36,
160
+ "description": "Delay between animated units in milliseconds."
161
+ },
162
+ "maxChars": {
163
+ "type": "number",
164
+ "default": 160,
165
+ "description": "Maximum characters before falling back to a simpler strategy."
166
+ }
167
+ },
168
+ "conflictsWith": [],
169
+ "previewVariant": "text-split",
170
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/fly-in-chars.gif",
171
+ "prompt": "Apply Fly In Chars animation from @readdy/anim@0.0.21\n\nImport: import { AnimFlyInChars } from '@readdy/anim/header/fly-in-chars/react';\nUsage: Replace the target text element with <AnimFlyInChars text=\"...\" tag=\"h1\" stagger={45} duration={750} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render plain text without fly-in motion.\n\nTarget element selector: {selectorContext}",
172
+ "enabled": true,
173
+ "sortOrder": 105
174
+ },
175
+ {
176
+ "id": "anim-readdy-header-blur-to-sharp-rise",
177
+ "animationName": "Blur-to-sharp Rise",
178
+ "description": "Bionova: fade-up: translateY(20px) + opacity 0 + blur(4px) to translateY(0) + opacity 1 + blur(0).",
179
+ "category": "header",
180
+ "applyTo": [
181
+ "header",
182
+ "card",
183
+ "object"
184
+ ],
185
+ "options": {},
186
+ "conflictsWith": [],
187
+ "previewVariant": "box-blur-rise",
188
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/blur-to-sharp-rise.gif",
189
+ "prompt": "Apply Blur-to-sharp Rise animation from @readdy/anim@0.0.21\n\nImport: import { AnimBlurRise } from '@readdy/anim/card/blur-rise/react';\nUsage: Wrap the target heading or text container without adding an extra wrapper: <AnimBlurRise>...</AnimBlurRise>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, show the text immediately without blur or rise motion.\n\nTarget element selector: {selectorContext}",
190
+ "enabled": true,
191
+ "sortOrder": 106
192
+ },
193
+ {
194
+ "id": "anim-readdy-header-roll-in",
195
+ "animationName": "Roll In",
196
+ "description": "A Roll In effect for header elements.",
197
+ "category": "header",
198
+ "applyTo": [
199
+ "header"
200
+ ],
201
+ "options": {
202
+ "stagger": {
203
+ "type": "number",
204
+ "default": 45,
205
+ "description": "Delay between animated units in milliseconds."
206
+ },
207
+ "maxChars": {
208
+ "type": "number",
209
+ "default": 160,
210
+ "description": "Maximum characters before falling back to a simpler strategy."
211
+ }
212
+ },
213
+ "conflictsWith": [],
214
+ "previewVariant": "roll-in",
215
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/roll-in.gif",
216
+ "prompt": "Apply Roll In animation from @readdy/anim@0.0.21\n\nImport: import { AnimRollIn } from '@readdy/anim/header/roll-in/react';\nUsage: Wrap the target text element without adding an extra wrapper: <AnimRollIn duration={700}>...</AnimRollIn>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the text visible without entrance motion.\n\nTarget element selector: {selectorContext}",
217
+ "enabled": true,
218
+ "sortOrder": 106
219
+ },
220
+ {
221
+ "id": "anim-readdy-header-split-text",
222
+ "animationName": "Split Text",
223
+ "description": "A Split Text effect for header elements.",
224
+ "category": "header",
225
+ "applyTo": [
226
+ "header"
227
+ ],
228
+ "options": {
229
+ "stagger": {
230
+ "type": "number",
231
+ "default": 50,
232
+ "description": "Delay between animated units in milliseconds."
233
+ },
234
+ "maxChars": {
235
+ "type": "number",
236
+ "default": 180,
237
+ "description": "Maximum characters before falling back to a simpler strategy."
238
+ },
239
+ "threshold": {
240
+ "type": "number",
241
+ "default": 0.1,
242
+ "description": "Intersection threshold before the animation triggers."
243
+ },
244
+ "rootMargin": {
245
+ "type": "string",
246
+ "default": "-100px 0px",
247
+ "description": "Intersection observer root margin."
248
+ }
249
+ },
250
+ "conflictsWith": [],
251
+ "previewVariant": "text-split",
252
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/split-text.gif",
253
+ "prompt": "Apply Split Text animation from @readdy/anim@0.0.21\n\nImport: import { AnimSplitText } from '@readdy/anim/header/split-text/react';\nUsage: Replace the target text element with <AnimSplitText text=\"...\" tag=\"h1\" stagger={50} duration={650} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render plain text without split animation.\n\nTarget element selector: {selectorContext}",
254
+ "enabled": true,
255
+ "sortOrder": 107
256
+ },
257
+ {
258
+ "id": "anim-readdy-header-shuffle",
259
+ "animationName": "Shuffle",
260
+ "description": "A Shuffle effect for header elements.",
261
+ "category": "header",
262
+ "applyTo": [
263
+ "header"
264
+ ],
265
+ "options": {
266
+ "stagger": {
267
+ "type": "number",
268
+ "default": 35,
269
+ "description": "Delay between animated units in milliseconds."
270
+ },
271
+ "shuffleFrames": {
272
+ "type": "number",
273
+ "default": 7,
274
+ "description": "Shuffle Frames option."
275
+ },
276
+ "frameDelay": {
277
+ "type": "number",
278
+ "default": 40,
279
+ "description": "Frame Delay option."
280
+ },
281
+ "idleOpacity": {
282
+ "type": "number",
283
+ "default": 0.45,
284
+ "description": "Opacity used in the idle state."
285
+ },
286
+ "idleOffset": {
287
+ "type": "string",
288
+ "default": "0.08em",
289
+ "description": "Offset used in the idle state."
290
+ },
291
+ "idleScale": {
292
+ "type": "number",
293
+ "default": 0.98,
294
+ "description": "Scale used in the idle state."
295
+ },
296
+ "settleDuration": {
297
+ "type": "number",
298
+ "default": 180,
299
+ "description": "Duration of the settle transition in milliseconds."
300
+ },
301
+ "maxChars": {
302
+ "type": "number",
303
+ "default": 120,
304
+ "description": "Maximum characters before falling back to a simpler strategy."
305
+ }
306
+ },
307
+ "conflictsWith": [],
308
+ "previewVariant": "text-shuffle",
309
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/shuffle.gif",
310
+ "prompt": "Apply Shuffle animation from @readdy/anim@0.0.21\n\nImport: import { AnimShuffle } from '@readdy/anim/header/shuffle/react';\nUsage: Replace the target text element with <AnimShuffle text=\"...\" tag=\"h1\" stagger={30} duration={800} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render the final text without shuffle motion.\n\nTarget element selector: {selectorContext}",
311
+ "enabled": true,
312
+ "sortOrder": 108
313
+ },
314
+ {
315
+ "id": "anim-readdy-header-anime-splittext",
316
+ "animationName": "Anime Splittext",
317
+ "description": "A Anime Splittext effect for header elements.",
318
+ "category": "header",
319
+ "applyTo": [
320
+ "header"
321
+ ],
322
+ "options": {
323
+ "stagger": {
324
+ "type": "number",
325
+ "default": 120,
326
+ "description": "Delay between animated units in milliseconds."
327
+ },
328
+ "duration": {
329
+ "type": "number",
330
+ "default": 700,
331
+ "description": "Animation duration in milliseconds."
332
+ }
333
+ },
334
+ "conflictsWith": [],
335
+ "previewVariant": "text-wave",
336
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/anime-splittext.gif",
337
+ "prompt": "Apply Anime Split Text animation from @readdy/anim@0.0.21\n\nImport: import { AnimAnimeSplitText } from '@readdy/anim/header/anime-splittext/react';\nUsage: Replace the target text element with <AnimAnimeSplitText text=\"...\" tag=\"h1\" stagger={55} duration={720} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render plain text without split text motion.\n\nTarget element selector: {selectorContext}",
338
+ "enabled": true,
339
+ "sortOrder": 110
340
+ },
341
+ {
342
+ "id": "anim-readdy-header-word-curtain-reveal",
343
+ "animationName": "Word curtain reveal",
344
+ "description": "WordByWordReveal: Each word in overflow-hidden inline-block span. Inner span y: 100% → 0%. Default stagger: 0.035s, duration: 0.55s.",
345
+ "category": "header",
346
+ "applyTo": [
347
+ "header"
348
+ ],
349
+ "options": {
350
+ "duration": {
351
+ "type": "number",
352
+ "default": 550,
353
+ "description": "Animation duration in milliseconds."
354
+ },
355
+ "stagger": {
356
+ "type": "number",
357
+ "default": 35,
358
+ "description": "Delay between animated units in milliseconds."
359
+ }
360
+ },
361
+ "conflictsWith": [],
362
+ "previewVariant": "text-word-curtain",
363
+ "previewImage": "https://static.readdy.ai/anim/previews/headers/word-curtain-reveal.gif",
364
+ "prompt": "Apply Word Curtain Reveal animation from @readdy/anim@0.0.21\n\nImport: import { AnimWordCurtainReveal } from '@readdy/anim/header/word-curtain-reveal/react';\nUsage: Replace the target text element with <AnimWordCurtainReveal text=\"...\" tag=\"h1\" stagger={90} duration={850} />. Use the original element tag for the tag prop.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render the text without masked reveal motion.\n\nTarget element selector: {selectorContext}",
365
+ "enabled": true,
366
+ "sortOrder": 111
367
+ },
368
+ {
369
+ "id": "anim-readdy-button-3d-flip",
370
+ "animationName": "3d Flip",
371
+ "description": "A 3d Flip effect for button elements.",
372
+ "category": "button",
373
+ "applyTo": [
374
+ "button"
375
+ ],
376
+ "options": {
377
+ "maxTilt": {
378
+ "type": "number",
379
+ "default": 12,
380
+ "description": "Maximum tilt angle in degrees."
381
+ },
382
+ "translate": {
383
+ "type": "number",
384
+ "default": 8,
385
+ "description": "Maximum translation distance in pixels."
386
+ }
387
+ },
388
+ "conflictsWith": [],
389
+ "previewVariant": "3d-flip",
390
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/3d-flip.gif",
391
+ "prompt": "Apply 3D Flip animation from @readdy/anim@0.0.21\n\nImport: import { AnimThreeDFlip } from '@readdy/anim/button/3d-flip/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimThreeDFlip maxTilt={15} duration={450}>...</AnimThreeDFlip>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, do not attach 3D transform behavior.\n\nTarget element selector: {selectorContext}",
392
+ "enabled": true,
393
+ "sortOrder": 201
394
+ },
395
+ {
396
+ "id": "anim-readdy-button-magnetic-hover",
397
+ "animationName": "Magnetic hover",
398
+ "description": "Magnet: padding 150, strength 3, translate3d on mousemove, transition 0.3s ease-out active / 0.6s ease-in-out inactive. Jack hero portrait.",
399
+ "category": "button",
400
+ "applyTo": [
401
+ "button",
402
+ "object"
403
+ ],
404
+ "options": {
405
+ "padding": {
406
+ "type": "number",
407
+ "default": 150,
408
+ "description": "Pointer interaction radius in pixels."
409
+ },
410
+ "strength": {
411
+ "type": "number",
412
+ "default": 3,
413
+ "description": "Pointer interaction strength."
414
+ }
415
+ },
416
+ "conflictsWith": [],
417
+ "previewVariant": "btn-scale",
418
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/magnetic-hover.gif",
419
+ "prompt": "Apply Magnetic Hover animation from @readdy/anim@0.0.21\n\nImport: import { AnimMagneticHover } from '@readdy/anim/button/magnetic-hover/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimMagneticHover strength={0.08} duration={300}>...</AnimMagneticHover>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, do not attach pointer-driven transform behavior.\n\nTarget element selector: {selectorContext}",
420
+ "enabled": true,
421
+ "sortOrder": 201
422
+ },
423
+ {
424
+ "id": "anim-readdy-button-border-beam",
425
+ "animationName": "Border Beam",
426
+ "description": "A Border Beam effect for button elements.",
427
+ "category": "button",
428
+ "applyTo": [
429
+ "button"
430
+ ],
431
+ "options": {
432
+ "duration": {
433
+ "type": "number",
434
+ "default": 3000,
435
+ "description": "Animation duration in milliseconds."
436
+ },
437
+ "borderWidth": {
438
+ "type": "number",
439
+ "default": 1.35,
440
+ "description": "Animated border width in pixels."
441
+ },
442
+ "glowOpacity": {
443
+ "type": "number",
444
+ "default": 0.28,
445
+ "description": "Glow opacity for the border beam effect."
446
+ },
447
+ "colorFrom": {
448
+ "type": "string",
449
+ "default": "#ff6b6b",
450
+ "description": "Color From option."
451
+ },
452
+ "colorTo": {
453
+ "type": "string",
454
+ "default": "#ffb86b",
455
+ "description": "Color To option."
456
+ },
457
+ "secondaryColorFrom": {
458
+ "type": "string",
459
+ "default": "#5ea0ff",
460
+ "description": "Secondary Color From option."
461
+ },
462
+ "secondaryColorTo": {
463
+ "type": "string",
464
+ "default": "#9ec5ff",
465
+ "description": "Secondary Color To option."
466
+ },
467
+ "initialOffset": {
468
+ "type": "number",
469
+ "default": 0,
470
+ "description": "Initial Offset option."
471
+ },
472
+ "delay": {
473
+ "type": "number",
474
+ "default": 0,
475
+ "description": "Animation delay in milliseconds."
476
+ },
477
+ "reverse": {
478
+ "type": "boolean",
479
+ "default": false,
480
+ "description": "Reverse option."
481
+ }
482
+ },
483
+ "conflictsWith": [],
484
+ "previewVariant": "border-beam",
485
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/border-beam.gif",
486
+ "prompt": "Apply Border Beam animation from @readdy/anim@0.0.21\n\nImport: import { AnimBorderBeam } from '@readdy/anim/button/border-beam/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimBorderBeam duration={1800}>...</AnimBorderBeam>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the border treatment static.\n\nTarget element selector: {selectorContext}",
487
+ "enabled": true,
488
+ "sortOrder": 203
489
+ },
490
+ {
491
+ "id": "anim-readdy-button-bounce-elastic",
492
+ "animationName": "Bounce Elastic",
493
+ "description": "A Bounce Elastic effect for button elements.",
494
+ "category": "button",
495
+ "applyTo": [
496
+ "button"
497
+ ],
498
+ "options": {},
499
+ "conflictsWith": [],
500
+ "previewVariant": "bounce-elastic",
501
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/bounce-elastic.gif",
502
+ "prompt": "Apply Bounce Elastic animation from @readdy/anim@0.0.21\n\nImport: import { AnimBounceElastic } from '@readdy/anim/button/bounce-elastic/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimBounceElastic duration={650}>...</AnimBounceElastic>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the button static.\n\nTarget element selector: {selectorContext}",
503
+ "enabled": true,
504
+ "sortOrder": 204
505
+ },
506
+ {
507
+ "id": "anim-readdy-button-rainbow-button",
508
+ "animationName": "Rainbow Button",
509
+ "description": "Magic UI Rainbow Button (outline): neutral top/left/right edges; animated rainbow gradient line and soft glow on the bottom edge only. Install @magicui/rainbow-button; add rainbow keyframes and --color-1…--color-5 CSS variables per Magic UI docs.",
510
+ "category": "button",
511
+ "applyTo": [
512
+ "button"
513
+ ],
514
+ "options": {},
515
+ "conflictsWith": [],
516
+ "previewVariant": "btn-rainbow",
517
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/rainbow-button.gif",
518
+ "prompt": "Apply Rainbow Button animation from @readdy/anim@0.0.21\n\nImport: import { AnimRainbowButton } from '@readdy/anim/button/rainbow-button/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimRainbowButton duration={2200}>...</AnimRainbowButton>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the gradient static.\n\nTarget element selector: {selectorContext}",
519
+ "enabled": true,
520
+ "sortOrder": 204
521
+ },
522
+ {
523
+ "id": "anim-readdy-button-sketch-button",
524
+ "animationName": "Sketch button",
525
+ "description": "Brutalist sketch button: white fill, black border and text; on hover a hard offset black shadow (4px 4px 0) with smooth transition.",
526
+ "category": "button",
527
+ "applyTo": [
528
+ "button"
529
+ ],
530
+ "options": {},
531
+ "conflictsWith": [],
532
+ "previewVariant": "btn-sketch",
533
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/sketch-button.gif",
534
+ "prompt": "Apply Sketch Button animation from @readdy/anim@0.0.21\n\nImport: import { AnimSketchButton } from '@readdy/anim/button/sketch-button/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimSketchButton jitter={2} duration={450}>...</AnimSketchButton>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the button static.\n\nTarget element selector: {selectorContext}",
535
+ "enabled": true,
536
+ "sortOrder": 205
537
+ },
538
+ {
539
+ "id": "anim-readdy-button-confetti-button",
540
+ "animationName": "Confetti button",
541
+ "description": "Your normal CTA button stays as-is; on click a canvas overlay bursts confetti and sequins from the button. See confetti-button-vanilla.js for physics.",
542
+ "category": "button",
543
+ "applyTo": [
544
+ "button"
545
+ ],
546
+ "options": {
547
+ "pieces": {
548
+ "type": "number",
549
+ "default": 18,
550
+ "description": "Number of generated confetti pieces."
551
+ }
552
+ },
553
+ "conflictsWith": [],
554
+ "previewVariant": "btn-confetti",
555
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/confetti-button.gif",
556
+ "prompt": "Apply Confetti Button animation from @readdy/anim@0.0.21\n\nImport: import { AnimConfettiButton } from '@readdy/anim/button/confetti-button/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimConfettiButton particleCount={18} spread={60}>...</AnimConfettiButton>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, do not emit confetti particles.\n\nTarget element selector: {selectorContext}",
557
+ "enabled": true,
558
+ "sortOrder": 206
559
+ },
560
+ {
561
+ "id": "anim-readdy-button-glow-cta",
562
+ "animationName": "Glow CTA",
563
+ "description": "hover: scale 1.05, glow opacity 20%→60%, Arrow slides in from left. ClearInvoice primary button.",
564
+ "category": "button",
565
+ "applyTo": [
566
+ "button"
567
+ ],
568
+ "options": {
569
+ "scale": {
570
+ "type": "number",
571
+ "default": 1.05,
572
+ "description": "Scale multiplier for the effect."
573
+ },
574
+ "idleOpacity": {
575
+ "type": "number",
576
+ "default": 0.2,
577
+ "description": "Opacity used in the idle state."
578
+ },
579
+ "activeOpacity": {
580
+ "type": "number",
581
+ "default": 0.6,
582
+ "description": "Opacity used in the active state."
583
+ },
584
+ "inset": {
585
+ "type": "number",
586
+ "default": -8,
587
+ "description": "Inset offset in pixels."
588
+ }
589
+ },
590
+ "conflictsWith": [],
591
+ "previewVariant": "btn-glow",
592
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/glow-cta.gif",
593
+ "prompt": "Apply Glow CTA animation from @readdy/anim@0.0.21\n\nImport: import { AnimGlowCta } from '@readdy/anim/button/glow-cta/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimGlowCta duration={1800}>...</AnimGlowCta>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the glow static or remove pulsing.\n\nTarget element selector: {selectorContext}",
594
+ "enabled": true,
595
+ "sortOrder": 207
596
+ },
597
+ {
598
+ "id": "anim-readdy-button-bubble-button",
599
+ "animationName": "Bubble button",
600
+ "description": "Goo-filter blob behind your normal CTA on hover only: wrap the button, hide the goo layer until mouseenter, then GSAP animates merged circles. SVG #goo filter required.",
601
+ "category": "button",
602
+ "applyTo": [
603
+ "button"
604
+ ],
605
+ "options": {},
606
+ "conflictsWith": [],
607
+ "previewVariant": "btn-bubble",
608
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/bubble-button.gif",
609
+ "prompt": "Apply Bubble Button animation from @readdy/anim@0.0.21\n\nImport: import { AnimBubbleButton } from '@readdy/anim/button/bubble-button/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimBubbleButton intensity={1} duration={500}>...</AnimBubbleButton>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, do not attach bubble motion.\n\nTarget element selector: {selectorContext}",
610
+ "enabled": true,
611
+ "sortOrder": 208
612
+ },
613
+ {
614
+ "id": "anim-readdy-button-pulse",
615
+ "animationName": "Pulse",
616
+ "description": "A Pulse effect for button elements.",
617
+ "category": "button",
618
+ "applyTo": [
619
+ "button"
620
+ ],
621
+ "options": {},
622
+ "conflictsWith": [],
623
+ "previewVariant": "pulse",
624
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/pulse.gif",
625
+ "prompt": "Apply Pulse animation from @readdy/anim@0.0.21\n\nImport: import { AnimPulse } from '@readdy/anim/button/pulse/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimPulse duration={1400}>...</AnimPulse>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, disable pulsing.\n\nTarget element selector: {selectorContext}",
626
+ "enabled": true,
627
+ "sortOrder": 209
628
+ },
629
+ {
630
+ "id": "anim-readdy-button-blur-fade-in",
631
+ "animationName": "Blur fade in",
632
+ "description": "Button entrance: fade in while blur clears and element rises slightly — opacity 0→1, filter blur(10px)→blur(0), translateY(8px)→0.",
633
+ "category": "button",
634
+ "applyTo": [
635
+ "button"
636
+ ],
637
+ "options": {},
638
+ "conflictsWith": [],
639
+ "previewVariant": "btn-blur-fade-in",
640
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/blur-fade-in.gif",
641
+ "prompt": "Apply Blur Fade In animation from @readdy/anim@0.0.21\n\nImport: import { AnimBlurFadeIn } from '@readdy/anim/button/blur-fade-in/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimBlurFadeIn duration={650}>...</AnimBlurFadeIn>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, show the element immediately.\n\nTarget element selector: {selectorContext}",
642
+ "enabled": true,
643
+ "sortOrder": 211
644
+ },
645
+ {
646
+ "id": "anim-readdy-button-shimmer-border",
647
+ "animationName": "Shimmer Border",
648
+ "description": "A Shimmer Border effect for button elements.",
649
+ "category": "button",
650
+ "applyTo": [
651
+ "button"
652
+ ],
653
+ "options": {
654
+ "duration": {
655
+ "type": "number",
656
+ "default": 800,
657
+ "description": "Animation duration in milliseconds."
658
+ },
659
+ "borderWidth": {
660
+ "type": "number",
661
+ "default": 1.5,
662
+ "description": "Animated border width in pixels."
663
+ },
664
+ "opacity": {
665
+ "type": "number",
666
+ "default": 0.88,
667
+ "description": "Opacity value for the visual effect."
668
+ }
669
+ },
670
+ "conflictsWith": [],
671
+ "previewVariant": "shimmer-border",
672
+ "previewImage": "https://static.readdy.ai/anim/previews/buttons/shimmer-border.gif",
673
+ "prompt": "Apply Shimmer Border animation from @readdy/anim@0.0.21\n\nImport: import { AnimShimmerBorder } from '@readdy/anim/button/shimmer-border/react';\nUsage: Wrap the target interactive element without adding an extra wrapper: <AnimShimmerBorder duration={1600}>...</AnimShimmerBorder>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the border treatment static.\n\nTarget element selector: {selectorContext}",
674
+ "enabled": true,
675
+ "sortOrder": 211
676
+ },
677
+ {
678
+ "id": "anim-readdy-card-blur-rise",
679
+ "animationName": "Blur Rise",
680
+ "description": "A Blur Rise effect for card elements.",
681
+ "category": "card",
682
+ "applyTo": [
683
+ "card"
684
+ ],
685
+ "options": {},
686
+ "conflictsWith": [],
687
+ "previewVariant": "blur-rise",
688
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/blur-rise.gif",
689
+ "prompt": "Apply Blur Rise animation from @readdy/anim@0.0.21\n\nImport: import { AnimBlurRise } from '@readdy/anim/card/blur-rise/react';\nUsage: Wrap the target container without adding an extra wrapper: <AnimBlurRise duration={700}>...</AnimBlurRise>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, show the element immediately.\n\nTarget element selector: {selectorContext}",
690
+ "enabled": true,
691
+ "sortOrder": 301
692
+ },
693
+ {
694
+ "id": "anim-readdy-card-bounce-in-bottom",
695
+ "animationName": "Bounce In Bottom",
696
+ "description": "A Bounce In Bottom effect for card elements.",
697
+ "category": "card",
698
+ "applyTo": [
699
+ "card"
700
+ ],
701
+ "options": {},
702
+ "conflictsWith": [],
703
+ "previewVariant": "bounce-in-bottom",
704
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/bounce-in-bottom.gif",
705
+ "prompt": "Apply Bounce In Bottom animation from @readdy/anim@0.0.21\n\nImport: import { AnimBounceInBottom } from '@readdy/anim/card/bounce-in-bottom/react';\nUsage: Wrap the target card without adding an extra wrapper: <AnimBounceInBottom duration={800}>...</AnimBounceInBottom>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, show the element immediately.\n\nTarget element selector: {selectorContext}",
706
+ "enabled": true,
707
+ "sortOrder": 302
708
+ },
709
+ {
710
+ "id": "anim-readdy-card-tilted-card",
711
+ "animationName": "Tilted Card",
712
+ "description": "## Integrate TiltedCard from React Bits.",
713
+ "category": "card",
714
+ "applyTo": [
715
+ "card",
716
+ "object"
717
+ ],
718
+ "options": {
719
+ "perspective": {
720
+ "type": "number",
721
+ "default": 900,
722
+ "description": "Perspective depth in pixels."
723
+ },
724
+ "duration": {
725
+ "type": "number",
726
+ "default": 550,
727
+ "description": "Animation duration in milliseconds."
728
+ },
729
+ "maxTilt": {
730
+ "type": "number",
731
+ "default": 10,
732
+ "description": "Maximum tilt angle in degrees."
733
+ },
734
+ "scale": {
735
+ "type": "number",
736
+ "default": 1.02,
737
+ "description": "Scale multiplier for the effect."
738
+ }
739
+ },
740
+ "conflictsWith": [],
741
+ "previewVariant": "card-tilt",
742
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/tilted-card.gif",
743
+ "prompt": "Apply Tilted Card animation from @readdy/anim@0.0.21\n\nImport: import { AnimTiltedCard } from '@readdy/anim/card/tilted-card/react';\nUsage: Wrap the target card without adding an extra wrapper: <AnimTiltedCard maxTilt={12} strength={0.08}>...</AnimTiltedCard>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, do not attach pointer-driven tilt behavior.\n\nTarget element selector: {selectorContext}",
744
+ "enabled": true,
745
+ "sortOrder": 303
746
+ },
747
+ {
748
+ "id": "anim-readdy-card-card-flip",
749
+ "animationName": "Card Flip",
750
+ "description": "Kokonut UI card flip with front/back faces, hover-driven rotateY(180deg), glow rings on the front, and staggered feature reveal on the back.",
751
+ "category": "card",
752
+ "applyTo": [
753
+ "card"
754
+ ],
755
+ "options": {
756
+ "duration": {
757
+ "type": "number",
758
+ "default": 500,
759
+ "description": "Animation duration in milliseconds."
760
+ },
761
+ "perspective": {
762
+ "type": "number",
763
+ "default": 2000,
764
+ "description": "Perspective depth in pixels."
765
+ }
766
+ },
767
+ "conflictsWith": [],
768
+ "previewVariant": "card-flip",
769
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/card-flip.gif",
770
+ "prompt": "Apply Card Flip animation from @readdy/anim@0.0.21\n\nImport: import { AnimCardFlip } from '@readdy/anim/card/card-flip/react';\nUsage: Wrap the target card element with <AnimCardFlip duration={500} perspective={2000}>...</AnimCardFlip>. Preserve the original content, attributes, event handlers, responsive classes, and layout semantics.\nProps: duration: number (default: 500), perspective: number (default: 2000)\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, render the original element without the animation behavior.\n\nTarget element selector: {selectorContext}",
771
+ "enabled": true,
772
+ "sortOrder": 304
773
+ },
774
+ {
775
+ "id": "anim-readdy-card-float-idle",
776
+ "animationName": "Float Idle",
777
+ "description": "A Float Idle effect for card elements.",
778
+ "category": "card",
779
+ "applyTo": [
780
+ "card"
781
+ ],
782
+ "options": {},
783
+ "conflictsWith": [],
784
+ "previewVariant": "float-idle",
785
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/float-idle.gif",
786
+ "prompt": "Apply Float Idle animation from @readdy/anim@0.0.21\n\nImport: import { AnimFloatIdle } from '@readdy/anim/card/float-idle/react';\nUsage: Wrap the target container without adding an extra wrapper: <AnimFloatIdle duration={3000}>...</AnimFloatIdle>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, disable continuous floating.\n\nTarget element selector: {selectorContext}",
787
+ "enabled": true,
788
+ "sortOrder": 305
789
+ },
790
+ {
791
+ "id": "anim-readdy-card-rgb-split-glitch",
792
+ "animationName": "RGB split glitch",
793
+ "description": "Digital glitch effect with RGB channel misalignment on the image.",
794
+ "category": "card",
795
+ "applyTo": [
796
+ "card"
797
+ ],
798
+ "options": {
799
+ "duration": {
800
+ "type": "number",
801
+ "default": 1100,
802
+ "description": "Animation duration in milliseconds."
803
+ },
804
+ "shift": {
805
+ "type": "number",
806
+ "default": 3,
807
+ "description": "Glitch offset in pixels."
808
+ },
809
+ "shadowOffset": {
810
+ "type": "number",
811
+ "default": 2,
812
+ "description": "Shadow offset in pixels."
813
+ }
814
+ },
815
+ "conflictsWith": [],
816
+ "previewVariant": "card-glitch",
817
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/rgb-split-glitch.gif",
818
+ "prompt": "Apply RGB Split Glitch animation from @readdy/anim@0.0.21\n\nImport: import { AnimRgbSplitGlitch } from '@readdy/anim/card/rgb-split-glitch/react';\nUsage: Wrap the target card or media element without adding an extra wrapper: <AnimRgbSplitGlitch duration={1200}>...</AnimRgbSplitGlitch>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, avoid glitch motion.\n\nTarget element selector: {selectorContext}",
819
+ "enabled": true,
820
+ "sortOrder": 306
821
+ },
822
+ {
823
+ "id": "anim-readdy-card-card-fan-spread",
824
+ "animationName": "Card fan spread",
825
+ "description": "Stack of image cards fans out in 3D on click.",
826
+ "category": "card",
827
+ "applyTo": [
828
+ "card"
829
+ ],
830
+ "options": {
831
+ "spreadDistance": {
832
+ "type": "number",
833
+ "default": 72,
834
+ "description": "Horizontal spread distance in pixels."
835
+ },
836
+ "spreadRotate": {
837
+ "type": "number",
838
+ "default": 24,
839
+ "description": "Spread rotation in degrees."
840
+ },
841
+ "depthRotate": {
842
+ "type": "number",
843
+ "default": 18,
844
+ "description": "Depth rotation in degrees."
845
+ },
846
+ "lift": {
847
+ "type": "number",
848
+ "default": 14,
849
+ "description": "Vertical lift distance in pixels."
850
+ },
851
+ "duration": {
852
+ "type": "number",
853
+ "default": 550,
854
+ "description": "Animation duration in milliseconds."
855
+ }
856
+ },
857
+ "conflictsWith": [],
858
+ "previewVariant": "card-fan",
859
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/card-fan-spread.gif",
860
+ "prompt": "Apply Card Fan Spread animation from @readdy/anim@0.0.21\n\nImport: import { AnimCardFanSpread } from '@readdy/anim/card/card-fan-spread/react';\nUsage: Wrap the target card stack or container without adding an extra wrapper: <AnimCardFanSpread spread={16} rotation={6}>...</AnimCardFanSpread>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep cards in their resting layout.\n\nTarget element selector: {selectorContext}",
861
+ "enabled": true,
862
+ "sortOrder": 307
863
+ },
864
+ {
865
+ "id": "anim-readdy-card-image-zoom-rotate",
866
+ "animationName": "Image Zoom Rotate",
867
+ "description": "A Image Zoom Rotate effect for card elements.",
868
+ "category": "card",
869
+ "applyTo": [
870
+ "card"
871
+ ],
872
+ "options": {
873
+ "scale": {
874
+ "type": "number",
875
+ "default": 1.08,
876
+ "description": "Scale multiplier for the effect."
877
+ },
878
+ "rotate": {
879
+ "type": "number",
880
+ "default": 2,
881
+ "description": "Rotation amount in degrees."
882
+ },
883
+ "duration": {
884
+ "type": "number",
885
+ "default": 500,
886
+ "description": "Animation duration in milliseconds."
887
+ }
888
+ },
889
+ "conflictsWith": [],
890
+ "previewVariant": "image-zoom-rotate",
891
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/image-zoom-rotate.gif",
892
+ "prompt": "Apply Image Zoom Rotate animation from @readdy/anim@0.0.21\n\nImport: import { AnimImageZoomRotate } from '@readdy/anim/card/image-zoom-rotate/react';\nUsage: Wrap the target image or media card without adding an extra wrapper: <AnimImageZoomRotate zoom={1.08} rotate={2}>...</AnimImageZoomRotate>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, avoid transform-driven zoom and rotation.\n\nTarget element selector: {selectorContext}",
893
+ "enabled": true,
894
+ "sortOrder": 307
895
+ },
896
+ {
897
+ "id": "anim-readdy-card-image-magnifier",
898
+ "animationName": "Image magnifier",
899
+ "description": "Circular magnifier effect follows the cursor for local zoom on the image.",
900
+ "category": "card",
901
+ "applyTo": [
902
+ "card"
903
+ ],
904
+ "options": {
905
+ "lensSize": {
906
+ "type": "number",
907
+ "default": 104,
908
+ "description": "Magnifier lens size in pixels."
909
+ },
910
+ "zoom": {
911
+ "type": "number",
912
+ "default": 320,
913
+ "description": "Zoom percentage for the magnifier effect."
914
+ },
915
+ "fadeDuration": {
916
+ "type": "number",
917
+ "default": 160,
918
+ "description": "Fade duration in milliseconds."
919
+ }
920
+ },
921
+ "conflictsWith": [],
922
+ "previewVariant": "card-magnifier",
923
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/image-magnifier.gif",
924
+ "prompt": "Apply Image Magnifier animation from @readdy/anim@0.0.21\n\nImport: import { AnimImageMagnifier } from '@readdy/anim/card/image-magnifier/react';\nUsage: Wrap the target image or media element without adding an extra wrapper: <AnimImageMagnifier zoom={2} size={120}>...</AnimImageMagnifier>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, do not attach pointer-following magnifier behavior.\n\nTarget element selector: {selectorContext}",
925
+ "enabled": true,
926
+ "sortOrder": 308
927
+ },
928
+ {
929
+ "id": "anim-readdy-card-pop-in-stack",
930
+ "animationName": "Pop In Stack",
931
+ "description": "A Pop In Stack effect for card elements.",
932
+ "category": "card",
933
+ "applyTo": [
934
+ "card"
935
+ ],
936
+ "options": {
937
+ "delay": {
938
+ "type": "number",
939
+ "default": 0,
940
+ "description": "Animation delay in milliseconds."
941
+ },
942
+ "duration": {
943
+ "type": "number",
944
+ "default": 600,
945
+ "description": "Animation duration in milliseconds."
946
+ },
947
+ "offset": {
948
+ "type": "number",
949
+ "default": 18,
950
+ "description": "Entrance offset in pixels."
951
+ },
952
+ "scaleStart": {
953
+ "type": "number",
954
+ "default": 0.88,
955
+ "description": "Initial scale value before the animation starts."
956
+ }
957
+ },
958
+ "conflictsWith": [],
959
+ "previewVariant": "pop-in-stack",
960
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/pop-in-stack.gif",
961
+ "prompt": "Apply Pop In Stack animation from @readdy/anim@0.0.21\n\nImport: import { AnimPopInStack } from '@readdy/anim/card/pop-in-stack/react';\nUsage: Wrap the target card or card stack without adding an extra wrapper: <AnimPopInStack distance={12} duration={600}>...</AnimPopInStack>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, show the stack immediately.\n\nTarget element selector: {selectorContext}",
962
+ "enabled": true,
963
+ "sortOrder": 308
964
+ },
965
+ {
966
+ "id": "anim-readdy-card-reveal-from-top",
967
+ "animationName": "Reveal From Top",
968
+ "description": "A Reveal From Top effect for card elements.",
969
+ "category": "card",
970
+ "applyTo": [
971
+ "card"
972
+ ],
973
+ "options": {},
974
+ "conflictsWith": [],
975
+ "previewVariant": "reveal-from-top",
976
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/reveal-from-top.gif",
977
+ "prompt": "Apply Reveal From Top animation from @readdy/anim@0.0.21\n\nImport: import { AnimRevealFromTop } from '@readdy/anim/card/reveal-from-top/react';\nUsage: Wrap the target card or section without adding an extra wrapper: <AnimRevealFromTop duration={700}>...</AnimRevealFromTop>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, show the element immediately.\n\nTarget element selector: {selectorContext}",
978
+ "enabled": true,
979
+ "sortOrder": 309
980
+ },
981
+ {
982
+ "id": "anim-readdy-card-magic-ui-border-beam",
983
+ "animationName": "Magic UI Border Beam",
984
+ "description": "Animated gradient border trace around a card for highlight and focus.",
985
+ "category": "card",
986
+ "applyTo": [
987
+ "card",
988
+ "section",
989
+ "container"
990
+ ],
991
+ "options": {
992
+ "duration": {
993
+ "type": "number",
994
+ "default": 3000,
995
+ "description": "Animation duration in milliseconds."
996
+ },
997
+ "borderWidth": {
998
+ "type": "number",
999
+ "default": 1.35,
1000
+ "description": "Animated border width in pixels."
1001
+ },
1002
+ "glowOpacity": {
1003
+ "type": "number",
1004
+ "default": 0.28,
1005
+ "description": "Glow opacity for the border beam effect."
1006
+ },
1007
+ "colorFrom": {
1008
+ "type": "string",
1009
+ "default": "#ff6b6b",
1010
+ "description": "Color From option."
1011
+ },
1012
+ "colorTo": {
1013
+ "type": "string",
1014
+ "default": "#ffb86b",
1015
+ "description": "Color To option."
1016
+ },
1017
+ "secondaryColorFrom": {
1018
+ "type": "string",
1019
+ "default": "#5ea0ff",
1020
+ "description": "Secondary Color From option."
1021
+ },
1022
+ "secondaryColorTo": {
1023
+ "type": "string",
1024
+ "default": "#9ec5ff",
1025
+ "description": "Secondary Color To option."
1026
+ },
1027
+ "initialOffset": {
1028
+ "type": "number",
1029
+ "default": 0,
1030
+ "description": "Initial Offset option."
1031
+ },
1032
+ "delay": {
1033
+ "type": "number",
1034
+ "default": 0,
1035
+ "description": "Animation delay in milliseconds."
1036
+ },
1037
+ "reverse": {
1038
+ "type": "boolean",
1039
+ "default": false,
1040
+ "description": "Reverse option."
1041
+ }
1042
+ },
1043
+ "conflictsWith": [],
1044
+ "previewVariant": "card-border-beam",
1045
+ "previewImage": "https://static.readdy.ai/anim/previews/cards/magic-ui-border-beam.gif",
1046
+ "prompt": "Apply Magic UI Border Beam animation from @readdy/anim@0.0.21\n\nImport: import { AnimBorderBeam } from '@readdy/anim/button/border-beam/react';\nUsage: Wrap the target card or section without adding an extra wrapper: <AnimBorderBeam duration={3000} borderWidth={1.35} glowOpacity={0.28}>...</AnimBorderBeam>.\n\nAccessibility: Check prefers-reduced-motion. If reduced motion is enabled, keep the card border static without the moving beam.\n\nTarget element selector: {selectorContext}",
1047
+ "enabled": true,
1048
+ "sortOrder": 312
1049
+ }
1050
+ ]
1051
+ }