use-scroll-animate 10.2.0 → 10.4.0

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 (403) hide show
  1. package/AGENTS.md +4 -0
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +67 -0
  4. package/bin/motionary-mcp.mjs +265 -0
  5. package/dist/chunks/anim-image-DDdb9q3X.js +166 -0
  6. package/dist/chunks/anim-image-DDdb9q3X.js.map +1 -0
  7. package/dist/chunks/anim-image-blQgPFFS.cjs +174 -0
  8. package/dist/chunks/anim-image-blQgPFFS.cjs.map +1 -0
  9. package/dist/chunks/audio-BpU-A1m1.cjs.map +1 -1
  10. package/dist/chunks/{audio-D95jwlOh.js → audio-CWt1xdZB.js} +3 -3
  11. package/dist/chunks/{audio-D95jwlOh.js.map → audio-CWt1xdZB.js.map} +1 -1
  12. package/dist/chunks/{base-BnRyfuyM.js → base-BTev8qxg.js} +2 -2
  13. package/dist/chunks/{base-BnRyfuyM.js.map → base-BTev8qxg.js.map} +1 -1
  14. package/dist/chunks/base-DBheNxJu.cjs.map +1 -1
  15. package/dist/chunks/bind-B_CTL6Qn.js.map +1 -1
  16. package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -1
  17. package/dist/chunks/builtins-CKKZNR95.cjs.map +1 -1
  18. package/dist/chunks/{builtins-CqIq1zBv.js → builtins-CPmS6aDB.js} +3 -3
  19. package/dist/chunks/{builtins-CqIq1zBv.js.map → builtins-CPmS6aDB.js.map} +1 -1
  20. package/dist/chunks/core-B5T0dhFH.cjs.map +1 -1
  21. package/dist/chunks/{core-DsGoL9EY.js → core-BviA7nFa.js} +2 -2
  22. package/dist/chunks/{core-DsGoL9EY.js.map → core-BviA7nFa.js.map} +1 -1
  23. package/dist/chunks/core-D74Fz-dL.cjs.map +1 -1
  24. package/dist/chunks/core-D7cVumUu.js.map +1 -1
  25. package/dist/chunks/{core-XA2yhn1b.js → core-KiM7MXjL.js} +2 -2
  26. package/dist/chunks/{core-XA2yhn1b.js.map → core-KiM7MXjL.js.map} +1 -1
  27. package/dist/chunks/core-MQlXZKUG.cjs.map +1 -1
  28. package/dist/chunks/ease-HwYZnZat.cjs +94 -0
  29. package/dist/chunks/ease-HwYZnZat.cjs.map +1 -0
  30. package/dist/chunks/ease-XN8_0sXu.js +89 -0
  31. package/dist/chunks/ease-XN8_0sXu.js.map +1 -0
  32. package/dist/chunks/fx-B_pbhpDp.cjs.map +1 -1
  33. package/dist/chunks/{fx-CtnrFEg9.js → fx-CgWKqVsn.js} +2 -2
  34. package/dist/chunks/{fx-CtnrFEg9.js.map → fx-CgWKqVsn.js.map} +1 -1
  35. package/dist/chunks/generative-2LhxG5BJ.js.map +1 -1
  36. package/dist/chunks/generative-BHIj-NU0.cjs.map +1 -1
  37. package/dist/chunks/{gpu-CDcXiNA8.js → gpu-BWfgYWMY.js} +2 -2
  38. package/dist/chunks/{gpu-CDcXiNA8.js.map → gpu-BWfgYWMY.js.map} +1 -1
  39. package/dist/chunks/gpu-cUixt7kT.cjs.map +1 -1
  40. package/dist/chunks/index-tags-B-JBecYg.js.map +1 -1
  41. package/dist/chunks/index-tags-hLIF2Clq.cjs.map +1 -1
  42. package/dist/chunks/{keyframes-W-474DMc.js → keyframes-B5PWe5bU.js} +3 -2
  43. package/dist/chunks/keyframes-B5PWe5bU.js.map +1 -0
  44. package/dist/chunks/{keyframes-ZheOkpt0.cjs → keyframes-tC3I7anQ.cjs} +4 -3
  45. package/dist/chunks/keyframes-tC3I7anQ.cjs.map +1 -0
  46. package/dist/chunks/{manifest-D58HXVY-.js → manifest-BHx5yPN6.js} +2 -2
  47. package/dist/chunks/{manifest-D58HXVY-.js.map → manifest-BHx5yPN6.js.map} +1 -1
  48. package/dist/chunks/manifest-PaF9B8Vt.cjs.map +1 -1
  49. package/dist/chunks/{player-48Zy_NBG.js → player-BfHMNtiM.js} +4 -4
  50. package/dist/chunks/{player-48Zy_NBG.js.map → player-BfHMNtiM.js.map} +1 -1
  51. package/dist/chunks/player-C4y4jXSv.cjs.map +1 -1
  52. package/dist/chunks/presets-BYBVJVeP.js.map +1 -1
  53. package/dist/chunks/presets-CUHys3sK.cjs.map +1 -1
  54. package/dist/chunks/{registry-gFJRpPES.js → registry-BKzyg1JV.js} +2 -2
  55. package/dist/chunks/{registry-gFJRpPES.js.map → registry-BKzyg1JV.js.map} +1 -1
  56. package/dist/chunks/{registry-BIEjKngP.js → registry-CT-TT_bx.js} +3 -3
  57. package/dist/chunks/{registry-BIEjKngP.js.map → registry-CT-TT_bx.js.map} +1 -1
  58. package/dist/chunks/{registry-eJgpFAzI.cjs → registry-tzwKkldE.cjs} +2 -2
  59. package/dist/chunks/{registry-eJgpFAzI.cjs.map → registry-tzwKkldE.cjs.map} +1 -1
  60. package/dist/chunks/registry-xQZnSqqV.cjs.map +1 -1
  61. package/dist/chunks/shared-CkKHWrtJ.js.map +1 -1
  62. package/dist/chunks/shared-jkgRH-Hx.cjs.map +1 -1
  63. package/dist/chunks/{spring-CZDNyqWp.js → spring-BHuP55DR.js} +2 -2
  64. package/dist/chunks/{spring-CZDNyqWp.js.map → spring-BHuP55DR.js.map} +1 -1
  65. package/dist/chunks/spring-BlTQD2AV.cjs.map +1 -1
  66. package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -1
  67. package/dist/chunks/stagger-DtMKo2SK.js.map +1 -1
  68. package/dist/chunks/{ticker-CM_56oVy.js → ticker-C8lSGml9.js} +2 -2
  69. package/dist/chunks/{ticker-CM_56oVy.js.map → ticker-C8lSGml9.js.map} +1 -1
  70. package/dist/chunks/{ticker-D4o6enH0.cjs → ticker-Un0bvTWR.cjs} +2 -2
  71. package/dist/chunks/{ticker-D4o6enH0.cjs.map → ticker-Un0bvTWR.cjs.map} +1 -1
  72. package/dist/chunks/{tween-CqX1JBuj.js → tween-BcejKpsx.js} +15 -91
  73. package/dist/chunks/tween-BcejKpsx.js.map +1 -0
  74. package/dist/chunks/{tween-CBuWYpI-.cjs → tween-CwLLC3Ko.cjs} +15 -95
  75. package/dist/chunks/tween-CwLLC3Ko.cjs.map +1 -0
  76. package/dist/chunks/variants-CrDDJoYK.cjs.map +1 -1
  77. package/dist/chunks/{variants-GU3yIL4F.js → variants-CsRGUIyA.js} +2 -2
  78. package/dist/chunks/{variants-GU3yIL4F.js.map → variants-CsRGUIyA.js.map} +1 -1
  79. package/dist/components/a11y.cjs.map +1 -1
  80. package/dist/components/a11y.js +2 -2
  81. package/dist/components/a11y.js.map +1 -1
  82. package/dist/components/angular.cjs.map +1 -1
  83. package/dist/components/angular.js +8 -8
  84. package/dist/components/angular.js.map +1 -1
  85. package/dist/components/background.cjs.map +1 -1
  86. package/dist/components/background.js +2 -2
  87. package/dist/components/background.js.map +1 -1
  88. package/dist/components/bridge.cjs.map +1 -1
  89. package/dist/components/bridge.js +1 -1
  90. package/dist/components/bridge.js.map +1 -1
  91. package/dist/components/cards.cjs.map +1 -1
  92. package/dist/components/cards.js +2 -2
  93. package/dist/components/cards.js.map +1 -1
  94. package/dist/components/click.cjs.map +1 -1
  95. package/dist/components/click.js +3 -3
  96. package/dist/components/click.js.map +1 -1
  97. package/dist/components/core.cjs.map +1 -1
  98. package/dist/components/core.js.map +1 -1
  99. package/dist/components/depth.cjs.map +1 -1
  100. package/dist/components/depth.js +3 -3
  101. package/dist/components/depth.js.map +1 -1
  102. package/dist/components/design.cjs.map +1 -1
  103. package/dist/components/design.js +3 -3
  104. package/dist/components/design.js.map +1 -1
  105. package/dist/components/dsl.cjs.map +1 -1
  106. package/dist/components/dsl.js +2 -2
  107. package/dist/components/dsl.js.map +1 -1
  108. package/dist/components/effects.cjs.map +1 -1
  109. package/dist/components/effects.js +9 -9
  110. package/dist/components/effects.js.map +1 -1
  111. package/dist/components/engine.cjs.map +1 -1
  112. package/dist/components/engine.js +2 -2
  113. package/dist/components/engine.js.map +1 -1
  114. package/dist/components/feedback.cjs.map +1 -1
  115. package/dist/components/feedback.js +1 -1
  116. package/dist/components/feedback.js.map +1 -1
  117. package/dist/components/fx-3d.cjs.map +1 -1
  118. package/dist/components/fx-3d.js +2 -2
  119. package/dist/components/fx-3d.js.map +1 -1
  120. package/dist/components/fx-ai.cjs.map +1 -1
  121. package/dist/components/fx-ai.js +2 -2
  122. package/dist/components/fx-ai.js.map +1 -1
  123. package/dist/components/fx-chart.cjs.map +1 -1
  124. package/dist/components/fx-chart.js +2 -2
  125. package/dist/components/fx-chart.js.map +1 -1
  126. package/dist/components/fx-cinema.cjs.map +1 -1
  127. package/dist/components/fx-cinema.js +2 -2
  128. package/dist/components/fx-cinema.js.map +1 -1
  129. package/dist/components/fx-cyber.cjs.map +1 -1
  130. package/dist/components/fx-cyber.js +2 -2
  131. package/dist/components/fx-cyber.js.map +1 -1
  132. package/dist/components/fx-festival.cjs.map +1 -1
  133. package/dist/components/fx-festival.js +2 -2
  134. package/dist/components/fx-festival.js.map +1 -1
  135. package/dist/components/fx-focus.cjs.map +1 -1
  136. package/dist/components/fx-focus.js +2 -2
  137. package/dist/components/fx-focus.js.map +1 -1
  138. package/dist/components/fx-form.cjs.map +1 -1
  139. package/dist/components/fx-form.js +2 -2
  140. package/dist/components/fx-form.js.map +1 -1
  141. package/dist/components/fx-game.cjs.map +1 -1
  142. package/dist/components/fx-game.js +2 -2
  143. package/dist/components/fx-game.js.map +1 -1
  144. package/dist/components/fx-genart.cjs.map +1 -1
  145. package/dist/components/fx-genart.js +2 -2
  146. package/dist/components/fx-genart.js.map +1 -1
  147. package/dist/components/fx-geo.cjs.map +1 -1
  148. package/dist/components/fx-geo.js +2 -2
  149. package/dist/components/fx-geo.js.map +1 -1
  150. package/dist/components/fx-gesture.cjs.map +1 -1
  151. package/dist/components/fx-gesture.js +2 -2
  152. package/dist/components/fx-gesture.js.map +1 -1
  153. package/dist/components/fx-gpu.js +3 -3
  154. package/dist/components/fx-light.cjs.map +1 -1
  155. package/dist/components/fx-light.js +2 -2
  156. package/dist/components/fx-light.js.map +1 -1
  157. package/dist/components/fx-lottie.cjs.map +1 -1
  158. package/dist/components/fx-lottie.js +2 -2
  159. package/dist/components/fx-lottie.js.map +1 -1
  160. package/dist/components/fx-morph.cjs.map +1 -1
  161. package/dist/components/fx-morph.js +2 -2
  162. package/dist/components/fx-morph.js.map +1 -1
  163. package/dist/components/fx-music.cjs.map +1 -1
  164. package/dist/components/fx-music.js +3 -3
  165. package/dist/components/fx-music.js.map +1 -1
  166. package/dist/components/fx-organic.cjs.map +1 -1
  167. package/dist/components/fx-organic.js +2 -2
  168. package/dist/components/fx-organic.js.map +1 -1
  169. package/dist/components/fx-paper.cjs.map +1 -1
  170. package/dist/components/fx-paper.js +2 -2
  171. package/dist/components/fx-paper.js.map +1 -1
  172. package/dist/components/fx-perf.cjs.map +1 -1
  173. package/dist/components/fx-perf.js +2 -2
  174. package/dist/components/fx-perf.js.map +1 -1
  175. package/dist/components/fx-physics.cjs.map +1 -1
  176. package/dist/components/fx-physics.js +2 -2
  177. package/dist/components/fx-physics.js.map +1 -1
  178. package/dist/components/fx-retro.cjs.map +1 -1
  179. package/dist/components/fx-retro.js +2 -2
  180. package/dist/components/fx-retro.js.map +1 -1
  181. package/dist/components/fx-safe.cjs.map +1 -1
  182. package/dist/components/fx-safe.js +2 -2
  183. package/dist/components/fx-safe.js.map +1 -1
  184. package/dist/components/fx-shop.cjs.map +1 -1
  185. package/dist/components/fx-shop.js +2 -2
  186. package/dist/components/fx-shop.js.map +1 -1
  187. package/dist/components/fx-social.cjs.map +1 -1
  188. package/dist/components/fx-social.js +2 -2
  189. package/dist/components/fx-social.js.map +1 -1
  190. package/dist/components/fx-spatial.cjs.map +1 -1
  191. package/dist/components/fx-spatial.js +2 -2
  192. package/dist/components/fx-spatial.js.map +1 -1
  193. package/dist/components/fx-surface.cjs.map +1 -1
  194. package/dist/components/fx-surface.js +2 -2
  195. package/dist/components/fx-surface.js.map +1 -1
  196. package/dist/components/fx-text.cjs.map +1 -1
  197. package/dist/components/fx-text.js +2 -2
  198. package/dist/components/fx-text.js.map +1 -1
  199. package/dist/components/fx-transitions.cjs.map +1 -1
  200. package/dist/components/fx-transitions.js +3 -3
  201. package/dist/components/fx-transitions.js.map +1 -1
  202. package/dist/components/fx-video.cjs.map +1 -1
  203. package/dist/components/fx-video.js +2 -2
  204. package/dist/components/fx-video.js.map +1 -1
  205. package/dist/components/fx-weather.cjs.map +1 -1
  206. package/dist/components/fx-weather.js +2 -2
  207. package/dist/components/fx-weather.js.map +1 -1
  208. package/dist/components/fx.cjs.map +1 -1
  209. package/dist/components/fx.js +6 -6
  210. package/dist/components/fx.js.map +1 -1
  211. package/dist/components/fx2.cjs.map +1 -1
  212. package/dist/components/fx2.js +6 -6
  213. package/dist/components/fx2.js.map +1 -1
  214. package/dist/components/gesture.cjs.map +1 -1
  215. package/dist/components/gesture.js +4 -4
  216. package/dist/components/gesture.js.map +1 -1
  217. package/dist/components/interaction.cjs.map +1 -1
  218. package/dist/components/interaction.js +1 -1
  219. package/dist/components/interaction.js.map +1 -1
  220. package/dist/components/layout.cjs.map +1 -1
  221. package/dist/components/layout.js +1 -1
  222. package/dist/components/layout.js.map +1 -1
  223. package/dist/components/lazy.cjs.map +1 -1
  224. package/dist/components/lazy.js.map +1 -1
  225. package/dist/components/lite.cjs.map +1 -1
  226. package/dist/components/lite.js.map +1 -1
  227. package/dist/components/marketplace.cjs.map +1 -1
  228. package/dist/components/marketplace.js +4 -4
  229. package/dist/components/marketplace.js.map +1 -1
  230. package/dist/components/native.cjs.map +1 -1
  231. package/dist/components/native.js +3 -3
  232. package/dist/components/native.js.map +1 -1
  233. package/dist/components/packs.cjs.map +1 -1
  234. package/dist/components/packs.js +1 -1
  235. package/dist/components/packs.js.map +1 -1
  236. package/dist/components/page.cjs.map +1 -1
  237. package/dist/components/page.js +3 -3
  238. package/dist/components/page.js.map +1 -1
  239. package/dist/components/perf.cjs.map +1 -1
  240. package/dist/components/perf.js +2 -2
  241. package/dist/components/perf.js.map +1 -1
  242. package/dist/components/physics.cjs.map +1 -1
  243. package/dist/components/physics.js +3 -3
  244. package/dist/components/physics.js.map +1 -1
  245. package/dist/components/plugins.cjs.map +1 -1
  246. package/dist/components/plugins.js +4 -4
  247. package/dist/components/plugins.js.map +1 -1
  248. package/dist/components/react.cjs.map +1 -1
  249. package/dist/components/react.js.map +1 -1
  250. package/dist/components/reveal.cjs.map +1 -1
  251. package/dist/components/reveal.js +1 -1
  252. package/dist/components/reveal.js.map +1 -1
  253. package/dist/components/solid.cjs.map +1 -1
  254. package/dist/components/solid.js +8 -8
  255. package/dist/components/solid.js.map +1 -1
  256. package/dist/components/svelte.cjs.map +1 -1
  257. package/dist/components/svelte.js +8 -8
  258. package/dist/components/svelte.js.map +1 -1
  259. package/dist/components/svg.cjs.map +1 -1
  260. package/dist/components/svg.js +1 -1
  261. package/dist/components/svg.js.map +1 -1
  262. package/dist/components/text.cjs.map +1 -1
  263. package/dist/components/text.js +2 -2
  264. package/dist/components/text.js.map +1 -1
  265. package/dist/components/timeline.cjs.map +1 -1
  266. package/dist/components/timeline.js +3 -3
  267. package/dist/components/timeline.js.map +1 -1
  268. package/dist/components/tokens.cjs.map +1 -1
  269. package/dist/components/tokens.js.map +1 -1
  270. package/dist/components/transitions.cjs.map +1 -1
  271. package/dist/components/transitions.js +1 -1
  272. package/dist/components/transitions.js.map +1 -1
  273. package/dist/components/ui.cjs.map +1 -1
  274. package/dist/components/ui.js +4 -4
  275. package/dist/components/ui.js.map +1 -1
  276. package/dist/components/vue.cjs.map +1 -1
  277. package/dist/components/vue.js +8 -8
  278. package/dist/components/vue.js.map +1 -1
  279. package/dist/components/webgl.cjs.map +1 -1
  280. package/dist/components/webgl.js +1 -1
  281. package/dist/components/webgl.js.map +1 -1
  282. package/dist/components/widgets.cjs +766 -212
  283. package/dist/components/widgets.cjs.map +1 -1
  284. package/dist/components/widgets.d.cts +207 -2
  285. package/dist/components/widgets.d.ts +207 -2
  286. package/dist/components/widgets.js +770 -221
  287. package/dist/components/widgets.js.map +1 -1
  288. package/dist/components.cjs.map +1 -1
  289. package/dist/components.js +10 -10
  290. package/dist/components.js.map +1 -1
  291. package/dist/element.cjs.map +1 -1
  292. package/dist/element.js.map +1 -1
  293. package/dist/index.cjs.map +1 -1
  294. package/dist/index.js +2 -2
  295. package/dist/index.js.map +1 -1
  296. package/dist/llms-full.txt +250 -1
  297. package/dist/llms.txt +13 -2
  298. package/dist/manifest.json +646 -1
  299. package/dist/presets/extended.cjs.map +1 -1
  300. package/dist/presets/extended.js.map +1 -1
  301. package/dist/react.cjs.map +1 -1
  302. package/dist/react.js.map +1 -1
  303. package/dist/runtime/format-apng.cjs +131 -0
  304. package/dist/runtime/format-apng.cjs.map +1 -0
  305. package/dist/runtime/format-apng.d.cts +250 -0
  306. package/dist/runtime/format-apng.d.ts +250 -0
  307. package/dist/runtime/format-apng.iife.js +2 -0
  308. package/dist/runtime/format-apng.iife.js.map +1 -0
  309. package/dist/runtime/format-apng.js +123 -0
  310. package/dist/runtime/format-apng.js.map +1 -0
  311. package/dist/runtime/format-css.cjs +5 -4
  312. package/dist/runtime/format-css.cjs.map +1 -1
  313. package/dist/runtime/format-css.js +5 -4
  314. package/dist/runtime/format-css.js.map +1 -1
  315. package/dist/runtime/format-gif.cjs +206 -0
  316. package/dist/runtime/format-gif.cjs.map +1 -0
  317. package/dist/runtime/format-gif.d.cts +223 -0
  318. package/dist/runtime/format-gif.d.ts +223 -0
  319. package/dist/runtime/format-gif.iife.js +2 -0
  320. package/dist/runtime/format-gif.iife.js.map +1 -0
  321. package/dist/runtime/format-gif.js +199 -0
  322. package/dist/runtime/format-gif.js.map +1 -0
  323. package/dist/runtime/format-motion.cjs +9 -8
  324. package/dist/runtime/format-motion.cjs.map +1 -1
  325. package/dist/runtime/format-motion.js +5 -4
  326. package/dist/runtime/format-motion.js.map +1 -1
  327. package/dist/runtime/format-sprite.cjs +226 -0
  328. package/dist/runtime/format-sprite.cjs.map +1 -0
  329. package/dist/runtime/format-sprite.d.cts +224 -0
  330. package/dist/runtime/format-sprite.d.ts +224 -0
  331. package/dist/runtime/format-sprite.iife.js +2 -0
  332. package/dist/runtime/format-sprite.iife.js.map +1 -0
  333. package/dist/runtime/format-sprite.js +216 -0
  334. package/dist/runtime/format-sprite.js.map +1 -0
  335. package/dist/runtime/format-svg.cjs +5 -4
  336. package/dist/runtime/format-svg.cjs.map +1 -1
  337. package/dist/runtime/format-svg.iife.js.map +1 -1
  338. package/dist/runtime/format-svg.js +4 -3
  339. package/dist/runtime/format-svg.js.map +1 -1
  340. package/dist/runtime/format-webp.cjs +123 -0
  341. package/dist/runtime/format-webp.cjs.map +1 -0
  342. package/dist/runtime/format-webp.d.cts +245 -0
  343. package/dist/runtime/format-webp.d.ts +245 -0
  344. package/dist/runtime/format-webp.iife.js +2 -0
  345. package/dist/runtime/format-webp.iife.js.map +1 -0
  346. package/dist/runtime/format-webp.js +115 -0
  347. package/dist/runtime/format-webp.js.map +1 -0
  348. package/dist/runtime/scroll.cjs +2 -2
  349. package/dist/runtime/scroll.cjs.map +1 -1
  350. package/dist/runtime/scroll.js +2 -2
  351. package/dist/runtime/scroll.js.map +1 -1
  352. package/dist/runtime/smooth.cjs +284 -0
  353. package/dist/runtime/smooth.cjs.map +1 -0
  354. package/dist/runtime/smooth.d.cts +137 -0
  355. package/dist/runtime/smooth.d.ts +137 -0
  356. package/dist/runtime/smooth.iife.js +2 -0
  357. package/dist/runtime/smooth.iife.js.map +1 -0
  358. package/dist/runtime/smooth.js +279 -0
  359. package/dist/runtime/smooth.js.map +1 -0
  360. package/dist/runtime/text.cjs +147 -0
  361. package/dist/runtime/text.cjs.map +1 -0
  362. package/dist/runtime/text.d.cts +65 -0
  363. package/dist/runtime/text.d.ts +65 -0
  364. package/dist/runtime/text.iife.js +2 -0
  365. package/dist/runtime/text.iife.js.map +1 -0
  366. package/dist/runtime/text.js +143 -0
  367. package/dist/runtime/text.js.map +1 -0
  368. package/dist/runtime.cjs +9 -8
  369. package/dist/runtime.cjs.map +1 -1
  370. package/dist/runtime.d.cts +9 -2
  371. package/dist/runtime.d.ts +9 -2
  372. package/dist/runtime.iife.js +1 -1
  373. package/dist/runtime.iife.js.map +1 -1
  374. package/dist/runtime.js +6 -5
  375. package/dist/runtime.js.map +1 -1
  376. package/dist/solid.cjs.map +1 -1
  377. package/dist/solid.js.map +1 -1
  378. package/dist/svelte.cjs.map +1 -1
  379. package/dist/svelte.js.map +1 -1
  380. package/dist/vue.cjs.map +1 -1
  381. package/dist/vue.js.map +1 -1
  382. package/dist/widgets.umd.js +1 -1
  383. package/dist/widgets.umd.js.map +1 -1
  384. package/docs/ROADMAP.md +2 -2
  385. package/docs/components/README.md +12 -7
  386. package/docs/components/usa-parallax-layers.md +38 -0
  387. package/docs/components/usa-route-transition.md +38 -0
  388. package/docs/components/usa-scroll-ring.md +32 -0
  389. package/docs/components/usa-smooth-scroll.md +60 -0
  390. package/docs/components/usa-text-splitter.md +60 -0
  391. package/docs/components.md +94 -0
  392. package/docs/mcp.md +50 -0
  393. package/docs/runtime/format-apng.md +59 -0
  394. package/docs/runtime/format-gif.md +60 -0
  395. package/docs/runtime/format-sprite.md +60 -0
  396. package/docs/runtime/format-webp.md +58 -0
  397. package/docs/runtime/smooth.md +60 -0
  398. package/docs/runtime/text.md +59 -0
  399. package/package.json +64 -2
  400. package/dist/chunks/keyframes-W-474DMc.js.map +0 -1
  401. package/dist/chunks/keyframes-ZheOkpt0.cjs.map +0 -1
  402. package/dist/chunks/tween-CBuWYpI-.cjs.map +0 -1
  403. package/dist/chunks/tween-CqX1JBuj.js.map +0 -1
