use-scroll-animate 6.0.1 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +157 -373
  3. package/README_ja.md +171 -145
  4. package/README_zh.md +169 -167
  5. package/dist/chunks/{base-B5i8qQPR.cjs → base-BaQV-2ha.cjs} +3 -3
  6. package/dist/chunks/base-BaQV-2ha.cjs.map +1 -0
  7. package/dist/chunks/{base-C3Sw9sAO.js → base-Yno7N2eC.js} +3 -3
  8. package/dist/chunks/base-Yno7N2eC.js.map +1 -0
  9. package/dist/chunks/{core-qpECfEkb.cjs → core-B5T0dhFH.cjs} +14 -210
  10. package/dist/chunks/core-B5T0dhFH.cjs.map +1 -0
  11. package/dist/chunks/{core-BDcszY4L.cjs → core-BGAyaY6L.cjs} +2 -2
  12. package/dist/chunks/{core-BDcszY4L.cjs.map → core-BGAyaY6L.cjs.map} +1 -1
  13. package/dist/chunks/{core-BTf__I-8.js → core-BIOaYdgN.js} +2 -2
  14. package/dist/chunks/{core-BTf__I-8.js.map → core-BIOaYdgN.js.map} +1 -1
  15. package/dist/chunks/{core-DN3hHbHh.js → core-CUGCsMsJ.js} +2 -2
  16. package/dist/chunks/{core-DN3hHbHh.js.map → core-CUGCsMsJ.js.map} +1 -1
  17. package/dist/chunks/{core-mV_TPgG_.js → core-D7cVumUu.js} +11 -203
  18. package/dist/chunks/core-D7cVumUu.js.map +1 -0
  19. package/dist/chunks/{core-BjOYKSrV.cjs → core-zq17EeCI.cjs} +2 -2
  20. package/dist/chunks/{core-BjOYKSrV.cjs.map → core-zq17EeCI.cjs.map} +1 -1
  21. package/dist/chunks/{fx-ChjxrMBo.js → fx-BqDeFywO.js} +2 -2
  22. package/dist/chunks/{fx-ChjxrMBo.js.map → fx-BqDeFywO.js.map} +1 -1
  23. package/dist/chunks/{fx-B8hk1Fby.cjs → fx-lBGVtQO1.cjs} +2 -2
  24. package/dist/chunks/{fx-B8hk1Fby.cjs.map → fx-lBGVtQO1.cjs.map} +1 -1
  25. package/dist/chunks/presets-BYBVJVeP.js +226 -0
  26. package/dist/chunks/presets-BYBVJVeP.js.map +1 -0
  27. package/dist/chunks/presets-CUHys3sK.cjs +233 -0
  28. package/dist/chunks/presets-CUHys3sK.cjs.map +1 -0
  29. package/dist/chunks/{spring-CckMe3x0.js → spring-DfQO5USi.js} +2 -2
  30. package/dist/chunks/{spring-CckMe3x0.js.map → spring-DfQO5USi.js.map} +1 -1
  31. package/dist/chunks/{spring--oZh55tB.cjs → spring-Dgx187Vh.cjs} +2 -2
  32. package/dist/chunks/{spring--oZh55tB.cjs.map → spring-Dgx187Vh.cjs.map} +1 -1
  33. package/dist/chunks/{stagger-CLc3j58T.cjs → stagger-CCFyhzSw.cjs} +3 -3
  34. package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -0
  35. package/dist/chunks/{stagger-BFAhKknX.js → stagger-DtMKo2SK.js} +3 -3
  36. package/dist/chunks/stagger-DtMKo2SK.js.map +1 -0
  37. package/dist/chunks/{variants-DxPmgrNX.cjs → variants-BhjyddG8.cjs} +2 -2
  38. package/dist/chunks/{variants-DxPmgrNX.cjs.map → variants-BhjyddG8.cjs.map} +1 -1
  39. package/dist/chunks/{variants-Bsevy6Xm.js → variants-VNscPeTD.js} +2 -2
  40. package/dist/chunks/{variants-Bsevy6Xm.js.map → variants-VNscPeTD.js.map} +1 -1
  41. package/dist/components/a11y.cjs +4 -4
  42. package/dist/components/a11y.cjs.map +1 -1
  43. package/dist/components/a11y.d.cts +2 -2
  44. package/dist/components/a11y.d.ts +2 -2
  45. package/dist/components/a11y.js +5 -5
  46. package/dist/components/a11y.js.map +1 -1
  47. package/dist/components/angular.cjs +8 -8
  48. package/dist/components/angular.cjs.map +1 -1
  49. package/dist/components/angular.d.cts +22 -22
  50. package/dist/components/angular.d.ts +22 -22
  51. package/dist/components/angular.js +8 -8
  52. package/dist/components/angular.js.map +1 -1
  53. package/dist/components/background.cjs +3 -3
  54. package/dist/components/background.cjs.map +1 -1
  55. package/dist/components/background.css +1 -1
  56. package/dist/components/background.d.cts +1 -1
  57. package/dist/components/background.d.ts +1 -1
  58. package/dist/components/background.js +3 -3
  59. package/dist/components/background.js.map +1 -1
  60. package/dist/components/bridge.cjs +2 -2
  61. package/dist/components/bridge.cjs.map +1 -1
  62. package/dist/components/bridge.d.cts +1 -1
  63. package/dist/components/bridge.d.ts +1 -1
  64. package/dist/components/bridge.js +2 -2
  65. package/dist/components/bridge.js.map +1 -1
  66. package/dist/components/cards.cjs +3 -3
  67. package/dist/components/cards.cjs.map +1 -1
  68. package/dist/components/cards.css +1 -1
  69. package/dist/components/cards.d.cts +1 -1
  70. package/dist/components/cards.d.ts +1 -1
  71. package/dist/components/cards.js +3 -3
  72. package/dist/components/cards.js.map +1 -1
  73. package/dist/components/click.cjs +4 -4
  74. package/dist/components/click.cjs.map +1 -1
  75. package/dist/components/click.css +1 -1
  76. package/dist/components/click.d.cts +1 -1
  77. package/dist/components/click.d.ts +1 -1
  78. package/dist/components/click.js +4 -4
  79. package/dist/components/click.js.map +1 -1
  80. package/dist/components/depth.cjs +4 -4
  81. package/dist/components/depth.cjs.map +1 -1
  82. package/dist/components/depth.css +1 -1
  83. package/dist/components/depth.d.cts +1 -1
  84. package/dist/components/depth.d.ts +1 -1
  85. package/dist/components/depth.js +4 -4
  86. package/dist/components/depth.js.map +1 -1
  87. package/dist/components/effects.cjs +13 -13
  88. package/dist/components/effects.cjs.map +1 -1
  89. package/dist/components/effects.d.cts +2 -2
  90. package/dist/components/effects.d.ts +2 -2
  91. package/dist/components/effects.js +13 -13
  92. package/dist/components/effects.js.map +1 -1
  93. package/dist/components/feedback.cjs +2 -2
  94. package/dist/components/feedback.cjs.map +1 -1
  95. package/dist/components/feedback.css +1 -1
  96. package/dist/components/feedback.d.cts +1 -1
  97. package/dist/components/feedback.d.ts +1 -1
  98. package/dist/components/feedback.js +2 -2
  99. package/dist/components/feedback.js.map +1 -1
  100. package/dist/components/fx.cjs +10 -10
  101. package/dist/components/fx.cjs.map +1 -1
  102. package/dist/components/fx.css +1 -1
  103. package/dist/components/fx.d.cts +2 -2
  104. package/dist/components/fx.d.ts +2 -2
  105. package/dist/components/fx.js +10 -10
  106. package/dist/components/fx.js.map +1 -1
  107. package/dist/components/gesture.cjs +4 -4
  108. package/dist/components/gesture.cjs.map +1 -1
  109. package/dist/components/gesture.css +1 -1
  110. package/dist/components/gesture.d.cts +1 -1
  111. package/dist/components/gesture.d.ts +1 -1
  112. package/dist/components/gesture.js +5 -5
  113. package/dist/components/gesture.js.map +1 -1
  114. package/dist/components/interaction.cjs +2 -2
  115. package/dist/components/interaction.cjs.map +1 -1
  116. package/dist/components/interaction.css +1 -1
  117. package/dist/components/interaction.d.cts +1 -1
  118. package/dist/components/interaction.d.ts +1 -1
  119. package/dist/components/interaction.js +2 -2
  120. package/dist/components/interaction.js.map +1 -1
  121. package/dist/components/jsx.d.cts +2 -2
  122. package/dist/components/jsx.d.ts +2 -2
  123. package/dist/components/layout.cjs +2 -2
  124. package/dist/components/layout.cjs.map +1 -1
  125. package/dist/components/layout.css +1 -1
  126. package/dist/components/layout.d.cts +1 -1
  127. package/dist/components/layout.d.ts +1 -1
  128. package/dist/components/layout.js +2 -2
  129. package/dist/components/layout.js.map +1 -1
  130. package/dist/components/lazy.cjs +2 -2
  131. package/dist/components/lazy.cjs.map +1 -1
  132. package/dist/components/lazy.d.cts +2 -2
  133. package/dist/components/lazy.d.ts +2 -2
  134. package/dist/components/lazy.js +2 -2
  135. package/dist/components/lazy.js.map +1 -1
  136. package/dist/components/lite.cjs +45 -41
  137. package/dist/components/lite.cjs.map +1 -1
  138. package/dist/components/lite.js +45 -41
  139. package/dist/components/lite.js.map +1 -1
  140. package/dist/components/packs.cjs +2 -2
  141. package/dist/components/packs.cjs.map +1 -1
  142. package/dist/components/packs.css +1 -1
  143. package/dist/components/packs.d.cts +1 -1
  144. package/dist/components/packs.d.ts +1 -1
  145. package/dist/components/packs.js +2 -2
  146. package/dist/components/packs.js.map +1 -1
  147. package/dist/components/page.cjs +3 -3
  148. package/dist/components/page.cjs.map +1 -1
  149. package/dist/components/page.css +1 -1
  150. package/dist/components/page.d.cts +1 -1
  151. package/dist/components/page.d.ts +1 -1
  152. package/dist/components/page.js +4 -4
  153. package/dist/components/page.js.map +1 -1
  154. package/dist/components/perf.cjs +3 -3
  155. package/dist/components/perf.cjs.map +1 -1
  156. package/dist/components/perf.d.cts +2 -2
  157. package/dist/components/perf.d.ts +2 -2
  158. package/dist/components/perf.js +4 -4
  159. package/dist/components/perf.js.map +1 -1
  160. package/dist/components/physics.cjs +3 -3
  161. package/dist/components/physics.cjs.map +1 -1
  162. package/dist/components/physics.css +1 -1
  163. package/dist/components/physics.d.cts +1 -1
  164. package/dist/components/physics.d.ts +1 -1
  165. package/dist/components/physics.js +4 -4
  166. package/dist/components/physics.js.map +1 -1
  167. package/dist/components/react.cjs +4 -4
  168. package/dist/components/react.cjs.map +1 -1
  169. package/dist/components/react.js +4 -4
  170. package/dist/components/react.js.map +1 -1
  171. package/dist/components/reveal.cjs +6 -2
  172. package/dist/components/reveal.cjs.map +1 -1
  173. package/dist/components/reveal.css +1 -1
  174. package/dist/components/reveal.d.cts +1 -1
  175. package/dist/components/reveal.d.ts +1 -1
  176. package/dist/components/reveal.js +6 -2
  177. package/dist/components/reveal.js.map +1 -1
  178. package/dist/components/solid.cjs +9 -9
  179. package/dist/components/solid.cjs.map +1 -1
  180. package/dist/components/solid.d.cts +22 -22
  181. package/dist/components/solid.d.ts +22 -22
  182. package/dist/components/solid.js +9 -9
  183. package/dist/components/solid.js.map +1 -1
  184. package/dist/components/svelte.cjs +8 -8
  185. package/dist/components/svelte.cjs.map +1 -1
  186. package/dist/components/svelte.d.cts +22 -22
  187. package/dist/components/svelte.d.ts +22 -22
  188. package/dist/components/svelte.js +8 -8
  189. package/dist/components/svelte.js.map +1 -1
  190. package/dist/components/svg.cjs +2 -2
  191. package/dist/components/svg.cjs.map +1 -1
  192. package/dist/components/svg.css +1 -1
  193. package/dist/components/svg.d.cts +1 -1
  194. package/dist/components/svg.d.ts +1 -1
  195. package/dist/components/svg.js +2 -2
  196. package/dist/components/svg.js.map +1 -1
  197. package/dist/components/text.cjs +3 -3
  198. package/dist/components/text.cjs.map +1 -1
  199. package/dist/components/text.css +1 -1
  200. package/dist/components/text.d.cts +1 -1
  201. package/dist/components/text.d.ts +1 -1
  202. package/dist/components/text.js +3 -3
  203. package/dist/components/text.js.map +1 -1
  204. package/dist/components/timeline.cjs +3 -3
  205. package/dist/components/timeline.cjs.map +1 -1
  206. package/dist/components/timeline.css +1 -1
  207. package/dist/components/timeline.d.cts +1 -1
  208. package/dist/components/timeline.d.ts +1 -1
  209. package/dist/components/timeline.js +4 -4
  210. package/dist/components/timeline.js.map +1 -1
  211. package/dist/components/tokens.cjs +2 -2
  212. package/dist/components/tokens.cjs.map +1 -1
  213. package/dist/components/tokens.d.cts +2 -2
  214. package/dist/components/tokens.d.ts +2 -2
  215. package/dist/components/tokens.js +2 -2
  216. package/dist/components/tokens.js.map +1 -1
  217. package/dist/components/transitions.cjs +2 -2
  218. package/dist/components/transitions.cjs.map +1 -1
  219. package/dist/components/transitions.css +1 -1
  220. package/dist/components/transitions.d.cts +1 -1
  221. package/dist/components/transitions.d.ts +1 -1
  222. package/dist/components/transitions.js +2 -2
  223. package/dist/components/transitions.js.map +1 -1
  224. package/dist/components/ui.cjs +4 -4
  225. package/dist/components/ui.cjs.map +1 -1
  226. package/dist/components/ui.css +1 -1
  227. package/dist/components/ui.d.cts +1 -1
  228. package/dist/components/ui.d.ts +1 -1
  229. package/dist/components/ui.js +5 -5
  230. package/dist/components/ui.js.map +1 -1
  231. package/dist/components/vue.cjs +9 -9
  232. package/dist/components/vue.cjs.map +1 -1
  233. package/dist/components/vue.d.cts +23 -23
  234. package/dist/components/vue.d.ts +23 -23
  235. package/dist/components/vue.js +9 -9
  236. package/dist/components/vue.js.map +1 -1
  237. package/dist/components/webgl.cjs +2 -2
  238. package/dist/components/webgl.cjs.map +1 -1
  239. package/dist/components/webgl.css +1 -1
  240. package/dist/components/webgl.d.cts +1 -1
  241. package/dist/components/webgl.d.ts +1 -1
  242. package/dist/components/webgl.js +2 -2
  243. package/dist/components/webgl.js.map +1 -1
  244. package/dist/components.cjs +9 -9
  245. package/dist/components.cjs.map +1 -1
  246. package/dist/components.css +1 -1
  247. package/dist/components.d.cts +30 -30
  248. package/dist/components.d.ts +30 -30
  249. package/dist/components.js +11 -11
  250. package/dist/components.js.map +1 -1
  251. package/dist/components.umd.js +5 -5
  252. package/dist/components.umd.js.map +1 -1
  253. package/dist/element.cjs +4 -3
  254. package/dist/element.cjs.map +1 -1
  255. package/dist/element.d.cts +19 -5
  256. package/dist/element.d.ts +19 -5
  257. package/dist/element.js +4 -3
  258. package/dist/element.js.map +1 -1
  259. package/dist/element.umd.js +1 -1
  260. package/dist/element.umd.js.map +1 -1
  261. package/dist/index.cjs +28 -25
  262. package/dist/index.cjs.map +1 -1
  263. package/dist/index.d.cts +40 -15
  264. package/dist/index.d.ts +40 -15
  265. package/dist/index.js +11 -10
  266. package/dist/index.js.map +1 -1
  267. package/dist/index.umd.js +5 -5
  268. package/dist/index.umd.js.map +1 -1
  269. package/dist/presets/extended.cjs +243 -0
  270. package/dist/presets/extended.cjs.map +1 -0
  271. package/dist/presets/extended.d.cts +37 -0
  272. package/dist/presets/extended.d.ts +37 -0
  273. package/dist/presets/extended.js +239 -0
  274. package/dist/presets/extended.js.map +1 -0
  275. package/dist/presets-extended.umd.js +2 -0
  276. package/dist/presets-extended.umd.js.map +1 -0
  277. package/dist/react.cjs +4 -3
  278. package/dist/react.cjs.map +1 -1
  279. package/dist/react.d.cts +19 -5
  280. package/dist/react.d.ts +19 -5
  281. package/dist/react.js +4 -3
  282. package/dist/react.js.map +1 -1
  283. package/dist/solid.cjs +5 -4
  284. package/dist/solid.cjs.map +1 -1
  285. package/dist/solid.d.cts +20 -6
  286. package/dist/solid.d.ts +20 -6
  287. package/dist/solid.js +5 -4
  288. package/dist/solid.js.map +1 -1
  289. package/dist/svelte.cjs +5 -4
  290. package/dist/svelte.cjs.map +1 -1
  291. package/dist/svelte.d.cts +20 -6
  292. package/dist/svelte.d.ts +20 -6
  293. package/dist/svelte.js +5 -4
  294. package/dist/svelte.js.map +1 -1
  295. package/dist/vue.cjs +4 -3
  296. package/dist/vue.cjs.map +1 -1
  297. package/dist/vue.d.cts +19 -5
  298. package/dist/vue.d.ts +19 -5
  299. package/dist/vue.js +4 -3
  300. package/dist/vue.js.map +1 -1
  301. package/docs/API.md +17 -12
  302. package/docs/ROADMAP.md +12 -11
  303. package/docs/accessibility.md +2 -2
  304. package/docs/components.md +33 -33
  305. package/docs/frameworks-ssr.md +12 -12
  306. package/docs/hybrid-apps.md +10 -10
  307. package/docs/migration-from-aos.md +5 -5
  308. package/docs/migration-from-gsap-scrolltrigger.md +3 -3
  309. package/docs/motion-tokens.css +1 -1
  310. package/docs/motion-tokens.md +2 -2
  311. package/docs/performance.md +6 -6
  312. package/docs/presets.md +310 -0
  313. package/docs/windows-apps.md +8 -8
  314. package/package.json +40 -26
  315. package/dist/chunks/base-B5i8qQPR.cjs.map +0 -1
  316. package/dist/chunks/base-C3Sw9sAO.js.map +0 -1
  317. package/dist/chunks/core-mV_TPgG_.js.map +0 -1
  318. package/dist/chunks/core-qpECfEkb.cjs.map +0 -1
  319. package/dist/chunks/stagger-BFAhKknX.js.map +0 -1
  320. package/dist/chunks/stagger-CLc3j58T.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var base = require('../chunks/base-B5i8qQPR.cjs');
