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.
- package/AGENTS.md +4 -0
- package/CHANGELOG.md +35 -0
- package/README.md +67 -0
- package/bin/motionary-mcp.mjs +265 -0
- package/dist/chunks/anim-image-DDdb9q3X.js +166 -0
- package/dist/chunks/anim-image-DDdb9q3X.js.map +1 -0
- package/dist/chunks/anim-image-blQgPFFS.cjs +174 -0
- package/dist/chunks/anim-image-blQgPFFS.cjs.map +1 -0
- package/dist/chunks/audio-BpU-A1m1.cjs.map +1 -1
- package/dist/chunks/{audio-D95jwlOh.js → audio-CWt1xdZB.js} +3 -3
- package/dist/chunks/{audio-D95jwlOh.js.map → audio-CWt1xdZB.js.map} +1 -1
- package/dist/chunks/{base-BnRyfuyM.js → base-BTev8qxg.js} +2 -2
- package/dist/chunks/{base-BnRyfuyM.js.map → base-BTev8qxg.js.map} +1 -1
- package/dist/chunks/base-DBheNxJu.cjs.map +1 -1
- package/dist/chunks/bind-B_CTL6Qn.js.map +1 -1
- package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -1
- package/dist/chunks/builtins-CKKZNR95.cjs.map +1 -1
- package/dist/chunks/{builtins-CqIq1zBv.js → builtins-CPmS6aDB.js} +3 -3
- package/dist/chunks/{builtins-CqIq1zBv.js.map → builtins-CPmS6aDB.js.map} +1 -1
- package/dist/chunks/core-B5T0dhFH.cjs.map +1 -1
- package/dist/chunks/{core-DsGoL9EY.js → core-BviA7nFa.js} +2 -2
- package/dist/chunks/{core-DsGoL9EY.js.map → core-BviA7nFa.js.map} +1 -1
- package/dist/chunks/core-D74Fz-dL.cjs.map +1 -1
- package/dist/chunks/core-D7cVumUu.js.map +1 -1
- package/dist/chunks/{core-XA2yhn1b.js → core-KiM7MXjL.js} +2 -2
- package/dist/chunks/{core-XA2yhn1b.js.map → core-KiM7MXjL.js.map} +1 -1
- package/dist/chunks/core-MQlXZKUG.cjs.map +1 -1
- package/dist/chunks/ease-HwYZnZat.cjs +94 -0
- package/dist/chunks/ease-HwYZnZat.cjs.map +1 -0
- package/dist/chunks/ease-XN8_0sXu.js +89 -0
- package/dist/chunks/ease-XN8_0sXu.js.map +1 -0
- package/dist/chunks/fx-B_pbhpDp.cjs.map +1 -1
- package/dist/chunks/{fx-CtnrFEg9.js → fx-CgWKqVsn.js} +2 -2
- package/dist/chunks/{fx-CtnrFEg9.js.map → fx-CgWKqVsn.js.map} +1 -1
- package/dist/chunks/generative-2LhxG5BJ.js.map +1 -1
- package/dist/chunks/generative-BHIj-NU0.cjs.map +1 -1
- package/dist/chunks/{gpu-CDcXiNA8.js → gpu-BWfgYWMY.js} +2 -2
- package/dist/chunks/{gpu-CDcXiNA8.js.map → gpu-BWfgYWMY.js.map} +1 -1
- package/dist/chunks/gpu-cUixt7kT.cjs.map +1 -1
- package/dist/chunks/index-tags-B-JBecYg.js.map +1 -1
- package/dist/chunks/index-tags-hLIF2Clq.cjs.map +1 -1
- package/dist/chunks/{keyframes-W-474DMc.js → keyframes-B5PWe5bU.js} +3 -2
- package/dist/chunks/keyframes-B5PWe5bU.js.map +1 -0
- package/dist/chunks/{keyframes-ZheOkpt0.cjs → keyframes-tC3I7anQ.cjs} +4 -3
- package/dist/chunks/keyframes-tC3I7anQ.cjs.map +1 -0
- package/dist/chunks/{manifest-D58HXVY-.js → manifest-BHx5yPN6.js} +2 -2
- package/dist/chunks/{manifest-D58HXVY-.js.map → manifest-BHx5yPN6.js.map} +1 -1
- package/dist/chunks/manifest-PaF9B8Vt.cjs.map +1 -1
- package/dist/chunks/{player-48Zy_NBG.js → player-BfHMNtiM.js} +4 -4
- package/dist/chunks/{player-48Zy_NBG.js.map → player-BfHMNtiM.js.map} +1 -1
- package/dist/chunks/player-C4y4jXSv.cjs.map +1 -1
- package/dist/chunks/presets-BYBVJVeP.js.map +1 -1
- package/dist/chunks/presets-CUHys3sK.cjs.map +1 -1
- package/dist/chunks/{registry-gFJRpPES.js → registry-BKzyg1JV.js} +2 -2
- package/dist/chunks/{registry-gFJRpPES.js.map → registry-BKzyg1JV.js.map} +1 -1
- package/dist/chunks/{registry-BIEjKngP.js → registry-CT-TT_bx.js} +3 -3
- package/dist/chunks/{registry-BIEjKngP.js.map → registry-CT-TT_bx.js.map} +1 -1
- package/dist/chunks/{registry-eJgpFAzI.cjs → registry-tzwKkldE.cjs} +2 -2
- package/dist/chunks/{registry-eJgpFAzI.cjs.map → registry-tzwKkldE.cjs.map} +1 -1
- package/dist/chunks/registry-xQZnSqqV.cjs.map +1 -1
- package/dist/chunks/shared-CkKHWrtJ.js.map +1 -1
- package/dist/chunks/shared-jkgRH-Hx.cjs.map +1 -1
- package/dist/chunks/{spring-CZDNyqWp.js → spring-BHuP55DR.js} +2 -2
- package/dist/chunks/{spring-CZDNyqWp.js.map → spring-BHuP55DR.js.map} +1 -1
- package/dist/chunks/spring-BlTQD2AV.cjs.map +1 -1
- package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -1
- package/dist/chunks/stagger-DtMKo2SK.js.map +1 -1
- package/dist/chunks/{ticker-CM_56oVy.js → ticker-C8lSGml9.js} +2 -2
- package/dist/chunks/{ticker-CM_56oVy.js.map → ticker-C8lSGml9.js.map} +1 -1
- package/dist/chunks/{ticker-D4o6enH0.cjs → ticker-Un0bvTWR.cjs} +2 -2
- package/dist/chunks/{ticker-D4o6enH0.cjs.map → ticker-Un0bvTWR.cjs.map} +1 -1
- package/dist/chunks/{tween-CqX1JBuj.js → tween-BcejKpsx.js} +15 -91
- package/dist/chunks/tween-BcejKpsx.js.map +1 -0
- package/dist/chunks/{tween-CBuWYpI-.cjs → tween-CwLLC3Ko.cjs} +15 -95
- package/dist/chunks/tween-CwLLC3Ko.cjs.map +1 -0
- package/dist/chunks/variants-CrDDJoYK.cjs.map +1 -1
- package/dist/chunks/{variants-GU3yIL4F.js → variants-CsRGUIyA.js} +2 -2
- package/dist/chunks/{variants-GU3yIL4F.js.map → variants-CsRGUIyA.js.map} +1 -1
- package/dist/components/a11y.cjs.map +1 -1
- package/dist/components/a11y.js +2 -2
- package/dist/components/a11y.js.map +1 -1
- package/dist/components/angular.cjs.map +1 -1
- package/dist/components/angular.js +8 -8
- package/dist/components/angular.js.map +1 -1
- package/dist/components/background.cjs.map +1 -1
- package/dist/components/background.js +2 -2
- package/dist/components/background.js.map +1 -1
- package/dist/components/bridge.cjs.map +1 -1
- package/dist/components/bridge.js +1 -1
- package/dist/components/bridge.js.map +1 -1
- package/dist/components/cards.cjs.map +1 -1
- package/dist/components/cards.js +2 -2
- package/dist/components/cards.js.map +1 -1
- package/dist/components/click.cjs.map +1 -1
- package/dist/components/click.js +3 -3
- package/dist/components/click.js.map +1 -1
- package/dist/components/core.cjs.map +1 -1
- package/dist/components/core.js.map +1 -1
- package/dist/components/depth.cjs.map +1 -1
- package/dist/components/depth.js +3 -3
- package/dist/components/depth.js.map +1 -1
- package/dist/components/design.cjs.map +1 -1
- package/dist/components/design.js +3 -3
- package/dist/components/design.js.map +1 -1
- package/dist/components/dsl.cjs.map +1 -1
- package/dist/components/dsl.js +2 -2
- package/dist/components/dsl.js.map +1 -1
- package/dist/components/effects.cjs.map +1 -1
- package/dist/components/effects.js +9 -9
- package/dist/components/effects.js.map +1 -1
- package/dist/components/engine.cjs.map +1 -1
- package/dist/components/engine.js +2 -2
- package/dist/components/engine.js.map +1 -1
- package/dist/components/feedback.cjs.map +1 -1
- package/dist/components/feedback.js +1 -1
- package/dist/components/feedback.js.map +1 -1
- package/dist/components/fx-3d.cjs.map +1 -1
- package/dist/components/fx-3d.js +2 -2
- package/dist/components/fx-3d.js.map +1 -1
- package/dist/components/fx-ai.cjs.map +1 -1
- package/dist/components/fx-ai.js +2 -2
- package/dist/components/fx-ai.js.map +1 -1
- package/dist/components/fx-chart.cjs.map +1 -1
- package/dist/components/fx-chart.js +2 -2
- package/dist/components/fx-chart.js.map +1 -1
- package/dist/components/fx-cinema.cjs.map +1 -1
- package/dist/components/fx-cinema.js +2 -2
- package/dist/components/fx-cinema.js.map +1 -1
- package/dist/components/fx-cyber.cjs.map +1 -1
- package/dist/components/fx-cyber.js +2 -2
- package/dist/components/fx-cyber.js.map +1 -1
- package/dist/components/fx-festival.cjs.map +1 -1
- package/dist/components/fx-festival.js +2 -2
- package/dist/components/fx-festival.js.map +1 -1
- package/dist/components/fx-focus.cjs.map +1 -1
- package/dist/components/fx-focus.js +2 -2
- package/dist/components/fx-focus.js.map +1 -1
- package/dist/components/fx-form.cjs.map +1 -1
- package/dist/components/fx-form.js +2 -2
- package/dist/components/fx-form.js.map +1 -1
- package/dist/components/fx-game.cjs.map +1 -1
- package/dist/components/fx-game.js +2 -2
- package/dist/components/fx-game.js.map +1 -1
- package/dist/components/fx-genart.cjs.map +1 -1
- package/dist/components/fx-genart.js +2 -2
- package/dist/components/fx-genart.js.map +1 -1
- package/dist/components/fx-geo.cjs.map +1 -1
- package/dist/components/fx-geo.js +2 -2
- package/dist/components/fx-geo.js.map +1 -1
- package/dist/components/fx-gesture.cjs.map +1 -1
- package/dist/components/fx-gesture.js +2 -2
- package/dist/components/fx-gesture.js.map +1 -1
- package/dist/components/fx-gpu.js +3 -3
- package/dist/components/fx-light.cjs.map +1 -1
- package/dist/components/fx-light.js +2 -2
- package/dist/components/fx-light.js.map +1 -1
- package/dist/components/fx-lottie.cjs.map +1 -1
- package/dist/components/fx-lottie.js +2 -2
- package/dist/components/fx-lottie.js.map +1 -1
- package/dist/components/fx-morph.cjs.map +1 -1
- package/dist/components/fx-morph.js +2 -2
- package/dist/components/fx-morph.js.map +1 -1
- package/dist/components/fx-music.cjs.map +1 -1
- package/dist/components/fx-music.js +3 -3
- package/dist/components/fx-music.js.map +1 -1
- package/dist/components/fx-organic.cjs.map +1 -1
- package/dist/components/fx-organic.js +2 -2
- package/dist/components/fx-organic.js.map +1 -1
- package/dist/components/fx-paper.cjs.map +1 -1
- package/dist/components/fx-paper.js +2 -2
- package/dist/components/fx-paper.js.map +1 -1
- package/dist/components/fx-perf.cjs.map +1 -1
- package/dist/components/fx-perf.js +2 -2
- package/dist/components/fx-perf.js.map +1 -1
- package/dist/components/fx-physics.cjs.map +1 -1
- package/dist/components/fx-physics.js +2 -2
- package/dist/components/fx-physics.js.map +1 -1
- package/dist/components/fx-retro.cjs.map +1 -1
- package/dist/components/fx-retro.js +2 -2
- package/dist/components/fx-retro.js.map +1 -1
- package/dist/components/fx-safe.cjs.map +1 -1
- package/dist/components/fx-safe.js +2 -2
- package/dist/components/fx-safe.js.map +1 -1
- package/dist/components/fx-shop.cjs.map +1 -1
- package/dist/components/fx-shop.js +2 -2
- package/dist/components/fx-shop.js.map +1 -1
- package/dist/components/fx-social.cjs.map +1 -1
- package/dist/components/fx-social.js +2 -2
- package/dist/components/fx-social.js.map +1 -1
- package/dist/components/fx-spatial.cjs.map +1 -1
- package/dist/components/fx-spatial.js +2 -2
- package/dist/components/fx-spatial.js.map +1 -1
- package/dist/components/fx-surface.cjs.map +1 -1
- package/dist/components/fx-surface.js +2 -2
- package/dist/components/fx-surface.js.map +1 -1
- package/dist/components/fx-text.cjs.map +1 -1
- package/dist/components/fx-text.js +2 -2
- package/dist/components/fx-text.js.map +1 -1
- package/dist/components/fx-transitions.cjs.map +1 -1
- package/dist/components/fx-transitions.js +3 -3
- package/dist/components/fx-transitions.js.map +1 -1
- package/dist/components/fx-video.cjs.map +1 -1
- package/dist/components/fx-video.js +2 -2
- package/dist/components/fx-video.js.map +1 -1
- package/dist/components/fx-weather.cjs.map +1 -1
- package/dist/components/fx-weather.js +2 -2
- package/dist/components/fx-weather.js.map +1 -1
- package/dist/components/fx.cjs.map +1 -1
- package/dist/components/fx.js +6 -6
- package/dist/components/fx.js.map +1 -1
- package/dist/components/fx2.cjs.map +1 -1
- package/dist/components/fx2.js +6 -6
- package/dist/components/fx2.js.map +1 -1
- package/dist/components/gesture.cjs.map +1 -1
- package/dist/components/gesture.js +4 -4
- package/dist/components/gesture.js.map +1 -1
- package/dist/components/interaction.cjs.map +1 -1
- package/dist/components/interaction.js +1 -1
- package/dist/components/interaction.js.map +1 -1
- package/dist/components/layout.cjs.map +1 -1
- package/dist/components/layout.js +1 -1
- package/dist/components/layout.js.map +1 -1
- package/dist/components/lazy.cjs.map +1 -1
- package/dist/components/lazy.js.map +1 -1
- package/dist/components/lite.cjs.map +1 -1
- package/dist/components/lite.js.map +1 -1
- package/dist/components/marketplace.cjs.map +1 -1
- package/dist/components/marketplace.js +4 -4
- package/dist/components/marketplace.js.map +1 -1
- package/dist/components/native.cjs.map +1 -1
- package/dist/components/native.js +3 -3
- package/dist/components/native.js.map +1 -1
- package/dist/components/packs.cjs.map +1 -1
- package/dist/components/packs.js +1 -1
- package/dist/components/packs.js.map +1 -1
- package/dist/components/page.cjs.map +1 -1
- package/dist/components/page.js +3 -3
- package/dist/components/page.js.map +1 -1
- package/dist/components/perf.cjs.map +1 -1
- package/dist/components/perf.js +2 -2
- package/dist/components/perf.js.map +1 -1
- package/dist/components/physics.cjs.map +1 -1
- package/dist/components/physics.js +3 -3
- package/dist/components/physics.js.map +1 -1
- package/dist/components/plugins.cjs.map +1 -1
- package/dist/components/plugins.js +4 -4
- package/dist/components/plugins.js.map +1 -1
- package/dist/components/react.cjs.map +1 -1
- package/dist/components/react.js.map +1 -1
- package/dist/components/reveal.cjs.map +1 -1
- package/dist/components/reveal.js +1 -1
- package/dist/components/reveal.js.map +1 -1
- package/dist/components/solid.cjs.map +1 -1
- package/dist/components/solid.js +8 -8
- package/dist/components/solid.js.map +1 -1
- package/dist/components/svelte.cjs.map +1 -1
- package/dist/components/svelte.js +8 -8
- package/dist/components/svelte.js.map +1 -1
- package/dist/components/svg.cjs.map +1 -1
- package/dist/components/svg.js +1 -1
- package/dist/components/svg.js.map +1 -1
- package/dist/components/text.cjs.map +1 -1
- package/dist/components/text.js +2 -2
- package/dist/components/text.js.map +1 -1
- package/dist/components/timeline.cjs.map +1 -1
- package/dist/components/timeline.js +3 -3
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/tokens.cjs.map +1 -1
- package/dist/components/tokens.js.map +1 -1
- package/dist/components/transitions.cjs.map +1 -1
- package/dist/components/transitions.js +1 -1
- package/dist/components/transitions.js.map +1 -1
- package/dist/components/ui.cjs.map +1 -1
- package/dist/components/ui.js +4 -4
- package/dist/components/ui.js.map +1 -1
- package/dist/components/vue.cjs.map +1 -1
- package/dist/components/vue.js +8 -8
- package/dist/components/vue.js.map +1 -1
- package/dist/components/webgl.cjs.map +1 -1
- package/dist/components/webgl.js +1 -1
- package/dist/components/webgl.js.map +1 -1
- package/dist/components/widgets.cjs +766 -212
- package/dist/components/widgets.cjs.map +1 -1
- package/dist/components/widgets.d.cts +207 -2
- package/dist/components/widgets.d.ts +207 -2
- package/dist/components/widgets.js +770 -221
- package/dist/components/widgets.js.map +1 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +10 -10
- package/dist/components.js.map +1 -1
- package/dist/element.cjs.map +1 -1
- package/dist/element.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +250 -1
- package/dist/llms.txt +13 -2
- package/dist/manifest.json +646 -1
- package/dist/presets/extended.cjs.map +1 -1
- package/dist/presets/extended.js.map +1 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.js.map +1 -1
- package/dist/runtime/format-apng.cjs +131 -0
- package/dist/runtime/format-apng.cjs.map +1 -0
- package/dist/runtime/format-apng.d.cts +250 -0
- package/dist/runtime/format-apng.d.ts +250 -0
- package/dist/runtime/format-apng.iife.js +2 -0
- package/dist/runtime/format-apng.iife.js.map +1 -0
- package/dist/runtime/format-apng.js +123 -0
- package/dist/runtime/format-apng.js.map +1 -0
- package/dist/runtime/format-css.cjs +5 -4
- package/dist/runtime/format-css.cjs.map +1 -1
- package/dist/runtime/format-css.js +5 -4
- package/dist/runtime/format-css.js.map +1 -1
- package/dist/runtime/format-gif.cjs +206 -0
- package/dist/runtime/format-gif.cjs.map +1 -0
- package/dist/runtime/format-gif.d.cts +223 -0
- package/dist/runtime/format-gif.d.ts +223 -0
- package/dist/runtime/format-gif.iife.js +2 -0
- package/dist/runtime/format-gif.iife.js.map +1 -0
- package/dist/runtime/format-gif.js +199 -0
- package/dist/runtime/format-gif.js.map +1 -0
- package/dist/runtime/format-motion.cjs +9 -8
- package/dist/runtime/format-motion.cjs.map +1 -1
- package/dist/runtime/format-motion.js +5 -4
- package/dist/runtime/format-motion.js.map +1 -1
- package/dist/runtime/format-sprite.cjs +226 -0
- package/dist/runtime/format-sprite.cjs.map +1 -0
- package/dist/runtime/format-sprite.d.cts +224 -0
- package/dist/runtime/format-sprite.d.ts +224 -0
- package/dist/runtime/format-sprite.iife.js +2 -0
- package/dist/runtime/format-sprite.iife.js.map +1 -0
- package/dist/runtime/format-sprite.js +216 -0
- package/dist/runtime/format-sprite.js.map +1 -0
- package/dist/runtime/format-svg.cjs +5 -4
- package/dist/runtime/format-svg.cjs.map +1 -1
- package/dist/runtime/format-svg.iife.js.map +1 -1
- package/dist/runtime/format-svg.js +4 -3
- package/dist/runtime/format-svg.js.map +1 -1
- package/dist/runtime/format-webp.cjs +123 -0
- package/dist/runtime/format-webp.cjs.map +1 -0
- package/dist/runtime/format-webp.d.cts +245 -0
- package/dist/runtime/format-webp.d.ts +245 -0
- package/dist/runtime/format-webp.iife.js +2 -0
- package/dist/runtime/format-webp.iife.js.map +1 -0
- package/dist/runtime/format-webp.js +115 -0
- package/dist/runtime/format-webp.js.map +1 -0
- package/dist/runtime/scroll.cjs +2 -2
- package/dist/runtime/scroll.cjs.map +1 -1
- package/dist/runtime/scroll.js +2 -2
- package/dist/runtime/scroll.js.map +1 -1
- package/dist/runtime/smooth.cjs +284 -0
- package/dist/runtime/smooth.cjs.map +1 -0
- package/dist/runtime/smooth.d.cts +137 -0
- package/dist/runtime/smooth.d.ts +137 -0
- package/dist/runtime/smooth.iife.js +2 -0
- package/dist/runtime/smooth.iife.js.map +1 -0
- package/dist/runtime/smooth.js +279 -0
- package/dist/runtime/smooth.js.map +1 -0
- package/dist/runtime/text.cjs +147 -0
- package/dist/runtime/text.cjs.map +1 -0
- package/dist/runtime/text.d.cts +65 -0
- package/dist/runtime/text.d.ts +65 -0
- package/dist/runtime/text.iife.js +2 -0
- package/dist/runtime/text.iife.js.map +1 -0
- package/dist/runtime/text.js +143 -0
- package/dist/runtime/text.js.map +1 -0
- package/dist/runtime.cjs +9 -8
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +9 -2
- package/dist/runtime.d.ts +9 -2
- package/dist/runtime.iife.js +1 -1
- package/dist/runtime.iife.js.map +1 -1
- package/dist/runtime.js +6 -5
- package/dist/runtime.js.map +1 -1
- package/dist/solid.cjs.map +1 -1
- package/dist/solid.js.map +1 -1
- package/dist/svelte.cjs.map +1 -1
- package/dist/svelte.js.map +1 -1
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js.map +1 -1
- package/dist/widgets.umd.js +1 -1
- package/dist/widgets.umd.js.map +1 -1
- package/docs/ROADMAP.md +2 -2
- package/docs/components/README.md +12 -7
- package/docs/components/usa-parallax-layers.md +38 -0
- package/docs/components/usa-route-transition.md +38 -0
- package/docs/components/usa-scroll-ring.md +32 -0
- package/docs/components/usa-smooth-scroll.md +60 -0
- package/docs/components/usa-text-splitter.md +60 -0
- package/docs/components.md +94 -0
- package/docs/mcp.md +50 -0
- package/docs/runtime/format-apng.md +59 -0
- package/docs/runtime/format-gif.md +60 -0
- package/docs/runtime/format-sprite.md +60 -0
- package/docs/runtime/format-webp.md +58 -0
- package/docs/runtime/smooth.md +60 -0
- package/docs/runtime/text.md +59 -0
- package/package.json +64 -2
- package/dist/chunks/keyframes-W-474DMc.js.map +0 -1
- package/dist/chunks/keyframes-ZheOkpt0.cjs.map +0 -1
- package/dist/chunks/tween-CBuWYpI-.cjs.map +0 -1
- package/dist/chunks/tween-CqX1JBuj.js.map +0 -1
package/docs/ROADMAP.md
CHANGED
|
@@ -52,11 +52,11 @@ Store 卡片显示 **「Requires: motionary/runtime/<module>」** 徽章(官
|
|
|
52
52
|
- 主线 B:**scroll 模块**(`motionary/runtime/scroll`)—— pin、scrub、markers、start / end 规则(自研,功能对标 ScrollTrigger,但不复制其代码或 API)。
|
|
53
53
|
- 格式:SVG SMIL 回放、路径变形、CSS 动画 SVG(`motionary/runtime/format-svg`)。
|
|
54
54
|
- 新组件:动效检查器面板、`<usa-scroll-scene>`(Requires: motionary/runtime/scroll)。
|
|
55
|
-
- **v10.3** — View Transitions 2.0:跨文档页面转场、共享元素动画。
|
|
55
|
+
- ✅ **v10.3** — View Transitions 2.0:跨文档页面转场、共享元素动画。
|
|
56
56
|
- 主线 B:**text 模块** —— 逐字 / 逐词 / 逐行拆分(保留可访问文本)。
|
|
57
57
|
- 格式:精灵图(TexturePacker / Aseprite JSON)、图片序列(`motionary/runtime/format-sprite`)。
|
|
58
58
|
- 新组件:路由转场容器、`<usa-text-splitter>`(`<usa-split-text>` 已被 4.x 文本组件占用)。
|
|
59
|
-
- **v10.4** — 滚动驱动 3.0:原生 `animation-timeline` 优先、JS 回退插件化。
|
|
59
|
+
- ✅ **v10.4** — 滚动驱动 3.0:原生 `animation-timeline` 优先、JS 回退插件化。
|
|
60
60
|
- 主线 A:发布 `motionary-mcp` MCP 服务器(`npx motionary-mcp`,stdio):`list_components`、`search_components`、`get_component`、`get_example`、`scaffold_snippet`(自动带上前置条件)。
|
|
61
61
|
- 主线 B:**smooth 模块** —— 平滑滚动(减少动态效果时停用)。
|
|
62
62
|
- 格式:GIF(自研 LZW)、APNG、动画 WebP 拆帧到 canvas。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Motionary components (
|
|
1
|
+
# Motionary components (198)
|
|
2
2
|
|
|
3
3
|
One page per `<usa-*>` element, generated from the source. Machine-readable: `motionary/manifest.json` · Pages `/components.json` · `/llms.txt` · `/llms-full.txt`. How to use these with an AI assistant: [AGENTS.md](../../AGENTS.md) and [the prompt guide](../ai-prompt-guide.md).
|
|
4
4
|
|
|
@@ -8,6 +8,7 @@ One page per `<usa-*>` element, generated from the source. Machine-readable: `mo
|
|
|
8
8
|
- [`<usa-dialog>`](usa-dialog.md) — Modal & drawer
|
|
9
9
|
- [`<usa-disclosure>`](usa-disclosure.md) — Accordion 2.0
|
|
10
10
|
- [`<usa-modal>`](usa-modal.md) — Modal dialog
|
|
11
|
+
- [`<usa-route-transition>`](usa-route-transition.md) — Route transition container
|
|
11
12
|
- [`<usa-sheet>`](usa-sheet.md) — Drawer / bottom sheet
|
|
12
13
|
- [`<usa-view-switch>`](usa-view-switch.md) — View switch
|
|
13
14
|
|
|
@@ -190,6 +191,7 @@ One page per `<usa-*>` element, generated from the source. Machine-readable: `mo
|
|
|
190
191
|
- [`<usa-magnetic>`](usa-magnetic.md) — Magnetic button
|
|
191
192
|
- [`<usa-press>`](usa-press.md) — Press feedback
|
|
192
193
|
- [`<usa-ripple>`](usa-ripple.md) — Ripple
|
|
194
|
+
- [`<usa-smooth-scroll>`](usa-smooth-scroll.md) — Smooth scroll · Requires: motionary/runtime/smooth
|
|
193
195
|
- [`<usa-spotlight>`](usa-spotlight.md) — Reveal highlight
|
|
194
196
|
- [`<usa-tilt>`](usa-tilt.md) — 3D tilt card
|
|
195
197
|
- [`<usa-volume-knob>`](usa-volume-knob.md) — Volume knob
|
|
@@ -207,6 +209,7 @@ One page per `<usa-*>` element, generated from the source. Machine-readable: `mo
|
|
|
207
209
|
- [`<usa-shimmer-text>`](usa-shimmer-text.md) — Shimmer text
|
|
208
210
|
- [`<usa-split-text>`](usa-split-text.md) — Split-text reveal
|
|
209
211
|
- [`<usa-text-rotate>`](usa-text-rotate.md) — Rotating words
|
|
212
|
+
- [`<usa-text-splitter>`](usa-text-splitter.md) — Text splitter · Requires: motionary/runtime/text
|
|
210
213
|
- [`<usa-typewriter>`](usa-typewriter.md) — Typewriter
|
|
211
214
|
- [`<usa-wave-text>`](usa-wave-text.md) — Wave text
|
|
212
215
|
|
|
@@ -238,16 +241,18 @@ One page per `<usa-*>` element, generated from the source. Machine-readable: `mo
|
|
|
238
241
|
|
|
239
242
|
- [`<usa-pack>`](usa-pack.md) — E-commerce pack
|
|
240
243
|
|
|
241
|
-
## gesture
|
|
242
|
-
|
|
243
|
-
- [`<usa-pinch-zoom>`](usa-pinch-zoom.md) — Pinch zoom
|
|
244
|
-
- [`<usa-swipe-deck>`](usa-swipe-deck.md) — Swipe cards deck
|
|
245
|
-
- [`<usa-swipeable>`](usa-swipeable.md) — Swipeable
|
|
246
|
-
|
|
247
244
|
## reveal
|
|
248
245
|
|
|
246
|
+
- [`<usa-parallax-layers>`](usa-parallax-layers.md) — Parallax layers
|
|
249
247
|
- [`<usa-reveal>`](usa-reveal.md) — Reveal
|
|
250
248
|
- [`<usa-scroll-progress>`](usa-scroll-progress.md) — Scroll progress bar
|
|
249
|
+
- [`<usa-scroll-ring>`](usa-scroll-ring.md) — Scroll progress ring
|
|
251
250
|
- [`<usa-scroll-scene>`](usa-scroll-scene.md) — Scroll scene · Requires: motionary/runtime/scroll
|
|
252
251
|
- [`<usa-scrolly>`](usa-scrolly.md) — Sticky scrollytelling
|
|
253
252
|
- [`<usa-stagger>`](usa-stagger.md) — Stagger list
|
|
253
|
+
|
|
254
|
+
## gesture
|
|
255
|
+
|
|
256
|
+
- [`<usa-pinch-zoom>`](usa-pinch-zoom.md) — Pinch zoom
|
|
257
|
+
- [`<usa-swipe-deck>`](usa-swipe-deck.md) — Swipe cards deck
|
|
258
|
+
- [`<usa-swipeable>`](usa-swipeable.md) — Swipeable
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# `<usa-parallax-layers>` — Parallax layers
|
|
2
|
+
|
|
3
|
+
> Generated from the source and the gallery catalog by `scripts/gen-component-docs.mjs` (same data as [components.json](https://harrisoncn.github.io/Motionary/components.json) and [llms-full.txt](https://harrisoncn.github.io/Motionary/llms-full.txt)).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
- **Category:** reveal · **since** 10.4
|
|
8
|
+
- **Import:** `import { defineParallaxLayers } from 'motionary/components/widgets'` then `defineParallaxLayers();`
|
|
9
|
+
- **CDN:** `<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>`
|
|
10
|
+
- **Attributes:** `range`, `engine`, `horizontal`, `pointer`, `strength`, `preview`
|
|
11
|
+
- **Events:** `usa:progress`
|
|
12
|
+
- **Slots:** —
|
|
13
|
+
- **Methods:** `layers()`
|
|
14
|
+
- **Source:** [src/components/widgets/parallax-layers.ts](../../src/components/widgets/parallax-layers.ts)
|
|
15
|
+
|
|
16
|
+
## Minimal example
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<usa-parallax-layers range="120">
|
|
20
|
+
<img data-depth="0.6" src="mountains.webp" alt="">
|
|
21
|
+
<h2 data-depth="-0.3">Above the clouds</h2>
|
|
22
|
+
</usa-parallax-layers>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## ES module
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
import { defineParallaxLayers } from 'motionary/components/widgets';
|
|
29
|
+
|
|
30
|
+
defineParallaxLayers(); // registers <usa-parallax-layers>
|
|
31
|
+
|
|
32
|
+
/* then use it in your HTML:
|
|
33
|
+
<usa-parallax-layers range="120">
|
|
34
|
+
<img data-depth="0.6" src="mountains.webp" alt="">
|
|
35
|
+
<h2 data-depth="-0.3">Above the clouds</h2>
|
|
36
|
+
</usa-parallax-layers>
|
|
37
|
+
*/
|
|
38
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# `<usa-route-transition>` — Route transition container
|
|
2
|
+
|
|
3
|
+
> Generated from the source and the gallery catalog by `scripts/gen-component-docs.mjs` (same data as [components.json](https://harrisoncn.github.io/Motionary/components.json) and [llms-full.txt](https://harrisoncn.github.io/Motionary/llms-full.txt)).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
- **Category:** transitions · **since** 10.3
|
|
8
|
+
- **Import:** `import { defineRouteTransition } from 'motionary/components/widgets'` then `defineRouteTransition();`
|
|
9
|
+
- **CDN:** `<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>`
|
|
10
|
+
- **Attributes:** `effect`, `engine`, `cross-document`
|
|
11
|
+
- **Events:** `usa:navigate`, `usa:navigated`
|
|
12
|
+
- **Slots:** —
|
|
13
|
+
- **Methods:** `navigate()`
|
|
14
|
+
- **Source:** [src/components/widgets/route-transition.ts](../../src/components/widgets/route-transition.ts)
|
|
15
|
+
|
|
16
|
+
## Minimal example
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<usa-route-transition id="app" effect="slide" cross-document>
|
|
20
|
+
<nav><a href="/">Home</a> <a href="/about">About</a></nav>
|
|
21
|
+
<h1 data-shared="title">Home</h1>
|
|
22
|
+
</usa-route-transition>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## ES module
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
import { defineRouteTransition } from 'motionary/components/widgets';
|
|
29
|
+
|
|
30
|
+
defineRouteTransition(); // registers <usa-route-transition>
|
|
31
|
+
|
|
32
|
+
/* then use it in your HTML:
|
|
33
|
+
<usa-route-transition id="app" effect="slide" cross-document>
|
|
34
|
+
<nav><a href="/">Home</a> <a href="/about">About</a></nav>
|
|
35
|
+
<h1 data-shared="title">Home</h1>
|
|
36
|
+
</usa-route-transition>
|
|
37
|
+
*/
|
|
38
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# `<usa-scroll-ring>` — Scroll progress ring
|
|
2
|
+
|
|
3
|
+
> Generated from the source and the gallery catalog by `scripts/gen-component-docs.mjs` (same data as [components.json](https://harrisoncn.github.io/Motionary/components.json) and [llms-full.txt](https://harrisoncn.github.io/Motionary/llms-full.txt)).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
- **Category:** reveal · **since** 10.4
|
|
8
|
+
- **Import:** `import { defineScrollRing } from 'motionary/components/widgets'` then `defineScrollRing();`
|
|
9
|
+
- **CDN:** `<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>`
|
|
10
|
+
- **Attributes:** `for`, `engine`, `label`, `back-to-top`, `size`, `thickness`, `horizontal`, `preview`
|
|
11
|
+
- **Events:** `usa:progress`, `usa:top`
|
|
12
|
+
- **Slots:** —
|
|
13
|
+
- **Methods:** —
|
|
14
|
+
- **Source:** [src/components/widgets/scroll-ring.ts](../../src/components/widgets/scroll-ring.ts)
|
|
15
|
+
|
|
16
|
+
## Minimal example
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<usa-scroll-ring label back-to-top></usa-scroll-ring>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## ES module
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import { defineScrollRing } from 'motionary/components/widgets';
|
|
26
|
+
|
|
27
|
+
defineScrollRing(); // registers <usa-scroll-ring>
|
|
28
|
+
|
|
29
|
+
/* then use it in your HTML:
|
|
30
|
+
<usa-scroll-ring label back-to-top></usa-scroll-ring>
|
|
31
|
+
*/
|
|
32
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# `<usa-smooth-scroll>` — Smooth scroll
|
|
2
|
+
|
|
3
|
+
> Generated from the source and the gallery catalog by `scripts/gen-component-docs.mjs` (same data as [components.json](https://harrisoncn.github.io/Motionary/components.json) and [llms-full.txt](https://harrisoncn.github.io/Motionary/llms-full.txt)).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
- **Category:** interaction · **since** 10.4
|
|
8
|
+
- **Import:** `import { defineSmoothScroll } from 'motionary/components/widgets'` then `defineSmoothScroll();`
|
|
9
|
+
- **CDN:** `<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>`
|
|
10
|
+
- **Attributes:** `lerp`, `duration`, `ease`, `wheel-multiplier`, `horizontal`, `touch`, `anchors`, `offset`, `wrapper`, `preview`
|
|
11
|
+
- **Events:** `usa:scroll`, `usa:ready`, `usa:runtime-missing`
|
|
12
|
+
- **Slots:** —
|
|
13
|
+
- **Methods:** `glideTo()`, `stop()`, `resume()`
|
|
14
|
+
- **Source:** [src/components/widgets/smooth-scroll.ts](../../src/components/widgets/smooth-scroll.ts)
|
|
15
|
+
|
|
16
|
+
## Prerequisites — Requires: motionary/runtime/smooth
|
|
17
|
+
|
|
18
|
+
1. **Install:** `npm i motionary`
|
|
19
|
+
2. **Import order & registration:** 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).
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
import { use } from 'motionary/runtime';
|
|
23
|
+
import { smooth } from 'motionary/runtime/smooth';
|
|
24
|
+
import { defineSmoothScroll } from 'motionary/components/widgets';
|
|
25
|
+
|
|
26
|
+
use(smooth);
|
|
27
|
+
defineSmoothScroll(); // registers <usa-smooth-scroll> — after the prerequisites
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. **CDN:**
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
34
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/smooth.iife.js"></script>
|
|
35
|
+
<!-- then the component bundles -->
|
|
36
|
+
<script src="https://unpkg.com/motionary@10/dist/components.umd.js"></script>
|
|
37
|
+
<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Minimal example
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<usa-smooth-scroll lerp="0.1" offset="64"></usa-smooth-scroll>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## ES module
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
import { use } from 'motionary/runtime';
|
|
50
|
+
import { smooth } from 'motionary/runtime/smooth';
|
|
51
|
+
|
|
52
|
+
use(smooth);
|
|
53
|
+
import { defineSmoothScroll } from 'motionary/components/widgets';
|
|
54
|
+
|
|
55
|
+
defineSmoothScroll(); // registers <usa-smooth-scroll>
|
|
56
|
+
|
|
57
|
+
/* then use it in your HTML:
|
|
58
|
+
<usa-smooth-scroll lerp="0.1" offset="64"></usa-smooth-scroll>
|
|
59
|
+
*/
|
|
60
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# `<usa-text-splitter>` — Text splitter
|
|
2
|
+
|
|
3
|
+
> Generated from the source and the gallery catalog by `scripts/gen-component-docs.mjs` (same data as [components.json](https://harrisoncn.github.io/Motionary/components.json) and [llms-full.txt](https://harrisoncn.github.io/Motionary/llms-full.txt)).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
- **Category:** text · **since** 10.3
|
|
8
|
+
- **Import:** `import { defineTextSplitter } from 'motionary/components/widgets'` then `defineTextSplitter();`
|
|
9
|
+
- **CDN:** `<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>`
|
|
10
|
+
- **Attributes:** `split`, `effect`, `stagger`, `duration`, `loop`, `trigger`
|
|
11
|
+
- **Events:** `usa:split`, `usa:done`, `usa:runtime-missing`
|
|
12
|
+
- **Slots:** —
|
|
13
|
+
- **Methods:** `replay()`, `pieces()`
|
|
14
|
+
- **Source:** [src/components/widgets/text-splitter.ts](../../src/components/widgets/text-splitter.ts)
|
|
15
|
+
|
|
16
|
+
## Prerequisites — Requires: motionary/runtime/text
|
|
17
|
+
|
|
18
|
+
1. **Install:** `npm i motionary`
|
|
19
|
+
2. **Import order & registration:** 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).
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
import { use } from 'motionary/runtime';
|
|
23
|
+
import { text } from 'motionary/runtime/text';
|
|
24
|
+
import { defineTextSplitter } from 'motionary/components/widgets';
|
|
25
|
+
|
|
26
|
+
use(text);
|
|
27
|
+
defineTextSplitter(); // registers <usa-text-splitter> — after the prerequisites
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. **CDN:**
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
34
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/text.iife.js"></script>
|
|
35
|
+
<!-- then the component bundles -->
|
|
36
|
+
<script src="https://unpkg.com/motionary@10/dist/components.umd.js"></script>
|
|
37
|
+
<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Minimal example
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<usa-text-splitter split="chars" effect="rise" stagger="30">Motion, made simple.</usa-text-splitter>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## ES module
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
import { use } from 'motionary/runtime';
|
|
50
|
+
import { text } from 'motionary/runtime/text';
|
|
51
|
+
|
|
52
|
+
use(text);
|
|
53
|
+
import { defineTextSplitter } from 'motionary/components/widgets';
|
|
54
|
+
|
|
55
|
+
defineTextSplitter(); // registers <usa-text-splitter>
|
|
56
|
+
|
|
57
|
+
/* then use it in your HTML:
|
|
58
|
+
<usa-text-splitter split="chars" effect="rise" stagger="30">Motion, made simple.</usa-text-splitter>
|
|
59
|
+
*/
|
|
60
|
+
```
|
package/docs/components.md
CHANGED
|
@@ -1407,6 +1407,66 @@ defineScrollScene(); // registers <usa-scroll-scene> — after the prerequisites
|
|
|
1407
1407
|
</usa-scroll-scene>
|
|
1408
1408
|
```
|
|
1409
1409
|
|
|
1410
|
+
### `<usa-text-splitter>` — Requires: motionary/runtime/text
|
|
1411
|
+
|
|
1412
|
+
- **Install:** `npm i motionary`
|
|
1413
|
+
- **Import order & registration:** 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).
|
|
1414
|
+
|
|
1415
|
+
```js
|
|
1416
|
+
import { use } from 'motionary/runtime';
|
|
1417
|
+
import { text } from 'motionary/runtime/text';
|
|
1418
|
+
import { defineTextSplitter } from 'motionary/components/widgets';
|
|
1419
|
+
|
|
1420
|
+
use(text);
|
|
1421
|
+
defineTextSplitter(); // registers <usa-text-splitter> — after the prerequisites
|
|
1422
|
+
```
|
|
1423
|
+
|
|
1424
|
+
- **CDN:**
|
|
1425
|
+
|
|
1426
|
+
```html
|
|
1427
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
1428
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/text.iife.js"></script>
|
|
1429
|
+
<!-- then the component bundles -->
|
|
1430
|
+
<script src="https://unpkg.com/motionary@10/dist/components.umd.js"></script>
|
|
1431
|
+
<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>
|
|
1432
|
+
```
|
|
1433
|
+
|
|
1434
|
+
- **Minimal example:**
|
|
1435
|
+
|
|
1436
|
+
```html
|
|
1437
|
+
<usa-text-splitter split="chars" effect="rise" stagger="30">Motion, made simple.</usa-text-splitter>
|
|
1438
|
+
```
|
|
1439
|
+
|
|
1440
|
+
### `<usa-smooth-scroll>` — Requires: motionary/runtime/smooth
|
|
1441
|
+
|
|
1442
|
+
- **Install:** `npm i motionary`
|
|
1443
|
+
- **Import order & registration:** 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).
|
|
1444
|
+
|
|
1445
|
+
```js
|
|
1446
|
+
import { use } from 'motionary/runtime';
|
|
1447
|
+
import { smooth } from 'motionary/runtime/smooth';
|
|
1448
|
+
import { defineSmoothScroll } from 'motionary/components/widgets';
|
|
1449
|
+
|
|
1450
|
+
use(smooth);
|
|
1451
|
+
defineSmoothScroll(); // registers <usa-smooth-scroll> — after the prerequisites
|
|
1452
|
+
```
|
|
1453
|
+
|
|
1454
|
+
- **CDN:**
|
|
1455
|
+
|
|
1456
|
+
```html
|
|
1457
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
1458
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/smooth.iife.js"></script>
|
|
1459
|
+
<!-- then the component bundles -->
|
|
1460
|
+
<script src="https://unpkg.com/motionary@10/dist/components.umd.js"></script>
|
|
1461
|
+
<script src="https://unpkg.com/motionary@10/dist/widgets.umd.js"></script>
|
|
1462
|
+
```
|
|
1463
|
+
|
|
1464
|
+
- **Minimal example:**
|
|
1465
|
+
|
|
1466
|
+
```html
|
|
1467
|
+
<usa-smooth-scroll lerp="0.1" offset="64"></usa-smooth-scroll>
|
|
1468
|
+
```
|
|
1469
|
+
|
|
1410
1470
|
<!-- prereqs:end -->
|
|
1411
1471
|
|
|
1412
1472
|
### v10.2 Scroll scenes (`motionary/runtime/scroll`) + SVG loader + `data-motion` in core: `<usa-scroll-scene>`, `<usa-motion-inspector>` (`components/widgets`)
|
|
@@ -1426,6 +1486,40 @@ defineScrollScene(); // registers <usa-scroll-scene> — after the prerequisites
|
|
|
1426
1486
|
|
|
1427
1487
|
Declarative motion with just the core: `applyMotionAttributes(createMotion())` + `data-motion="enter: fade-up 600ms"`.
|
|
1428
1488
|
|
|
1489
|
+
### v10.3 View Transitions 2.0 + text splitting (`motionary/runtime/text`) + sprite sheets: `<usa-route-transition>`, `<usa-text-splitter>` (`components/widgets`)
|
|
1490
|
+
|
|
1491
|
+
```html
|
|
1492
|
+
<usa-route-transition id="app" effect="slide" cross-document>
|
|
1493
|
+
<nav><a href="/">Home</a> <a href="/about">About</a></nav>
|
|
1494
|
+
<h1 data-shared="title">Home</h1>
|
|
1495
|
+
</usa-route-transition>
|
|
1496
|
+
<usa-text-splitter split="chars" effect="rise" stagger="30">Motion, made simple.</usa-text-splitter>
|
|
1497
|
+
```
|
|
1498
|
+
|
|
1499
|
+
| Element | Attributes | Methods / events |
|
|
1500
|
+
|---|---|---|
|
|
1501
|
+
| `<usa-route-transition>` | `effect` (fade, slide, zoom), `engine` (auto, view-transition, waapi), `selector`, `history` (push, replace, off), `links` (inside, document), `cross-document`; `[data-to]`, `<template data-route>`, `[data-shared]` | `navigate(url)`, `current`; `usa:navigate`, `usa:navigated` |
|
|
1502
|
+
| `<usa-text-splitter>` (Requires: motionary/runtime/text) | `split` (chars, words, lines), `effect` (rise, fade, blur, flip, wave), `stagger`, `duration`, `trigger` (view, load, hover), `loop` | `replay()`, `pieces()`; `usa:split`, `usa:done`, `usa:runtime-missing` |
|
|
1503
|
+
|
|
1504
|
+
### v10.4 Scroll-driven 3.0 + smooth scrolling (`motionary/runtime/smooth`) + animated images: `<usa-scroll-ring>`, `<usa-parallax-layers>`, `<usa-smooth-scroll>` (`components/widgets`) · `motionary-mcp`
|
|
1505
|
+
|
|
1506
|
+
```html
|
|
1507
|
+
<usa-scroll-ring label back-to-top></usa-scroll-ring>
|
|
1508
|
+
<usa-parallax-layers range="120">
|
|
1509
|
+
<img data-depth="0.6" src="mountains.webp" alt="">
|
|
1510
|
+
<h2 data-depth="-0.3">Above the clouds</h2>
|
|
1511
|
+
</usa-parallax-layers>
|
|
1512
|
+
<usa-smooth-scroll lerp="0.1" offset="64"></usa-smooth-scroll>
|
|
1513
|
+
```
|
|
1514
|
+
|
|
1515
|
+
| Element | Attributes | Methods / events |
|
|
1516
|
+
|---|---|---|
|
|
1517
|
+
| `<usa-scroll-ring>` | `for` (page or a selector), `engine` (auto, native, js), `label`, `back-to-top`, `size`, `thickness`, `horizontal`, `preview` | `progress`, `engine`; `usa:progress`, `usa:top` |
|
|
1518
|
+
| `<usa-parallax-layers>` | `range`, `engine` (auto, native, js), `horizontal`, `pointer`, `strength`, `preview`; children `[data-depth]` | `layers()`, `progress`; `usa:progress` |
|
|
1519
|
+
| `<usa-smooth-scroll>` (Requires: motionary/runtime/smooth) | `wrapper`, `lerp`, `duration`, `ease`, `wheel-multiplier`, `horizontal`, `touch`, `anchors`, `offset`, `preview` | `glideTo(target)`, `stop()`, `resume()`, `instance`; `usa:ready`, `usa:scroll`, `usa:runtime-missing` |
|
|
1520
|
+
|
|
1521
|
+
MCP: `npx -y -p motionary motionary-mcp` — see [docs/mcp.md](docs/mcp.md).
|
|
1522
|
+
|
|
1429
1523
|
## Frameworks
|
|
1430
1524
|
|
|
1431
1525
|
Custom elements work in every framework. Register once (e.g. in your entry file), then use the tags.
|
package/docs/mcp.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# `motionary-mcp` — the component catalog as an MCP server
|
|
2
|
+
|
|
3
|
+
`motionary-mcp` (10.4+) is a **read-only** [Model Context Protocol](https://modelcontextprotocol.io) server that ships inside the `motionary` package. AI assistants that speak MCP (Claude Desktop / Claude Code, Cursor, VS Code, Windsurf, Zed, …) can ask it which `<usa-*>` component fits a UI need, read the component's API and get a snippet that already installs, imports and registers every prerequisite in the right order.
|
|
4
|
+
|
|
5
|
+
- **Zero dependencies**, stdio transport (newline-delimited JSON-RPC 2.0), protocol versions `2025-06-18`, `2025-03-26`, `2024-11-05`.
|
|
6
|
+
- **Read-only**: it answers from the AI manifest bundled in the package (`motionary/manifest.json`, the same data as the site's `components.json` / `llms.txt`). It never writes files, executes code or touches the network. Every tool is annotated `readOnlyHint: true`.
|
|
7
|
+
- Tested in CI with the official MCP TypeScript SDK client over stdio.
|
|
8
|
+
|
|
9
|
+
## Run it
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx -y -p motionary motionary-mcp # any machine with Node 18+
|
|
13
|
+
npx motionary-mcp # inside a project that has motionary installed
|
|
14
|
+
MOTIONARY_MANIFEST=./manifest.json npx -p motionary motionary-mcp # another manifest
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Client configuration (the usual `mcpServers` shape):
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"mcpServers": {
|
|
22
|
+
"motionary": { "command": "npx", "args": ["-y", "-p", "motionary", "motionary-mcp"] }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Claude Code: `claude mcp add motionary -- npx -y -p motionary motionary-mcp`.
|
|
28
|
+
|
|
29
|
+
## Tools
|
|
30
|
+
|
|
31
|
+
| Tool | Arguments | Returns |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `list_components` | `category?`, `requires?` (`scroll`, `motionary/runtime/text`, `none`), `since?` (`10.0`), `limit?` | tag, title, category, import path, prerequisites, version introduced |
|
|
34
|
+
| `search_components` | `query`, `limit?` | best matches for a UI need ("animated counter", "pinned scroll scene") with a score |
|
|
35
|
+
| `get_component` | `tag` (`usa-tilt`, `tilt` or `<usa-tilt>`) | attributes, events, slots, methods, import / define, CDN, prerequisites (install, import + register order, CDN order), example, variants |
|
|
36
|
+
| `get_example` | `tag`, `variant?` (`html` = CDN, `esm`, or a variant id) | a working example |
|
|
37
|
+
| `scaffold_snippet` | `tags[]`, `framework?` (`html`, `esm`, `react`, `vue`, `svelte`) | one snippet for several components, prerequisites first |
|
|
38
|
+
|
|
39
|
+
Unknown tags come back as tool errors (`isError: true`) with a hint to search first.
|
|
40
|
+
|
|
41
|
+
## Resources
|
|
42
|
+
|
|
43
|
+
- `motionary://manifest` — the whole manifest (JSON)
|
|
44
|
+
- `motionary://llms.txt` — the short catalog text
|
|
45
|
+
- `motionary://component/{tag}` — one component (JSON; resource template)
|
|
46
|
+
|
|
47
|
+
## Notes
|
|
48
|
+
|
|
49
|
+
- The server version follows its own track (`0.x` until Motionary 11.0 makes it `1.0`); the catalog version is the installed `motionary` version (`initialize` → `instructions`).
|
|
50
|
+
- MCP 2.0 tools (`suggest_motion`, `validate_snippet`) arrive in 10.7.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# motionary/runtime/format-apng — APNG loader
|
|
2
|
+
|
|
3
|
+
> Generated from `showcase/catalog/prereqs.js` by `scripts/gen-runtime-docs.mjs` — edit the data, not this page.
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
Part of Motionary's own zero-dependency runtime. Size budget: **3.0 KB gzip** (enforced in CI).
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
1. **Install:** `npm i motionary`
|
|
12
|
+
2. **Import path:** `motionary/runtime/format-apng`
|
|
13
|
+
3. **CDN:**
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
17
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-apng.iife.js"></script>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
ESM from a CDN: `https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-apng.js`
|
|
21
|
+
|
|
22
|
+
4. **Import order & registration:** 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).
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import { use } from 'motionary/runtime';
|
|
26
|
+
import { formatApng } from 'motionary/runtime/format-apng';
|
|
27
|
+
use(formatApng);
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import { use } from 'motionary/runtime';
|
|
34
|
+
import { formatApng, loadApng, animatedImagePlayer } from 'motionary/runtime/format-apng';
|
|
35
|
+
use(formatApng);
|
|
36
|
+
const anim = await loadApng('/sticker.png');
|
|
37
|
+
animatedImagePlayer(document.querySelector('canvas'), anim);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Exports
|
|
41
|
+
|
|
42
|
+
`formatApng` · `parseApng` · `apngFramePngs` · `decodeApng` · `loadApng` · `animatedImagePlayer`
|
|
43
|
+
|
|
44
|
+
## Compatibility
|
|
45
|
+
|
|
46
|
+
| Feature | Supported | Notes |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| acTL / fcTL / fdAT, frame offsets and delays | ✅ yes | |
|
|
49
|
+
| dispose_op none / background / previous | ✅ yes | first-frame previous → background (spec) |
|
|
50
|
+
| blend_op source / over | ✅ yes | |
|
|
51
|
+
| hidden default image (IDAT not part of the animation) | ✅ yes | |
|
|
52
|
+
| palette / tRNS / gAMA / iCCP / sRGB / sBIT copied into frames | ✅ yes | |
|
|
53
|
+
| plain (non-animated) PNG | ✅ yes | one frame |
|
|
54
|
+
| decoding | ✅ yes | the browser's PNG decoder (createImageBitmap), or your own { decode } |
|
|
55
|
+
| SSR / workers | ◐ partial | parsing is pure; decoding needs createImageBitmap (workers OK) or { decode } |
|
|
56
|
+
|
|
57
|
+
## Components that need it
|
|
58
|
+
|
|
59
|
+
_None yet._
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# motionary/runtime/format-gif — GIF decoder
|
|
2
|
+
|
|
3
|
+
> Generated from `showcase/catalog/prereqs.js` by `scripts/gen-runtime-docs.mjs` — edit the data, not this page.
|
|
4
|
+
|
|
5
|
+
Decode animated GIFs (own LZW decoder, no DOM) into composited RGBA frames and play / scrub / reverse them on a canvas as a runtime timeline.
|
|
6
|
+
|
|
7
|
+
Part of Motionary's own zero-dependency runtime. Size budget: **3.0 KB gzip** (enforced in CI).
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
1. **Install:** `npm i motionary`
|
|
12
|
+
2. **Import path:** `motionary/runtime/format-gif`
|
|
13
|
+
3. **CDN:**
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
17
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-gif.iife.js"></script>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
ESM from a CDN: `https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-gif.js`
|
|
21
|
+
|
|
22
|
+
4. **Import order & registration:** 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).
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import { use } from 'motionary/runtime';
|
|
26
|
+
import { formatGif } from 'motionary/runtime/format-gif';
|
|
27
|
+
use(formatGif);
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import { use } from 'motionary/runtime';
|
|
34
|
+
import { formatGif, loadGif, animatedImagePlayer } from 'motionary/runtime/format-gif';
|
|
35
|
+
use(formatGif);
|
|
36
|
+
const gif = await loadGif('/loader.gif');
|
|
37
|
+
const player = animatedImagePlayer(document.querySelector('canvas'), gif);
|
|
38
|
+
player.pause(); player.progress = 0.5; // scrub
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Exports
|
|
42
|
+
|
|
43
|
+
`formatGif` · `decodeGif` · `loadGif` · `lzwDecode` · `animatedImagePlayer`
|
|
44
|
+
|
|
45
|
+
## Compatibility
|
|
46
|
+
|
|
47
|
+
| Feature | Supported | Notes |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| GIF87a / GIF89a | ✅ yes | |
|
|
50
|
+
| global + local palettes, transparency | ✅ yes | |
|
|
51
|
+
| interlaced frames | ✅ yes | 4-pass row order |
|
|
52
|
+
| disposal 0–3 (none / keep / background / previous) | ✅ yes | background clears to transparent, like browsers |
|
|
53
|
+
| frame delays, NETSCAPE2.0 / ANIMEXTS loop count | ✅ yes | delays ≤ 10 ms play at 100 ms, like browsers |
|
|
54
|
+
| truncated files | ◐ partial | decodes what is there |
|
|
55
|
+
| plain-text extension | ✕ no | ignored (browsers ignore it too) |
|
|
56
|
+
| SSR / workers | ✅ yes | decoding is pure; the player needs a (Offscreen)Canvas |
|
|
57
|
+
|
|
58
|
+
## Components that need it
|
|
59
|
+
|
|
60
|
+
_None yet._
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# motionary/runtime/format-sprite — Sprite sheets & image sequences
|
|
2
|
+
|
|
3
|
+
> Generated from `showcase/catalog/prereqs.js` by `scripts/gen-runtime-docs.mjs` — edit the data, not this page.
|
|
4
|
+
|
|
5
|
+
Play TexturePacker / Aseprite sprite sheets and numbered image sequences on a canvas or an element background, as runtime timelines (scrubbable).
|
|
6
|
+
|
|
7
|
+
Part of Motionary's own zero-dependency runtime. Size budget: **3.0 KB gzip** (enforced in CI).
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
1. **Install:** `npm i motionary`
|
|
12
|
+
2. **Import path:** `motionary/runtime/format-sprite`
|
|
13
|
+
3. **CDN:**
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime.iife.js"></script>
|
|
17
|
+
<script src="https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-sprite.iife.js"></script>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
ESM from a CDN: `https://cdn.jsdelivr.net/npm/motionary@10/dist/runtime/format-sprite.js`
|
|
21
|
+
|
|
22
|
+
4. **Import order & registration:** 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).
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import { use } from 'motionary/runtime';
|
|
26
|
+
import { formatSprite } from 'motionary/runtime/format-sprite';
|
|
27
|
+
use(formatSprite);
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import { use } from 'motionary/runtime';
|
|
34
|
+
import { formatSprite, parseSpriteSheet, spritePlayer } from 'motionary/runtime/format-sprite';
|
|
35
|
+
use(formatSprite);
|
|
36
|
+
const sheet = parseSpriteSheet(await (await fetch('/slime.json')).json());
|
|
37
|
+
const img = new Image(); img.src = '/slime.png'; await img.decode();
|
|
38
|
+
spritePlayer(document.querySelector('canvas'), sheet, img, { tag: 'bounce' });
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Exports
|
|
42
|
+
|
|
43
|
+
`formatSprite` · `parseSpriteSheet` · `gridSheet` · `frameOrder` · `drawFrame` · `spritePlayer` · `imageSequence` · `preloadImages` · `sequencePlayer`
|
|
44
|
+
|
|
45
|
+
## Compatibility
|
|
46
|
+
|
|
47
|
+
| Feature | Supported | Notes |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| TexturePacker JSON (hash + array) | ✅ yes | trimmed (spriteSourceSize / sourceSize) and rotated frames |
|
|
50
|
+
| Aseprite JSON (hash + array), per-frame duration | ✅ yes | |
|
|
51
|
+
| Aseprite frameTags: forward / reverse / pingpong / pingpong_reverse | ✅ yes | |
|
|
52
|
+
| plain grid sheets | ✅ yes | gridSheet(cols, rows, w, h) |
|
|
53
|
+
| image sequences (frame_{0001}.webp) | ✅ yes | preloading, cover-fit drawing, scrub via progress |
|
|
54
|
+
| multipack (several atlas images) | ✕ no | load each sheet separately |
|
|
55
|
+
| Aseprite slices / layers | ✕ no | frames only |
|
|
56
|
+
| SSR / workers | ◐ partial | parsing is pure; players need a canvas (OffscreenCanvas works) |
|
|
57
|
+
|
|
58
|
+
## Components that need it
|
|
59
|
+
|
|
60
|
+
_None yet._
|