@@ -3,7 +3,7 @@
3
3
  "format": "motionary/components",
4
4
  "schemaVersion": 1,
5
5
  "package": "motionary",
6
- "version": "10.2.0",
6
+ "version": "10.4.0",
7
7
  "homepage": "https://harrisoncn.github.io/Motionary/",
8
8
  "llms": "https://harrisoncn.github.io/Motionary/llms.txt",
9
9
  "cdn": {
@@ -358,6 +358,405 @@
358
358
  ]
359
359
  ],
360
360
  "example": "import { use } from 'motionary/runtime';\nimport { formatSvg, playSmil, morphPath } from 'motionary/runtime/format-svg';\nuse(formatSvg);\nconst player = playSmil(document.querySelector('svg'));\nplayer.timeline.timeScale = 0.5; // scrub / slow down / reverse like any runtime timeline\nconst f = morphPath('M0 0 L100 0 L50 80 Z', 'M50 0 A40 40 0 1 1 49.9 0 Z');\npath.setAttribute('d', f(0.5));"
361
+ },
362
+ {
363
+ "kind": "runtime",
364
+ "id": "text",
365
+ "label": "motionary/runtime/text",
366
+ "title": "Text splitting",
367
+ "summary": "Split text into characters (grapheme-aware), words and lines for animation while keeping it accessible (aria-label with the full text, pieces hidden from assistive tech).",
368
+ "install": "npm i motionary",
369
+ "importPath": "motionary/runtime/text",
370
+ "import": "import { use } from 'motionary/runtime';\nimport { text } from 'motionary/runtime/text';",
371
+ "register": "use(text);",
372
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/text.iife.js\"></script>",
373
+ "cdnEsm": "https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/text.js",
374
+ "order": "Register the core first, then the module: use(text) also registers the core. CDN: load runtime.iife.js, then runtime/text.iife.js (it registers itself).",
375
+ "docs": "docs/runtime/text.md",
376
+ "budget": 2560,
377
+ "exports": [
378
+ "text",
379
+ "splitText",
380
+ "segment"
381
+ ],
382
+ "compat": [
383
+ [
384
+ "chars (grapheme clusters: emoji, combining marks, CJK)",
385
+ "yes",
386
+ "Intl.Segmenter when available, code points otherwise"
387
+ ],
388
+ [
389
+ "words, whitespace preserved",
390
+ "yes",
391
+ ""
392
+ ],
393
+ [
394
+ "lines (grouped by rendered position)",
395
+ "yes",
396
+ "wrapped in line spans for flat text; data-line on words inside nested markup"
397
+ ],
398
+ [
399
+ "nested inline markup (a, em, strong…) kept",
400
+ "yes",
401
+ ""
402
+ ],
403
+ [
404
+ "accessibility: aria-label + aria-hidden pieces, revert()",
405
+ "yes",
406
+ ""
407
+ ],
408
+ [
409
+ "--i index custom property for CSS staggers",
410
+ "yes",
411
+ ""
412
+ ],
413
+ [
414
+ "SSR / workers",
415
+ "partial",
416
+ "segment() is pure; splitText() needs a DOM"
417
+ ],
418
+ [
419
+ "right-to-left line detection",
420
+ "partial",
421
+ "lines by vertical position (works for RTL; bidi runs not reordered)"
422
+ ]
423
+ ],
424
+ "example": "import { use, tween } from 'motionary/runtime';\nimport { text, splitText } from 'motionary/runtime/text';\nuse(text);\nconst { chars } = splitText(document.querySelector('h1'), { type: 'chars,words' });\ntween(chars, { from: { y: '1em', opacity: 0 }, to: { y: '0em', opacity: 1 }, stagger: 30 });"
425
+ },
426
+ {
427
+ "kind": "runtime",
428
+ "id": "format-sprite",
429
+ "label": "motionary/runtime/format-sprite",
430
+ "title": "Sprite sheets & image sequences",
431
+ "summary": "Play TexturePacker / Aseprite sprite sheets and numbered image sequences on a canvas or an element background, as runtime timelines (scrubbable).",
432
+ "install": "npm i motionary",
433
+ "importPath": "motionary/runtime/format-sprite",
434
+ "import": "import { use } from 'motionary/runtime';\nimport { formatSprite } from 'motionary/runtime/format-sprite';",
435
+ "register": "use(formatSprite);",
436
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-sprite.iife.js\"></script>",
437
+ "cdnEsm": "https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-sprite.js",
438
+ "order": "Register the core first, then the module: use(formatSprite) also registers the core. CDN: load runtime.iife.js, then runtime/format-sprite.iife.js (it registers itself).",
439
+ "docs": "docs/runtime/format-sprite.md",
440
+ "budget": 3072,
441
+ "exports": [
442
+ "formatSprite",
443
+ "parseSpriteSheet",
444
+ "gridSheet",
445
+ "frameOrder",
446
+ "drawFrame",
447
+ "spritePlayer",
448
+ "imageSequence",
449
+ "preloadImages",
450
+ "sequencePlayer"
451
+ ],
452
+ "compat": [
453
+ [
454
+ "TexturePacker JSON (hash + array)",
455
+ "yes",
456
+ "trimmed (spriteSourceSize / sourceSize) and rotated frames"
457
+ ],
458
+ [
459
+ "Aseprite JSON (hash + array), per-frame duration",
460
+ "yes",
461
+ ""
462
+ ],
463
+ [
464
+ "Aseprite frameTags: forward / reverse / pingpong / pingpong_reverse",
465
+ "yes",
466
+ ""
467
+ ],
468
+ [
469
+ "plain grid sheets",
470
+ "yes",
471
+ "gridSheet(cols, rows, w, h)"
472
+ ],
473
+ [
474
+ "image sequences (frame_{0001}.webp)",
475
+ "yes",
476
+ "preloading, cover-fit drawing, scrub via progress"
477
+ ],
478
+ [
479
+ "multipack (several atlas images)",
480
+ "no",
481
+ "load each sheet separately"
482
+ ],
483
+ [
484
+ "Aseprite slices / layers",
485
+ "no",
486
+ "frames only"
487
+ ],
488
+ [
489
+ "SSR / workers",
490
+ "partial",
491
+ "parsing is pure; players need a canvas (OffscreenCanvas works)"
492
+ ]
493
+ ],
494
+ "example": "import { use } from 'motionary/runtime';\nimport { formatSprite, parseSpriteSheet, spritePlayer } from 'motionary/runtime/format-sprite';\nuse(formatSprite);\nconst sheet = parseSpriteSheet(await (await fetch('/slime.json')).json());\nconst img = new Image(); img.src = '/slime.png'; await img.decode();\nspritePlayer(document.querySelector('canvas'), sheet, img, { tag: 'bounce' });"
495
+ },
496
+ {
497
+ "kind": "runtime",
498
+ "id": "smooth",
499
+ "label": "motionary/runtime/smooth",
500
+ "title": "Smooth scrolling",
501
+ "summary": "Smooth, inertial wheel scrolling (lerp or fixed-duration glide) for the window or any scroll container, anchor links that glide, off under prefers-reduced-motion; real scroll events keep scroll scenes and observers working.",
502
+ "install": "npm i motionary",
503
+ "importPath": "motionary/runtime/smooth",
504
+ "import": "import { use } from 'motionary/runtime';\nimport { smooth } from 'motionary/runtime/smooth';",
505
+ "register": "use(smooth);",
506
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/smooth.iife.js\"></script>",
507
+ "cdnEsm": "https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/smooth.js",
508
+ "order": "Register the core first, then the module: use(smooth) also registers the core. CDN: load runtime.iife.js, then runtime/smooth.iife.js (it registers itself).",
509
+ "docs": "docs/runtime/smooth.md",
510
+ "budget": 3584,
511
+ "exports": [
512
+ "smooth",
513
+ "smoothScroll",
514
+ "SmoothScroll",
515
+ "allSmooth"
516
+ ],
517
+ "compat": [
518
+ [
519
+ "wheel / trackpad smoothing (lerp, or duration + ease)",
520
+ "yes",
521
+ "frame-rate independent"
522
+ ],
523
+ [
524
+ "window and scroll containers (wrapper), vertical / horizontal",
525
+ "yes",
526
+ ""
527
+ ],
528
+ [
529
+ "keyboard, scrollbar, find-in-page, assistive tech",
530
+ "yes",
531
+ "stay native; the smoothed target follows them"
532
+ ],
533
+ [
534
+ "touch",
535
+ "partial",
536
+ "native momentum by default; touch: true smooths it"
537
+ ],
538
+ [
539
+ "anchor links (#id) with offset, focus moved, URL hash kept",
540
+ "yes",
541
+ ""
542
+ ],
543
+ [
544
+ "nested scrollables, [data-smooth-ignore], ctrl+wheel zoom",
545
+ "yes",
546
+ "left native"
547
+ ],
548
+ [
549
+ "prefers-reduced-motion",
550
+ "yes",
551
+ "disabled while it matches (re-enabled live)"
552
+ ],
553
+ [
554
+ "scroll scenes / IntersectionObserver / CSS scroll timelines",
555
+ "yes",
556
+ "real scroll events still fire"
557
+ ],
558
+ [
559
+ "SSR / workers",
560
+ "partial",
561
+ "import is safe; smoothScroll() needs a browser"
562
+ ]
563
+ ],
564
+ "example": "import { use } from 'motionary/runtime';\nimport { smooth, smoothScroll } from 'motionary/runtime/smooth';\nuse(smooth);\nconst s = smoothScroll({ lerp: 0.1, anchors: { offset: -64 } });\ns.scrollTo('#pricing');"
565
+ },
566
+ {
567
+ "kind": "runtime",
568
+ "id": "format-gif",
569
+ "label": "motionary/runtime/format-gif",
570
+ "title": "GIF decoder",
571
+ "summary": "Decode animated GIFs (own LZW decoder, no DOM) into composited RGBA frames and play / scrub / reverse them on a canvas as a runtime timeline.",
572
+ "install": "npm i motionary",
573
+ "importPath": "motionary/runtime/format-gif",
574
+ "import": "import { use } from 'motionary/runtime';\nimport { formatGif } from 'motionary/runtime/format-gif';",
575
+ "register": "use(formatGif);",
576
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-gif.iife.js\"></script>",
577
+ "cdnEsm": "https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-gif.js",
578
+ "order": "Register the core first, then the module: use(formatGif) also registers the core. CDN: load runtime.iife.js, then runtime/format-gif.iife.js (it registers itself).",
579
+ "docs": "docs/runtime/format-gif.md",
580
+ "budget": 3072,
581
+ "exports": [
582
+ "formatGif",
583
+ "decodeGif",
584
+ "loadGif",
585
+ "lzwDecode",
586
+ "animatedImagePlayer"
587
+ ],
588
+ "compat": [
589
+ [
590
+ "GIF87a / GIF89a",
591
+ "yes",
592
+ ""
593
+ ],
594
+ [
595
+ "global + local palettes, transparency",
596
+ "yes",
597
+ ""
598
+ ],
599
+ [
600
+ "interlaced frames",
601
+ "yes",
602
+ "4-pass row order"
603
+ ],
604
+ [
605
+ "disposal 0–3 (none / keep / background / previous)",
606
+ "yes",
607
+ "background clears to transparent, like browsers"
608
+ ],
609
+ [
610
+ "frame delays, NETSCAPE2.0 / ANIMEXTS loop count",
611
+ "yes",
612
+ "delays ≤ 10 ms play at 100 ms, like browsers"
613
+ ],
614
+ [
615
+ "truncated files",
616
+ "partial",
617
+ "decodes what is there"
618
+ ],
619
+ [
620
+ "plain-text extension",
621
+ "no",
622
+ "ignored (browsers ignore it too)"
623
+ ],
624
+ [
625
+ "SSR / workers",
626
+ "yes",
627
+ "decoding is pure; the player needs a (Offscreen)Canvas"
628
+ ]
629
+ ],
630
+ "example": "import { use } from 'motionary/runtime';\nimport { formatGif, loadGif, animatedImagePlayer } from 'motionary/runtime/format-gif';\nuse(formatGif);\nconst gif = await loadGif('/loader.gif');\nconst player = animatedImagePlayer(document.querySelector('canvas'), gif);\nplayer.pause(); player.progress = 0.5; // scrub"
631
+ },
632
+ {
633
+ "kind": "runtime",
634
+ "id": "format-apng",
635
+ "label": "motionary/runtime/format-apng",
636
+ "title": "APNG loader",
637
+ "summary": "Split animated PNGs into standalone frame PNGs (decoded by the browser), composite them (dispose / blend) and play them on a canvas as a runtime timeline.",
638
+ "install": "npm i motionary",
639
+ "importPath": "motionary/runtime/format-apng",
640
+ "import": "import { use } from 'motionary/runtime';\nimport { formatApng } from 'motionary/runtime/format-apng';",
641
+ "register": "use(formatApng);",
642
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-apng.iife.js\"></script>",
643
+ "cdnEsm": "https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-apng.js",
644
+ "order": "Register the core first, then the module: use(formatApng) also registers the core. CDN: load runtime.iife.js, then runtime/format-apng.iife.js (it registers itself).",
645
+ "docs": "docs/runtime/format-apng.md",
646
+ "budget": 3072,
647
+ "exports": [
648
+ "formatApng",
649
+ "parseApng",
650
+ "apngFramePngs",
651
+ "decodeApng",
652
+ "loadApng",
653
+ "animatedImagePlayer"
654
+ ],
655
+ "compat": [
656
+ [
657
+ "acTL / fcTL / fdAT, frame offsets and delays",
658
+ "yes",
659
+ ""
660
+ ],
661
+ [
662
+ "dispose_op none / background / previous",
663
+ "yes",
664
+ "first-frame previous → background (spec)"
665
+ ],
666
+ [
667
+ "blend_op source / over",
668
+ "yes",
669
+ ""
670
+ ],
671
+ [
672
+ "hidden default image (IDAT not part of the animation)",
673
+ "yes",
674
+ ""
675
+ ],
676
+ [
677
+ "palette / tRNS / gAMA / iCCP / sRGB / sBIT copied into frames",
678
+ "yes",
679
+ ""
680
+ ],
681
+ [
682
+ "plain (non-animated) PNG",
683
+ "yes",
684
+ "one frame"
685
+ ],
686
+ [
687
+ "decoding",
688
+ "yes",
689
+ "the browser's PNG decoder (createImageBitmap), or your own { decode }"
690
+ ],
691
+ [
692
+ "SSR / workers",
693
+ "partial",
694
+ "parsing is pure; decoding needs createImageBitmap (workers OK) or { decode }"
695
+ ]
696
+ ],
697
+ "example": "import { use } from 'motionary/runtime';\nimport { formatApng, loadApng, animatedImagePlayer } from 'motionary/runtime/format-apng';\nuse(formatApng);\nconst anim = await loadApng('/sticker.png');\nanimatedImagePlayer(document.querySelector('canvas'), anim);"
698
+ },
699
+ {
700
+ "kind": "runtime",
701
+ "id": "format-webp",
702
+ "label": "motionary/runtime/format-webp",
703
+ "title": "Animated WebP loader",
704
+ "summary": "Split animated WebP files (ANIM / ANMF) into standalone frames (decoded by the browser), composite them (blend / dispose) and play them on a canvas as a runtime timeline.",
705
+ "install": "npm i motionary",
706
+ "importPath": "motionary/runtime/format-webp",
707
+ "import": "import { use } from 'motionary/runtime';\nimport { formatWebp } from 'motionary/runtime/format-webp';",
708
+ "register": "use(formatWebp);",
709
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-webp.iife.js\"></script>",
710
+ "cdnEsm": "https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-webp.js",
711
+ "order": "Register the core first, then the module: use(formatWebp) also registers the core. CDN: load runtime.iife.js, then runtime/format-webp.iife.js (it registers itself).",
712
+ "docs": "docs/runtime/format-webp.md",
713
+ "budget": 3072,
714
+ "exports": [
715
+ "formatWebp",
716
+ "parseWebp",
717
+ "webpFrameFiles",
718
+ "decodeWebp",
719
+ "loadWebp",
720
+ "animatedImagePlayer"
721
+ ],
722
+ "compat": [
723
+ [
724
+ "VP8X + ANIM + ANMF frames, offsets, durations, loop count",
725
+ "yes",
726
+ ""
727
+ ],
728
+ [
729
+ "lossy (VP8) with alpha (ALPH) and lossless (VP8L) frames",
730
+ "yes",
731
+ "lossy + alpha frames get their own VP8X header"
732
+ ],
733
+ [
734
+ "blending on / off, dispose none / background",
735
+ "yes",
736
+ "composited on transparent, like browsers"
737
+ ],
738
+ [
739
+ "still WebP (simple and extended)",
740
+ "yes",
741
+ "one frame"
742
+ ],
743
+ [
744
+ "ICC / EXIF / XMP metadata",
745
+ "no",
746
+ "ignored"
747
+ ],
748
+ [
749
+ "browsers without WebP decoding",
750
+ "no",
751
+ "fall back to <img>"
752
+ ],
753
+ [
754
+ "SSR / workers",
755
+ "partial",
756
+ "parsing is pure; decoding needs createImageBitmap (workers OK) or { decode }"
757
+ ]
758
+ ],
759
+ "example": "import { use } from 'motionary/runtime';\nimport { formatWebp, loadWebp, animatedImagePlayer } from 'motionary/runtime/format-webp';\nuse(formatWebp);\nconst anim = await loadWebp('/hero.webp');\nconst p = animatedImagePlayer(document.querySelector('canvas'), anim, { speed: 0.5 });"
361
760
  }