3
+ var base = require('../chunks/base-BaQV-2ha.cjs');
4
4
 
5
5
  const anim = (el, frames, o) => {
6
6
  if (typeof el.animate !== 'function')
@@ -171,7 +171,7 @@ function definePack(tag = 'usa-pack') {
171
171
  }
172
172
 
173
173
  /**
174
- * use-scroll-animate/components/packs — effect packs (v3.9).
174
+ * motionary/components/packs — effect packs (v3.9).
175
175
  * Ready-made motion for e-commerce, portfolio, dashboard, game UI and
176
176
  * landing pages: mark elements with `data-role` and apply a pack with
177
177
  * `<usa-pack name="…">` or `applyPack(name, root)`. Includes `flyToCart()`
@@ -1 +1 @@
1
- {"version":3,"file":"packs.cjs","sources":["../../src/components/packs/core.ts","../../src/components/packs/pack-el.ts","../../src/components/packs/index.ts"],"sourcesContent":["import { prefersReducedMotion, motionScale, EASE_OUT, EASE_SPRING, raf, now, clamp } from '../base';\n\ntype Cleanup = () => void;\n/** A pack primitive: wire one element, return a cleanup. */\ntype Effect = (el: HTMLElement, ctx: PackContext) => Cleanup | void;\n\nexport interface PackContext {\n root: HTMLElement;\n /** Index of the element among those with the same role (for staggering). */\n index: number;\n reduced: boolean;\n}\n\nconst anim = (el: Element, frames: Keyframe[], o: KeyframeAnimationOptions): Animation | null => {\n if (typeof (el as HTMLElement).animate !== 'function') return null;\n const k = motionScale();\n return (el as HTMLElement).animate(frames, { ...o, duration: ((o.duration as number) ?? 400) * k, delay: (o.delay ?? 0) * k });\n};\nconst on = (el: EventTarget, type: string, fn: (e: any) => void): Cleanup => {\n el.addEventListener(type, fn);\n return () => el.removeEventListener(type, fn);\n};\nconst io = (el: Element, cb: () => void): Cleanup => {\n if (typeof IntersectionObserver === 'undefined') return void cb() as unknown as Cleanup;\n const o = new IntersectionObserver((es) => es.some((e) => e.isIntersecting) && (o.disconnect(), cb()), { threshold: 0.15 });\n o.observe(el);\n return () => o.disconnect();\n};\n\n/** Count `el`'s number up from 0 when it enters the view (keeps prefix / suffix / decimals). */\nexport function countUp(el: HTMLElement, duration = 1200): Cleanup {\n const text = el.textContent || '';\n const m = /(-?[\\d,]*\\.?\\d+)/.exec(text);\n if (!m || prefersReducedMotion()) return () => {};\n const target = Number(m[1].replace(/,/g, ''));\n const dec = (m[1].split('.')[1] || '').length;\n const fmt = (v: number) => text.replace(m[1], v.toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec }));\n el.setAttribute('aria-label', text.trim());\n el.textContent = fmt(0);\n let stop = false;\n const off = io(el, () => {\n const t0 = now();\n const d = duration * motionScale() || 1;\n const step = () => {\n if (stop) return;\n const p = clamp((now() - t0) / d, 0, 1);\n el.textContent = fmt(target * (1 - Math.pow(1 - p, 3)));\n if (p < 1) raf(step);\n };\n raf(step);\n });\n return () => {\n stop = true;\n off();\n el.textContent = text;\n };\n}\n\n/**\n * Fly a copy of `from` (e.g. a product image) into `to` (the cart icon) along\n * an arc, then bump the target. Resolves when it lands. Instant under\n * reduced motion (only the bump's state change, no flight).\n */\nexport async function flyToCart(from: Element, to: Element, o: { duration?: number } = {}): Promise<void> {\n if (prefersReducedMotion() || typeof document === 'undefined') return;\n const a = from.getBoundingClientRect();\n const b = to.getBoundingClientRect();\n const ghost = from.cloneNode(true) as HTMLElement;\n ghost.setAttribute('aria-hidden', 'true');\n Object.assign(ghost.style, { position: 'fixed', left: `${a.left}px`, top: `${a.top}px`, width: `${a.width}px`, height: `${a.height}px`, margin: '0', zIndex: '2147483000', pointerEvents: 'none' });\n document.body.appendChild(ghost);\n const dx = b.left + b.width / 2 - (a.left + a.width / 2);\n const dy = b.top + b.height / 2 - (a.top + a.height / 2);\n const f = anim(ghost, [\n { transform: 'translate(0, 0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.5}px, ${dy * 0.5 - 80}px) scale(0.6)`, opacity: 0.9, offset: 0.5 },\n { transform: `translate(${dx}px, ${dy}px) scale(0.15)`, opacity: 0.4 },\n ], { duration: o.duration ?? 700, easing: 'cubic-bezier(0.5, 0, 0.5, 1)' });\n await f?.finished.catch(() => undefined);\n ghost.remove();\n anim(to, [{ transform: 'scale(1)' }, { transform: 'scale(1.3)' }, { transform: 'scale(1)' }], { duration: 380, easing: EASE_SPRING });\n}\n\nconst PRIMITIVES: Record<string, Effect> = {\n reveal: (el, c) => {\n if (c.reduced) return;\n el.style.opacity = '0';\n const off = io(el, () => {\n el.style.opacity = '';\n anim(el, [{ opacity: 0, transform: 'translateY(24px)' }, { opacity: 1, transform: 'none' }], { duration: 600, delay: Math.min(c.index, 8) * 70, easing: EASE_OUT, fill: 'backwards' });\n });\n return () => (off(), (el.style.opacity = ''));\n },\n lift: (el, c) => {\n if (c.reduced) return;\n const a = on(el, 'pointerenter', () => anim(el, [{ transform: 'none' }, { transform: 'translateY(-6px) scale(1.02)' }], { duration: 220, easing: EASE_OUT, fill: 'forwards' }));\n const b = on(el, 'pointerleave', () => anim(el, [{ transform: 'translateY(-6px) scale(1.02)' }, { transform: 'none' }], { duration: 260, easing: EASE_OUT, fill: 'forwards' }));\n return () => (a(), b());\n },\n press: (el, c) => (c.reduced ? undefined : on(el, 'pointerdown', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(0.94)' }, { transform: 'scale(1)' }], { duration: 260, easing: EASE_SPRING }))),\n 'count-up': (el) => countUp(el),\n pulse: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ boxShadow: '0 0 0 0 rgba(124, 92, 255, 0.55)' }, { boxShadow: '0 0 0 14px rgba(124, 92, 255, 0)' }], { duration: 1600, iterations: Infinity });\n return () => a?.cancel();\n },\n float: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ transform: 'translateY(0)' }, { transform: 'translateY(-8px)' }, { transform: 'translateY(0)' }], { duration: 3000, delay: c.index * 300, iterations: Infinity, easing: 'ease-in-out' });\n return () => a?.cancel();\n },\n shake: (el, c) => (c.reduced ? undefined : on(el, 'click', () => anim(el, [0, -8, 8, -6, 6, -3, 0].map((x) => ({ transform: `translateX(${x}px)` })), { duration: 420 }))),\n bump: (el, c) => (c.reduced ? undefined : on(el, 'usa:bump', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(1.25)' }, { transform: 'scale(1)' }], { duration: 360, easing: EASE_SPRING }))),\n 'fly-to-cart': (el, c) =>\n on(el, 'click', () => {\n const cart = c.root.querySelector('[data-role=\"cart\"]') || document.querySelector('[data-role=\"cart\"]');\n const item = el.closest('[data-role=\"product\"]')?.querySelector('img, [data-role=\"thumb\"]') || el;\n if (cart) void flyToCart(item, cart).then(() => cart.dispatchEvent(new CustomEvent('usa:added', { bubbles: true })));\n }),\n};\n\n/** The five effect packs: `data-role` → primitives. */\nexport const PACKS: Record<string, Record<string, string[]>> = {\n ecommerce: { product: ['reveal', 'lift'], 'add-to-cart': ['press', 'fly-to-cart'], cart: ['bump'], price: ['count-up'], badge: ['pulse'] },\n portfolio: { project: ['reveal', 'lift'], heading: ['reveal'], stat: ['count-up'], contact: ['press', 'pulse'] },\n dashboard: { card: ['reveal'], stat: ['count-up'], alert: ['pulse'], action: ['press'] },\n game: { button: ['press'], score: ['count-up', 'bump'], item: ['float'], hit: ['shake'], reward: ['pulse'] },\n landing: { hero: ['reveal'], feature: ['reveal', 'lift'], cta: ['press', 'pulse'], logo: ['float'], stat: ['count-up'] },\n};\n\nexport type PackName = keyof typeof PACKS;\n\n/**\n * Apply an effect pack to `root`: every descendant with a `data-role` the\n * pack knows gets its effects (staggered by index). Returns an undo function.\n * Reduced motion: only non-motion behaviour (e.g. the cart event) remains.\n *\n * @example\n * applyPack('ecommerce', document.querySelector('main'));\n * // <article data-role=\"product\">… <button data-role=\"add-to-cart\"> … <a data-role=\"cart\">\n */\nexport function applyPack(name: PackName | string, root: HTMLElement | Document = document): Cleanup {\n const pack = PACKS[name];\n if (!pack || typeof document === 'undefined') return () => {};\n const r = (root as Document).documentElement ? (root as Document).body : (root as HTMLElement);\n const reduced = prefersReducedMotion();\n const cleanups: Cleanup[] = [];\n for (const [role, fx] of Object.entries(pack)) {\n r.querySelectorAll<HTMLElement>(`[data-role=\"${role}\"]`).forEach((el, index) => {\n for (const f of fx) {\n const c = PRIMITIVES[f]?.(el, { root: r, index, reduced });\n if (c) cleanups.push(c);\n }\n });\n }\n return () => cleanups.splice(0).forEach((c) => c());\n}\n\n/** Primitive names a pack uses (for docs / tooling). */\nexport const PACK_PRIMITIVES = Object.keys(PRIMITIVES);\n","import { defineElement, type UsaElement } from '../base';\nimport { applyPack, PACKS } from './core';\n\n/**\n * `<usa-pack name=\"ecommerce\">` — applies an effect pack (`ecommerce` ·\n * `portfolio` · `dashboard` · `game` · `landing`) to its subtree:\n * descendants opt in with `data-role` (see `PACKS`). Re-applies when\n * `name` changes; undone on disconnect.\n */\nexport interface UsaPackElement extends UsaElement {\n readonly roles: string[];\n}\n\nexport function definePack(tag = 'usa-pack'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) =>\n class UsaPack extends Base {\n static get observedAttributes(): string[] {\n return ['name'];\n }\n get roles(): string[] {\n return Object.keys(PACKS[this.str('name', 'landing')] || {});\n }\n mount(): void {\n this.style.display ||= 'block';\n this.onCleanup(applyPack(this.str('name', 'landing'), this));\n }\n }\n );\n}\n","/**\n * use-scroll-animate/components/packs — effect packs (v3.9).\n * Ready-made motion for e-commerce, portfolio, dashboard, game UI and\n * landing pages: mark elements with `data-role` and apply a pack with\n * `<usa-pack name=\"…\">` or `applyPack(name, root)`. Includes `flyToCart()`\n * and `countUp()`.\n */\nimport { definePack, type UsaPackElement } from './pack-el';\n\nexport { definePack };\nexport { applyPack, flyToCart, countUp, PACKS, PACK_PRIMITIVES } from './core';\nexport type { PackName, PackContext } from './core';\nexport type { UsaPackElement };\n\n/** Register every component of this category under its default tag. */\nexport function definePacksComponents(): void {\n definePack();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-pack': UsaPackElement;\n }\n}\n"],"names":["motionScale","prefersReducedMotion","now","clamp","raf","EASE_SPRING","EASE_OUT","defineElement"],"mappings":"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"}
1
+ {"version":3,"file":"packs.cjs","sources":["../../src/components/packs/core.ts","../../src/components/packs/pack-el.ts","../../src/components/packs/index.ts"],"sourcesContent":["import { prefersReducedMotion, motionScale, EASE_OUT, EASE_SPRING, raf, now, clamp } from '../base';\n\ntype Cleanup = () => void;\n/** A pack primitive: wire one element, return a cleanup. */\ntype Effect = (el: HTMLElement, ctx: PackContext) => Cleanup | void;\n\nexport interface PackContext {\n root: HTMLElement;\n /** Index of the element among those with the same role (for staggering). */\n index: number;\n reduced: boolean;\n}\n\nconst anim = (el: Element, frames: Keyframe[], o: KeyframeAnimationOptions): Animation | null => {\n if (typeof (el as HTMLElement).animate !== 'function') return null;\n const k = motionScale();\n return (el as HTMLElement).animate(frames, { ...o, duration: ((o.duration as number) ?? 400) * k, delay: (o.delay ?? 0) * k });\n};\nconst on = (el: EventTarget, type: string, fn: (e: any) => void): Cleanup => {\n el.addEventListener(type, fn);\n return () => el.removeEventListener(type, fn);\n};\nconst io = (el: Element, cb: () => void): Cleanup => {\n if (typeof IntersectionObserver === 'undefined') return void cb() as unknown as Cleanup;\n const o = new IntersectionObserver((es) => es.some((e) => e.isIntersecting) && (o.disconnect(), cb()), { threshold: 0.15 });\n o.observe(el);\n return () => o.disconnect();\n};\n\n/** Count `el`'s number up from 0 when it enters the view (keeps prefix / suffix / decimals). */\nexport function countUp(el: HTMLElement, duration = 1200): Cleanup {\n const text = el.textContent || '';\n const m = /(-?[\\d,]*\\.?\\d+)/.exec(text);\n if (!m || prefersReducedMotion()) return () => {};\n const target = Number(m[1].replace(/,/g, ''));\n const dec = (m[1].split('.')[1] || '').length;\n const fmt = (v: number) => text.replace(m[1], v.toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec }));\n el.setAttribute('aria-label', text.trim());\n el.textContent = fmt(0);\n let stop = false;\n const off = io(el, () => {\n const t0 = now();\n const d = duration * motionScale() || 1;\n const step = () => {\n if (stop) return;\n const p = clamp((now() - t0) / d, 0, 1);\n el.textContent = fmt(target * (1 - Math.pow(1 - p, 3)));\n if (p < 1) raf(step);\n };\n raf(step);\n });\n return () => {\n stop = true;\n off();\n el.textContent = text;\n };\n}\n\n/**\n * Fly a copy of `from` (e.g. a product image) into `to` (the cart icon) along\n * an arc, then bump the target. Resolves when it lands. Instant under\n * reduced motion (only the bump's state change, no flight).\n */\nexport async function flyToCart(from: Element, to: Element, o: { duration?: number } = {}): Promise<void> {\n if (prefersReducedMotion() || typeof document === 'undefined') return;\n const a = from.getBoundingClientRect();\n const b = to.getBoundingClientRect();\n const ghost = from.cloneNode(true) as HTMLElement;\n ghost.setAttribute('aria-hidden', 'true');\n Object.assign(ghost.style, { position: 'fixed', left: `${a.left}px`, top: `${a.top}px`, width: `${a.width}px`, height: `${a.height}px`, margin: '0', zIndex: '2147483000', pointerEvents: 'none' });\n document.body.appendChild(ghost);\n const dx = b.left + b.width / 2 - (a.left + a.width / 2);\n const dy = b.top + b.height / 2 - (a.top + a.height / 2);\n const f = anim(ghost, [\n { transform: 'translate(0, 0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.5}px, ${dy * 0.5 - 80}px) scale(0.6)`, opacity: 0.9, offset: 0.5 },\n { transform: `translate(${dx}px, ${dy}px) scale(0.15)`, opacity: 0.4 },\n ], { duration: o.duration ?? 700, easing: 'cubic-bezier(0.5, 0, 0.5, 1)' });\n await f?.finished.catch(() => undefined);\n ghost.remove();\n anim(to, [{ transform: 'scale(1)' }, { transform: 'scale(1.3)' }, { transform: 'scale(1)' }], { duration: 380, easing: EASE_SPRING });\n}\n\nconst PRIMITIVES: Record<string, Effect> = {\n reveal: (el, c) => {\n if (c.reduced) return;\n el.style.opacity = '0';\n const off = io(el, () => {\n el.style.opacity = '';\n anim(el, [{ opacity: 0, transform: 'translateY(24px)' }, { opacity: 1, transform: 'none' }], { duration: 600, delay: Math.min(c.index, 8) * 70, easing: EASE_OUT, fill: 'backwards' });\n });\n return () => (off(), (el.style.opacity = ''));\n },\n lift: (el, c) => {\n if (c.reduced) return;\n const a = on(el, 'pointerenter', () => anim(el, [{ transform: 'none' }, { transform: 'translateY(-6px) scale(1.02)' }], { duration: 220, easing: EASE_OUT, fill: 'forwards' }));\n const b = on(el, 'pointerleave', () => anim(el, [{ transform: 'translateY(-6px) scale(1.02)' }, { transform: 'none' }], { duration: 260, easing: EASE_OUT, fill: 'forwards' }));\n return () => (a(), b());\n },\n press: (el, c) => (c.reduced ? undefined : on(el, 'pointerdown', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(0.94)' }, { transform: 'scale(1)' }], { duration: 260, easing: EASE_SPRING }))),\n 'count-up': (el) => countUp(el),\n pulse: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ boxShadow: '0 0 0 0 rgba(124, 92, 255, 0.55)' }, { boxShadow: '0 0 0 14px rgba(124, 92, 255, 0)' }], { duration: 1600, iterations: Infinity });\n return () => a?.cancel();\n },\n float: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ transform: 'translateY(0)' }, { transform: 'translateY(-8px)' }, { transform: 'translateY(0)' }], { duration: 3000, delay: c.index * 300, iterations: Infinity, easing: 'ease-in-out' });\n return () => a?.cancel();\n },\n shake: (el, c) => (c.reduced ? undefined : on(el, 'click', () => anim(el, [0, -8, 8, -6, 6, -3, 0].map((x) => ({ transform: `translateX(${x}px)` })), { duration: 420 }))),\n bump: (el, c) => (c.reduced ? undefined : on(el, 'usa:bump', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(1.25)' }, { transform: 'scale(1)' }], { duration: 360, easing: EASE_SPRING }))),\n 'fly-to-cart': (el, c) =>\n on(el, 'click', () => {\n const cart = c.root.querySelector('[data-role=\"cart\"]') || document.querySelector('[data-role=\"cart\"]');\n const item = el.closest('[data-role=\"product\"]')?.querySelector('img, [data-role=\"thumb\"]') || el;\n if (cart) void flyToCart(item, cart).then(() => cart.dispatchEvent(new CustomEvent('usa:added', { bubbles: true })));\n }),\n};\n\n/** The five effect packs: `data-role` → primitives. */\nexport const PACKS: Record<string, Record<string, string[]>> = {\n ecommerce: { product: ['reveal', 'lift'], 'add-to-cart': ['press', 'fly-to-cart'], cart: ['bump'], price: ['count-up'], badge: ['pulse'] },\n portfolio: { project: ['reveal', 'lift'], heading: ['reveal'], stat: ['count-up'], contact: ['press', 'pulse'] },\n dashboard: { card: ['reveal'], stat: ['count-up'], alert: ['pulse'], action: ['press'] },\n game: { button: ['press'], score: ['count-up', 'bump'], item: ['float'], hit: ['shake'], reward: ['pulse'] },\n landing: { hero: ['reveal'], feature: ['reveal', 'lift'], cta: ['press', 'pulse'], logo: ['float'], stat: ['count-up'] },\n};\n\nexport type PackName = keyof typeof PACKS;\n\n/**\n * Apply an effect pack to `root`: every descendant with a `data-role` the\n * pack knows gets its effects (staggered by index). Returns an undo function.\n * Reduced motion: only non-motion behaviour (e.g. the cart event) remains.\n *\n * @example\n * applyPack('ecommerce', document.querySelector('main'));\n * // <article data-role=\"product\">… <button data-role=\"add-to-cart\"> … <a data-role=\"cart\">\n */\nexport function applyPack(name: PackName | string, root: HTMLElement | Document = document): Cleanup {\n const pack = PACKS[name];\n if (!pack || typeof document === 'undefined') return () => {};\n const r = (root as Document).documentElement ? (root as Document).body : (root as HTMLElement);\n const reduced = prefersReducedMotion();\n const cleanups: Cleanup[] = [];\n for (const [role, fx] of Object.entries(pack)) {\n r.querySelectorAll<HTMLElement>(`[data-role=\"${role}\"]`).forEach((el, index) => {\n for (const f of fx) {\n const c = PRIMITIVES[f]?.(el, { root: r, index, reduced });\n if (c) cleanups.push(c);\n }\n });\n }\n return () => cleanups.splice(0).forEach((c) => c());\n}\n\n/** Primitive names a pack uses (for docs / tooling). */\nexport const PACK_PRIMITIVES = Object.keys(PRIMITIVES);\n","import { defineElement, type UsaElement } from '../base';\nimport { applyPack, PACKS } from './core';\n\n/**\n * `<usa-pack name=\"ecommerce\">` — applies an effect pack (`ecommerce` ·\n * `portfolio` · `dashboard` · `game` · `landing`) to its subtree:\n * descendants opt in with `data-role` (see `PACKS`). Re-applies when\n * `name` changes; undone on disconnect.\n */\nexport interface UsaPackElement extends UsaElement {\n readonly roles: string[];\n}\n\nexport function definePack(tag = 'usa-pack'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) =>\n class UsaPack extends Base {\n static get observedAttributes(): string[] {\n return ['name'];\n }\n get roles(): string[] {\n return Object.keys(PACKS[this.str('name', 'landing')] || {});\n }\n mount(): void {\n this.style.display ||= 'block';\n this.onCleanup(applyPack(this.str('name', 'landing'), this));\n }\n }\n );\n}\n","/**\n * motionary/components/packs — effect packs (v3.9).\n * Ready-made motion for e-commerce, portfolio, dashboard, game UI and\n * landing pages: mark elements with `data-role` and apply a pack with\n * `<usa-pack name=\"…\">` or `applyPack(name, root)`. Includes `flyToCart()`\n * and `countUp()`.\n */\nimport { definePack, type UsaPackElement } from './pack-el';\n\nexport { definePack };\nexport { applyPack, flyToCart, countUp, PACKS, PACK_PRIMITIVES } from './core';\nexport type { PackName, PackContext } from './core';\nexport type { UsaPackElement };\n\n/** Register every component of this category under its default tag. */\nexport function definePacksComponents(): void {\n definePack();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-pack': UsaPackElement;\n }\n}\n"],"names":["motionScale","prefersReducedMotion","now","clamp","raf","EASE_SPRING","EASE_OUT","defineElement"],"mappings":";;;;AAaA,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,MAAkB,EAAE,CAA2B,KAAsB;AAC9F,IAAA,IAAI,OAAQ,EAAkB,CAAC,OAAO,KAAK,UAAU;AAAE,QAAA,OAAO,IAAI;AAClE,IAAA,MAAM,CAAC,GAAGA,gBAAW,EAAE;AACvB,IAAA,OAAQ,EAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAE,CAAC,CAAC,QAAmB,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChI,CAAC;AACD,MAAM,EAAE,GAAG,CAAC,EAAe,EAAE,IAAY,EAAE,EAAoB,KAAa;AAC1E,IAAA,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;IAC7B,OAAO,MAAM,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/C,CAAC;AACD,MAAM,EAAE,GAAG,CAAC,EAAW,EAAE,EAAc,KAAa;IAClD,IAAI,OAAO,oBAAoB,KAAK,WAAW;QAAE,OAAO,KAAK,EAAE,EAAwB;AACvF,IAAA,MAAM,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC3H,IAAA,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AACb,IAAA,OAAO,MAAM,CAAC,CAAC,UAAU,EAAE;AAC7B,CAAC;AAED;SACgB,OAAO,CAAC,EAAe,EAAE,QAAQ,GAAG,IAAI,EAAA;AACtD,IAAA,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE;IACjC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,IAAA,IAAI,CAAC,CAAC,IAAIC,yBAAoB,EAAE;AAAE,QAAA,OAAO,MAAK,EAAE,CAAC;AACjD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM;AAC7C,IAAA,MAAM,GAAG,GAAG,CAAC,CAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpI,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC1C,IAAA,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,GAAG,KAAK;AAChB,IAAA,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,MAAK;AACtB,QAAA,MAAM,EAAE,GAAGC,QAAG,EAAE;QAChB,MAAM,CAAC,GAAG,QAAQ,GAAGF,gBAAW,EAAE,IAAI,CAAC;QACvC,MAAM,IAAI,GAAG,MAAK;AAChB,YAAA,IAAI,IAAI;gBAAE;AACV,YAAA,MAAM,CAAC,GAAGG,UAAK,CAAC,CAACD,QAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC;gBAAEE,QAAG,CAAC,IAAI,CAAC;AACtB,QAAA,CAAC;QACDA,QAAG,CAAC,IAAI,CAAC;AACX,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAK;QACV,IAAI,GAAG,IAAI;AACX,QAAA,GAAG,EAAE;AACL,QAAA,EAAE,CAAC,WAAW,GAAG,IAAI;AACvB,IAAA,CAAC;AACH;AAEA;;;;AAIG;AACI,eAAe,SAAS,CAAC,IAAa,EAAE,EAAW,EAAE,CAAA,GAA2B,EAAE,EAAA;AACvF,IAAA,IAAIH,yBAAoB,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE;AAC/D,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACtC,IAAA,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB;AACjD,IAAA,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA,EAAG,CAAC,CAAC,IAAI,CAAA,EAAA,CAAI,EAAE,GAAG,EAAE,CAAA,EAAG,CAAC,CAAC,GAAG,CAAA,EAAA,CAAI,EAAE,KAAK,EAAE,CAAA,EAAG,CAAC,CAAC,KAAK,CAAA,EAAA,CAAI,EAAE,MAAM,EAAE,CAAA,EAAG,CAAC,CAAC,MAAM,CAAA,EAAA,CAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AACnM,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACpB,QAAA,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,EAAE;QACrD,EAAE,SAAS,EAAE,CAAA,UAAA,EAAa,EAAE,GAAG,GAAG,CAAA,IAAA,EAAO,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA,cAAA,CAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QACnG,EAAE,SAAS,EAAE,CAAA,UAAA,EAAa,EAAE,CAAA,IAAA,EAAO,EAAE,CAAA,eAAA,CAAiB,EAAE,OAAO,EAAE,GAAG,EAAE;AACvE,KAAA,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,GAAG,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IAC3E,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC;IACxC,KAAK,CAAC,MAAM,EAAE;AACd,IAAA,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAEI,gBAAW,EAAE,CAAC;AACvI;AAEA,MAAM,UAAU,GAA2B;AACzC,IAAA,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,KAAI;QAChB,IAAI,CAAC,CAAC,OAAO;YAAE;AACf,QAAA,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AACtB,QAAA,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,MAAK;AACtB,YAAA,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;YACrB,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAEC,aAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACxL,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;AACD,IAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAI;QACd,IAAI,CAAC,CAAC,OAAO;YAAE;QACf,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,8BAA8B,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAEA,aAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/K,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,8BAA8B,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAEA,aAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/K,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACzB,CAAC;AACD,IAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAED,gBAAW,EAAE,CAAC,CAAC,CAAC;IAC/M,UAAU,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;AAC/B,IAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAI;QACf,IAAI,CAAC,CAAC,OAAO;YAAE;AACf,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,kCAAkC,EAAE,EAAE,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACpK,QAAA,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE;IAC1B,CAAC;AACD,IAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAI;QACf,IAAI,CAAC,CAAC,OAAO;YAAE;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAC9M,QAAA,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE;IAC1B,CAAC;AACD,IAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAA,WAAA,EAAc,CAAC,CAAA,GAAA,CAAK,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1K,IAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAEA,gBAAW,EAAE,CAAC,CAAC,CAAC;AAC3M,IAAA,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,KACnB,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAK;AACnB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC;AACvG,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,IAAI,EAAE;AACjG,QAAA,IAAI,IAAI;AAAE,YAAA,KAAK,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtH,IAAA,CAAC,CAAC;CACL;AAED;AACO,MAAM,KAAK,GAA6C;AAC7D,IAAA,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;AAC1I,IAAA,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;IAChH,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;AACxF,IAAA,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;AAC5G,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;;AAK1H;;;;;;;;AAQG;SACa,SAAS,CAAC,IAAuB,EAAE,OAA+B,QAAQ,EAAA;AACxF,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW;AAAE,QAAA,OAAO,MAAK,EAAE,CAAC;AAC7D,IAAA,MAAM,CAAC,GAAI,IAAiB,CAAC,eAAe,GAAI,IAAiB,CAAC,IAAI,GAAI,IAAoB;AAC9F,IAAA,MAAM,OAAO,GAAGJ,yBAAoB,EAAE;IACtC,MAAM,QAAQ,GAAc,EAAE;AAC9B,IAAA,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAA,CAAC,CAAC,gBAAgB,CAAc,CAAA,YAAA,EAAe,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;AAC7E,YAAA,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE;gBAClB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC1D,gBAAA,IAAI,CAAC;AAAE,oBAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;IACA,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACrD;AAEA;AACO,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU;;AClJ/C,SAAU,UAAU,CAAC,GAAG,GAAG,UAAU,EAAA;AACzC,IAAA,OAAOM,kBAAa,CAAC,GAAG,EAAE,CAAC,IAAI,KAC7B,MAAM,OAAQ,SAAQ,IAAI,CAAA;AACxB,QAAA,WAAW,kBAAkB,GAAA;YAC3B,OAAO,CAAC,MAAM,CAAC;QACjB;AACA,QAAA,IAAI,KAAK,GAAA;AACP,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D;QACA,KAAK,GAAA;;YACH,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,EAAC,OAAO,KAAA,EAAA,CAAP,OAAO,GAAK,OAAO,CAAA;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D;AACD,KAAA,CACF;AACH;;AC5BA;;;;;;AAMG;AAQH;SACgB,qBAAqB,GAAA;AACnC,IAAA,UAAU,EAAE;AACd;;;;;;;;;;"}
@@ -1,3 +1,3 @@
1
- /* use-scroll-animate/components/packs */
1
+ /* motionary/components/packs */
2
2
  .usa-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
3
3
 
@@ -53,7 +53,7 @@ declare function applyPack(name: PackName | string, root?: HTMLElement | Documen
53
53
  declare const PACK_PRIMITIVES: string[];
54
54
 
55
55
  /**
56
- * use-scroll-animate/components/packs — effect packs (v3.9).
56
+ * motionary/components/packs — effect packs (v3.9).
57
57
  * Ready-made motion for e-commerce, portfolio, dashboard, game UI and
58
58
  * landing pages: mark elements with `data-role` and apply a pack with
59
59
  * `<usa-pack name="…">` or `applyPack(name, root)`. Includes `flyToCart()`
@@ -53,7 +53,7 @@ declare function applyPack(name: PackName | string, root?: HTMLElement | Documen
53
53
  declare const PACK_PRIMITIVES: string[];
54
54
 
55
55
  /**
56
- * use-scroll-animate/components/packs — effect packs (v3.9).
56
+ * motionary/components/packs — effect packs (v3.9).
57
57
  * Ready-made motion for e-commerce, portfolio, dashboard, game UI and
58
58
  * landing pages: mark elements with `data-role` and apply a pack with
59
59
  * `<usa-pack name="…">` or `applyPack(name, root)`. Includes `flyToCart()`
@@ -1,4 +1,4 @@
1
- import { p as prefersReducedMotion, n as now, m as motionScale, r as raf, y as EASE_OUT, k as clamp, E as EASE_SPRING, x as defineElement } from '../chunks/base-C3Sw9sAO.js';
1
+ import { p as prefersReducedMotion, n as now, m as motionScale, r as raf, y as EASE_OUT, k as clamp, E as EASE_SPRING, x as defineElement } from '../chunks/base-Yno7N2eC.js';
2
2
 
3
3
  const anim = (el, frames, o) => {
4
4
  if (typeof el.animate !== 'function')
@@ -169,7 +169,7 @@ function definePack(tag = 'usa-pack') {
169
169
  }
170
170
 
171
171
  /**
172
- * use-scroll-animate/components/packs — effect packs (v3.9).
172
+ * motionary/components/packs — effect packs (v3.9).
173
173
  * Ready-made motion for e-commerce, portfolio, dashboard, game UI and
174
174
  * landing pages: mark elements with `data-role` and apply a pack with
175
175
  * `<usa-pack name="…">` or `applyPack(name, root)`. Includes `flyToCart()`
@@ -1 +1 @@
1
- {"version":3,"file":"packs.js","sources":["../../src/components/packs/core.ts","../../src/components/packs/pack-el.ts","../../src/components/packs/index.ts"],"sourcesContent":["import { prefersReducedMotion, motionScale, EASE_OUT, EASE_SPRING, raf, now, clamp } from '../base';\n\ntype Cleanup = () => void;\n/** A pack primitive: wire one element, return a cleanup. */\ntype Effect = (el: HTMLElement, ctx: PackContext) => Cleanup | void;\n\nexport interface PackContext {\n root: HTMLElement;\n /** Index of the element among those with the same role (for staggering). */\n index: number;\n reduced: boolean;\n}\n\nconst anim = (el: Element, frames: Keyframe[], o: KeyframeAnimationOptions): Animation | null => {\n if (typeof (el as HTMLElement).animate !== 'function') return null;\n const k = motionScale();\n return (el as HTMLElement).animate(frames, { ...o, duration: ((o.duration as number) ?? 400) * k, delay: (o.delay ?? 0) * k });\n};\nconst on = (el: EventTarget, type: string, fn: (e: any) => void): Cleanup => {\n el.addEventListener(type, fn);\n return () => el.removeEventListener(type, fn);\n};\nconst io = (el: Element, cb: () => void): Cleanup => {\n if (typeof IntersectionObserver === 'undefined') return void cb() as unknown as Cleanup;\n const o = new IntersectionObserver((es) => es.some((e) => e.isIntersecting) && (o.disconnect(), cb()), { threshold: 0.15 });\n o.observe(el);\n return () => o.disconnect();\n};\n\n/** Count `el`'s number up from 0 when it enters the view (keeps prefix / suffix / decimals). */\nexport function countUp(el: HTMLElement, duration = 1200): Cleanup {\n const text = el.textContent || '';\n const m = /(-?[\\d,]*\\.?\\d+)/.exec(text);\n if (!m || prefersReducedMotion()) return () => {};\n const target = Number(m[1].replace(/,/g, ''));\n const dec = (m[1].split('.')[1] || '').length;\n const fmt = (v: number) => text.replace(m[1], v.toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec }));\n el.setAttribute('aria-label', text.trim());\n el.textContent = fmt(0);\n let stop = false;\n const off = io(el, () => {\n const t0 = now();\n const d = duration * motionScale() || 1;\n const step = () => {\n if (stop) return;\n const p = clamp((now() - t0) / d, 0, 1);\n el.textContent = fmt(target * (1 - Math.pow(1 - p, 3)));\n if (p < 1) raf(step);\n };\n raf(step);\n });\n return () => {\n stop = true;\n off();\n el.textContent = text;\n };\n}\n\n/**\n * Fly a copy of `from` (e.g. a product image) into `to` (the cart icon) along\n * an arc, then bump the target. Resolves when it lands. Instant under\n * reduced motion (only the bump's state change, no flight).\n */\nexport async function flyToCart(from: Element, to: Element, o: { duration?: number } = {}): Promise<void> {\n if (prefersReducedMotion() || typeof document === 'undefined') return;\n const a = from.getBoundingClientRect();\n const b = to.getBoundingClientRect();\n const ghost = from.cloneNode(true) as HTMLElement;\n ghost.setAttribute('aria-hidden', 'true');\n Object.assign(ghost.style, { position: 'fixed', left: `${a.left}px`, top: `${a.top}px`, width: `${a.width}px`, height: `${a.height}px`, margin: '0', zIndex: '2147483000', pointerEvents: 'none' });\n document.body.appendChild(ghost);\n const dx = b.left + b.width / 2 - (a.left + a.width / 2);\n const dy = b.top + b.height / 2 - (a.top + a.height / 2);\n const f = anim(ghost, [\n { transform: 'translate(0, 0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.5}px, ${dy * 0.5 - 80}px) scale(0.6)`, opacity: 0.9, offset: 0.5 },\n { transform: `translate(${dx}px, ${dy}px) scale(0.15)`, opacity: 0.4 },\n ], { duration: o.duration ?? 700, easing: 'cubic-bezier(0.5, 0, 0.5, 1)' });\n await f?.finished.catch(() => undefined);\n ghost.remove();\n anim(to, [{ transform: 'scale(1)' }, { transform: 'scale(1.3)' }, { transform: 'scale(1)' }], { duration: 380, easing: EASE_SPRING });\n}\n\nconst PRIMITIVES: Record<string, Effect> = {\n reveal: (el, c) => {\n if (c.reduced) return;\n el.style.opacity = '0';\n const off = io(el, () => {\n el.style.opacity = '';\n anim(el, [{ opacity: 0, transform: 'translateY(24px)' }, { opacity: 1, transform: 'none' }], { duration: 600, delay: Math.min(c.index, 8) * 70, easing: EASE_OUT, fill: 'backwards' });\n });\n return () => (off(), (el.style.opacity = ''));\n },\n lift: (el, c) => {\n if (c.reduced) return;\n const a = on(el, 'pointerenter', () => anim(el, [{ transform: 'none' }, { transform: 'translateY(-6px) scale(1.02)' }], { duration: 220, easing: EASE_OUT, fill: 'forwards' }));\n const b = on(el, 'pointerleave', () => anim(el, [{ transform: 'translateY(-6px) scale(1.02)' }, { transform: 'none' }], { duration: 260, easing: EASE_OUT, fill: 'forwards' }));\n return () => (a(), b());\n },\n press: (el, c) => (c.reduced ? undefined : on(el, 'pointerdown', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(0.94)' }, { transform: 'scale(1)' }], { duration: 260, easing: EASE_SPRING }))),\n 'count-up': (el) => countUp(el),\n pulse: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ boxShadow: '0 0 0 0 rgba(124, 92, 255, 0.55)' }, { boxShadow: '0 0 0 14px rgba(124, 92, 255, 0)' }], { duration: 1600, iterations: Infinity });\n return () => a?.cancel();\n },\n float: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ transform: 'translateY(0)' }, { transform: 'translateY(-8px)' }, { transform: 'translateY(0)' }], { duration: 3000, delay: c.index * 300, iterations: Infinity, easing: 'ease-in-out' });\n return () => a?.cancel();\n },\n shake: (el, c) => (c.reduced ? undefined : on(el, 'click', () => anim(el, [0, -8, 8, -6, 6, -3, 0].map((x) => ({ transform: `translateX(${x}px)` })), { duration: 420 }))),\n bump: (el, c) => (c.reduced ? undefined : on(el, 'usa:bump', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(1.25)' }, { transform: 'scale(1)' }], { duration: 360, easing: EASE_SPRING }))),\n 'fly-to-cart': (el, c) =>\n on(el, 'click', () => {\n const cart = c.root.querySelector('[data-role=\"cart\"]') || document.querySelector('[data-role=\"cart\"]');\n const item = el.closest('[data-role=\"product\"]')?.querySelector('img, [data-role=\"thumb\"]') || el;\n if (cart) void flyToCart(item, cart).then(() => cart.dispatchEvent(new CustomEvent('usa:added', { bubbles: true })));\n }),\n};\n\n/** The five effect packs: `data-role` → primitives. */\nexport const PACKS: Record<string, Record<string, string[]>> = {\n ecommerce: { product: ['reveal', 'lift'], 'add-to-cart': ['press', 'fly-to-cart'], cart: ['bump'], price: ['count-up'], badge: ['pulse'] },\n portfolio: { project: ['reveal', 'lift'], heading: ['reveal'], stat: ['count-up'], contact: ['press', 'pulse'] },\n dashboard: { card: ['reveal'], stat: ['count-up'], alert: ['pulse'], action: ['press'] },\n game: { button: ['press'], score: ['count-up', 'bump'], item: ['float'], hit: ['shake'], reward: ['pulse'] },\n landing: { hero: ['reveal'], feature: ['reveal', 'lift'], cta: ['press', 'pulse'], logo: ['float'], stat: ['count-up'] },\n};\n\nexport type PackName = keyof typeof PACKS;\n\n/**\n * Apply an effect pack to `root`: every descendant with a `data-role` the\n * pack knows gets its effects (staggered by index). Returns an undo function.\n * Reduced motion: only non-motion behaviour (e.g. the cart event) remains.\n *\n * @example\n * applyPack('ecommerce', document.querySelector('main'));\n * // <article data-role=\"product\">… <button data-role=\"add-to-cart\"> … <a data-role=\"cart\">\n */\nexport function applyPack(name: PackName | string, root: HTMLElement | Document = document): Cleanup {\n const pack = PACKS[name];\n if (!pack || typeof document === 'undefined') return () => {};\n const r = (root as Document).documentElement ? (root as Document).body : (root as HTMLElement);\n const reduced = prefersReducedMotion();\n const cleanups: Cleanup[] = [];\n for (const [role, fx] of Object.entries(pack)) {\n r.querySelectorAll<HTMLElement>(`[data-role=\"${role}\"]`).forEach((el, index) => {\n for (const f of fx) {\n const c = PRIMITIVES[f]?.(el, { root: r, index, reduced });\n if (c) cleanups.push(c);\n }\n });\n }\n return () => cleanups.splice(0).forEach((c) => c());\n}\n\n/** Primitive names a pack uses (for docs / tooling). */\nexport const PACK_PRIMITIVES = Object.keys(PRIMITIVES);\n","import { defineElement, type UsaElement } from '../base';\nimport { applyPack, PACKS } from './core';\n\n/**\n * `<usa-pack name=\"ecommerce\">` — applies an effect pack (`ecommerce` ·\n * `portfolio` · `dashboard` · `game` · `landing`) to its subtree:\n * descendants opt in with `data-role` (see `PACKS`). Re-applies when\n * `name` changes; undone on disconnect.\n */\nexport interface UsaPackElement extends UsaElement {\n readonly roles: string[];\n}\n\nexport function definePack(tag = 'usa-pack'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) =>\n class UsaPack extends Base {\n static get observedAttributes(): string[] {\n return ['name'];\n }\n get roles(): string[] {\n return Object.keys(PACKS[this.str('name', 'landing')] || {});\n }\n mount(): void {\n this.style.display ||= 'block';\n this.onCleanup(applyPack(this.str('name', 'landing'), this));\n }\n }\n );\n}\n","/**\n * use-scroll-animate/components/packs — effect packs (v3.9).\n * Ready-made motion for e-commerce, portfolio, dashboard, game UI and\n * landing pages: mark elements with `data-role` and apply a pack with\n * `<usa-pack name=\"…\">` or `applyPack(name, root)`. Includes `flyToCart()`\n * and `countUp()`.\n */\nimport { definePack, type UsaPackElement } from './pack-el';\n\nexport { definePack };\nexport { applyPack, flyToCart, countUp, PACKS, PACK_PRIMITIVES } from './core';\nexport type { PackName, PackContext } from './core';\nexport type { UsaPackElement };\n\n/** Register every component of this category under its default tag. */\nexport function definePacksComponents(): void {\n definePack();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-pack': UsaPackElement;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packs.js","sources":["../../src/components/packs/core.ts","../../src/components/packs/pack-el.ts","../../src/components/packs/index.ts"],"sourcesContent":["import { prefersReducedMotion, motionScale, EASE_OUT, EASE_SPRING, raf, now, clamp } from '../base';\n\ntype Cleanup = () => void;\n/** A pack primitive: wire one element, return a cleanup. */\ntype Effect = (el: HTMLElement, ctx: PackContext) => Cleanup | void;\n\nexport interface PackContext {\n root: HTMLElement;\n /** Index of the element among those with the same role (for staggering). */\n index: number;\n reduced: boolean;\n}\n\nconst anim = (el: Element, frames: Keyframe[], o: KeyframeAnimationOptions): Animation | null => {\n if (typeof (el as HTMLElement).animate !== 'function') return null;\n const k = motionScale();\n return (el as HTMLElement).animate(frames, { ...o, duration: ((o.duration as number) ?? 400) * k, delay: (o.delay ?? 0) * k });\n};\nconst on = (el: EventTarget, type: string, fn: (e: any) => void): Cleanup => {\n el.addEventListener(type, fn);\n return () => el.removeEventListener(type, fn);\n};\nconst io = (el: Element, cb: () => void): Cleanup => {\n if (typeof IntersectionObserver === 'undefined') return void cb() as unknown as Cleanup;\n const o = new IntersectionObserver((es) => es.some((e) => e.isIntersecting) && (o.disconnect(), cb()), { threshold: 0.15 });\n o.observe(el);\n return () => o.disconnect();\n};\n\n/** Count `el`'s number up from 0 when it enters the view (keeps prefix / suffix / decimals). */\nexport function countUp(el: HTMLElement, duration = 1200): Cleanup {\n const text = el.textContent || '';\n const m = /(-?[\\d,]*\\.?\\d+)/.exec(text);\n if (!m || prefersReducedMotion()) return () => {};\n const target = Number(m[1].replace(/,/g, ''));\n const dec = (m[1].split('.')[1] || '').length;\n const fmt = (v: number) => text.replace(m[1], v.toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec }));\n el.setAttribute('aria-label', text.trim());\n el.textContent = fmt(0);\n let stop = false;\n const off = io(el, () => {\n const t0 = now();\n const d = duration * motionScale() || 1;\n const step = () => {\n if (stop) return;\n const p = clamp((now() - t0) / d, 0, 1);\n el.textContent = fmt(target * (1 - Math.pow(1 - p, 3)));\n if (p < 1) raf(step);\n };\n raf(step);\n });\n return () => {\n stop = true;\n off();\n el.textContent = text;\n };\n}\n\n/**\n * Fly a copy of `from` (e.g. a product image) into `to` (the cart icon) along\n * an arc, then bump the target. Resolves when it lands. Instant under\n * reduced motion (only the bump's state change, no flight).\n */\nexport async function flyToCart(from: Element, to: Element, o: { duration?: number } = {}): Promise<void> {\n if (prefersReducedMotion() || typeof document === 'undefined') return;\n const a = from.getBoundingClientRect();\n const b = to.getBoundingClientRect();\n const ghost = from.cloneNode(true) as HTMLElement;\n ghost.setAttribute('aria-hidden', 'true');\n Object.assign(ghost.style, { position: 'fixed', left: `${a.left}px`, top: `${a.top}px`, width: `${a.width}px`, height: `${a.height}px`, margin: '0', zIndex: '2147483000', pointerEvents: 'none' });\n document.body.appendChild(ghost);\n const dx = b.left + b.width / 2 - (a.left + a.width / 2);\n const dy = b.top + b.height / 2 - (a.top + a.height / 2);\n const f = anim(ghost, [\n { transform: 'translate(0, 0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.5}px, ${dy * 0.5 - 80}px) scale(0.6)`, opacity: 0.9, offset: 0.5 },\n { transform: `translate(${dx}px, ${dy}px) scale(0.15)`, opacity: 0.4 },\n ], { duration: o.duration ?? 700, easing: 'cubic-bezier(0.5, 0, 0.5, 1)' });\n await f?.finished.catch(() => undefined);\n ghost.remove();\n anim(to, [{ transform: 'scale(1)' }, { transform: 'scale(1.3)' }, { transform: 'scale(1)' }], { duration: 380, easing: EASE_SPRING });\n}\n\nconst PRIMITIVES: Record<string, Effect> = {\n reveal: (el, c) => {\n if (c.reduced) return;\n el.style.opacity = '0';\n const off = io(el, () => {\n el.style.opacity = '';\n anim(el, [{ opacity: 0, transform: 'translateY(24px)' }, { opacity: 1, transform: 'none' }], { duration: 600, delay: Math.min(c.index, 8) * 70, easing: EASE_OUT, fill: 'backwards' });\n });\n return () => (off(), (el.style.opacity = ''));\n },\n lift: (el, c) => {\n if (c.reduced) return;\n const a = on(el, 'pointerenter', () => anim(el, [{ transform: 'none' }, { transform: 'translateY(-6px) scale(1.02)' }], { duration: 220, easing: EASE_OUT, fill: 'forwards' }));\n const b = on(el, 'pointerleave', () => anim(el, [{ transform: 'translateY(-6px) scale(1.02)' }, { transform: 'none' }], { duration: 260, easing: EASE_OUT, fill: 'forwards' }));\n return () => (a(), b());\n },\n press: (el, c) => (c.reduced ? undefined : on(el, 'pointerdown', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(0.94)' }, { transform: 'scale(1)' }], { duration: 260, easing: EASE_SPRING }))),\n 'count-up': (el) => countUp(el),\n pulse: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ boxShadow: '0 0 0 0 rgba(124, 92, 255, 0.55)' }, { boxShadow: '0 0 0 14px rgba(124, 92, 255, 0)' }], { duration: 1600, iterations: Infinity });\n return () => a?.cancel();\n },\n float: (el, c) => {\n if (c.reduced) return;\n const a = anim(el, [{ transform: 'translateY(0)' }, { transform: 'translateY(-8px)' }, { transform: 'translateY(0)' }], { duration: 3000, delay: c.index * 300, iterations: Infinity, easing: 'ease-in-out' });\n return () => a?.cancel();\n },\n shake: (el, c) => (c.reduced ? undefined : on(el, 'click', () => anim(el, [0, -8, 8, -6, 6, -3, 0].map((x) => ({ transform: `translateX(${x}px)` })), { duration: 420 }))),\n bump: (el, c) => (c.reduced ? undefined : on(el, 'usa:bump', () => anim(el, [{ transform: 'scale(1)' }, { transform: 'scale(1.25)' }, { transform: 'scale(1)' }], { duration: 360, easing: EASE_SPRING }))),\n 'fly-to-cart': (el, c) =>\n on(el, 'click', () => {\n const cart = c.root.querySelector('[data-role=\"cart\"]') || document.querySelector('[data-role=\"cart\"]');\n const item = el.closest('[data-role=\"product\"]')?.querySelector('img, [data-role=\"thumb\"]') || el;\n if (cart) void flyToCart(item, cart).then(() => cart.dispatchEvent(new CustomEvent('usa:added', { bubbles: true })));\n }),\n};\n\n/** The five effect packs: `data-role` → primitives. */\nexport const PACKS: Record<string, Record<string, string[]>> = {\n ecommerce: { product: ['reveal', 'lift'], 'add-to-cart': ['press', 'fly-to-cart'], cart: ['bump'], price: ['count-up'], badge: ['pulse'] },\n portfolio: { project: ['reveal', 'lift'], heading: ['reveal'], stat: ['count-up'], contact: ['press', 'pulse'] },\n dashboard: { card: ['reveal'], stat: ['count-up'], alert: ['pulse'], action: ['press'] },\n game: { button: ['press'], score: ['count-up', 'bump'], item: ['float'], hit: ['shake'], reward: ['pulse'] },\n landing: { hero: ['reveal'], feature: ['reveal', 'lift'], cta: ['press', 'pulse'], logo: ['float'], stat: ['count-up'] },\n};\n\nexport type PackName = keyof typeof PACKS;\n\n/**\n * Apply an effect pack to `root`: every descendant with a `data-role` the\n * pack knows gets its effects (staggered by index). Returns an undo function.\n * Reduced motion: only non-motion behaviour (e.g. the cart event) remains.\n *\n * @example\n * applyPack('ecommerce', document.querySelector('main'));\n * // <article data-role=\"product\">… <button data-role=\"add-to-cart\"> … <a data-role=\"cart\">\n */\nexport function applyPack(name: PackName | string, root: HTMLElement | Document = document): Cleanup {\n const pack = PACKS[name];\n if (!pack || typeof document === 'undefined') return () => {};\n const r = (root as Document).documentElement ? (root as Document).body : (root as HTMLElement);\n const reduced = prefersReducedMotion();\n const cleanups: Cleanup[] = [];\n for (const [role, fx] of Object.entries(pack)) {\n r.querySelectorAll<HTMLElement>(`[data-role=\"${role}\"]`).forEach((el, index) => {\n for (const f of fx) {\n const c = PRIMITIVES[f]?.(el, { root: r, index, reduced });\n if (c) cleanups.push(c);\n }\n });\n }\n return () => cleanups.splice(0).forEach((c) => c());\n}\n\n/** Primitive names a pack uses (for docs / tooling). */\nexport const PACK_PRIMITIVES = Object.keys(PRIMITIVES);\n","import { defineElement, type UsaElement } from '../base';\nimport { applyPack, PACKS } from './core';\n\n/**\n * `<usa-pack name=\"ecommerce\">` — applies an effect pack (`ecommerce` ·\n * `portfolio` · `dashboard` · `game` · `landing`) to its subtree:\n * descendants opt in with `data-role` (see `PACKS`). Re-applies when\n * `name` changes; undone on disconnect.\n */\nexport interface UsaPackElement extends UsaElement {\n readonly roles: string[];\n}\n\nexport function definePack(tag = 'usa-pack'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) =>\n class UsaPack extends Base {\n static get observedAttributes(): string[] {\n return ['name'];\n }\n get roles(): string[] {\n return Object.keys(PACKS[this.str('name', 'landing')] || {});\n }\n mount(): void {\n this.style.display ||= 'block';\n this.onCleanup(applyPack(this.str('name', 'landing'), this));\n }\n }\n );\n}\n","/**\n * motionary/components/packs — effect packs (v3.9).\n * Ready-made motion for e-commerce, portfolio, dashboard, game UI and\n * landing pages: mark elements with `data-role` and apply a pack with\n * `<usa-pack name=\"…\">` or `applyPack(name, root)`. Includes `flyToCart()`\n * and `countUp()`.\n */\nimport { definePack, type UsaPackElement } from './pack-el';\n\nexport { definePack };\nexport { applyPack, flyToCart, countUp, PACKS, PACK_PRIMITIVES } from './core';\nexport type { PackName, PackContext } from './core';\nexport type { UsaPackElement };\n\n/** Register every component of this category under its default tag. */\nexport function definePacksComponents(): void {\n definePack();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-pack': UsaPackElement;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var base = require('../chunks/base-B5i8qQPR.cjs');
4
- var spring = require('../chunks/spring--oZh55tB.cjs');
3
+ var base = require('../chunks/base-BaQV-2ha.cjs');
4
+ var spring = require('../chunks/spring-Dgx187Vh.cjs');
5
5
 
6
6
  var css$8 = "usa-cursor{--usa-cursor-color:var(--usa-accent,#7c5cff);--usa-cursor-size:28px;position:fixed;inset:0;pointer-events:none;z-index:2147483600;opacity:0;transition:opacity 0.2s ease;contain:strict}usa-cursor[data-active]{opacity:1}usa-cursor .usa-cursor-ring{position:absolute;left:0;top:0;width:var(--usa-cursor-size);height:var(--usa-cursor-size);margin:calc(var(--usa-cursor-size) / -2) 0 0 calc(var(--usa-cursor-size) / -2);border:1.5px solid var(--usa-cursor-color);border-radius:999px;box-sizing:border-box;transition:width 0.25s cubic-bezier(0.34,1.56,0.64,1),height 0.25s cubic-bezier(0.34,1.56,0.64,1),margin 0.25s ease,border-radius 0.25s ease,background-color 0.2s ease;will-change:transform}usa-cursor[data-hover] .usa-cursor-ring:first-child{width:calc(var(--usa-cursor-size) * 1.6);height:calc(var(--usa-cursor-size) * 1.6);margin:calc(var(--usa-cursor-size) * -0.8) 0 0 calc(var(--usa-cursor-size) * -0.8);background:color-mix(in srgb,var(--usa-cursor-color) 15%,transparent)}usa-cursor[data-snapped] .usa-cursor-ring{border-radius:12px;background:color-mix(in srgb,var(--usa-cursor-color) 12%,transparent);translate:-50% -50%;margin:0}usa-cursor[data-down] .usa-cursor-ring:first-child{scale:0.8}usa-cursor .usa-cursor-dot{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--usa-cursor-color)}usa-cursor[data-snapped] .usa-cursor-dot{opacity:0}usa-cursor .usa-cursor-glow{position:absolute;left:-200px;top:-200px;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--usa-cursor-color) 35%,transparent),transparent 65%);mix-blend-mode:screen}.usa-cursor-none,.usa-cursor-none *{cursor:none !important}@media (pointer:coarse),(prefers-reduced-motion:reduce){usa-cursor{display:none}.usa-cursor-none,.usa-cursor-none *{cursor:auto !important}}";
7
7
 
@@ -777,7 +777,7 @@ function themeTransition(apply, options = {}) {
777
777
  }
778
778
 
779
779
  /**
780
- * use-scroll-animate/components/page — page & app-wide effects (v2.7).
780
+ * motionary/components/page — page & app-wide effects (v2.7).
781
781
  * Page transitions (`pageTransition()`, `enableMpaTransitions()`,
782
782
  * `themeTransition()`), `<usa-cursor>`, `smoothScroll()` / `scrollToTarget()`,
783
783
  * `<usa-fullpage>`, `<usa-loading-bar>` + `loadingBar`, `<usa-back-to-top>`,