@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
package/dist/react.css ADDED
@@ -0,0 +1 @@
1
+ @keyframes readdy-anim-split-text-char{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.readdy-anim-split-text{white-space:normal}.readdy-anim-split-text .readdy-anim-split-text-char{display:inline-block;opacity:0}.readdy-anim-split-text.is-visible .readdy-anim-split-text-char{animation:readdy-anim-split-text-char .7s cubic-bezier(.16,1,.3,1) forwards}@media (prefers-reduced-motion:reduce){.readdy-anim-split-text .readdy-anim-split-text-char{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-roll-in-char{0%{opacity:0;transform:translateX(-1.1em) rotate(-110deg)}to{opacity:1;transform:translateX(0) rotate(0deg)}}.readdy-anim-roll-in{white-space:normal}.readdy-anim-roll-in .readdy-anim-roll-in-char{animation:readdy-anim-roll-in-char .72s cubic-bezier(.22,1,.36,1) forwards;display:inline-block;opacity:0;transform-origin:50% 60%}@media (prefers-reduced-motion:reduce){.readdy-anim-roll-in .readdy-anim-roll-in-char{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-letter-wave{0%,to{transform:translateY(0)}50%{transform:translateY(calc(var(--readdy-anim-letter-bounce-amplitude, 6px)*-1))}}.readdy-anim-letter-bounce{white-space:normal}.readdy-anim-letter-bounce .readdy-anim-letter-bounce-char{animation:readdy-anim-letter-wave var(--readdy-anim-letter-bounce-duration,.85s) ease-in-out infinite;display:inline-block;will-change:transform}@media (prefers-reduced-motion:reduce){.readdy-anim-letter-bounce .readdy-anim-letter-bounce-char{animation:none}}@keyframes readdy-anim-shimmer-text{to{background-position:200%}}.readdy-anim-shimmer-text{-webkit-text-fill-color:transparent;animation:readdy-anim-shimmer-text 2.2s linear infinite;background:linear-gradient(90deg,#334155,#64748b 34%,#fff 50%,#64748b 66%,#334155);-webkit-background-clip:text;background-clip:text;background-position:0;background-size:200% 100%;color:transparent}@media (prefers-reduced-motion:reduce){.readdy-anim-shimmer-text{animation:none}}@keyframes readdy-anim-gradient-flow{0%{background-position:0}to{background-position:100%}}.readdy-anim-gradient-text{-webkit-text-fill-color:transparent;animation:readdy-anim-gradient-flow 3s ease-in-out infinite alternate;background:linear-gradient(90deg,#22d3ee,#a78bfa 35%,#f472b6 50%,#a78bfa 65%,#22d3ee);-webkit-background-clip:text;background-clip:text;background-size:200% 100%;color:transparent}@media (prefers-reduced-motion:reduce){.readdy-anim-gradient-text{animation:none;background-position:0 0}}@keyframes readdy-anim-fly-in-char{0%{opacity:0;transform:translate(var(--readdy-anim-fly-in-x,0),var(--readdy-anim-fly-in-y,8px)) rotate(var(--readdy-anim-fly-in-rotate,0deg))}to{opacity:1;transform:translate(0) rotate(0deg)}}.readdy-anim-fly-in-chars{white-space:normal}.readdy-anim-fly-in-chars .readdy-anim-fly-in-char{animation:readdy-anim-fly-in-char .85s cubic-bezier(.22,1,.36,1) forwards;display:inline-block;opacity:0}@media (prefers-reduced-motion:reduce){.readdy-anim-fly-in-chars .readdy-anim-fly-in-char{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-word-curtain-rise{0%{opacity:0;transform:translateY(110%)}to{opacity:1;transform:translateY(0)}}.readdy-anim-word-curtain-reveal{white-space:normal}.readdy-anim-word-curtain-reveal .readdy-anim-word-curtain-word{display:inline-block;overflow:hidden;vertical-align:bottom}.readdy-anim-word-curtain-reveal .readdy-anim-word-curtain-inner{animation:readdy-anim-word-curtain-rise var(--readdy-anim-word-curtain-duration,.55s) cubic-bezier(.16,1,.3,1) forwards;display:inline-block;opacity:0;transform:translateY(110%)}@media (prefers-reduced-motion:reduce){.readdy-anim-word-curtain-reveal .readdy-anim-word-curtain-inner{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-bounce-in-down-char{0%{opacity:0;transform:translateY(-1.4em)}60%{opacity:1;transform:translateY(.16em)}75%{transform:translateY(-.08em)}90%{transform:translateY(.04em)}to{opacity:1;transform:translateY(0)}}.readdy-anim-bounce-in-down{white-space:normal}.readdy-anim-bounce-in-down .readdy-anim-bounce-in-down-char{animation:readdy-anim-bounce-in-down-char .9s cubic-bezier(.215,.61,.355,1) forwards;display:inline-block;opacity:0}@media (prefers-reduced-motion:reduce){.readdy-anim-bounce-in-down .readdy-anim-bounce-in-down-char{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-anime-word-in{0%{opacity:0;transform:translateY(var(--readdy-anim-word-offset,110%))}to{opacity:1;transform:translateY(0)}}@keyframes readdy-anim-anime-word-loop{0%,to{transform:translateY(0)}25%{transform:translateY(calc(var(--readdy-anim-word-offset, 110%)*.12))}50%{transform:translateY(calc(var(--readdy-anim-word-offset, 110%)*-.08))}75%{transform:translateY(calc(var(--readdy-anim-word-offset, 110%)*.06))}}@keyframes readdy-anim-anime-char-wiggle{0%,to{transform:translateY(0)}35%{transform:translateY(-.12em)}65%{transform:translateY(.05em)}}.readdy-anim-anime-splittext{white-space:normal}.readdy-anim-anime-splittext .readdy-anim-anime-word{display:inline-block;overflow:hidden}.readdy-anim-anime-splittext .readdy-anim-anime-word-inner{animation:readdy-anim-anime-word-in var(--readdy-anim-anime-word-duration,.7s) cubic-bezier(.16,1,.3,1) forwards,readdy-anim-anime-word-loop 3.6s ease-in-out infinite;animation-delay:var(--readdy-anim-word-delay,0ms),var(--readdy-anim-word-loop-delay,.72s);display:inline-block;opacity:0}.readdy-anim-anime-splittext .readdy-anim-anime-char{animation:readdy-anim-anime-char-wiggle 1.25s ease-in-out infinite;animation-delay:var(--readdy-anim-char-delay,.42s);display:inline-block}@media (prefers-reduced-motion:reduce){.readdy-anim-anime-splittext .readdy-anim-anime-char,.readdy-anim-anime-splittext .readdy-anim-anime-word-inner{animation:none;opacity:1}}.readdy-anim-shuffle{white-space:normal}.readdy-anim-shuffle .readdy-anim-shuffle-char{display:inline-block;min-width:.7ch;opacity:var(--readdy-anim-shuffle-opacity,.45);transform:translateY(var(--readdy-anim-shuffle-translate-y,.08em)) scale(var(--readdy-anim-shuffle-scale,.98));transition:opacity var(--readdy-anim-shuffle-settle-duration,.18s) ease,transform var(--readdy-anim-shuffle-settle-duration,.18s) ease}.readdy-anim-shuffle .readdy-anim-shuffle-char.is-settled{opacity:1;transform:translateY(0) scale(1)}@media (prefers-reduced-motion:reduce){.readdy-anim-shuffle .readdy-anim-shuffle-char{opacity:1;transform:none}}.readdy-anim-magnetic-hover{transform:translate3d(var(--readdy-anim-magnetic-x,0),var(--readdy-anim-magnetic-y,0),0) scale(var(--readdy-anim-magnetic-scale,1));transition:transform .3s ease-out;will-change:transform}.readdy-anim-magnetic-hover:not(:hover){transition-duration:.6s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion:reduce){.readdy-anim-magnetic-hover{transform:none;transition:none}}@keyframes readdy-anim-caret-blink{50%{opacity:0}}.readdy-anim-text-type:not(.readdy-anim-text-type-rich){align-items:baseline;display:inline-flex;gap:var(--readdy-anim-text-type-gap,.08em);white-space:normal}.readdy-anim-text-type{position:relative}.readdy-anim-text-type.readdy-anim-text-type-rich{white-space:normal}.readdy-anim-text-type .readdy-anim-text-type-content{min-width:1ch}.readdy-anim-text-type .readdy-anim-text-type-cursor{animation:readdy-anim-caret-blink var(--readdy-anim-text-type-caret-blink-duration,.9s) step-end infinite;background:currentColor;min-height:1em;width:var(--readdy-anim-text-type-caret-width,.08em)}@media (prefers-reduced-motion:reduce){.readdy-anim-text-type .readdy-anim-text-type-cursor{animation:none}}.readdy-anim-shimmer-border{border:1px solid rgba(148,163,184,.28);box-shadow:0 4px 12px rgba(15,23,42,.08);isolation:isolate;overflow:hidden;position:relative}.readdy-anim-shimmer-border:before{background:linear-gradient(90deg,rgba(34,211,238,.12),rgba(34,211,238,.24) 18%,#22d3ee 36%,#a78bfa 50%,#22d3ee 64%,rgba(34,211,238,.24) 82%,rgba(34,211,238,.12));background-position:0 0;background-size:200% 100%;border-radius:inherit;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;opacity:var(--readdy-anim-shimmer-border-opacity,.88);padding:var(--readdy-anim-shimmer-border-width,1.5px);pointer-events:none;position:absolute;transition:background-position var(--readdy-anim-shimmer-border-duration,.8s) ease,opacity .25s ease}.readdy-anim-shimmer-border:hover:before{background-position:100% 0;opacity:1}@media (prefers-reduced-motion:reduce){.readdy-anim-shimmer-border:before{transition:none}.readdy-anim-shimmer-border:hover:before{background-position:0 0}}@keyframes readdy-anim-rainbow{0%{background-position:0}to{background-position:200%}}.readdy-anim-rainbow-button{--readdy-anim-rainbow-line:linear-gradient(90deg,#fb7185,#f59e0b,#22c55e,#38bdf8,#a78bfa,#fb7185);border:1px solid rgba(148,163,184,.28);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.08),0 16px 30px rgba(30,41,59,.14);isolation:isolate;overflow:hidden;position:relative}.readdy-anim-rainbow-button:before{filter:drop-shadow(0 0 12px rgba(96,165,250,.45));height:3px;inset:auto 6% -1px}.readdy-anim-rainbow-button:after,.readdy-anim-rainbow-button:before{animation:readdy-anim-rainbow 2.4s linear infinite;background:var(--readdy-anim-rainbow-line);background-size:200% 100%;border-radius:999px;content:"";position:absolute}.readdy-anim-rainbow-button:after{filter:blur(12px);height:22px;inset:auto 10% -14px;opacity:.38;z-index:-1}@media (prefers-reduced-motion:reduce){.readdy-anim-rainbow-button:after,.readdy-anim-rainbow-button:before{animation:none}}.readdy-anim-border-beam{isolation:isolate;position:relative}.readdy-anim-border-beam__layer{border-radius:var(--readdy-anim-border-beam-radius,inherit);box-sizing:border-box;display:block;inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;overflow:clip;padding:var(--readdy-anim-border-beam-width,1.35px);pointer-events:none;position:absolute;z-index:2}.readdy-anim-border-beam__beam{aspect-ratio:1;background:linear-gradient(to left,var(--readdy-anim-border-beam-color-from,#ffaa40),var(--readdy-anim-border-beam-color-to,#9c40ff) 55%,transparent);border-radius:0;display:block;filter:drop-shadow(0 0 4px rgba(255,170,64,calc(var(--readdy-anim-border-beam-glow-opacity, .28)*1.3))) drop-shadow(0 0 12px rgba(156,64,255,calc(var(--readdy-anim-border-beam-glow-opacity, .28)*.65)));left:0;offset-rotate:0deg;pointer-events:none;position:absolute;top:0;width:var(--readdy-anim-border-beam-size,72px);will-change:offset-distance}.readdy-anim-border-beam__beam--warm{opacity:.95}.readdy-anim-border-beam__beam--cool{filter:drop-shadow(0 0 4px rgba(94,160,255,calc(var(--readdy-anim-border-beam-glow-opacity, .28)*1.2))) drop-shadow(0 0 12px rgba(96,165,250,calc(var(--readdy-anim-border-beam-glow-opacity, .28)*.6)));opacity:.88}@media (prefers-reduced-motion:reduce){.readdy-anim-border-beam__beam{display:none}}.readdy-anim-sketch-button{background:#fff;border:2px solid #0f172a;box-shadow:0 0 0 #0f172a;color:#0f172a;transition:transform .24s ease,box-shadow .24s ease}.readdy-anim-sketch-button:hover{box-shadow:4px 4px 0 #0f172a;transform:translate(-4px,-4px)}@media (prefers-reduced-motion:reduce){.readdy-anim-sketch-button{transition:none}.readdy-anim-sketch-button:hover{box-shadow:0 0 0 #0f172a;transform:none}}@keyframes readdy-anim-pulse{0%,to{box-shadow:0 0 0 0 rgba(79,107,255,.45);transform:scale(1)}50%{box-shadow:0 0 0 10px rgba(79,107,255,0);transform:scale(1.06)}}.readdy-anim-pulse{animation:readdy-anim-pulse 1.8s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.readdy-anim-pulse{animation:none;box-shadow:none;transform:none}}.readdy-anim-glow-cta{isolation:isolate;overflow:hidden;position:relative;transition:transform .35s ease,padding-right .35s ease}.readdy-anim-glow-cta:before{background:radial-gradient(circle at var(--readdy-anim-glow-cta-x,50%) var(--readdy-anim-glow-cta-y,50%),rgba(251,146,60,.48) 0,rgba(251,146,60,.24) 24%,rgba(59,130,246,.16) 42%,transparent 72%);border-radius:inherit;content:"";inset:var(--readdy-anim-glow-cta-inset,-8px);opacity:var(--readdy-anim-glow-cta-idle-opacity,.2);position:absolute;transition:opacity .35s ease;z-index:-1}.readdy-anim-glow-cta:after{content:"→";font-size:.95em;line-height:1;opacity:0;position:absolute;right:1rem;top:50%;transform:translate(-10px,-50%);transition:transform .35s ease,opacity .35s ease}.readdy-anim-glow-cta:hover{padding-right:var(--readdy-anim-glow-cta-padding,calc(2rem + 1.2em));transform:scale(var(--readdy-anim-glow-cta-scale,1.05))}.readdy-anim-glow-cta.readdy-anim-glow-cta-active:before,.readdy-anim-glow-cta:hover:before{opacity:var(--readdy-anim-glow-cta-active-opacity,.6)}.readdy-anim-glow-cta:hover:after{opacity:1;transform:translateY(-50%)}@media (prefers-reduced-motion:reduce){.readdy-anim-glow-cta,.readdy-anim-glow-cta:after,.readdy-anim-glow-cta:before{transition:none}.readdy-anim-glow-cta:hover{padding-right:inherit;transform:none}.readdy-anim-glow-cta:hover:before{opacity:.2}.readdy-anim-glow-cta:hover:after{opacity:0;transform:translate(-10px,-50%)}}@keyframes readdy-anim-confetti-burst{0%{opacity:0;transform:translate(0) rotate(0deg) scale(.4)}12%{opacity:1}to{opacity:0;transform:translate(var(--readdy-anim-confetti-x),var(--readdy-anim-confetti-y)) rotate(var(--readdy-anim-confetti-rotate)) scale(1)}}.readdy-anim-confetti-button{isolation:isolate;overflow:visible;position:relative}.readdy-anim-confetti-button .readdy-anim-confetti-layer{inset:0;pointer-events:none;position:absolute;z-index:2}.readdy-anim-confetti-button .readdy-anim-confetti-piece{animation:readdy-anim-confetti-burst .95s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--readdy-anim-confetti-delay,0ms);border-radius:999px;height:.8rem;left:50%;opacity:0;position:absolute;top:50%;transform-origin:center;width:.42rem}@media (prefers-reduced-motion:reduce){.readdy-anim-confetti-button .readdy-anim-confetti-piece{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-bounce-elastic{0%{opacity:0;transform:scale(.6) translateY(12px)}60%{opacity:1;transform:scale(1.08) translateY(-4px)}80%{transform:scale(.96) translateY(2px)}to{opacity:1;transform:scale(1) translateY(0)}}.readdy-anim-bounce-elastic{animation:readdy-anim-bounce-elastic 1s cubic-bezier(.34,1.56,.64,1) forwards}@media (prefers-reduced-motion:reduce){.readdy-anim-bounce-elastic{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-blur-rise{0%{filter:blur(8px);opacity:0;transform:translateY(20px)}to{filter:blur(0);opacity:1;transform:translateY(0)}}.readdy-anim-blur-rise{animation:readdy-anim-blur-rise .7s cubic-bezier(.16,1,.3,1) forwards}@media (prefers-reduced-motion:reduce){.readdy-anim-blur-rise{animation:none;filter:none;opacity:1;transform:none}}@keyframes readdy-anim-blur-fade-in{0%{filter:blur(10px);opacity:0;transform:translateY(8px)}to{filter:blur(0);opacity:1;transform:translateY(0)}}.readdy-anim-blur-fade-in{animation:readdy-anim-blur-fade-in .7s cubic-bezier(.16,1,.3,1) forwards}@media (prefers-reduced-motion:reduce){.readdy-anim-blur-fade-in{animation:none;filter:none;opacity:1;transform:none}}@keyframes readdy-anim-bubble-top-left-1{0%{opacity:1;transform:translate(0) rotate(-45deg) scale(1)}50%{opacity:1;transform:translate(-25px,-25px) rotate(-45deg) scaleY(2)}58%{opacity:.95;transform:translate(-19px,-27px) rotate(-45deg) scale(.2)}to{opacity:0;transform:translate(-24px,-42px) rotate(-45deg) scale(0)}}@keyframes readdy-anim-bubble-top-left-2{0%{opacity:1;transform:translate(0) rotate(-45deg) scale(1)}50%{opacity:1;transform:translate(-25px,-25px) rotate(-45deg) scaleY(2)}58%{opacity:.95;transform:translate(-35px,-32px) rotate(-45deg) scaleY(.8)}to{opacity:0;transform:translate(-45px,-42px) rotate(-45deg) scale(.4)}}@keyframes readdy-anim-bubble-top-left-3{0%{opacity:1;transform:translate(0) rotate(-45deg) scale(1)}50%{opacity:1;transform:translate(-25px,-25px) rotate(-45deg) scaleY(2)}58%{opacity:.95;transform:translate(-40px,-19px) rotate(-45deg) scale(.2)}to{opacity:0;transform:translate(-55px,-14px) rotate(-45deg) scale(0)}}@keyframes readdy-anim-bubble-bottom-right-1{0%{opacity:1;transform:translate(0) rotate(45deg) scale(1)}48%{opacity:1;transform:translate(30px,30px) rotate(45deg) scale(1)}56%{opacity:.95;transform:translate(24px,33px) rotate(45deg) scale(.2)}to{opacity:0;transform:translate(29px,48px) rotate(45deg) scale(0)}}@keyframes readdy-anim-bubble-bottom-right-2{0%{opacity:1;transform:translate(0) rotate(45deg) scale(1)}48%{opacity:1;transform:translate(30px,30px) rotate(45deg) scale(1)}56%{opacity:.95;transform:translate(37px,33px) rotate(45deg) scale(.8)}to{opacity:0;transform:translate(44px,40px) rotate(45deg) scale(.4)}}@keyframes readdy-anim-bubble-bottom-right-3{0%{opacity:1;transform:translate(0) rotate(45deg) scale(1)}48%{opacity:1;transform:translate(30px,30px) rotate(45deg) scale(1)}56%{opacity:.95;transform:translate(45px,24px) rotate(45deg) scale(.2)}to{opacity:0;transform:translate(60px,19px) rotate(45deg) scale(0)}}@keyframes readdy-anim-bubble-core{0%{opacity:1;transform:translateY(-50%) scaleY(1)}34%{opacity:1;transform:translateY(-50%) scaleY(1.1)}to{opacity:1;transform:translateY(-50%) scale(1)}}.readdy-anim-bubble-button-container{--readdy-anim-bubble-accent:#4f6bff;display:inline-block;isolation:isolate;position:relative;vertical-align:middle}.readdy-anim-bubble-button-container>.readdy-anim-bubble-button{position:relative;z-index:2}.readdy-anim-bubble-button-container>.readdy-anim-bubble-button-effect-container{display:block;height:400%;left:-50%;opacity:0;pointer-events:none;position:absolute;top:-150%;transition:opacity .12s ease,visibility .12s ease,transform .1s ease-out;visibility:hidden;width:200%;z-index:1}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-hover>.readdy-anim-bubble-button-effect-container{opacity:1;visibility:visible}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-hover:active>.readdy-anim-bubble-button-effect-container{transform:scale(.95)}.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle,.readdy-anim-bubble-button-container .readdy-anim-bubble-button-effect-button{background:var(--readdy-anim-bubble-accent);position:absolute}.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle{border-radius:15px;height:14px;opacity:0;width:14px}.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle-top-left-1,.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle-top-left-2,.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle-top-left-3{left:27%;top:40%}.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle-bottom-right-1,.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle-bottom-right-2,.readdy-anim-bubble-button-container .readdy-anim-bubble-button-circle-bottom-right-3{bottom:40%;right:27%}.readdy-anim-bubble-button-container .readdy-anim-bubble-button-effect-button{border-radius:999px;height:25%;left:25%;opacity:1;top:50%;transform:translateY(-50%);width:50%;z-index:1}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-effect-button{animation:readdy-anim-bubble-core 1s cubic-bezier(.22,1,.36,1) both}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-circle-top-left-1{animation:readdy-anim-bubble-top-left-1 1.2s cubic-bezier(.22,1,.36,1) both}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-circle-top-left-2{animation:readdy-anim-bubble-top-left-2 1.2s cubic-bezier(.22,1,.36,1) both}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-circle-top-left-3{animation:readdy-anim-bubble-top-left-3 1.2s cubic-bezier(.22,1,.36,1) both}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-circle-bottom-right-1{animation:readdy-anim-bubble-bottom-right-1 1.1s cubic-bezier(.22,1,.36,1) both}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-circle-bottom-right-2{animation:readdy-anim-bubble-bottom-right-2 1.1s cubic-bezier(.22,1,.36,1) both}.readdy-anim-bubble-button-container.readdy-anim-bubble-button-fallback.readdy-anim-bubble-button-active .readdy-anim-bubble-button-circle-bottom-right-3{animation:readdy-anim-bubble-bottom-right-3 1.1s cubic-bezier(.22,1,.36,1) both}@media (prefers-reduced-motion:reduce){.readdy-anim-bubble-button-container>.readdy-anim-bubble-button-effect-container{display:none}}@keyframes readdy-anim-float-idle{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.readdy-anim-float-idle{animation:readdy-anim-float-idle 3s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.readdy-anim-float-idle{animation:none;transform:none}}.readdy-anim-tilted-card{transform:perspective(var(--readdy-anim-card-tilt-perspective,900px)) rotateX(var(--readdy-anim-card-tilt-x,0deg)) rotateY(var(--readdy-anim-card-tilt-y,0deg)) scale(var(--readdy-anim-card-scale,1));transform-style:preserve-3d;transition:transform var(--readdy-anim-card-tilt-duration,.55s) cubic-bezier(.22,1,.36,1),box-shadow var(--readdy-anim-card-tilt-duration,.55s) ease;will-change:transform}.readdy-anim-tilted-card:hover{box-shadow:0 20px 40px rgba(15,23,42,.18)}@media (prefers-reduced-motion:reduce){.readdy-anim-tilted-card{transform:none;transition:none}.readdy-anim-tilted-card:hover{box-shadow:none}}.readdy-anim-image-zoom-rotate{overflow:hidden}.readdy-anim-image-zoom-rotate .readdy-anim-card-media{transform-origin:center;transition:transform var(--readdy-anim-image-zoom-duration,.5s) ease}.readdy-anim-image-zoom-rotate:hover .readdy-anim-card-media{transform:scale(var(--readdy-anim-image-zoom-scale,1.08)) rotate(var(--readdy-anim-image-zoom-rotate,2deg))}@media (prefers-reduced-motion:reduce){.readdy-anim-image-zoom-rotate:hover .readdy-anim-card-media{transform:none}}@keyframes readdy-anim-rgb-glitch{0%,to{filter:none;transform:translate(0)}20%{filter:drop-shadow(var(--readdy-anim-rgb-glitch-shadow,2px) 0 red) drop-shadow(calc(var(--readdy-anim-rgb-glitch-shadow, 2px)*-1) 0 cyan);transform:translate(calc(var(--readdy-anim-rgb-glitch-shift, 3px)*-1),calc(var(--readdy-anim-rgb-glitch-shift, 3px)*.3333))}40%{filter:drop-shadow(calc(var(--readdy-anim-rgb-glitch-shadow, 2px)*-1) 0 blue) drop-shadow(var(--readdy-anim-rgb-glitch-shadow,2px) 0 lime);transform:translate(var(--readdy-anim-rgb-glitch-shift,3px),calc(var(--readdy-anim-rgb-glitch-shift, 3px)*-.3333))}60%{filter:drop-shadow(var(--readdy-anim-rgb-glitch-shadow,2px) 0 red) drop-shadow(calc(var(--readdy-anim-rgb-glitch-shadow, 2px)*-1) 0 cyan);transform:translate(calc(var(--readdy-anim-rgb-glitch-shift, 3px)*-.6667),calc(var(--readdy-anim-rgb-glitch-shift, 3px)*.6667))}}.readdy-anim-rgb-split-glitch{animation:readdy-anim-rgb-glitch var(--readdy-anim-rgb-glitch-duration,1.1s) steps(2) infinite}@media (prefers-reduced-motion:reduce){.readdy-anim-rgb-split-glitch{animation:none}}@keyframes readdy-anim-bounce-in-bottom{0%{opacity:0;transform:translateY(28px)}65%{opacity:1;transform:translateY(-6px)}85%{transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.readdy-anim-bounce-in-bottom{animation:readdy-anim-bounce-in-bottom .85s cubic-bezier(.34,1.2,.64,1) forwards}@media (prefers-reduced-motion:reduce){.readdy-anim-bounce-in-bottom{animation:none;opacity:1;transform:none}}@keyframes readdy-anim-stack-pop{0%{opacity:0;transform:translateY(var(--readdy-anim-pop-offset,18px)) scale(var(--readdy-anim-pop-scale-start,.88))}to{opacity:1;transform:translateY(0) scale(1)}}.readdy-anim-pop-in-stack{animation:readdy-anim-stack-pop var(--readdy-anim-pop-duration,.6s) cubic-bezier(.16,1,.3,1) both;animation-delay:var(--readdy-anim-pop-delay,0ms);position:relative;will-change:transform,opacity}@media (prefers-reduced-motion:reduce){.readdy-anim-pop-in-stack{animation:none;opacity:1;transform:none}}.readdy-anim-card-fan-spread{cursor:pointer;isolation:isolate;overflow:visible;perspective:900px;position:relative;transform-style:preserve-3d}.readdy-anim-card-fan-spread:before{background:inherit;border-radius:inherit;content:"";inset:0;pointer-events:none;position:absolute;z-index:2}.readdy-anim-card-fan-spread>:not(.readdy-anim-card-fan-stack){position:relative;z-index:3}.readdy-anim-card-fan-spread .readdy-anim-card-fan-stack{inset:0;pointer-events:none;position:absolute;z-index:1}.readdy-anim-card-fan-spread .readdy-anim-card-fan-item{inset:0;position:absolute;transform-origin:18% 85%;transition:transform var(--readdy-anim-card-fan-duration,.55s) cubic-bezier(.22,1,.36,1);will-change:transform}.readdy-anim-card-fan-spread .readdy-anim-card-fan-item:first-child{transform:rotate(-3deg) translate(-6px,8px) scale(.985)}.readdy-anim-card-fan-spread .readdy-anim-card-fan-item:nth-child(2){transform:rotate(3deg) translate(6px,8px) scale(.985)}.readdy-anim-card-fan-spread .readdy-anim-card-fan-surface{box-shadow:0 18px 28px rgba(15,23,42,.16);height:100%;opacity:.86;overflow:hidden;width:100%}.readdy-anim-card-fan-spread .readdy-anim-card-fan-surface>*{pointer-events:none!important}.readdy-anim-card-fan-spread .readdy-anim-card-fan-visual-text{filter:blur(.15px);opacity:.22!important;text-shadow:none!important}.readdy-anim-card-fan-spread.is-spread .readdy-anim-card-fan-item:first-child{transform:rotateY(var(--readdy-anim-card-fan-depth-rotate,18deg)) rotate(calc(var(--readdy-anim-card-fan-rotate, 24deg)*-1)) translate(calc(var(--readdy-anim-card-fan-distance, 72px)*-1),calc(var(--readdy-anim-card-fan-lift, 14px)*-.714))}.readdy-anim-card-fan-spread.is-spread .readdy-anim-card-fan-item:nth-child(2){transform:rotateY(calc(var(--readdy-anim-card-fan-depth-rotate, 18deg)*-1)) rotate(var(--readdy-anim-card-fan-rotate,24deg)) translate(var(--readdy-anim-card-fan-distance,72px),calc(var(--readdy-anim-card-fan-lift, 14px)*-.714))}@media (prefers-reduced-motion:reduce){.readdy-anim-card-fan-spread .readdy-anim-card-fan-item{transition:none}}@keyframes readdy-anim-reveal-from-top{0%{clip-path:inset(0 0 100% 0 round 20px);opacity:0;transform:translateY(-28px)}to{clip-path:inset(0 0 0 0 round 20px);opacity:1;transform:translateY(0)}}.readdy-anim-reveal-from-top{animation:readdy-anim-reveal-from-top .75s cubic-bezier(.22,1,.36,1) forwards;will-change:opacity,transform,clip-path}@media (prefers-reduced-motion:reduce){.readdy-anim-reveal-from-top{animation:none;clip-path:inset(0 0 0 0 round 20px);opacity:1;transform:none}}.readdy-anim-image-magnifier .readdy-anim-card-media,.readdy-anim-image-magnifier .readdy-anim-image-magnifier-media{background:radial-gradient(circle at 25% 25%,hsla(0,0%,100%,.85),transparent 38%),linear-gradient(135deg,rgba(34,211,238,.95),rgba(167,139,250,.84));overflow:hidden;position:relative}.readdy-anim-image-magnifier .readdy-anim-image-magnifier-lens{background-position:var(--readdy-anim-magnifier-x,50%) var(--readdy-anim-magnifier-y,50%);background-size:var(--readdy-anim-image-magnifier-zoom,320%) var(--readdy-anim-image-magnifier-zoom,320%);border:2px solid hsla(0,0%,100%,.86);border-radius:999px;box-shadow:0 16px 34px rgba(15,23,42,.22),inset 0 0 0 1px hsla(0,0%,100%,.28);box-sizing:border-box;height:var(--readdy-anim-image-magnifier-lens-size,104px);left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translate3d(var(--readdy-anim-image-magnifier-lens-x,50%),var(--readdy-anim-image-magnifier-lens-y,50%),0) translate(-50%,-50%);transition:opacity var(--readdy-anim-image-magnifier-fade-duration,.16s) ease;width:var(--readdy-anim-image-magnifier-lens-size,104px);will-change:transform,opacity,background-position,background-size}@media (prefers-reduced-motion:reduce){.readdy-anim-image-magnifier .readdy-anim-image-magnifier-lens{opacity:0;transition:none}}.readdy-anim-3d-flip{transform:perspective(600px) translate3d(var(--readdy-anim-3d-translate-x,0),var(--readdy-anim-3d-translate-y,0),0) rotateX(var(--readdy-anim-3d-rotate-x,0deg)) rotateY(var(--readdy-anim-3d-rotate-y,0deg));transform-style:preserve-3d;transition:transform .65s cubic-bezier(.22,1,.36,1);will-change:transform}@media (prefers-reduced-motion:reduce){.readdy-anim-3d-flip{transform:none;transition:none}}
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type Anim3DFlipProps = {
3
+ children: React.ReactElement;
4
+ maxTilt?: number;
5
+ translate?: number;
6
+ };
7
+ export declare function Anim3DFlip({ children, maxTilt, translate, }: Anim3DFlipProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Blur Fade In — 按钮模糊淡入
4
+ *
5
+ * 用法:
6
+ * <AnimBlurFadeIn><button>点击</button></AnimBlurFadeIn>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-blur-fade-in class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimBlurFadeIn({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ /**
3
+ * Border Beam — 光束边框
4
+ *
5
+ * 用法:
6
+ * <AnimBorderBeam><button>点击</button></AnimBorderBeam>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-border-beam class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ type AnimBorderBeamProps = {
12
+ children: React.ReactElement;
13
+ duration?: number;
14
+ delay?: number;
15
+ borderWidth?: number;
16
+ glowOpacity?: number;
17
+ size?: number;
18
+ initialOffset?: number;
19
+ colorFrom?: string;
20
+ colorTo?: string;
21
+ reverse?: boolean;
22
+ respectReducedMotion?: boolean;
23
+ };
24
+ export declare function AnimBorderBeam({ children, duration, delay, borderWidth, glowOpacity, size, initialOffset, colorFrom, colorTo, reverse, respectReducedMotion, }: AnimBorderBeamProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
25
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Bounce Elastic — 按钮弹性弹入
4
+ *
5
+ * 用法:
6
+ * <AnimBounceElastic><button>点击</button></AnimBounceElastic>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-bounce-elastic class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimBounceElastic({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare function AnimBubbleButton({ children }: {
3
+ children: React.ReactElement;
4
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type AnimConfettiButtonProps = {
3
+ children: React.ReactElement;
4
+ pieces?: number;
5
+ colors?: string[];
6
+ };
7
+ export declare function AnimConfettiButton({ children, pieces, colors, }: AnimConfettiButtonProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ /**
3
+ * Glow CTA — 按钮发光CTA
4
+ *
5
+ * 用法:
6
+ * <AnimGlowCta><button>点击</button></AnimGlowCta>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,并调用底层 init/destroy
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ type AnimGlowCtaProps = {
12
+ children: React.ReactElement;
13
+ scale?: number;
14
+ arrowPadding?: string;
15
+ idleOpacity?: number;
16
+ activeOpacity?: number;
17
+ inset?: number;
18
+ };
19
+ export declare function AnimGlowCta({ children, scale, arrowPadding, idleOpacity, activeOpacity, inset, }: AnimGlowCtaProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
20
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type AnimMagneticHoverProps = {
3
+ children: React.ReactElement;
4
+ padding?: number;
5
+ strength?: number;
6
+ };
7
+ export declare function AnimMagneticHover({ children, padding, strength, }: AnimMagneticHoverProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Pulse — 按钮持续脉冲
4
+ *
5
+ * 用法:
6
+ * <AnimPulse><button>点击</button></AnimPulse>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-pulse class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimPulse({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Rainbow Button — 彩虹按钮
4
+ *
5
+ * 用法:
6
+ * <AnimRainbowButton><button>点击</button></AnimRainbowButton>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-rainbow-button class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimRainbowButton({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ /**
3
+ * Shimmer Border — 闪光边框
4
+ *
5
+ * 用法:
6
+ * <AnimShimmerBorder><button>点击</button></AnimShimmerBorder>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-shimmer-border class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ type AnimShimmerBorderProps = {
12
+ children: React.ReactElement;
13
+ duration?: number;
14
+ borderWidth?: number;
15
+ opacity?: number;
16
+ };
17
+ export declare function AnimShimmerBorder({ children, duration, borderWidth, opacity, }: AnimShimmerBorderProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
18
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare function AnimSketchButton({ children }: {
3
+ children: React.ReactElement;
4
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Blur Rise — 卡片从模糊中升起
4
+ *
5
+ * 用法:
6
+ * <AnimBlurRise><div className="card">内容</div></AnimBlurRise>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-blur-rise class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimBlurRise({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Bounce In Bottom — 卡片从底部弹入
4
+ *
5
+ * 用法:
6
+ * <AnimBounceInBottom><div className="card">内容</div></AnimBounceInBottom>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-bounce-in-bottom class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimBounceInBottom({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ type AnimCardFanSpreadProps = {
3
+ children: React.ReactElement;
4
+ spreadDistance?: number;
5
+ spreadRotate?: number;
6
+ depthRotate?: number;
7
+ lift?: number;
8
+ duration?: number;
9
+ };
10
+ export declare function AnimCardFanSpread({ children, spreadDistance, spreadRotate, depthRotate, lift, duration, }: AnimCardFanSpreadProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
11
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface AnimCardFlipProps {
3
+ children: React.ReactElement;
4
+ duration?: number;
5
+ perspective?: number;
6
+ }
7
+ /**
8
+ * Card Flip 会保留传入的 card 内容作为正面,同时使用当前内容克隆出背面。
9
+ * 适合直接包裹现有 card 宿主,而不是注入固定模板。
10
+ */
11
+ export declare function AnimCardFlip({ children, duration, perspective, }: AnimCardFlipProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Float Idle — 卡片悬浮idle
4
+ *
5
+ * 用法:
6
+ * <AnimFloatIdle><div className="card">内容</div></AnimFloatIdle>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-float-idle class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimFloatIdle({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ type AnimImageMagnifierProps = {
3
+ children: React.ReactElement;
4
+ lensSize?: number;
5
+ zoom?: number;
6
+ fadeDuration?: number;
7
+ };
8
+ export declare function AnimImageMagnifier({ children, lensSize, zoom, fadeDuration, }: AnimImageMagnifierProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
9
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ type AnimImageZoomRotateProps = {
3
+ children: React.ReactElement;
4
+ scale?: number;
5
+ rotate?: number;
6
+ duration?: number;
7
+ };
8
+ export declare function AnimImageZoomRotate({ children, scale, rotate, duration, }: AnimImageZoomRotateProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
9
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ type AnimPopInStackProps = {
3
+ children: React.ReactElement;
4
+ delay?: number;
5
+ duration?: number;
6
+ offset?: number;
7
+ scaleStart?: number;
8
+ };
9
+ export declare function AnimPopInStack({ children, delay, duration, offset, scaleStart, }: AnimPopInStackProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Reveal From Top — 卡片从顶部揭示
4
+ *
5
+ * 用法:
6
+ * <AnimRevealFromTop><div className="card">内容</div></AnimRevealFromTop>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-reveal-from-top class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimRevealFromTop({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ /**
3
+ * RGB Split Glitch — 卡片 RGB 色散故障效果
4
+ *
5
+ * 用法:
6
+ * <AnimRgbSplitGlitch><div className="card">内容</div></AnimRgbSplitGlitch>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-rgb-split-glitch class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ type AnimRgbSplitGlitchProps = {
12
+ children: React.ReactElement;
13
+ duration?: number;
14
+ shift?: number;
15
+ shadowOffset?: number;
16
+ };
17
+ export declare function AnimRgbSplitGlitch({ children, duration, shift, shadowOffset, }: AnimRgbSplitGlitchProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
18
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ type AnimTiltedCardProps = {
3
+ children: React.ReactElement;
4
+ maxTilt?: number;
5
+ scale?: number;
6
+ perspective?: number;
7
+ duration?: number;
8
+ };
9
+ export declare function AnimTiltedCard({ children, maxTilt, scale, perspective, duration, }: AnimTiltedCardProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type AnimAnimeSplittextProps = {
3
+ children: React.ReactElement;
4
+ stagger?: number;
5
+ duration?: number;
6
+ };
7
+ export declare function AnimAnimeSplittext({ children, stagger, duration, }: AnimAnimeSplittextProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Bounce In Down — 从上方弹入
4
+ *
5
+ * 用法:
6
+ * <AnimBounceInDown><p>标题文字</p></AnimBounceInDown>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-bounce-in-down class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimBounceInDown({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type AnimFlyInCharsProps = {
3
+ children: React.ReactElement;
4
+ stagger?: number;
5
+ maxChars?: number;
6
+ };
7
+ export declare function AnimFlyInChars({ children, stagger, maxChars, }: AnimFlyInCharsProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Gradient Text — 渐变文字
4
+ *
5
+ * 用法:
6
+ * <AnimGradientText><p>标题文字</p></AnimGradientText>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-gradient-text class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimGradientText({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ type AnimLetterBounceProps = {
3
+ children: React.ReactElement;
4
+ stagger?: number;
5
+ maxChars?: number;
6
+ duration?: number;
7
+ amplitude?: number;
8
+ };
9
+ export declare function AnimLetterBounce({ children, stagger, maxChars, duration, amplitude, }: AnimLetterBounceProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ export function init(el: any, options?: {}): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Roll In — 文字滚入
4
+ *
5
+ * 用法:
6
+ * <AnimRollIn><p>标题文字</p></AnimRollIn>
7
+ *
8
+ * 不加 wrapper div — 通过 cloneElement 给子元素注入 ref,加/删 .readdy-anim-roll-in class
9
+ * 必须恰好包裹一个子元素
10
+ */
11
+ export declare function AnimRollIn({ children }: {
12
+ children: React.ReactElement;
13
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,3 @@
1
+ export function init(el: any): void;
2
+ export function destroy(el: any): void;
3
+ export const ANIMATION_ID: string;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare function AnimShimmerText({ children }: {
3
+ children: React.ReactElement;
4
+ }): React.ReactElement<any, string | React.JSXElementConstructor<any>>;