362
761
  ],
363
762
  "components": [
@@ -4970,6 +5369,47 @@
4970
5369
  "prerequisites": null,
4971
5370
  "source": "src/components/widgets/panorama.ts"
4972
5371
  },
5372
+ {
5373
+ "id": "parallax-layers",
5374
+ "tag": "usa-parallax-layers",
5375
+ "title": "Parallax layers",
5376
+ "description": "10.4: a parallax container — children with data-depth move at different speeds while it crosses the viewport (native view() scroll timeline first, JS fallback), optional pointer tilt; static under reduced motion.",
5377
+ "category": "reveal",
5378
+ "since": "10.4",
5379
+ "keywords": [
5380
+ "parallax",
5381
+ "depth",
5382
+ "layers",
5383
+ "view timeline",
5384
+ "scroll-driven"
5385
+ ],
5386
+ "import": {
5387
+ "path": "motionary/components/widgets",
5388
+ "define": "defineParallaxLayers",
5389
+ "register": "defineParallaxLayers();"
5390
+ },
5391
+ "cdn": "https://unpkg.com/motionary@10/dist/widgets.umd.js",
5392
+ "attributes": [
5393
+ "range",
5394
+ "engine",
5395
+ "horizontal",
5396
+ "pointer",
5397
+ "strength",
5398
+ "preview"
5399
+ ],
5400
+ "events": [
5401
+ "usa:progress"
5402
+ ],
5403
+ "slots": [],
5404
+ "methods": [
5405
+ "layers"
5406
+ ],
5407
+ "example": "<usa-parallax-layers range=\"120\">\n <img data-depth=\"0.6\" src=\"mountains.webp\" alt=\"\">\n <h2 data-depth=\"-0.3\">Above the clouds</h2>\n</usa-parallax-layers>",
5408
+ "esm": "import { defineParallaxLayers } from 'motionary/components/widgets';\n\ndefineParallaxLayers(); // registers <usa-parallax-layers>\n\n/* then use it in your HTML:\n<usa-parallax-layers range=\"120\">\n <img data-depth=\"0.6\" src=\"mountains.webp\" alt=\"\">\n <h2 data-depth=\"-0.3\">Above the clouds</h2>\n</usa-parallax-layers>\n*/",
5409
+ "requires": [],
5410
+ "prerequisites": null,
5411
+ "source": "src/components/widgets/parallax-layers.ts"
5412
+ },
4973
5413
  {
4974
5414
  "id": "particles",
4975
5415
  "tag": "usa-particles",
@@ -5829,6 +6269,45 @@
5829
6269
  "prerequisites": null,
5830
6270
  "source": "src/components/interaction/ripple.ts"
5831
6271
  },
6272
+ {
6273
+ "id": "route-transition",
6274
+ "tag": "usa-route-transition",
6275
+ "title": "Route transition container",
6276
+ "description": "10.3: View Transitions 2.0 — link clicks swap the container’s content with the target page (fetched) or an inline <template data-route>, animated with the View Transitions API (Web Animations fallback); data-shared elements morph between routes; cross-document enables native MPA transitions.",
6277
+ "category": "transitions",
6278
+ "since": "10.3",
6279
+ "keywords": [
6280
+ "view transitions",
6281
+ "router",
6282
+ "mpa",
6283
+ "shared element",
6284
+ "page transition"
6285
+ ],
6286
+ "import": {
6287
+ "path": "motionary/components/widgets",
6288
+ "define": "defineRouteTransition",
6289
+ "register": "defineRouteTransition();"
6290
+ },
6291
+ "cdn": "https://unpkg.com/motionary@10/dist/widgets.umd.js",
6292
+ "attributes": [
6293
+ "effect",
6294
+ "engine",
6295
+ "cross-document"
6296
+ ],
6297
+ "events": [
6298
+ "usa:navigate",
6299
+ "usa:navigated"
6300
+ ],
6301
+ "slots": [],
6302
+ "methods": [
6303
+ "navigate"
6304
+ ],
6305
+ "example": "<usa-route-transition id=\"app\" effect=\"slide\" cross-document>\n <nav><a href=\"/\">Home</a> <a href=\"/about\">About</a></nav>\n <h1 data-shared=\"title\">Home</h1>\n</usa-route-transition>",
6306
+ "esm": "import { defineRouteTransition } from 'motionary/components/widgets';\n\ndefineRouteTransition(); // registers <usa-route-transition>\n\n/* then use it in your HTML:\n<usa-route-transition id=\"app\" effect=\"slide\" cross-document>\n <nav><a href=\"/\">Home</a> <a href=\"/about\">About</a></nav>\n <h1 data-shared=\"title\">Home</h1>\n</usa-route-transition>\n*/",
6307
+ "requires": [],
6308
+ "prerequisites": null,
6309
+ "source": "src/components/widgets/route-transition.ts"
6310
+ },
5832
6311
  {
5833
6312
  "id": "scene",
5834
6313
  "tag": "usa-scene",
@@ -5965,6 +6444,48 @@
5965
6444
  "prerequisites": null,
5966
6445
  "source": "src/components/reveal/scroll-progress.ts"
5967
6446
  },
6447
+ {
6448
+ "id": "scroll-ring",
6449
+ "tag": "usa-scroll-ring",
6450
+ "title": "Scroll progress ring",
6451
+ "description": "10.4: a circular scroll-progress indicator for the page or any scroll container (for=\".article\"), optional percentage label and back-to-top button. Scroll-driven 3.0: native animation-timeline: scroll() first (no script per frame), a small JS loop where scroll timelines are missing.",
6452
+ "category": "reveal",
6453
+ "since": "10.4",
6454
+ "keywords": [
6455
+ "scroll progress",
6456
+ "reading progress",
6457
+ "back to top",
6458
+ "animation-timeline",
6459
+ "scroll-driven"
6460
+ ],
6461
+ "import": {
6462
+ "path": "motionary/components/widgets",
6463
+ "define": "defineScrollRing",
6464
+ "register": "defineScrollRing();"
6465
+ },
6466
+ "cdn": "https://unpkg.com/motionary@10/dist/widgets.umd.js",
6467
+ "attributes": [
6468
+ "for",
6469
+ "engine",
6470
+ "label",
6471
+ "back-to-top",
6472
+ "size",
6473
+ "thickness",
6474
+ "horizontal",
6475
+ "preview"
6476
+ ],
6477
+ "events": [
6478
+ "usa:progress",
6479
+ "usa:top"
6480
+ ],
6481
+ "slots": [],
6482
+ "methods": [],
6483
+ "example": "<usa-scroll-ring label back-to-top></usa-scroll-ring>",
6484
+ "esm": "import { defineScrollRing } from 'motionary/components/widgets';\n\ndefineScrollRing(); // registers <usa-scroll-ring>\n\n/* then use it in your HTML:\n<usa-scroll-ring label back-to-top></usa-scroll-ring>\n*/",
6485
+ "requires": [],
6486
+ "prerequisites": null,
6487
+ "source": "src/components/widgets/scroll-ring.ts"
6488
+ },
5968
6489
  {
5969
6490
  "id": "scroll-scene",
5970
6491
  "tag": "usa-scroll-scene",
@@ -6383,6 +6904,70 @@
6383
6904
  "prerequisites": null,
6384
6905
  "source": "src/components/ui/slider.ts"
6385
6906
  },
6907
+ {
6908
+ "id": "smooth-scroller",
6909
+ "tag": "usa-smooth-scroll",
6910
+ "title": "Smooth scroll",
6911
+ "description": "10.4: smooth, inertial wheel scrolling for the page or a container (wrapper), anchor links glide (with offset for sticky headers); keyboard / scrollbar / touch stay native and it switches off under reduced motion. Requires motionary/runtime/smooth — npm i motionary, then use(smooth) before it mounts.",
6912
+ "category": "interaction",
6913
+ "since": "10.4",
6914
+ "keywords": [
6915
+ "smooth scroll",
6916
+ "inertia",
6917
+ "lerp",
6918
+ "anchors",
6919
+ "runtime"
6920
+ ],
6921
+ "import": {
6922
+ "path": "motionary/components/widgets",
6923
+ "define": "defineSmoothScroll",
6924
+ "register": "defineSmoothScroll();"
6925
+ },
6926
+ "cdn": "https://unpkg.com/motionary@10/dist/widgets.umd.js",
6927
+ "attributes": [
6928
+ "lerp",
6929
+ "duration",
6930
+ "ease",
6931
+ "wheel-multiplier",
6932
+ "horizontal",
6933
+ "touch",
6934
+ "anchors",
6935
+ "offset",
6936
+ "wrapper",
6937
+ "preview"
6938
+ ],
6939
+ "events": [
6940
+ "usa:scroll",
6941
+ "usa:ready",
6942
+ "usa:runtime-missing"
6943
+ ],
6944
+ "slots": [],
6945
+ "methods": [
6946
+ "glideTo",
6947
+ "stop",
6948
+ "resume"
6949
+ ],
6950
+ "example": "<usa-smooth-scroll lerp=\"0.1\" offset=\"64\"></usa-smooth-scroll>",
6951
+ "esm": "import { use } from 'motionary/runtime';\nimport { smooth } from 'motionary/runtime/smooth';\n\nuse(smooth);\nimport { defineSmoothScroll } from 'motionary/components/widgets';\n\ndefineSmoothScroll(); // registers <usa-smooth-scroll>\n\n/* then use it in your HTML:\n<usa-smooth-scroll lerp=\"0.1\" offset=\"64\"></usa-smooth-scroll>\n*/",
6952
+ "requires": [
6953
+ "smooth"
6954
+ ],
6955
+ "prerequisites": {
6956
+ "badge": "Requires: motionary/runtime/smooth",
6957
+ "modules": [
6958
+ "motionary/runtime/smooth"
6959
+ ],
6960
+ "install": "npm i motionary",
6961
+ "importAndRegister": "import { use } from 'motionary/runtime';\nimport { smooth } from 'motionary/runtime/smooth';\nimport { defineSmoothScroll } from 'motionary/components/widgets';\n\nuse(smooth);\ndefineSmoothScroll(); // registers <usa-smooth-scroll> — after the prerequisites",
6962
+ "order": "Register the core first, then the module: use(smooth) also registers the core. CDN: load runtime.iife.js, then runtime/smooth.iife.js (it registers itself).",
6963
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/smooth.iife.js\"></script>\n<!-- then the component bundles -->\n<script src=\"https://unpkg.com/motionary@10/dist/components.umd.js\"></script>\n<script src=\"https://unpkg.com/motionary@10/dist/widgets.umd.js\"></script>",
6964
+ "example": "<usa-smooth-scroll lerp=\"0.1\" offset=\"64\"></usa-smooth-scroll>",
6965
+ "docs": [
6966
+ "https://github.com/HarrisonCN/Motionary/blob/main/docs/runtime/smooth.md"
6967
+ ]
6968
+ },
6969
+ "source": "src/components/widgets/smooth-scroll.ts"
6970
+ },
6386
6971
  {
6387
6972
  "id": "sparkline",
6388
6973
  "tag": "usa-sparkline",
@@ -7177,6 +7762,66 @@
7177
7762
  "prerequisites": null,
7178
7763
  "source": "src/components/text/text-rotate.ts"
7179
7764
  },
7765
+ {
7766
+ "id": "text-splitter",
7767
+ "tag": "usa-text-splitter",
7768
+ "title": "Text splitter",
7769
+ "description": "10.3: splits its text into characters, words or lines and animates them in with a stagger (rise, fade, blur, flip, wave) when it scrolls into view — accessible, grapheme-aware. Requires motionary/runtime/text — npm i motionary, then use(text) before it mounts.",
7770
+ "category": "text",
7771
+ "since": "10.3",
7772
+ "keywords": [
7773
+ "split text",
7774
+ "letters",
7775
+ "words",
7776
+ "lines",
7777
+ "stagger",
7778
+ "runtime"
7779
+ ],
7780
+ "import": {
7781
+ "path": "motionary/components/widgets",
7782
+ "define": "defineTextSplitter",
7783
+ "register": "defineTextSplitter();"
7784
+ },
7785
+ "cdn": "https://unpkg.com/motionary@10/dist/widgets.umd.js",
7786
+ "attributes": [
7787
+ "split",
7788
+ "effect",
7789
+ "stagger",
7790
+ "duration",
7791
+ "loop",
7792
+ "trigger"
7793
+ ],
7794
+ "events": [
7795
+ "usa:split",
7796
+ "usa:done",
7797
+ "usa:runtime-missing"
7798
+ ],
7799
+ "slots": [],
7800
+ "methods": [
7801
+ "replay",
7802
+ "pieces"
7803
+ ],
7804
+ "example": "<usa-text-splitter split=\"chars\" effect=\"rise\" stagger=\"30\">Motion, made simple.</usa-text-splitter>",
7805
+ "esm": "import { use } from 'motionary/runtime';\nimport { text } from 'motionary/runtime/text';\n\nuse(text);\nimport { defineTextSplitter } from 'motionary/components/widgets';\n\ndefineTextSplitter(); // registers <usa-text-splitter>\n\n/* then use it in your HTML:\n<usa-text-splitter split=\"chars\" effect=\"rise\" stagger=\"30\">Motion, made simple.</usa-text-splitter>\n*/",
7806
+ "requires": [
7807
+ "text"
7808
+ ],
7809
+ "prerequisites": {
7810
+ "badge": "Requires: motionary/runtime/text",
7811
+ "modules": [
7812
+ "motionary/runtime/text"
7813
+ ],
7814
+ "install": "npm i motionary",
7815
+ "importAndRegister": "import { use } from 'motionary/runtime';\nimport { text } from 'motionary/runtime/text';\nimport { defineTextSplitter } from 'motionary/components/widgets';\n\nuse(text);\ndefineTextSplitter(); // registers <usa-text-splitter> — after the prerequisites",
7816
+ "order": "Register the core first, then the module: use(text) also registers the core. CDN: load runtime.iife.js, then runtime/text.iife.js (it registers itself).",
7817
+ "cdn": "<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/text.iife.js\"></script>\n<!-- then the component bundles -->\n<script src=\"https://unpkg.com/motionary@10/dist/components.umd.js\"></script>\n<script src=\"https://unpkg.com/motionary@10/dist/widgets.umd.js\"></script>",
7818
+ "example": "<usa-text-splitter split=\"chars\" effect=\"rise\" stagger=\"30\">Motion, made simple.</usa-text-splitter>",
7819
+ "docs": [
7820
+ "https://github.com/HarrisonCN/Motionary/blob/main/docs/runtime/text.md"
7821
+ ]
7822
+ },
7823
+ "source": "src/components/widgets/text-splitter.ts"
7824
+ },
7180
7825
  {
7181
7826
  "id": "theme-surface",
7182
7827
  "tag": "usa-theme-surface",