use-scroll-animate 10.2.0 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/AGENTS.md +4 -0
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +67 -0
  4. package/bin/motionary-mcp.mjs +265 -0
  5. package/dist/chunks/anim-image-DDdb9q3X.js +166 -0
  6. package/dist/chunks/anim-image-DDdb9q3X.js.map +1 -0
  7. package/dist/chunks/anim-image-blQgPFFS.cjs +174 -0
  8. package/dist/chunks/anim-image-blQgPFFS.cjs.map +1 -0
  9. package/dist/chunks/audio-BpU-A1m1.cjs.map +1 -1
  10. package/dist/chunks/{audio-D95jwlOh.js → audio-CWt1xdZB.js} +3 -3
  11. package/dist/chunks/{audio-D95jwlOh.js.map → audio-CWt1xdZB.js.map} +1 -1
  12. package/dist/chunks/{base-BnRyfuyM.js → base-BTev8qxg.js} +2 -2
  13. package/dist/chunks/{base-BnRyfuyM.js.map → base-BTev8qxg.js.map} +1 -1
  14. package/dist/chunks/base-DBheNxJu.cjs.map +1 -1
  15. package/dist/chunks/bind-B_CTL6Qn.js.map +1 -1
  16. package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -1
  17. package/dist/chunks/builtins-CKKZNR95.cjs.map +1 -1
  18. package/dist/chunks/{builtins-CqIq1zBv.js → builtins-CPmS6aDB.js} +3 -3
  19. package/dist/chunks/{builtins-CqIq1zBv.js.map → builtins-CPmS6aDB.js.map} +1 -1
  20. package/dist/chunks/core-B5T0dhFH.cjs.map +1 -1
  21. package/dist/chunks/{core-DsGoL9EY.js → core-BviA7nFa.js} +2 -2
  22. package/dist/chunks/{core-DsGoL9EY.js.map → core-BviA7nFa.js.map} +1 -1
  23. package/dist/chunks/core-D74Fz-dL.cjs.map +1 -1
  24. package/dist/chunks/core-D7cVumUu.js.map +1 -1
  25. package/dist/chunks/{core-XA2yhn1b.js → core-KiM7MXjL.js} +2 -2
  26. package/dist/chunks/{core-XA2yhn1b.js.map → core-KiM7MXjL.js.map} +1 -1
  27. package/dist/chunks/core-MQlXZKUG.cjs.map +1 -1
  28. package/dist/chunks/ease-HwYZnZat.cjs +94 -0
  29. package/dist/chunks/ease-HwYZnZat.cjs.map +1 -0
  30. package/dist/chunks/ease-XN8_0sXu.js +89 -0
  31. package/dist/chunks/ease-XN8_0sXu.js.map +1 -0
  32. package/dist/chunks/fx-B_pbhpDp.cjs.map +1 -1
  33. package/dist/chunks/{fx-CtnrFEg9.js → fx-CgWKqVsn.js} +2 -2
  34. package/dist/chunks/{fx-CtnrFEg9.js.map → fx-CgWKqVsn.js.map} +1 -1
  35. package/dist/chunks/generative-2LhxG5BJ.js.map +1 -1
  36. package/dist/chunks/generative-BHIj-NU0.cjs.map +1 -1
  37. package/dist/chunks/{gpu-CDcXiNA8.js → gpu-BWfgYWMY.js} +2 -2
  38. package/dist/chunks/{gpu-CDcXiNA8.js.map → gpu-BWfgYWMY.js.map} +1 -1
  39. package/dist/chunks/gpu-cUixt7kT.cjs.map +1 -1
  40. package/dist/chunks/index-tags-B-JBecYg.js.map +1 -1
  41. package/dist/chunks/index-tags-hLIF2Clq.cjs.map +1 -1
  42. package/dist/chunks/{keyframes-W-474DMc.js → keyframes-B5PWe5bU.js} +3 -2
  43. package/dist/chunks/keyframes-B5PWe5bU.js.map +1 -0
  44. package/dist/chunks/{keyframes-ZheOkpt0.cjs → keyframes-tC3I7anQ.cjs} +4 -3
  45. package/dist/chunks/keyframes-tC3I7anQ.cjs.map +1 -0
  46. package/dist/chunks/{manifest-D58HXVY-.js → manifest-BHx5yPN6.js} +2 -2
  47. package/dist/chunks/{manifest-D58HXVY-.js.map → manifest-BHx5yPN6.js.map} +1 -1
  48. package/dist/chunks/manifest-PaF9B8Vt.cjs.map +1 -1
  49. package/dist/chunks/{player-48Zy_NBG.js → player-BfHMNtiM.js} +4 -4
  50. package/dist/chunks/{player-48Zy_NBG.js.map → player-BfHMNtiM.js.map} +1 -1
  51. package/dist/chunks/player-C4y4jXSv.cjs.map +1 -1
  52. package/dist/chunks/presets-BYBVJVeP.js.map +1 -1
  53. package/dist/chunks/presets-CUHys3sK.cjs.map +1 -1
  54. package/dist/chunks/{registry-gFJRpPES.js → registry-BKzyg1JV.js} +2 -2
  55. package/dist/chunks/{registry-gFJRpPES.js.map → registry-BKzyg1JV.js.map} +1 -1
  56. package/dist/chunks/{registry-BIEjKngP.js → registry-CT-TT_bx.js} +3 -3
  57. package/dist/chunks/{registry-BIEjKngP.js.map → registry-CT-TT_bx.js.map} +1 -1
  58. package/dist/chunks/{registry-eJgpFAzI.cjs → registry-tzwKkldE.cjs} +2 -2
  59. package/dist/chunks/{registry-eJgpFAzI.cjs.map → registry-tzwKkldE.cjs.map} +1 -1
  60. package/dist/chunks/registry-xQZnSqqV.cjs.map +1 -1
  61. package/dist/chunks/shared-CkKHWrtJ.js.map +1 -1
  62. package/dist/chunks/shared-jkgRH-Hx.cjs.map +1 -1
  63. package/dist/chunks/{spring-CZDNyqWp.js → spring-BHuP55DR.js} +2 -2
  64. package/dist/chunks/{spring-CZDNyqWp.js.map → spring-BHuP55DR.js.map} +1 -1
  65. package/dist/chunks/spring-BlTQD2AV.cjs.map +1 -1
  66. package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -1
  67. package/dist/chunks/stagger-DtMKo2SK.js.map +1 -1
  68. package/dist/chunks/{ticker-CM_56oVy.js → ticker-C8lSGml9.js} +2 -2
  69. package/dist/chunks/{ticker-CM_56oVy.js.map → ticker-C8lSGml9.js.map} +1 -1
  70. package/dist/chunks/{ticker-D4o6enH0.cjs → ticker-Un0bvTWR.cjs} +2 -2
  71. package/dist/chunks/{ticker-D4o6enH0.cjs.map → ticker-Un0bvTWR.cjs.map} +1 -1
  72. package/dist/chunks/{tween-CqX1JBuj.js → tween-BcejKpsx.js} +15 -91
  73. package/dist/chunks/tween-BcejKpsx.js.map +1 -0
  74. package/dist/chunks/{tween-CBuWYpI-.cjs → tween-CwLLC3Ko.cjs} +15 -95
  75. package/dist/chunks/tween-CwLLC3Ko.cjs.map +1 -0
  76. package/dist/chunks/variants-CrDDJoYK.cjs.map +1 -1
  77. package/dist/chunks/{variants-GU3yIL4F.js → variants-CsRGUIyA.js} +2 -2
  78. package/dist/chunks/{variants-GU3yIL4F.js.map → variants-CsRGUIyA.js.map} +1 -1
  79. package/dist/components/a11y.cjs.map +1 -1
  80. package/dist/components/a11y.js +2 -2
  81. package/dist/components/a11y.js.map +1 -1
  82. package/dist/components/angular.cjs.map +1 -1
  83. package/dist/components/angular.js +8 -8
  84. package/dist/components/angular.js.map +1 -1
  85. package/dist/components/background.cjs.map +1 -1
  86. package/dist/components/background.js +2 -2
  87. package/dist/components/background.js.map +1 -1
  88. package/dist/components/bridge.cjs.map +1 -1
  89. package/dist/components/bridge.js +1 -1
  90. package/dist/components/bridge.js.map +1 -1
  91. package/dist/components/cards.cjs.map +1 -1
  92. package/dist/components/cards.js +2 -2
  93. package/dist/components/cards.js.map +1 -1
  94. package/dist/components/click.cjs.map +1 -1
  95. package/dist/components/click.js +3 -3
  96. package/dist/components/click.js.map +1 -1
  97. package/dist/components/core.cjs.map +1 -1
  98. package/dist/components/core.js.map +1 -1
  99. package/dist/components/depth.cjs.map +1 -1
  100. package/dist/components/depth.js +3 -3
  101. package/dist/components/depth.js.map +1 -1
  102. package/dist/components/design.cjs.map +1 -1
  103. package/dist/components/design.js +3 -3
  104. package/dist/components/design.js.map +1 -1
  105. package/dist/components/dsl.cjs.map +1 -1
  106. package/dist/components/dsl.js +2 -2
  107. package/dist/components/dsl.js.map +1 -1
  108. package/dist/components/effects.cjs.map +1 -1
  109. package/dist/components/effects.js +9 -9
  110. package/dist/components/effects.js.map +1 -1
  111. package/dist/components/engine.cjs.map +1 -1
  112. package/dist/components/engine.js +2 -2
  113. package/dist/components/engine.js.map +1 -1
  114. package/dist/components/feedback.cjs.map +1 -1
  115. package/dist/components/feedback.js +1 -1
  116. package/dist/components/feedback.js.map +1 -1
  117. package/dist/components/fx-3d.cjs.map +1 -1
  118. package/dist/components/fx-3d.js +2 -2
  119. package/dist/components/fx-3d.js.map +1 -1
  120. package/dist/components/fx-ai.cjs.map +1 -1
  121. package/dist/components/fx-ai.js +2 -2
  122. package/dist/components/fx-ai.js.map +1 -1
  123. package/dist/components/fx-chart.cjs.map +1 -1
  124. package/dist/components/fx-chart.js +2 -2
  125. package/dist/components/fx-chart.js.map +1 -1
  126. package/dist/components/fx-cinema.cjs.map +1 -1
  127. package/dist/components/fx-cinema.js +2 -2
  128. package/dist/components/fx-cinema.js.map +1 -1
  129. package/dist/components/fx-cyber.cjs.map +1 -1
  130. package/dist/components/fx-cyber.js +2 -2
  131. package/dist/components/fx-cyber.js.map +1 -1
  132. package/dist/components/fx-festival.cjs.map +1 -1
  133. package/dist/components/fx-festival.js +2 -2
  134. package/dist/components/fx-festival.js.map +1 -1
  135. package/dist/components/fx-focus.cjs.map +1 -1
  136. package/dist/components/fx-focus.js +2 -2
  137. package/dist/components/fx-focus.js.map +1 -1
  138. package/dist/components/fx-form.cjs.map +1 -1
  139. package/dist/components/fx-form.js +2 -2
  140. package/dist/components/fx-form.js.map +1 -1
  141. package/dist/components/fx-game.cjs.map +1 -1
  142. package/dist/components/fx-game.js +2 -2
  143. package/dist/components/fx-game.js.map +1 -1
  144. package/dist/components/fx-genart.cjs.map +1 -1
  145. package/dist/components/fx-genart.js +2 -2
  146. package/dist/components/fx-genart.js.map +1 -1
  147. package/dist/components/fx-geo.cjs.map +1 -1
  148. package/dist/components/fx-geo.js +2 -2
  149. package/dist/components/fx-geo.js.map +1 -1
  150. package/dist/components/fx-gesture.cjs.map +1 -1
  151. package/dist/components/fx-gesture.js +2 -2
  152. package/dist/components/fx-gesture.js.map +1 -1
  153. package/dist/components/fx-gpu.js +3 -3
  154. package/dist/components/fx-light.cjs.map +1 -1
  155. package/dist/components/fx-light.js +2 -2
  156. package/dist/components/fx-light.js.map +1 -1
  157. package/dist/components/fx-lottie.cjs.map +1 -1
  158. package/dist/components/fx-lottie.js +2 -2
  159. package/dist/components/fx-lottie.js.map +1 -1
  160. package/dist/components/fx-morph.cjs.map +1 -1
  161. package/dist/components/fx-morph.js +2 -2
  162. package/dist/components/fx-morph.js.map +1 -1
  163. package/dist/components/fx-music.cjs.map +1 -1
  164. package/dist/components/fx-music.js +3 -3
  165. package/dist/components/fx-music.js.map +1 -1
  166. package/dist/components/fx-organic.cjs.map +1 -1
  167. package/dist/components/fx-organic.js +2 -2
  168. package/dist/components/fx-organic.js.map +1 -1
  169. package/dist/components/fx-paper.cjs.map +1 -1
  170. package/dist/components/fx-paper.js +2 -2
  171. package/dist/components/fx-paper.js.map +1 -1
  172. package/dist/components/fx-perf.cjs.map +1 -1
  173. package/dist/components/fx-perf.js +2 -2
  174. package/dist/components/fx-perf.js.map +1 -1
  175. package/dist/components/fx-physics.cjs.map +1 -1
  176. package/dist/components/fx-physics.js +2 -2
  177. package/dist/components/fx-physics.js.map +1 -1
  178. package/dist/components/fx-retro.cjs.map +1 -1
  179. package/dist/components/fx-retro.js +2 -2
  180. package/dist/components/fx-retro.js.map +1 -1
  181. package/dist/components/fx-safe.cjs.map +1 -1
  182. package/dist/components/fx-safe.js +2 -2
  183. package/dist/components/fx-safe.js.map +1 -1
  184. package/dist/components/fx-shop.cjs.map +1 -1
  185. package/dist/components/fx-shop.js +2 -2
  186. package/dist/components/fx-shop.js.map +1 -1
  187. package/dist/components/fx-social.cjs.map +1 -1
  188. package/dist/components/fx-social.js +2 -2
  189. package/dist/components/fx-social.js.map +1 -1
  190. package/dist/components/fx-spatial.cjs.map +1 -1
  191. package/dist/components/fx-spatial.js +2 -2
  192. package/dist/components/fx-spatial.js.map +1 -1
  193. package/dist/components/fx-surface.cjs.map +1 -1
  194. package/dist/components/fx-surface.js +2 -2
  195. package/dist/components/fx-surface.js.map +1 -1
  196. package/dist/components/fx-text.cjs.map +1 -1
  197. package/dist/components/fx-text.js +2 -2
  198. package/dist/components/fx-text.js.map +1 -1
  199. package/dist/components/fx-transitions.cjs.map +1 -1
  200. package/dist/components/fx-transitions.js +3 -3
  201. package/dist/components/fx-transitions.js.map +1 -1
  202. package/dist/components/fx-video.cjs.map +1 -1
  203. package/dist/components/fx-video.js +2 -2
  204. package/dist/components/fx-video.js.map +1 -1
  205. package/dist/components/fx-weather.cjs.map +1 -1
  206. package/dist/components/fx-weather.js +2 -2
  207. package/dist/components/fx-weather.js.map +1 -1
  208. package/dist/components/fx.cjs.map +1 -1
  209. package/dist/components/fx.js +6 -6
  210. package/dist/components/fx.js.map +1 -1
  211. package/dist/components/fx2.cjs.map +1 -1
  212. package/dist/components/fx2.js +6 -6
  213. package/dist/components/fx2.js.map +1 -1
  214. package/dist/components/gesture.cjs.map +1 -1
  215. package/dist/components/gesture.js +4 -4
  216. package/dist/components/gesture.js.map +1 -1
  217. package/dist/components/interaction.cjs.map +1 -1
  218. package/dist/components/interaction.js +1 -1
  219. package/dist/components/interaction.js.map +1 -1
  220. package/dist/components/layout.cjs.map +1 -1
  221. package/dist/components/layout.js +1 -1
  222. package/dist/components/layout.js.map +1 -1
  223. package/dist/components/lazy.cjs.map +1 -1
  224. package/dist/components/lazy.js.map +1 -1
  225. package/dist/components/lite.cjs.map +1 -1
  226. package/dist/components/lite.js.map +1 -1
  227. package/dist/components/marketplace.cjs.map +1 -1
  228. package/dist/components/marketplace.js +4 -4
  229. package/dist/components/marketplace.js.map +1 -1
  230. package/dist/components/native.cjs.map +1 -1
  231. package/dist/components/native.js +3 -3
  232. package/dist/components/native.js.map +1 -1
  233. package/dist/components/packs.cjs.map +1 -1
  234. package/dist/components/packs.js +1 -1
  235. package/dist/components/packs.js.map +1 -1
  236. package/dist/components/page.cjs.map +1 -1
  237. package/dist/components/page.js +3 -3
  238. package/dist/components/page.js.map +1 -1
  239. package/dist/components/perf.cjs.map +1 -1
  240. package/dist/components/perf.js +2 -2
  241. package/dist/components/perf.js.map +1 -1
  242. package/dist/components/physics.cjs.map +1 -1
  243. package/dist/components/physics.js +3 -3
  244. package/dist/components/physics.js.map +1 -1
  245. package/dist/components/plugins.cjs.map +1 -1
  246. package/dist/components/plugins.js +4 -4
  247. package/dist/components/plugins.js.map +1 -1
  248. package/dist/components/react.cjs.map +1 -1
  249. package/dist/components/react.js.map +1 -1
  250. package/dist/components/reveal.cjs.map +1 -1
  251. package/dist/components/reveal.js +1 -1
  252. package/dist/components/reveal.js.map +1 -1
  253. package/dist/components/solid.cjs.map +1 -1
  254. package/dist/components/solid.js +8 -8
  255. package/dist/components/solid.js.map +1 -1
  256. package/dist/components/svelte.cjs.map +1 -1
  257. package/dist/components/svelte.js +8 -8
  258. package/dist/components/svelte.js.map +1 -1
  259. package/dist/components/svg.cjs.map +1 -1
  260. package/dist/components/svg.js +1 -1
  261. package/dist/components/svg.js.map +1 -1
  262. package/dist/components/text.cjs.map +1 -1
  263. package/dist/components/text.js +2 -2
  264. package/dist/components/text.js.map +1 -1
  265. package/dist/components/timeline.cjs.map +1 -1
  266. package/dist/components/timeline.js +3 -3
  267. package/dist/components/timeline.js.map +1 -1
  268. package/dist/components/tokens.cjs.map +1 -1
  269. package/dist/components/tokens.js.map +1 -1
  270. package/dist/components/transitions.cjs.map +1 -1
  271. package/dist/components/transitions.js +1 -1
  272. package/dist/components/transitions.js.map +1 -1
  273. package/dist/components/ui.cjs.map +1 -1
  274. package/dist/components/ui.js +4 -4
  275. package/dist/components/ui.js.map +1 -1
  276. package/dist/components/vue.cjs.map +1 -1
  277. package/dist/components/vue.js +8 -8
  278. package/dist/components/vue.js.map +1 -1
  279. package/dist/components/webgl.cjs.map +1 -1
  280. package/dist/components/webgl.js +1 -1
  281. package/dist/components/webgl.js.map +1 -1
  282. package/dist/components/widgets.cjs +766 -212
  283. package/dist/components/widgets.cjs.map +1 -1
  284. package/dist/components/widgets.d.cts +207 -2
  285. package/dist/components/widgets.d.ts +207 -2
  286. package/dist/components/widgets.js +770 -221
  287. package/dist/components/widgets.js.map +1 -1
  288. package/dist/components.cjs.map +1 -1
  289. package/dist/components.js +10 -10
  290. package/dist/components.js.map +1 -1
  291. package/dist/element.cjs.map +1 -1
  292. package/dist/element.js.map +1 -1
  293. package/dist/index.cjs.map +1 -1
  294. package/dist/index.js +2 -2
  295. package/dist/index.js.map +1 -1
  296. package/dist/llms-full.txt +250 -1
  297. package/dist/llms.txt +13 -2
  298. package/dist/manifest.json +646 -1
  299. package/dist/presets/extended.cjs.map +1 -1
  300. package/dist/presets/extended.js.map +1 -1
  301. package/dist/react.cjs.map +1 -1
  302. package/dist/react.js.map +1 -1
  303. package/dist/runtime/format-apng.cjs +131 -0
  304. package/dist/runtime/format-apng.cjs.map +1 -0
  305. package/dist/runtime/format-apng.d.cts +250 -0
  306. package/dist/runtime/format-apng.d.ts +250 -0
  307. package/dist/runtime/format-apng.iife.js +2 -0
  308. package/dist/runtime/format-apng.iife.js.map +1 -0
  309. package/dist/runtime/format-apng.js +123 -0
  310. package/dist/runtime/format-apng.js.map +1 -0
  311. package/dist/runtime/format-css.cjs +5 -4
  312. package/dist/runtime/format-css.cjs.map +1 -1
  313. package/dist/runtime/format-css.js +5 -4
  314. package/dist/runtime/format-css.js.map +1 -1
  315. package/dist/runtime/format-gif.cjs +206 -0
  316. package/dist/runtime/format-gif.cjs.map +1 -0
  317. package/dist/runtime/format-gif.d.cts +223 -0
  318. package/dist/runtime/format-gif.d.ts +223 -0
  319. package/dist/runtime/format-gif.iife.js +2 -0
  320. package/dist/runtime/format-gif.iife.js.map +1 -0
  321. package/dist/runtime/format-gif.js +199 -0
  322. package/dist/runtime/format-gif.js.map +1 -0
  323. package/dist/runtime/format-motion.cjs +9 -8
  324. package/dist/runtime/format-motion.cjs.map +1 -1
  325. package/dist/runtime/format-motion.js +5 -4
  326. package/dist/runtime/format-motion.js.map +1 -1
  327. package/dist/runtime/format-sprite.cjs +226 -0
  328. package/dist/runtime/format-sprite.cjs.map +1 -0
  329. package/dist/runtime/format-sprite.d.cts +224 -0
  330. package/dist/runtime/format-sprite.d.ts +224 -0
  331. package/dist/runtime/format-sprite.iife.js +2 -0
  332. package/dist/runtime/format-sprite.iife.js.map +1 -0
  333. package/dist/runtime/format-sprite.js +216 -0
  334. package/dist/runtime/format-sprite.js.map +1 -0
  335. package/dist/runtime/format-svg.cjs +5 -4
  336. package/dist/runtime/format-svg.cjs.map +1 -1
  337. package/dist/runtime/format-svg.iife.js.map +1 -1
  338. package/dist/runtime/format-svg.js +4 -3
  339. package/dist/runtime/format-svg.js.map +1 -1
  340. package/dist/runtime/format-webp.cjs +123 -0
  341. package/dist/runtime/format-webp.cjs.map +1 -0
  342. package/dist/runtime/format-webp.d.cts +245 -0
  343. package/dist/runtime/format-webp.d.ts +245 -0
  344. package/dist/runtime/format-webp.iife.js +2 -0
  345. package/dist/runtime/format-webp.iife.js.map +1 -0
  346. package/dist/runtime/format-webp.js +115 -0
  347. package/dist/runtime/format-webp.js.map +1 -0
  348. package/dist/runtime/scroll.cjs +2 -2
  349. package/dist/runtime/scroll.cjs.map +1 -1
  350. package/dist/runtime/scroll.js +2 -2
  351. package/dist/runtime/scroll.js.map +1 -1
  352. package/dist/runtime/smooth.cjs +284 -0
  353. package/dist/runtime/smooth.cjs.map +1 -0
  354. package/dist/runtime/smooth.d.cts +137 -0
  355. package/dist/runtime/smooth.d.ts +137 -0
  356. package/dist/runtime/smooth.iife.js +2 -0
  357. package/dist/runtime/smooth.iife.js.map +1 -0
  358. package/dist/runtime/smooth.js +279 -0
  359. package/dist/runtime/smooth.js.map +1 -0
  360. package/dist/runtime/text.cjs +147 -0
  361. package/dist/runtime/text.cjs.map +1 -0
  362. package/dist/runtime/text.d.cts +65 -0
  363. package/dist/runtime/text.d.ts +65 -0
  364. package/dist/runtime/text.iife.js +2 -0
  365. package/dist/runtime/text.iife.js.map +1 -0
  366. package/dist/runtime/text.js +143 -0
  367. package/dist/runtime/text.js.map +1 -0
  368. package/dist/runtime.cjs +9 -8
  369. package/dist/runtime.cjs.map +1 -1
  370. package/dist/runtime.d.cts +9 -2
  371. package/dist/runtime.d.ts +9 -2
  372. package/dist/runtime.iife.js +1 -1
  373. package/dist/runtime.iife.js.map +1 -1
  374. package/dist/runtime.js +6 -5
  375. package/dist/runtime.js.map +1 -1
  376. package/dist/solid.cjs.map +1 -1
  377. package/dist/solid.js.map +1 -1
  378. package/dist/svelte.cjs.map +1 -1
  379. package/dist/svelte.js.map +1 -1
  380. package/dist/vue.cjs.map +1 -1
  381. package/dist/vue.js.map +1 -1
  382. package/dist/widgets.umd.js +1 -1
  383. package/dist/widgets.umd.js.map +1 -1
  384. package/docs/ROADMAP.md +2 -2
  385. package/docs/components/README.md +12 -7
  386. package/docs/components/usa-parallax-layers.md +38 -0
  387. package/docs/components/usa-route-transition.md +38 -0
  388. package/docs/components/usa-scroll-ring.md +32 -0
  389. package/docs/components/usa-smooth-scroll.md +60 -0
  390. package/docs/components/usa-text-splitter.md +60 -0
  391. package/docs/components.md +94 -0
  392. package/docs/mcp.md +50 -0
  393. package/docs/runtime/format-apng.md +59 -0
  394. package/docs/runtime/format-gif.md +60 -0
  395. package/docs/runtime/format-sprite.md +60 -0
  396. package/docs/runtime/format-webp.md +58 -0
  397. package/docs/runtime/smooth.md +60 -0
  398. package/docs/runtime/text.md +59 -0
  399. package/package.json +64 -2
  400. package/dist/chunks/keyframes-W-474DMc.js.map +0 -1
  401. package/dist/chunks/keyframes-ZheOkpt0.cjs.map +0 -1
  402. package/dist/chunks/tween-CBuWYpI-.cjs.map +0 -1
  403. package/dist/chunks/tween-CqX1JBuj.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.cjs","sources":["../../src/components/bridge/index.ts"],"sourcesContent":["/**\n * motionary/components/bridge — native shell bridges (4.7).\n *\n * Keeps the web UI in sync with the host app's system settings when it runs\n * inside **WinUI 3 / WPF (WebView2)**, **.NET MAUI** (WebView / HybridWebView)\n * or **Flutter** (webview_flutter / flutter_inappwebview): the native side\n * sends \"reduce motion\", light / dark / high-contrast theme and accent color;\n * the page applies them to every `<usa-*>` component.\n *\n * Protocol (JSON, both directions):\n * - native → web `{ \"type\": \"usa:settings\", \"reducedMotion\": true, \"theme\": \"dark\", \"accent\": \"#0078d4\", \"sensitivity\": \"gentle\" }`\n * - web → native `{ \"type\": \"usa:ready\", \"version\": 1 }` on connect, `{ \"type\": \"usa:request-settings\" }`\n *\n * Hosts that can only run script call `window.usaNative.apply({...})`.\n * Samples: examples/native/{winui3,maui,flutter}.\n */\nimport { configureComponents, MOTION_SENSITIVITY_LEVELS, type MotionSensitivity } from '../base';\n\nexport type NativeHost = 'webview2' | 'maui' | 'flutter' | 'electron' | 'tauri' | 'browser';\nexport type NativeTheme = 'light' | 'dark' | 'high-contrast';\n\nexport interface NativeSettings {\n reducedMotion?: boolean;\n theme?: NativeTheme;\n /** CSS color (`#0078d4`, `rgb(…)`). */\n accent?: string;\n /** Optional finer level (4.4). */\n sensitivity?: MotionSensitivity;\n}\n\nexport interface NativeShellOptions {\n /** Element that gets `data-theme` / `color-scheme` / `--usa-accent` (default `<html>`). */\n root?: HTMLElement;\n /** Flutter JavaScriptChannel name (default `UsaBridge`). */\n channel?: string;\n /** Called after settings are applied. */\n onSettings?: (settings: NativeSettings, host: NativeHost) => void;\n}\n\nexport const BRIDGE_PROTOCOL_VERSION = 1;\n\ntype W = Record<string, any>;\nconst win = (): W | null => (typeof window === 'undefined' ? null : (window as unknown as W));\n\n/** Which native shell (if any) hosts this page. */\nexport function detectNativeHost(channel = 'UsaBridge'): NativeHost {\n const w = win();\n if (!w) return 'browser';\n if (w.chrome?.webview?.postMessage) return 'webview2';\n if (w.HybridWebView?.SendRawMessage || w.HybridWebView?.SendRawMessageToDotNet || /\\bMAUI\\b/i.test(w.navigator?.userAgent || '')) return 'maui';\n if (w.flutter_inappwebview?.callHandler || w[channel]?.postMessage) return 'flutter';\n if (w.__TAURI__ || w.__TAURI_INTERNALS__) return 'tauri';\n if (w.process?.versions?.electron || /Electron\\//.test(w.navigator?.userAgent || '')) return 'electron';\n return 'browser';\n}\n\n/** Send a JSON message to the native host (no-op in a plain browser). Returns whether it was sent. */\nexport function postToNative(message: Record<string, unknown>, channel = 'UsaBridge'): boolean {\n const w = win();\n if (!w) return false;\n const json = JSON.stringify(message);\n try {\n if (w.chrome?.webview?.postMessage) return w.chrome.webview.postMessage(message), true;\n if (w.HybridWebView?.SendRawMessage) return w.HybridWebView.SendRawMessage(json), true;\n if (w.HybridWebView?.SendRawMessageToDotNet) return w.HybridWebView.SendRawMessageToDotNet(json), true;\n if (w.flutter_inappwebview?.callHandler) return w.flutter_inappwebview.callHandler(channel, json), true;\n if (w[channel]?.postMessage) return w[channel].postMessage(json), true;\n } catch {\n /* host went away */\n }\n return false;\n}\n\nconst THEMES: NativeTheme[] = ['light', 'dark', 'high-contrast'];\nconst COLOR = /^(#[0-9a-f]{3,8}|rgba?\\([\\d\\s.,%]+\\)|hsla?\\([\\d\\s.,%deg]+\\))$/i;\n\n/** Validate an incoming message (string or object); unknown fields are dropped. */\nexport function parseNativeSettings(data: unknown): NativeSettings | null {\n let d: any = data;\n if (typeof d === 'string') {\n try {\n d = JSON.parse(d);\n } catch {\n return null;\n }\n }\n if (!d || typeof d !== 'object' || d.type !== 'usa:settings') return null;\n const out: NativeSettings = {};\n if (typeof d.reducedMotion === 'boolean') out.reducedMotion = d.reducedMotion;\n if (THEMES.includes(d.theme)) out.theme = d.theme;\n if (typeof d.accent === 'string' && COLOR.test(d.accent.trim())) out.accent = d.accent.trim();\n if (MOTION_SENSITIVITY_LEVELS.includes(d.sensitivity)) out.sensitivity = d.sensitivity;\n return out;\n}\n\n/**\n * Apply native settings: reduce motion → `configureComponents({ reducedMotion: 'reduce' })`\n * (`false` → follow the media query again); theme → `data-theme`, `data-usa-contrast`\n * and `color-scheme`; accent → `--usa-accent`; sensitivity → `motionSensitivity`.\n */\nexport function applyNativeSettings(s: NativeSettings, root?: HTMLElement): void {\n if (s.reducedMotion !== undefined) configureComponents({ reducedMotion: s.reducedMotion ? 'reduce' : 'user' });\n if (s.sensitivity) configureComponents({ motionSensitivity: s.sensitivity });\n const el = root || (typeof document !== 'undefined' ? document.documentElement : null);\n if (!el) return;\n if (s.theme) {\n el.setAttribute('data-theme', s.theme === 'high-contrast' ? 'dark' : s.theme);\n el.toggleAttribute('data-usa-contrast', s.theme === 'high-contrast');\n el.style.colorScheme = s.theme === 'light' ? 'light' : 'dark';\n }\n if (s.accent) el.style.setProperty('--usa-accent', s.accent);\n if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('usa:native-settings', { detail: s }));\n}\n\n/**\n * Connect to the native shell: listens for `usa:settings` messages\n * (WebView2 `chrome.webview` messages, `window.postMessage`, or\n * `window.usaNative.apply()`), applies them, then announces `usa:ready` and\n * asks for the current settings. Returns `{ host, disconnect }`.\n */\nexport function connectNativeShell(options: NativeShellOptions = {}): { host: NativeHost; disconnect: () => void } {\n const w = win();\n const channel = options.channel || 'UsaBridge';\n const host = detectNativeHost(channel);\n if (!w) return { host, disconnect: () => undefined };\n const handle = (data: unknown) => {\n const s = parseNativeSettings(data);\n if (!s) return;\n applyNativeSettings(s, options.root);\n options.onSettings?.(s, host);\n };\n const onMessage = (e: MessageEvent) => handle(e.data);\n w.chrome?.webview?.addEventListener?.('message', onMessage);\n w.addEventListener?.('message', onMessage);\n const prev = w.usaNative;\n w.usaNative = { apply: (s: NativeSettings) => handle({ ...s, type: 'usa:settings' }), version: BRIDGE_PROTOCOL_VERSION, host };\n postToNative({ type: 'usa:ready', version: BRIDGE_PROTOCOL_VERSION }, channel);\n postToNative({ type: 'usa:request-settings' }, channel);\n return {\n host,\n disconnect: () => {\n w.chrome?.webview?.removeEventListener?.('message', onMessage);\n w.removeEventListener?.('message', onMessage);\n w.usaNative = prev;\n },\n };\n}\n"],"names":["MOTION_SENSITIVITY_LEVELS","configureComponents"],"mappings":";;;;AAAA;;;;;;;;;;;;;;;AAeG;AAwBI,MAAM,uBAAuB,GAAG;AAGvC,MAAM,GAAG,GAAG,OAAiB,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,GAAI,MAAuB,CAAC;AAE7F;AACM,SAAU,gBAAgB,CAAC,OAAO,GAAG,WAAW,EAAA;AACpD,IAAA,MAAM,CAAC,GAAG,GAAG,EAAE;AACf,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,SAAS;AACxB,IAAA,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW;AAAE,QAAA,OAAO,UAAU;IACrD,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,IAAI,CAAC,CAAC,aAAa,EAAE,sBAAsB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AAAE,QAAA,OAAO,MAAM;IAC/I,IAAI,CAAC,CAAC,oBAAoB,EAAE,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW;AAAE,QAAA,OAAO,SAAS;AACpF,IAAA,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,mBAAmB;AAAE,QAAA,OAAO,OAAO;AACxD,IAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AAAE,QAAA,OAAO,UAAU;AACvG,IAAA,OAAO,SAAS;AAClB;AAEA;SACgB,YAAY,CAAC,OAAgC,EAAE,OAAO,GAAG,WAAW,EAAA;AAClF,IAAA,MAAM,CAAC,GAAG,GAAG,EAAE;AACf,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACpC,IAAA,IAAI;AACF,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW;AAAE,YAAA,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI;AACtF,QAAA,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc;YAAE,OAAO,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI;AACtF,QAAA,IAAI,CAAC,CAAC,aAAa,EAAE,sBAAsB;YAAE,OAAO,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI;AACtG,QAAA,IAAI,CAAC,CAAC,oBAAoB,EAAE,WAAW;AAAE,YAAA,OAAO,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI;AACvG,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI;IACxE;AAAE,IAAA,MAAM;;IAER;AACA,IAAA,OAAO,KAAK;AACd;AAEA,MAAM,MAAM,GAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC;AAChE,MAAM,KAAK,GAAG,gEAAgE;AAE9E;AACM,SAAU,mBAAmB,CAAC,IAAa,EAAA;IAC/C,IAAI,CAAC,GAAQ,IAAI;AACjB,IAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,QAAA,IAAI;AACF,YAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;AACA,IAAA,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;AAAE,QAAA,OAAO,IAAI;IACzE,MAAM,GAAG,GAAmB,EAAE;AAC9B,IAAA,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS;AAAE,QAAA,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;AAC7E,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAAE,QAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjD,IAAA,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7F,IAAA,IAAIA,8BAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;AAAE,QAAA,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;AACtF,IAAA,OAAO,GAAG;AACZ;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,CAAiB,EAAE,IAAkB,EAAA;AACvE,IAAA,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS;AAAE,QAAAC,wBAAmB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC9G,IAAI,CAAC,CAAC,WAAW;QAAEA,wBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5E,MAAM,EAAE,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;AACtF,IAAA,IAAI,CAAC,EAAE;QAAE;AACT,IAAA,IAAI,CAAC,CAAC,KAAK,EAAE;QACX,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,KAAK,eAAe,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;QAC7E,EAAE,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC;AACpE,QAAA,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM;IAC/D;IACA,IAAI,CAAC,CAAC,MAAM;QAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC;IAC5D,IAAI,OAAO,QAAQ,KAAK,WAAW;AAAE,QAAA,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACpH;AAEA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,OAAA,GAA8B,EAAE,EAAA;AACjE,IAAA,MAAM,CAAC,GAAG,GAAG,EAAE;AACf,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW;AAC9C,IAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACtC,IAAA,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,EAAE;AACpD,IAAA,MAAM,MAAM,GAAG,CAAC,IAAa,KAAI;AAC/B,QAAA,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,CAAC;YAAE;AACR,QAAA,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;QACpC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC;AAC/B,IAAA,CAAC;AACD,IAAA,MAAM,SAAS,GAAG,CAAC,CAAe,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,IAAA,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,EAAE,SAAS,CAAC;IAC3D,CAAC,CAAC,gBAAgB,GAAG,SAAS,EAAE,SAAS,CAAC;AAC1C,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS;AACxB,IAAA,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,CAAiB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE;AAC9H,IAAA,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,OAAO,CAAC;IAC9E,YAAY,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,OAAO,CAAC;IACvD,OAAO;QACL,IAAI;QACJ,UAAU,EAAE,MAAK;AACf,YAAA,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,SAAS,EAAE,SAAS,CAAC;YAC9D,CAAC,CAAC,mBAAmB,GAAG,SAAS,EAAE,SAAS,CAAC;AAC7C,YAAA,CAAC,CAAC,SAAS,GAAG,IAAI;QACpB,CAAC;KACF;AACH;;;;;;;;;"}
1
+ {"version":3,"file":"bridge.cjs","sources":["../../src/components/bridge/index.ts"],"sourcesContent":["/**\n * motionary/components/bridge — native shell bridges (4.7).\n *\n * Keeps the web UI in sync with the host app's system settings when it runs\n * inside **WinUI 3 / WPF (WebView2)**, **.NET MAUI** (WebView / HybridWebView)\n * or **Flutter** (webview_flutter / flutter_inappwebview): the native side\n * sends \"reduce motion\", light / dark / high-contrast theme and accent color;\n * the page applies them to every `<usa-*>` component.\n *\n * Protocol (JSON, both directions):\n * - native → web `{ \"type\": \"usa:settings\", \"reducedMotion\": true, \"theme\": \"dark\", \"accent\": \"#0078d4\", \"sensitivity\": \"gentle\" }`\n * - web → native `{ \"type\": \"usa:ready\", \"version\": 1 }` on connect, `{ \"type\": \"usa:request-settings\" }`\n *\n * Hosts that can only run script call `window.usaNative.apply({...})`.\n * Samples: examples/native/{winui3,maui,flutter}.\n */\nimport { configureComponents, MOTION_SENSITIVITY_LEVELS, type MotionSensitivity } from '../base';\n\nexport type NativeHost = 'webview2' | 'maui' | 'flutter' | 'electron' | 'tauri' | 'browser';\nexport type NativeTheme = 'light' | 'dark' | 'high-contrast';\n\nexport interface NativeSettings {\n reducedMotion?: boolean;\n theme?: NativeTheme;\n /** CSS color (`#0078d4`, `rgb(…)`). */\n accent?: string;\n /** Optional finer level (4.4). */\n sensitivity?: MotionSensitivity;\n}\n\nexport interface NativeShellOptions {\n /** Element that gets `data-theme` / `color-scheme` / `--usa-accent` (default `<html>`). */\n root?: HTMLElement;\n /** Flutter JavaScriptChannel name (default `UsaBridge`). */\n channel?: string;\n /** Called after settings are applied. */\n onSettings?: (settings: NativeSettings, host: NativeHost) => void;\n}\n\nexport const BRIDGE_PROTOCOL_VERSION = 1;\n\ntype W = Record<string, any>;\nconst win = (): W | null => (typeof window === 'undefined' ? null : (window as unknown as W));\n\n/** Which native shell (if any) hosts this page. */\nexport function detectNativeHost(channel = 'UsaBridge'): NativeHost {\n const w = win();\n if (!w) return 'browser';\n if (w.chrome?.webview?.postMessage) return 'webview2';\n if (w.HybridWebView?.SendRawMessage || w.HybridWebView?.SendRawMessageToDotNet || /\\bMAUI\\b/i.test(w.navigator?.userAgent || '')) return 'maui';\n if (w.flutter_inappwebview?.callHandler || w[channel]?.postMessage) return 'flutter';\n if (w.__TAURI__ || w.__TAURI_INTERNALS__) return 'tauri';\n if (w.process?.versions?.electron || /Electron\\//.test(w.navigator?.userAgent || '')) return 'electron';\n return 'browser';\n}\n\n/** Send a JSON message to the native host (no-op in a plain browser). Returns whether it was sent. */\nexport function postToNative(message: Record<string, unknown>, channel = 'UsaBridge'): boolean {\n const w = win();\n if (!w) return false;\n const json = JSON.stringify(message);\n try {\n if (w.chrome?.webview?.postMessage) return w.chrome.webview.postMessage(message), true;\n if (w.HybridWebView?.SendRawMessage) return w.HybridWebView.SendRawMessage(json), true;\n if (w.HybridWebView?.SendRawMessageToDotNet) return w.HybridWebView.SendRawMessageToDotNet(json), true;\n if (w.flutter_inappwebview?.callHandler) return w.flutter_inappwebview.callHandler(channel, json), true;\n if (w[channel]?.postMessage) return w[channel].postMessage(json), true;\n } catch {\n /* host went away */\n }\n return false;\n}\n\nconst THEMES: NativeTheme[] = ['light', 'dark', 'high-contrast'];\nconst COLOR = /^(#[0-9a-f]{3,8}|rgba?\\([\\d\\s.,%]+\\)|hsla?\\([\\d\\s.,%deg]+\\))$/i;\n\n/** Validate an incoming message (string or object); unknown fields are dropped. */\nexport function parseNativeSettings(data: unknown): NativeSettings | null {\n let d: any = data;\n if (typeof d === 'string') {\n try {\n d = JSON.parse(d);\n } catch {\n return null;\n }\n }\n if (!d || typeof d !== 'object' || d.type !== 'usa:settings') return null;\n const out: NativeSettings = {};\n if (typeof d.reducedMotion === 'boolean') out.reducedMotion = d.reducedMotion;\n if (THEMES.includes(d.theme)) out.theme = d.theme;\n if (typeof d.accent === 'string' && COLOR.test(d.accent.trim())) out.accent = d.accent.trim();\n if (MOTION_SENSITIVITY_LEVELS.includes(d.sensitivity)) out.sensitivity = d.sensitivity;\n return out;\n}\n\n/**\n * Apply native settings: reduce motion → `configureComponents({ reducedMotion: 'reduce' })`\n * (`false` → follow the media query again); theme → `data-theme`, `data-usa-contrast`\n * and `color-scheme`; accent → `--usa-accent`; sensitivity → `motionSensitivity`.\n */\nexport function applyNativeSettings(s: NativeSettings, root?: HTMLElement): void {\n if (s.reducedMotion !== undefined) configureComponents({ reducedMotion: s.reducedMotion ? 'reduce' : 'user' });\n if (s.sensitivity) configureComponents({ motionSensitivity: s.sensitivity });\n const el = root || (typeof document !== 'undefined' ? document.documentElement : null);\n if (!el) return;\n if (s.theme) {\n el.setAttribute('data-theme', s.theme === 'high-contrast' ? 'dark' : s.theme);\n el.toggleAttribute('data-usa-contrast', s.theme === 'high-contrast');\n el.style.colorScheme = s.theme === 'light' ? 'light' : 'dark';\n }\n if (s.accent) el.style.setProperty('--usa-accent', s.accent);\n if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('usa:native-settings', { detail: s }));\n}\n\n/**\n * Connect to the native shell: listens for `usa:settings` messages\n * (WebView2 `chrome.webview` messages, `window.postMessage`, or\n * `window.usaNative.apply()`), applies them, then announces `usa:ready` and\n * asks for the current settings. Returns `{ host, disconnect }`.\n */\nexport function connectNativeShell(options: NativeShellOptions = {}): { host: NativeHost; disconnect: () => void } {\n const w = win();\n const channel = options.channel || 'UsaBridge';\n const host = detectNativeHost(channel);\n if (!w) return { host, disconnect: () => undefined };\n const handle = (data: unknown) => {\n const s = parseNativeSettings(data);\n if (!s) return;\n applyNativeSettings(s, options.root);\n options.onSettings?.(s, host);\n };\n const onMessage = (e: MessageEvent) => handle(e.data);\n w.chrome?.webview?.addEventListener?.('message', onMessage);\n w.addEventListener?.('message', onMessage);\n const prev = w.usaNative;\n w.usaNative = { apply: (s: NativeSettings) => handle({ ...s, type: 'usa:settings' }), version: BRIDGE_PROTOCOL_VERSION, host };\n postToNative({ type: 'usa:ready', version: BRIDGE_PROTOCOL_VERSION }, channel);\n postToNative({ type: 'usa:request-settings' }, channel);\n return {\n host,\n disconnect: () => {\n w.chrome?.webview?.removeEventListener?.('message', onMessage);\n w.removeEventListener?.('message', onMessage);\n w.usaNative = prev;\n },\n };\n}\n"],"names":["MOTION_SENSITIVITY_LEVELS","configureComponents"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { g as configureComponents, a as MOTION_SENSITIVITY_LEVELS } from '../chunks/base-BnRyfuyM.js';
1
+ import { c as configureComponents, M as MOTION_SENSITIVITY_LEVELS } from '../chunks/base-BTev8qxg.js';
2
2
 
3
3
  /**
4
4
  * motionary/components/bridge — native shell bridges (4.7).
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sources":["../../src/components/bridge/index.ts"],"sourcesContent":["/**\n * motionary/components/bridge — native shell bridges (4.7).\n *\n * Keeps the web UI in sync with the host app's system settings when it runs\n * inside **WinUI 3 / WPF (WebView2)**, **.NET MAUI** (WebView / HybridWebView)\n * or **Flutter** (webview_flutter / flutter_inappwebview): the native side\n * sends \"reduce motion\", light / dark / high-contrast theme and accent color;\n * the page applies them to every `<usa-*>` component.\n *\n * Protocol (JSON, both directions):\n * - native → web `{ \"type\": \"usa:settings\", \"reducedMotion\": true, \"theme\": \"dark\", \"accent\": \"#0078d4\", \"sensitivity\": \"gentle\" }`\n * - web → native `{ \"type\": \"usa:ready\", \"version\": 1 }` on connect, `{ \"type\": \"usa:request-settings\" }`\n *\n * Hosts that can only run script call `window.usaNative.apply({...})`.\n * Samples: examples/native/{winui3,maui,flutter}.\n */\nimport { configureComponents, MOTION_SENSITIVITY_LEVELS, type MotionSensitivity } from '../base';\n\nexport type NativeHost = 'webview2' | 'maui' | 'flutter' | 'electron' | 'tauri' | 'browser';\nexport type NativeTheme = 'light' | 'dark' | 'high-contrast';\n\nexport interface NativeSettings {\n reducedMotion?: boolean;\n theme?: NativeTheme;\n /** CSS color (`#0078d4`, `rgb(…)`). */\n accent?: string;\n /** Optional finer level (4.4). */\n sensitivity?: MotionSensitivity;\n}\n\nexport interface NativeShellOptions {\n /** Element that gets `data-theme` / `color-scheme` / `--usa-accent` (default `<html>`). */\n root?: HTMLElement;\n /** Flutter JavaScriptChannel name (default `UsaBridge`). */\n channel?: string;\n /** Called after settings are applied. */\n onSettings?: (settings: NativeSettings, host: NativeHost) => void;\n}\n\nexport const BRIDGE_PROTOCOL_VERSION = 1;\n\ntype W = Record<string, any>;\nconst win = (): W | null => (typeof window === 'undefined' ? null : (window as unknown as W));\n\n/** Which native shell (if any) hosts this page. */\nexport function detectNativeHost(channel = 'UsaBridge'): NativeHost {\n const w = win();\n if (!w) return 'browser';\n if (w.chrome?.webview?.postMessage) return 'webview2';\n if (w.HybridWebView?.SendRawMessage || w.HybridWebView?.SendRawMessageToDotNet || /\\bMAUI\\b/i.test(w.navigator?.userAgent || '')) return 'maui';\n if (w.flutter_inappwebview?.callHandler || w[channel]?.postMessage) return 'flutter';\n if (w.__TAURI__ || w.__TAURI_INTERNALS__) return 'tauri';\n if (w.process?.versions?.electron || /Electron\\//.test(w.navigator?.userAgent || '')) return 'electron';\n return 'browser';\n}\n\n/** Send a JSON message to the native host (no-op in a plain browser). Returns whether it was sent. */\nexport function postToNative(message: Record<string, unknown>, channel = 'UsaBridge'): boolean {\n const w = win();\n if (!w) return false;\n const json = JSON.stringify(message);\n try {\n if (w.chrome?.webview?.postMessage) return w.chrome.webview.postMessage(message), true;\n if (w.HybridWebView?.SendRawMessage) return w.HybridWebView.SendRawMessage(json), true;\n if (w.HybridWebView?.SendRawMessageToDotNet) return w.HybridWebView.SendRawMessageToDotNet(json), true;\n if (w.flutter_inappwebview?.callHandler) return w.flutter_inappwebview.callHandler(channel, json), true;\n if (w[channel]?.postMessage) return w[channel].postMessage(json), true;\n } catch {\n /* host went away */\n }\n return false;\n}\n\nconst THEMES: NativeTheme[] = ['light', 'dark', 'high-contrast'];\nconst COLOR = /^(#[0-9a-f]{3,8}|rgba?\\([\\d\\s.,%]+\\)|hsla?\\([\\d\\s.,%deg]+\\))$/i;\n\n/** Validate an incoming message (string or object); unknown fields are dropped. */\nexport function parseNativeSettings(data: unknown): NativeSettings | null {\n let d: any = data;\n if (typeof d === 'string') {\n try {\n d = JSON.parse(d);\n } catch {\n return null;\n }\n }\n if (!d || typeof d !== 'object' || d.type !== 'usa:settings') return null;\n const out: NativeSettings = {};\n if (typeof d.reducedMotion === 'boolean') out.reducedMotion = d.reducedMotion;\n if (THEMES.includes(d.theme)) out.theme = d.theme;\n if (typeof d.accent === 'string' && COLOR.test(d.accent.trim())) out.accent = d.accent.trim();\n if (MOTION_SENSITIVITY_LEVELS.includes(d.sensitivity)) out.sensitivity = d.sensitivity;\n return out;\n}\n\n/**\n * Apply native settings: reduce motion → `configureComponents({ reducedMotion: 'reduce' })`\n * (`false` → follow the media query again); theme → `data-theme`, `data-usa-contrast`\n * and `color-scheme`; accent → `--usa-accent`; sensitivity → `motionSensitivity`.\n */\nexport function applyNativeSettings(s: NativeSettings, root?: HTMLElement): void {\n if (s.reducedMotion !== undefined) configureComponents({ reducedMotion: s.reducedMotion ? 'reduce' : 'user' });\n if (s.sensitivity) configureComponents({ motionSensitivity: s.sensitivity });\n const el = root || (typeof document !== 'undefined' ? document.documentElement : null);\n if (!el) return;\n if (s.theme) {\n el.setAttribute('data-theme', s.theme === 'high-contrast' ? 'dark' : s.theme);\n el.toggleAttribute('data-usa-contrast', s.theme === 'high-contrast');\n el.style.colorScheme = s.theme === 'light' ? 'light' : 'dark';\n }\n if (s.accent) el.style.setProperty('--usa-accent', s.accent);\n if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('usa:native-settings', { detail: s }));\n}\n\n/**\n * Connect to the native shell: listens for `usa:settings` messages\n * (WebView2 `chrome.webview` messages, `window.postMessage`, or\n * `window.usaNative.apply()`), applies them, then announces `usa:ready` and\n * asks for the current settings. Returns `{ host, disconnect }`.\n */\nexport function connectNativeShell(options: NativeShellOptions = {}): { host: NativeHost; disconnect: () => void } {\n const w = win();\n const channel = options.channel || 'UsaBridge';\n const host = detectNativeHost(channel);\n if (!w) return { host, disconnect: () => undefined };\n const handle = (data: unknown) => {\n const s = parseNativeSettings(data);\n if (!s) return;\n applyNativeSettings(s, options.root);\n options.onSettings?.(s, host);\n };\n const onMessage = (e: MessageEvent) => handle(e.data);\n w.chrome?.webview?.addEventListener?.('message', onMessage);\n w.addEventListener?.('message', onMessage);\n const prev = w.usaNative;\n w.usaNative = { apply: (s: NativeSettings) => handle({ ...s, type: 'usa:settings' }), version: BRIDGE_PROTOCOL_VERSION, host };\n postToNative({ type: 'usa:ready', version: BRIDGE_PROTOCOL_VERSION }, channel);\n postToNative({ type: 'usa:request-settings' }, channel);\n return {\n host,\n disconnect: () => {\n w.chrome?.webview?.removeEventListener?.('message', onMessage);\n w.removeEventListener?.('message', onMessage);\n w.usaNative = prev;\n },\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sources":["../../src/components/bridge/index.ts"],"sourcesContent":["/**\n * motionary/components/bridge — native shell bridges (4.7).\n *\n * Keeps the web UI in sync with the host app's system settings when it runs\n * inside **WinUI 3 / WPF (WebView2)**, **.NET MAUI** (WebView / HybridWebView)\n * or **Flutter** (webview_flutter / flutter_inappwebview): the native side\n * sends \"reduce motion\", light / dark / high-contrast theme and accent color;\n * the page applies them to every `<usa-*>` component.\n *\n * Protocol (JSON, both directions):\n * - native → web `{ \"type\": \"usa:settings\", \"reducedMotion\": true, \"theme\": \"dark\", \"accent\": \"#0078d4\", \"sensitivity\": \"gentle\" }`\n * - web → native `{ \"type\": \"usa:ready\", \"version\": 1 }` on connect, `{ \"type\": \"usa:request-settings\" }`\n *\n * Hosts that can only run script call `window.usaNative.apply({...})`.\n * Samples: examples/native/{winui3,maui,flutter}.\n */\nimport { configureComponents, MOTION_SENSITIVITY_LEVELS, type MotionSensitivity } from '../base';\n\nexport type NativeHost = 'webview2' | 'maui' | 'flutter' | 'electron' | 'tauri' | 'browser';\nexport type NativeTheme = 'light' | 'dark' | 'high-contrast';\n\nexport interface NativeSettings {\n reducedMotion?: boolean;\n theme?: NativeTheme;\n /** CSS color (`#0078d4`, `rgb(…)`). */\n accent?: string;\n /** Optional finer level (4.4). */\n sensitivity?: MotionSensitivity;\n}\n\nexport interface NativeShellOptions {\n /** Element that gets `data-theme` / `color-scheme` / `--usa-accent` (default `<html>`). */\n root?: HTMLElement;\n /** Flutter JavaScriptChannel name (default `UsaBridge`). */\n channel?: string;\n /** Called after settings are applied. */\n onSettings?: (settings: NativeSettings, host: NativeHost) => void;\n}\n\nexport const BRIDGE_PROTOCOL_VERSION = 1;\n\ntype W = Record<string, any>;\nconst win = (): W | null => (typeof window === 'undefined' ? null : (window as unknown as W));\n\n/** Which native shell (if any) hosts this page. */\nexport function detectNativeHost(channel = 'UsaBridge'): NativeHost {\n const w = win();\n if (!w) return 'browser';\n if (w.chrome?.webview?.postMessage) return 'webview2';\n if (w.HybridWebView?.SendRawMessage || w.HybridWebView?.SendRawMessageToDotNet || /\\bMAUI\\b/i.test(w.navigator?.userAgent || '')) return 'maui';\n if (w.flutter_inappwebview?.callHandler || w[channel]?.postMessage) return 'flutter';\n if (w.__TAURI__ || w.__TAURI_INTERNALS__) return 'tauri';\n if (w.process?.versions?.electron || /Electron\\//.test(w.navigator?.userAgent || '')) return 'electron';\n return 'browser';\n}\n\n/** Send a JSON message to the native host (no-op in a plain browser). Returns whether it was sent. */\nexport function postToNative(message: Record<string, unknown>, channel = 'UsaBridge'): boolean {\n const w = win();\n if (!w) return false;\n const json = JSON.stringify(message);\n try {\n if (w.chrome?.webview?.postMessage) return w.chrome.webview.postMessage(message), true;\n if (w.HybridWebView?.SendRawMessage) return w.HybridWebView.SendRawMessage(json), true;\n if (w.HybridWebView?.SendRawMessageToDotNet) return w.HybridWebView.SendRawMessageToDotNet(json), true;\n if (w.flutter_inappwebview?.callHandler) return w.flutter_inappwebview.callHandler(channel, json), true;\n if (w[channel]?.postMessage) return w[channel].postMessage(json), true;\n } catch {\n /* host went away */\n }\n return false;\n}\n\nconst THEMES: NativeTheme[] = ['light', 'dark', 'high-contrast'];\nconst COLOR = /^(#[0-9a-f]{3,8}|rgba?\\([\\d\\s.,%]+\\)|hsla?\\([\\d\\s.,%deg]+\\))$/i;\n\n/** Validate an incoming message (string or object); unknown fields are dropped. */\nexport function parseNativeSettings(data: unknown): NativeSettings | null {\n let d: any = data;\n if (typeof d === 'string') {\n try {\n d = JSON.parse(d);\n } catch {\n return null;\n }\n }\n if (!d || typeof d !== 'object' || d.type !== 'usa:settings') return null;\n const out: NativeSettings = {};\n if (typeof d.reducedMotion === 'boolean') out.reducedMotion = d.reducedMotion;\n if (THEMES.includes(d.theme)) out.theme = d.theme;\n if (typeof d.accent === 'string' && COLOR.test(d.accent.trim())) out.accent = d.accent.trim();\n if (MOTION_SENSITIVITY_LEVELS.includes(d.sensitivity)) out.sensitivity = d.sensitivity;\n return out;\n}\n\n/**\n * Apply native settings: reduce motion → `configureComponents({ reducedMotion: 'reduce' })`\n * (`false` → follow the media query again); theme → `data-theme`, `data-usa-contrast`\n * and `color-scheme`; accent → `--usa-accent`; sensitivity → `motionSensitivity`.\n */\nexport function applyNativeSettings(s: NativeSettings, root?: HTMLElement): void {\n if (s.reducedMotion !== undefined) configureComponents({ reducedMotion: s.reducedMotion ? 'reduce' : 'user' });\n if (s.sensitivity) configureComponents({ motionSensitivity: s.sensitivity });\n const el = root || (typeof document !== 'undefined' ? document.documentElement : null);\n if (!el) return;\n if (s.theme) {\n el.setAttribute('data-theme', s.theme === 'high-contrast' ? 'dark' : s.theme);\n el.toggleAttribute('data-usa-contrast', s.theme === 'high-contrast');\n el.style.colorScheme = s.theme === 'light' ? 'light' : 'dark';\n }\n if (s.accent) el.style.setProperty('--usa-accent', s.accent);\n if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('usa:native-settings', { detail: s }));\n}\n\n/**\n * Connect to the native shell: listens for `usa:settings` messages\n * (WebView2 `chrome.webview` messages, `window.postMessage`, or\n * `window.usaNative.apply()`), applies them, then announces `usa:ready` and\n * asks for the current settings. Returns `{ host, disconnect }`.\n */\nexport function connectNativeShell(options: NativeShellOptions = {}): { host: NativeHost; disconnect: () => void } {\n const w = win();\n const channel = options.channel || 'UsaBridge';\n const host = detectNativeHost(channel);\n if (!w) return { host, disconnect: () => undefined };\n const handle = (data: unknown) => {\n const s = parseNativeSettings(data);\n if (!s) return;\n applyNativeSettings(s, options.root);\n options.onSettings?.(s, host);\n };\n const onMessage = (e: MessageEvent) => handle(e.data);\n w.chrome?.webview?.addEventListener?.('message', onMessage);\n w.addEventListener?.('message', onMessage);\n const prev = w.usaNative;\n w.usaNative = { apply: (s: NativeSettings) => handle({ ...s, type: 'usa:settings' }), version: BRIDGE_PROTOCOL_VERSION, host };\n postToNative({ type: 'usa:ready', version: BRIDGE_PROTOCOL_VERSION }, channel);\n postToNative({ type: 'usa:request-settings' }, channel);\n return {\n host,\n disconnect: () => {\n w.chrome?.webview?.removeEventListener?.('message', onMessage);\n w.removeEventListener?.('message', onMessage);\n w.usaNative = prev;\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cards.cjs","sources":["../../src/components/cards/card.ts","../../src/components/cards/card-stack.ts","../../src/components/cards/sticky-stack.ts","../../src/components/cards/carousel-3d.ts","../../src/components/cards/index.ts"],"sourcesContent":["import { defineElement, raf, caf, clamp, EASE_OUT, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport css from './card.css?raw';\n\nexport const CARD_EFFECTS = ['flip', 'holo', 'glass', 'border-glow', 'conic-border', 'lift', 'spotlight', 'sheen', 'parallax-layers', 'expand'] as const;\nexport type CardEffect = (typeof CARD_EFFECTS)[number];\n\n/** Effects that follow the pointer (they share one rAF-throttled tracker). */\nconst TRACKING = new Set(['holo', 'border-glow', 'spotlight', 'parallax-layers', 'lift']);\n\n/**\n * `<usa-card>` — card effects, combinable: `effect=\"lift sheen\"`.\n *\n * - `flip` — front/back (`[data-front]` / `[data-back]` children) flip on\n * hover or `trigger=\"click\"`, `axis=\"y\"` (default, horizontal flip) or `x`.\n * - `holo` — holographic foil that shifts with the pointer.\n * - `glass` — frosted glass surface (backdrop blur).\n * - `border-glow` — a glow on the border that follows the pointer.\n * - `conic-border` — a rotating conic-gradient border.\n * - `lift` — rises with a deeper shadow and a slight pointer tilt.\n * - `spotlight` — a soft light that follows the pointer.\n * - `sheen` — a light sweep across the card on hover / focus.\n * - `parallax-layers` — children with `data-depth=\"0.2…1\"` move at different depths.\n * - `expand` — click to grow into a full detail view (`[data-detail]`\n * content is shown), FLIP + spring; Esc, `[data-close]` or the backdrop closes.\n *\n * Attributes: `effect`, `axis`, `trigger`, `depth` (parallax px, 16),\n * `color` (glow / spotlight colour), `flipped`, `expanded`, `disabled`.\n * CSS variables: `--usa-card-x/-y` (pointer %, 0–100), `--usa-card-nx/-ny` (−1…1).\n * Methods: `flip(force?)`, `expand()`, `collapse()`. Events: `usa:flip`,\n * `usa:expand`, `usa:collapse`. Reduced motion: no tilt / parallax / sweep;\n * flips and expansions cross-fade.\n */\nexport interface UsaCardElement extends UsaElement {\n readonly effects: string[];\n flipped: boolean;\n readonly expanded: boolean;\n flip(force?: boolean): void;\n expand(): Promise<void>;\n collapse(): Promise<void>;\n}\n\nexport function defineCard(tag = 'usa-card'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCard extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'disabled'];\n }\n\n private _frame = 0;\n private _spacer: HTMLElement | null = null;\n private _backdrop: HTMLElement | null = null;\n private _busy = false;\n\n get effects(): string[] {\n return this.str('effect', 'lift').split(/[\\s,]+/).filter(Boolean);\n }\n private has(e: string): boolean {\n return this.effects.includes(e);\n }\n get flipped(): boolean {\n return this.flag('flipped');\n }\n set flipped(v: boolean) {\n this.setFlag('flipped', v);\n }\n get expanded(): boolean {\n return this.flag('expanded');\n }\n\n mount(): void {\n if (this.flag('disabled')) return;\n const color = this.str('color');\n if (color) this.style.setProperty('--usa-card-glow', color);\n if (this.has('sheen') && !this.querySelector(':scope > .usa-card-sheen')) this.append(deco('usa-card-sheen'));\n if (this.has('holo') && !this.querySelector(':scope > .usa-card-holo')) this.append(deco('usa-card-holo'));\n if (this.has('flip')) {\n const click = this.str('trigger', 'hover') === 'click';\n if (click) {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('role', this.getAttribute('role') || 'button');\n this.setAttribute('aria-pressed', String(this.flipped));\n this.listen(this, 'click', (e: MouseEvent) => !interactive(e.target, this) && this.flip());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target === this) {\n e.preventDefault();\n this.flip();\n }\n });\n }\n this.setBackHidden();\n }\n if (this.has('expand')) {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-expanded', String(this.expanded));\n this.listen(this, 'click', (e: MouseEvent) => {\n const t = e.target as Element;\n if (t.closest?.('[data-close]')) {\n e.stopPropagation();\n this.collapse();\n } else if (!this.expanded && !interactive(t, this)) this.expand();\n });\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'Escape' && this.expanded) this.collapse();\n else if ((e.key === 'Enter' || e.key === ' ') && e.target === this && !this.expanded) {\n e.preventDefault();\n this.expand();\n }\n });\n }\n if (!this.effects.some((e) => TRACKING.has(e)) || this.reduced) return;\n let rect: DOMRect | null = null;\n let px = 0.5;\n let py = 0.5;\n const apply = () => {\n this._frame = 0;\n const nx = clamp(px * 2 - 1, -1, 1);\n const ny = clamp(py * 2 - 1, -1, 1);\n this.style.setProperty('--usa-card-x', `${(px * 100).toFixed(1)}%`);\n this.style.setProperty('--usa-card-y', `${(py * 100).toFixed(1)}%`);\n this.style.setProperty('--usa-card-nx', nx.toFixed(3));\n this.style.setProperty('--usa-card-ny', ny.toFixed(3));\n if (this.has('parallax-layers')) {\n const depth = this.num('depth', 16);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((l) => {\n const d = Number(l.dataset.depth) || 0.5;\n l.style.transform = `translate3d(${(nx * depth * d).toFixed(1)}px, ${(ny * depth * d).toFixed(1)}px, 0)`;\n });\n }\n };\n this.listen(this, 'pointerenter', () => {\n rect = this.getBoundingClientRect();\n this.setAttribute('data-hover', '');\n });\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n if (this.expanded) return;\n rect = rect || this.getBoundingClientRect();\n px = (e.clientX - rect.left) / (rect.width || 1);\n py = (e.clientY - rect.top) / (rect.height || 1);\n if (!this._frame) this._frame = raf(apply);\n });\n this.listen(this, 'pointerleave', () => {\n rect = null;\n px = py = 0.5;\n this.removeAttribute('data-hover');\n if (!this._frame) this._frame = raf(apply);\n });\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n if (this.expanded) this.finishCollapse();\n }\n\n private setBackHidden(): void {\n const front = this.querySelector<HTMLElement>(':scope > [data-front]');\n const back = this.querySelector<HTMLElement>(':scope > [data-back]');\n front?.setAttribute('aria-hidden', String(this.flipped));\n back?.setAttribute('aria-hidden', String(!this.flipped));\n }\n\n flip(force?: boolean): void {\n const next = force === undefined ? !this.flipped : force;\n if (next === this.flipped) return;\n this.flipped = next;\n if (this.hasAttribute('aria-pressed')) this.setAttribute('aria-pressed', String(next));\n this.setBackHidden();\n this.emit('flip', { flipped: next });\n }\n\n async expand(): Promise<void> {\n if (this.expanded || this._busy) return;\n this._busy = true;\n const first = this.getBoundingClientRect();\n const spacer = document.createElement('div');\n spacer.className = 'usa-card-spacer';\n spacer.style.cssText = `width:${first.width}px;height:${first.height}px`;\n spacer.setAttribute('aria-hidden', 'true');\n this.before(spacer);\n this._spacer = spacer;\n const backdrop = document.createElement('div');\n backdrop.className = 'usa-card-backdrop';\n backdrop.addEventListener('click', () => this.collapse());\n this.before(backdrop);\n this._backdrop = backdrop;\n this.setFlag('expanded', true);\n this.setAttribute('aria-expanded', 'true');\n this.emit('expand');\n const last = this.getBoundingClientRect();\n await this.flipFrom(first, last);\n this.motion(backdrop, [{ opacity: 0 }, { opacity: 1 }], { duration: 250, easing: 'ease-out' });\n this.focus({ preventScroll: true });\n this._busy = false;\n }\n\n async collapse(): Promise<void> {\n if (!this.expanded || this._busy) return;\n this._busy = true;\n const first = this.getBoundingClientRect();\n const b = this._backdrop;\n if (b) this.motion(b, [{ opacity: 1 }, { opacity: 0 }], { duration: 200, easing: 'ease-in', fill: 'forwards' });\n this.finishCollapse();\n this.emit('collapse');\n const last = this.getBoundingClientRect();\n await this.flipFrom(first, last);\n this._busy = false;\n }\n\n private finishCollapse(): void {\n this.setFlag('expanded', false);\n this.setAttribute('aria-expanded', 'false');\n this._spacer?.remove();\n this._backdrop?.remove();\n this._spacer = this._backdrop = null;\n }\n\n private async flipFrom(first: DOMRect, last: DOMRect): Promise<void> {\n if (this.reduced) {\n const a = this.motion(this, [{ opacity: 0.4 }, { opacity: 1 }], { duration: 200 });\n await a?.finished.catch(() => undefined);\n return;\n }\n const sx = first.width / (last.width || 1);\n const sy = first.height / (last.height || 1);\n const dx = first.left - last.left;\n const dy = first.top - last.top;\n const { easing, duration } = springEasing('stiff');\n const a = this.motion(\n this,\n [{ transformOrigin: '0 0', transform: `translate(${dx}px, ${dy}px) scale(${sx}, ${sy})` }, { transformOrigin: '0 0', transform: 'none' }],\n { duration: Math.min(duration, 900), easing: easing || EASE_OUT }\n );\n await a?.finished.catch(() => undefined);\n }\n },\n { id: 'card', text: css }\n );\n}\n\nfunction deco(cls: string): HTMLSpanElement {\n const s = document.createElement('span');\n s.className = cls;\n s.setAttribute('aria-hidden', 'true');\n return s;\n}\n\n/** Clicks on links, buttons and form fields inside the card keep their own behaviour. */\nfunction interactive(t: EventTarget | null, host: Element): boolean {\n const el = (t as Element)?.closest?.('a, button, input, select, textarea, label, [contenteditable]');\n return !!el && el !== host && host.contains(el);\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './card-stack.css?raw';\n\n/**\n * `<usa-card-stack>` — a deck of cards (its element children). The top card\n * can be swiped away left or right (pointer, touch or arrow keys); the rest\n * fan out behind it and move up with a spring.\n *\n * Attributes: `threshold` (px to dismiss, 90), `visible` (cards fanned\n * behind, 3), `offset` (px between cards, 10), `loop` (swiped cards go back\n * to the bottom), `disabled`. Methods: `swipe(direction)`, `top`. Events:\n * `usa:swipe` (`{ direction: 'left' | 'right', card }`), `usa:empty`.\n * Reduced motion: cards are removed instantly, no rotation.\n */\nexport interface UsaCardStackElement extends UsaElement {\n readonly top: HTMLElement | null;\n swipe(direction: 'left' | 'right'): Promise<void>;\n}\n\nexport function defineCardStack(tag = 'usa-card-stack'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCardStack extends Base {\n static get observedAttributes(): string[] {\n return ['visible', 'offset', 'disabled'];\n }\n\n private _x!: SpringValue;\n private _drag: { id: number; x0: number; t0: number } | null = null;\n private _busy = false;\n\n get top(): HTMLElement | null {\n return this.cards()[0] || null;\n }\n\n private cards(): HTMLElement[] {\n return Array.from(this.children).filter((c) => !(c as HTMLElement).hasAttribute('data-gone')) as HTMLElement[];\n }\n\n private layout(dragX = 0): void {\n const visible = this.num('visible', 3);\n const off = this.num('offset', 10);\n const reduced = this.reduced;\n this.cards().forEach((c, i) => {\n c.style.zIndex = String(100 - i);\n c.toggleAttribute('data-top', i === 0);\n c.setAttribute('aria-hidden', String(i !== 0));\n if (i === 0) {\n const rot = reduced ? 0 : dragX / 18;\n c.style.transform = `translate3d(${dragX}px, 0, 0) rotate(${rot.toFixed(2)}deg)`;\n c.style.opacity = '1';\n } else {\n const k = Math.min(i, visible);\n const pull = Math.min(1, Math.abs(dragX) / this.num('threshold', 90));\n const kk = Math.max(0, k - pull);\n c.style.transform = `translate3d(0, ${(kk * off).toFixed(1)}px, 0) scale(${(1 - kk * 0.05).toFixed(3)})`;\n c.style.opacity = i > visible ? '0' : '1';\n }\n });\n }\n\n mount(): void {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'group');\n this.setAttribute('aria-roledescription', 'card stack');\n this._x = createSpring({ spring: 'wobbly', onUpdate: (v) => this.layout(v) });\n this.layout();\n this.listen(this, 'pointerdown', (e: PointerEvent) => {\n if (this.flag('disabled') || this._busy || !this.top || !this.top.contains(e.target as Node)) return;\n this._x.stop();\n this._drag = { id: e.pointerId, x0: e.clientX - this._x.value, t0: e.timeStamp };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic */\n }\n this.setAttribute('data-dragging', '');\n });\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n if (!this._drag || e.pointerId !== this._drag.id) return;\n this._x.jump(e.clientX - this._drag.x0);\n });\n const up = (e: PointerEvent) => {\n if (!this._drag || e.pointerId !== this._drag.id) return;\n this._drag = null;\n this.removeAttribute('data-dragging');\n const x = this._x.value;\n if (Math.abs(x) >= this.num('threshold', 90)) this.swipe(x > 0 ? 'right' : 'left');\n else this._x.set(0);\n };\n this.listen(this, 'pointerup', up);\n this.listen(this, 'pointercancel', up);\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n this.swipe(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n });\n const mo = typeof MutationObserver !== 'undefined' ? new MutationObserver(() => this.layout(this._x.value)) : null;\n mo?.observe(this, { childList: true });\n this.onCleanup(() => mo?.disconnect());\n }\n\n unmount(): void {\n this._x?.stop();\n }\n\n async swipe(direction: 'left' | 'right'): Promise<void> {\n const card = this.top;\n if (!card || this._busy || this.flag('disabled')) return;\n this._busy = true;\n this._x.stop();\n const from = this._x.value;\n const to = (direction === 'left' ? -1 : 1) * Math.max(320, (this.getBoundingClientRect().width || 300) * 1.4);\n card.setAttribute('data-gone', '');\n this._x.jump(0);\n this.layout(0);\n const a = this.reduced\n ? null\n : this.motion(card, [{ transform: `translate3d(${from}px,0,0) rotate(${from / 18}deg)`, opacity: 1 }, { transform: `translate3d(${to}px,0,0) rotate(${to / 14}deg)`, opacity: 0 }], {\n duration: 380,\n easing: 'cubic-bezier(0.3, 0.7, 0.4, 1)',\n fill: 'forwards',\n });\n await a?.finished.catch(() => undefined);\n a?.cancel();\n card.removeAttribute('data-gone');\n if (this.flag('loop')) this.append(card);\n else card.remove();\n this.layout(0);\n this._busy = false;\n this.emit('swipe', { direction, card });\n if (!this.top) this.emit('empty');\n }\n },\n { id: 'card-stack', text: css }\n );\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport css from './sticky-stack.css?raw';\n\n/**\n * `<usa-sticky-stack>` — cards (element children) stick to the top while\n * scrolling and the ones underneath scale down and dim as the next card\n * slides over them, like a deck building up.\n *\n * Attributes: `top` (px from the viewport top, 80), `gap` (px each card\n * peeks below the previous, 16), `scale` (how much a covered card shrinks,\n * 0.06). Reduced motion: cards still stack (sticky) but do not scale.\n */\nexport interface UsaStickyStackElement extends UsaElement {\n update(): void;\n}\n\nexport function defineStickyStack(tag = 'usa-sticky-stack'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStickyStack extends Base {\n static get observedAttributes(): string[] {\n return ['top', 'gap', 'scale'];\n }\n\n private _frame = 0;\n\n mount(): void {\n const top = this.num('top', 80);\n const gap = this.num('gap', 16);\n const cards = Array.from(this.children) as HTMLElement[];\n cards.forEach((c, i) => {\n c.style.top = `${top + i * gap}px`;\n c.style.zIndex = String(i + 1);\n });\n if (this.reduced) return;\n const schedule = () => {\n if (!this._frame) this._frame = raf(() => this.update());\n };\n let active = false;\n this.inView((v) => {\n if (v && !active) {\n active = true;\n window.addEventListener('scroll', schedule, { passive: true });\n window.addEventListener('resize', schedule, { passive: true });\n schedule();\n } else if (!v && active) {\n active = false;\n window.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n }\n });\n this.onCleanup(() => {\n window.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n });\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n update(): void {\n this._frame = 0;\n const cards = Array.from(this.children) as HTMLElement[];\n const rects = cards.map((c) => c.getBoundingClientRect());\n const shrink = this.num('scale', 0.06);\n cards.forEach((c, i) => {\n let covered = 0;\n for (let j = i + 1; j < cards.length; j++) {\n const h = rects[i].height || 1;\n covered += clamp((rects[i].bottom - rects[j].top) / h, 0, 1);\n }\n const s = 1 - Math.min(3, covered) * shrink;\n c.style.transform = covered > 0.001 ? `scale(${s.toFixed(4)})` : '';\n c.style.filter = covered > 0.001 ? `brightness(${(1 - Math.min(0.35, covered * 0.12)).toFixed(3)})` : '';\n });\n }\n },\n { id: 'sticky-stack', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './carousel-3d.css?raw';\n\n/**\n * `<usa-carousel-3d>` — its element children on a 3D ring. Rotate with the\n * arrow keys, a drag/swipe, the wheel (shift) or `next()` / `prev()`; the\n * front item is `aria-current`. Spring-driven rotation.\n *\n * Attributes: `radius` (px, auto from item width), `autoplay` (ms between\n * steps, pauses on hover/focus), `perspective` (px, 1200), `index`.\n * Events: `usa:change` (`{ index }`). Reduced motion: a flat, instant\n * switch (only the current item is shown, others dimmed).\n */\nexport interface UsaCarousel3dElement extends UsaElement {\n index: number;\n next(): void;\n prev(): void;\n goTo(i: number): void;\n}\n\nexport function defineCarousel3d(tag = 'usa-carousel-3d'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCarousel3d extends Base {\n static get observedAttributes(): string[] {\n return ['radius', 'perspective', 'autoplay'];\n }\n\n private _angle!: SpringValue;\n private _i = 0;\n\n get index(): number {\n return this._i;\n }\n set index(v: number) {\n this.goTo(v);\n }\n\n private items(): HTMLElement[] {\n return Array.from(this.children) as HTMLElement[];\n }\n\n private render(angle: number): void {\n const items = this.items();\n const n = items.length || 1;\n const step = 360 / n;\n const w = items[0]?.offsetWidth || 200;\n const r = this.num('radius', Math.round(w / 2 / Math.tan(Math.PI / n)) + 24);\n const reduced = this.reduced;\n items.forEach((it, i) => {\n const norm = ((((i * step - angle) % 360) + 540) % 360) - 180;\n it.style.transform = reduced ? '' : `rotateY(${norm.toFixed(2)}deg) translateZ(${r}px)`;\n it.style.opacity = reduced ? (i === this._i ? '1' : '0') : String(Math.max(0.25, 1 - Math.abs(norm) / 200));\n });\n }\n\n mount(): void {\n this.style.setProperty('--usa-c3d-perspective', `${this.num('perspective', 1200)}px`);\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('role', 'region');\n this.setAttribute('aria-roledescription', 'carousel');\n this._i = Math.max(0, Math.min(this.items().length - 1, this.num('index', 0)));\n const step = () => 360 / (this.items().length || 1);\n this._angle = createSpring({ value: this._i * step(), spring: 'gentle', onUpdate: (v) => this.render(v) });\n this.render(this._angle.value);\n this.mark();\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'ArrowRight') this.next();\n else if (e.key === 'ArrowLeft') this.prev();\n else return;\n e.preventDefault();\n });\n let x0: number | null = null;\n this.listen(this, 'pointerdown', (e: PointerEvent) => (x0 = e.clientX));\n this.listen(this, 'pointerup', (e: PointerEvent) => {\n if (x0 === null) return;\n const dx = e.clientX - x0;\n x0 = null;\n if (Math.abs(dx) > 40) dx < 0 ? this.next() : this.prev();\n });\n this.listen(this, 'click', (e: MouseEvent) => {\n const it = this.items().find((c) => c.contains(e.target as Node));\n if (it) {\n const i = this.items().indexOf(it);\n if (i !== this._i) this.goTo(i);\n }\n });\n const every = this.num('autoplay', 0);\n if (every > 0 && !this.reduced) {\n let paused = false;\n const pause = () => (paused = true);\n const resume = () => (paused = false);\n this.listen(this, 'pointerenter', pause);\n this.listen(this, 'pointerleave', resume);\n this.listen(this, 'focusin', pause);\n this.listen(this, 'focusout', resume);\n const t = setInterval(() => !paused && !document.hidden && this.next(), every);\n this.onCleanup(() => clearInterval(t));\n }\n }\n\n unmount(): void {\n this._angle?.stop();\n }\n\n private mark(): void {\n this.items().forEach((it, i) => {\n if (i === this._i) it.setAttribute('aria-current', 'true');\n else it.removeAttribute('aria-current');\n });\n }\n\n goTo(i: number): void {\n const n = this.items().length;\n if (!n || !this._angle) return;\n const step = 360 / n;\n // shortest rotation from the current target\n const cur = this._angle.target;\n const curIdx = Math.round(cur / step);\n let delta = (((i - curIdx) % n) + n) % n;\n if (delta > n / 2) delta -= n;\n this._i = ((i % n) + n) % n;\n this._angle.set((curIdx + delta) * step);\n if (this.reduced) this.render(this._angle.value);\n this.mark();\n this.emit('change', { index: this._i });\n }\n\n next(): void {\n this.goTo(this._i + 1);\n }\n\n prev(): void {\n this.goTo(this._i - 1);\n }\n },\n { id: 'carousel-3d', text: css }\n );\n}\n","/**\n * motionary/components/cards — card effects (v2.4).\n * `<usa-card effect=\"flip | holo | glass | border-glow | conic-border | lift |\n * spotlight | sheen | parallax-layers | expand\">` (combinable),\n * `<usa-card-stack>` (swipeable deck), `<usa-sticky-stack>` (stacking on\n * scroll) and `<usa-carousel-3d>`.\n */\nimport { defineCard, type UsaCardElement } from './card';\nimport { defineCardStack, type UsaCardStackElement } from './card-stack';\nimport { defineStickyStack, type UsaStickyStackElement } from './sticky-stack';\nimport { defineCarousel3d, type UsaCarousel3dElement } from './carousel-3d';\n\nexport { defineCard, defineCardStack, defineStickyStack, defineCarousel3d };\nexport { CARD_EFFECTS } from './card';\nexport type { CardEffect } from './card';\nexport type { UsaCardElement, UsaCardStackElement, UsaStickyStackElement, UsaCarousel3dElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineCardComponents(): void {\n defineCard();\n defineCardStack();\n defineStickyStack();\n defineCarousel3d();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-card': UsaCardElement;\n 'usa-card-stack': UsaCardStackElement;\n 'usa-sticky-stack': UsaStickyStackElement;\n 'usa-carousel-3d': UsaCarousel3dElement;\n }\n}\n"],"names":["defineElement","clamp","raf","caf","springEasing","EASE_OUT","css","createSpring"],"mappings":"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"}
1
+ {"version":3,"file":"cards.cjs","sources":["../../src/components/cards/card.ts","../../src/components/cards/card-stack.ts","../../src/components/cards/sticky-stack.ts","../../src/components/cards/carousel-3d.ts","../../src/components/cards/index.ts"],"sourcesContent":["import { defineElement, raf, caf, clamp, EASE_OUT, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport css from './card.css?raw';\n\nexport const CARD_EFFECTS = ['flip', 'holo', 'glass', 'border-glow', 'conic-border', 'lift', 'spotlight', 'sheen', 'parallax-layers', 'expand'] as const;\nexport type CardEffect = (typeof CARD_EFFECTS)[number];\n\n/** Effects that follow the pointer (they share one rAF-throttled tracker). */\nconst TRACKING = new Set(['holo', 'border-glow', 'spotlight', 'parallax-layers', 'lift']);\n\n/**\n * `<usa-card>` — card effects, combinable: `effect=\"lift sheen\"`.\n *\n * - `flip` — front/back (`[data-front]` / `[data-back]` children) flip on\n * hover or `trigger=\"click\"`, `axis=\"y\"` (default, horizontal flip) or `x`.\n * - `holo` — holographic foil that shifts with the pointer.\n * - `glass` — frosted glass surface (backdrop blur).\n * - `border-glow` — a glow on the border that follows the pointer.\n * - `conic-border` — a rotating conic-gradient border.\n * - `lift` — rises with a deeper shadow and a slight pointer tilt.\n * - `spotlight` — a soft light that follows the pointer.\n * - `sheen` — a light sweep across the card on hover / focus.\n * - `parallax-layers` — children with `data-depth=\"0.2…1\"` move at different depths.\n * - `expand` — click to grow into a full detail view (`[data-detail]`\n * content is shown), FLIP + spring; Esc, `[data-close]` or the backdrop closes.\n *\n * Attributes: `effect`, `axis`, `trigger`, `depth` (parallax px, 16),\n * `color` (glow / spotlight colour), `flipped`, `expanded`, `disabled`.\n * CSS variables: `--usa-card-x/-y` (pointer %, 0–100), `--usa-card-nx/-ny` (−1…1).\n * Methods: `flip(force?)`, `expand()`, `collapse()`. Events: `usa:flip`,\n * `usa:expand`, `usa:collapse`. Reduced motion: no tilt / parallax / sweep;\n * flips and expansions cross-fade.\n */\nexport interface UsaCardElement extends UsaElement {\n readonly effects: string[];\n flipped: boolean;\n readonly expanded: boolean;\n flip(force?: boolean): void;\n expand(): Promise<void>;\n collapse(): Promise<void>;\n}\n\nexport function defineCard(tag = 'usa-card'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCard extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'disabled'];\n }\n\n private _frame = 0;\n private _spacer: HTMLElement | null = null;\n private _backdrop: HTMLElement | null = null;\n private _busy = false;\n\n get effects(): string[] {\n return this.str('effect', 'lift').split(/[\\s,]+/).filter(Boolean);\n }\n private has(e: string): boolean {\n return this.effects.includes(e);\n }\n get flipped(): boolean {\n return this.flag('flipped');\n }\n set flipped(v: boolean) {\n this.setFlag('flipped', v);\n }\n get expanded(): boolean {\n return this.flag('expanded');\n }\n\n mount(): void {\n if (this.flag('disabled')) return;\n const color = this.str('color');\n if (color) this.style.setProperty('--usa-card-glow', color);\n if (this.has('sheen') && !this.querySelector(':scope > .usa-card-sheen')) this.append(deco('usa-card-sheen'));\n if (this.has('holo') && !this.querySelector(':scope > .usa-card-holo')) this.append(deco('usa-card-holo'));\n if (this.has('flip')) {\n const click = this.str('trigger', 'hover') === 'click';\n if (click) {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('role', this.getAttribute('role') || 'button');\n this.setAttribute('aria-pressed', String(this.flipped));\n this.listen(this, 'click', (e: MouseEvent) => !interactive(e.target, this) && this.flip());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target === this) {\n e.preventDefault();\n this.flip();\n }\n });\n }\n this.setBackHidden();\n }\n if (this.has('expand')) {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-expanded', String(this.expanded));\n this.listen(this, 'click', (e: MouseEvent) => {\n const t = e.target as Element;\n if (t.closest?.('[data-close]')) {\n e.stopPropagation();\n this.collapse();\n } else if (!this.expanded && !interactive(t, this)) this.expand();\n });\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'Escape' && this.expanded) this.collapse();\n else if ((e.key === 'Enter' || e.key === ' ') && e.target === this && !this.expanded) {\n e.preventDefault();\n this.expand();\n }\n });\n }\n if (!this.effects.some((e) => TRACKING.has(e)) || this.reduced) return;\n let rect: DOMRect | null = null;\n let px = 0.5;\n let py = 0.5;\n const apply = () => {\n this._frame = 0;\n const nx = clamp(px * 2 - 1, -1, 1);\n const ny = clamp(py * 2 - 1, -1, 1);\n this.style.setProperty('--usa-card-x', `${(px * 100).toFixed(1)}%`);\n this.style.setProperty('--usa-card-y', `${(py * 100).toFixed(1)}%`);\n this.style.setProperty('--usa-card-nx', nx.toFixed(3));\n this.style.setProperty('--usa-card-ny', ny.toFixed(3));\n if (this.has('parallax-layers')) {\n const depth = this.num('depth', 16);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((l) => {\n const d = Number(l.dataset.depth) || 0.5;\n l.style.transform = `translate3d(${(nx * depth * d).toFixed(1)}px, ${(ny * depth * d).toFixed(1)}px, 0)`;\n });\n }\n };\n this.listen(this, 'pointerenter', () => {\n rect = this.getBoundingClientRect();\n this.setAttribute('data-hover', '');\n });\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n if (this.expanded) return;\n rect = rect || this.getBoundingClientRect();\n px = (e.clientX - rect.left) / (rect.width || 1);\n py = (e.clientY - rect.top) / (rect.height || 1);\n if (!this._frame) this._frame = raf(apply);\n });\n this.listen(this, 'pointerleave', () => {\n rect = null;\n px = py = 0.5;\n this.removeAttribute('data-hover');\n if (!this._frame) this._frame = raf(apply);\n });\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n if (this.expanded) this.finishCollapse();\n }\n\n private setBackHidden(): void {\n const front = this.querySelector<HTMLElement>(':scope > [data-front]');\n const back = this.querySelector<HTMLElement>(':scope > [data-back]');\n front?.setAttribute('aria-hidden', String(this.flipped));\n back?.setAttribute('aria-hidden', String(!this.flipped));\n }\n\n flip(force?: boolean): void {\n const next = force === undefined ? !this.flipped : force;\n if (next === this.flipped) return;\n this.flipped = next;\n if (this.hasAttribute('aria-pressed')) this.setAttribute('aria-pressed', String(next));\n this.setBackHidden();\n this.emit('flip', { flipped: next });\n }\n\n async expand(): Promise<void> {\n if (this.expanded || this._busy) return;\n this._busy = true;\n const first = this.getBoundingClientRect();\n const spacer = document.createElement('div');\n spacer.className = 'usa-card-spacer';\n spacer.style.cssText = `width:${first.width}px;height:${first.height}px`;\n spacer.setAttribute('aria-hidden', 'true');\n this.before(spacer);\n this._spacer = spacer;\n const backdrop = document.createElement('div');\n backdrop.className = 'usa-card-backdrop';\n backdrop.addEventListener('click', () => this.collapse());\n this.before(backdrop);\n this._backdrop = backdrop;\n this.setFlag('expanded', true);\n this.setAttribute('aria-expanded', 'true');\n this.emit('expand');\n const last = this.getBoundingClientRect();\n await this.flipFrom(first, last);\n this.motion(backdrop, [{ opacity: 0 }, { opacity: 1 }], { duration: 250, easing: 'ease-out' });\n this.focus({ preventScroll: true });\n this._busy = false;\n }\n\n async collapse(): Promise<void> {\n if (!this.expanded || this._busy) return;\n this._busy = true;\n const first = this.getBoundingClientRect();\n const b = this._backdrop;\n if (b) this.motion(b, [{ opacity: 1 }, { opacity: 0 }], { duration: 200, easing: 'ease-in', fill: 'forwards' });\n this.finishCollapse();\n this.emit('collapse');\n const last = this.getBoundingClientRect();\n await this.flipFrom(first, last);\n this._busy = false;\n }\n\n private finishCollapse(): void {\n this.setFlag('expanded', false);\n this.setAttribute('aria-expanded', 'false');\n this._spacer?.remove();\n this._backdrop?.remove();\n this._spacer = this._backdrop = null;\n }\n\n private async flipFrom(first: DOMRect, last: DOMRect): Promise<void> {\n if (this.reduced) {\n const a = this.motion(this, [{ opacity: 0.4 }, { opacity: 1 }], { duration: 200 });\n await a?.finished.catch(() => undefined);\n return;\n }\n const sx = first.width / (last.width || 1);\n const sy = first.height / (last.height || 1);\n const dx = first.left - last.left;\n const dy = first.top - last.top;\n const { easing, duration } = springEasing('stiff');\n const a = this.motion(\n this,\n [{ transformOrigin: '0 0', transform: `translate(${dx}px, ${dy}px) scale(${sx}, ${sy})` }, { transformOrigin: '0 0', transform: 'none' }],\n { duration: Math.min(duration, 900), easing: easing || EASE_OUT }\n );\n await a?.finished.catch(() => undefined);\n }\n },\n { id: 'card', text: css }\n );\n}\n\nfunction deco(cls: string): HTMLSpanElement {\n const s = document.createElement('span');\n s.className = cls;\n s.setAttribute('aria-hidden', 'true');\n return s;\n}\n\n/** Clicks on links, buttons and form fields inside the card keep their own behaviour. */\nfunction interactive(t: EventTarget | null, host: Element): boolean {\n const el = (t as Element)?.closest?.('a, button, input, select, textarea, label, [contenteditable]');\n return !!el && el !== host && host.contains(el);\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './card-stack.css?raw';\n\n/**\n * `<usa-card-stack>` — a deck of cards (its element children). The top card\n * can be swiped away left or right (pointer, touch or arrow keys); the rest\n * fan out behind it and move up with a spring.\n *\n * Attributes: `threshold` (px to dismiss, 90), `visible` (cards fanned\n * behind, 3), `offset` (px between cards, 10), `loop` (swiped cards go back\n * to the bottom), `disabled`. Methods: `swipe(direction)`, `top`. Events:\n * `usa:swipe` (`{ direction: 'left' | 'right', card }`), `usa:empty`.\n * Reduced motion: cards are removed instantly, no rotation.\n */\nexport interface UsaCardStackElement extends UsaElement {\n readonly top: HTMLElement | null;\n swipe(direction: 'left' | 'right'): Promise<void>;\n}\n\nexport function defineCardStack(tag = 'usa-card-stack'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCardStack extends Base {\n static get observedAttributes(): string[] {\n return ['visible', 'offset', 'disabled'];\n }\n\n private _x!: SpringValue;\n private _drag: { id: number; x0: number; t0: number } | null = null;\n private _busy = false;\n\n get top(): HTMLElement | null {\n return this.cards()[0] || null;\n }\n\n private cards(): HTMLElement[] {\n return Array.from(this.children).filter((c) => !(c as HTMLElement).hasAttribute('data-gone')) as HTMLElement[];\n }\n\n private layout(dragX = 0): void {\n const visible = this.num('visible', 3);\n const off = this.num('offset', 10);\n const reduced = this.reduced;\n this.cards().forEach((c, i) => {\n c.style.zIndex = String(100 - i);\n c.toggleAttribute('data-top', i === 0);\n c.setAttribute('aria-hidden', String(i !== 0));\n if (i === 0) {\n const rot = reduced ? 0 : dragX / 18;\n c.style.transform = `translate3d(${dragX}px, 0, 0) rotate(${rot.toFixed(2)}deg)`;\n c.style.opacity = '1';\n } else {\n const k = Math.min(i, visible);\n const pull = Math.min(1, Math.abs(dragX) / this.num('threshold', 90));\n const kk = Math.max(0, k - pull);\n c.style.transform = `translate3d(0, ${(kk * off).toFixed(1)}px, 0) scale(${(1 - kk * 0.05).toFixed(3)})`;\n c.style.opacity = i > visible ? '0' : '1';\n }\n });\n }\n\n mount(): void {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'group');\n this.setAttribute('aria-roledescription', 'card stack');\n this._x = createSpring({ spring: 'wobbly', onUpdate: (v) => this.layout(v) });\n this.layout();\n this.listen(this, 'pointerdown', (e: PointerEvent) => {\n if (this.flag('disabled') || this._busy || !this.top || !this.top.contains(e.target as Node)) return;\n this._x.stop();\n this._drag = { id: e.pointerId, x0: e.clientX - this._x.value, t0: e.timeStamp };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic */\n }\n this.setAttribute('data-dragging', '');\n });\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n if (!this._drag || e.pointerId !== this._drag.id) return;\n this._x.jump(e.clientX - this._drag.x0);\n });\n const up = (e: PointerEvent) => {\n if (!this._drag || e.pointerId !== this._drag.id) return;\n this._drag = null;\n this.removeAttribute('data-dragging');\n const x = this._x.value;\n if (Math.abs(x) >= this.num('threshold', 90)) this.swipe(x > 0 ? 'right' : 'left');\n else this._x.set(0);\n };\n this.listen(this, 'pointerup', up);\n this.listen(this, 'pointercancel', up);\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n this.swipe(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n });\n const mo = typeof MutationObserver !== 'undefined' ? new MutationObserver(() => this.layout(this._x.value)) : null;\n mo?.observe(this, { childList: true });\n this.onCleanup(() => mo?.disconnect());\n }\n\n unmount(): void {\n this._x?.stop();\n }\n\n async swipe(direction: 'left' | 'right'): Promise<void> {\n const card = this.top;\n if (!card || this._busy || this.flag('disabled')) return;\n this._busy = true;\n this._x.stop();\n const from = this._x.value;\n const to = (direction === 'left' ? -1 : 1) * Math.max(320, (this.getBoundingClientRect().width || 300) * 1.4);\n card.setAttribute('data-gone', '');\n this._x.jump(0);\n this.layout(0);\n const a = this.reduced\n ? null\n : this.motion(card, [{ transform: `translate3d(${from}px,0,0) rotate(${from / 18}deg)`, opacity: 1 }, { transform: `translate3d(${to}px,0,0) rotate(${to / 14}deg)`, opacity: 0 }], {\n duration: 380,\n easing: 'cubic-bezier(0.3, 0.7, 0.4, 1)',\n fill: 'forwards',\n });\n await a?.finished.catch(() => undefined);\n a?.cancel();\n card.removeAttribute('data-gone');\n if (this.flag('loop')) this.append(card);\n else card.remove();\n this.layout(0);\n this._busy = false;\n this.emit('swipe', { direction, card });\n if (!this.top) this.emit('empty');\n }\n },\n { id: 'card-stack', text: css }\n );\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport css from './sticky-stack.css?raw';\n\n/**\n * `<usa-sticky-stack>` — cards (element children) stick to the top while\n * scrolling and the ones underneath scale down and dim as the next card\n * slides over them, like a deck building up.\n *\n * Attributes: `top` (px from the viewport top, 80), `gap` (px each card\n * peeks below the previous, 16), `scale` (how much a covered card shrinks,\n * 0.06). Reduced motion: cards still stack (sticky) but do not scale.\n */\nexport interface UsaStickyStackElement extends UsaElement {\n update(): void;\n}\n\nexport function defineStickyStack(tag = 'usa-sticky-stack'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStickyStack extends Base {\n static get observedAttributes(): string[] {\n return ['top', 'gap', 'scale'];\n }\n\n private _frame = 0;\n\n mount(): void {\n const top = this.num('top', 80);\n const gap = this.num('gap', 16);\n const cards = Array.from(this.children) as HTMLElement[];\n cards.forEach((c, i) => {\n c.style.top = `${top + i * gap}px`;\n c.style.zIndex = String(i + 1);\n });\n if (this.reduced) return;\n const schedule = () => {\n if (!this._frame) this._frame = raf(() => this.update());\n };\n let active = false;\n this.inView((v) => {\n if (v && !active) {\n active = true;\n window.addEventListener('scroll', schedule, { passive: true });\n window.addEventListener('resize', schedule, { passive: true });\n schedule();\n } else if (!v && active) {\n active = false;\n window.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n }\n });\n this.onCleanup(() => {\n window.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n });\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n update(): void {\n this._frame = 0;\n const cards = Array.from(this.children) as HTMLElement[];\n const rects = cards.map((c) => c.getBoundingClientRect());\n const shrink = this.num('scale', 0.06);\n cards.forEach((c, i) => {\n let covered = 0;\n for (let j = i + 1; j < cards.length; j++) {\n const h = rects[i].height || 1;\n covered += clamp((rects[i].bottom - rects[j].top) / h, 0, 1);\n }\n const s = 1 - Math.min(3, covered) * shrink;\n c.style.transform = covered > 0.001 ? `scale(${s.toFixed(4)})` : '';\n c.style.filter = covered > 0.001 ? `brightness(${(1 - Math.min(0.35, covered * 0.12)).toFixed(3)})` : '';\n });\n }\n },\n { id: 'sticky-stack', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './carousel-3d.css?raw';\n\n/**\n * `<usa-carousel-3d>` — its element children on a 3D ring. Rotate with the\n * arrow keys, a drag/swipe, the wheel (shift) or `next()` / `prev()`; the\n * front item is `aria-current`. Spring-driven rotation.\n *\n * Attributes: `radius` (px, auto from item width), `autoplay` (ms between\n * steps, pauses on hover/focus), `perspective` (px, 1200), `index`.\n * Events: `usa:change` (`{ index }`). Reduced motion: a flat, instant\n * switch (only the current item is shown, others dimmed).\n */\nexport interface UsaCarousel3dElement extends UsaElement {\n index: number;\n next(): void;\n prev(): void;\n goTo(i: number): void;\n}\n\nexport function defineCarousel3d(tag = 'usa-carousel-3d'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCarousel3d extends Base {\n static get observedAttributes(): string[] {\n return ['radius', 'perspective', 'autoplay'];\n }\n\n private _angle!: SpringValue;\n private _i = 0;\n\n get index(): number {\n return this._i;\n }\n set index(v: number) {\n this.goTo(v);\n }\n\n private items(): HTMLElement[] {\n return Array.from(this.children) as HTMLElement[];\n }\n\n private render(angle: number): void {\n const items = this.items();\n const n = items.length || 1;\n const step = 360 / n;\n const w = items[0]?.offsetWidth || 200;\n const r = this.num('radius', Math.round(w / 2 / Math.tan(Math.PI / n)) + 24);\n const reduced = this.reduced;\n items.forEach((it, i) => {\n const norm = ((((i * step - angle) % 360) + 540) % 360) - 180;\n it.style.transform = reduced ? '' : `rotateY(${norm.toFixed(2)}deg) translateZ(${r}px)`;\n it.style.opacity = reduced ? (i === this._i ? '1' : '0') : String(Math.max(0.25, 1 - Math.abs(norm) / 200));\n });\n }\n\n mount(): void {\n this.style.setProperty('--usa-c3d-perspective', `${this.num('perspective', 1200)}px`);\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('role', 'region');\n this.setAttribute('aria-roledescription', 'carousel');\n this._i = Math.max(0, Math.min(this.items().length - 1, this.num('index', 0)));\n const step = () => 360 / (this.items().length || 1);\n this._angle = createSpring({ value: this._i * step(), spring: 'gentle', onUpdate: (v) => this.render(v) });\n this.render(this._angle.value);\n this.mark();\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'ArrowRight') this.next();\n else if (e.key === 'ArrowLeft') this.prev();\n else return;\n e.preventDefault();\n });\n let x0: number | null = null;\n this.listen(this, 'pointerdown', (e: PointerEvent) => (x0 = e.clientX));\n this.listen(this, 'pointerup', (e: PointerEvent) => {\n if (x0 === null) return;\n const dx = e.clientX - x0;\n x0 = null;\n if (Math.abs(dx) > 40) dx < 0 ? this.next() : this.prev();\n });\n this.listen(this, 'click', (e: MouseEvent) => {\n const it = this.items().find((c) => c.contains(e.target as Node));\n if (it) {\n const i = this.items().indexOf(it);\n if (i !== this._i) this.goTo(i);\n }\n });\n const every = this.num('autoplay', 0);\n if (every > 0 && !this.reduced) {\n let paused = false;\n const pause = () => (paused = true);\n const resume = () => (paused = false);\n this.listen(this, 'pointerenter', pause);\n this.listen(this, 'pointerleave', resume);\n this.listen(this, 'focusin', pause);\n this.listen(this, 'focusout', resume);\n const t = setInterval(() => !paused && !document.hidden && this.next(), every);\n this.onCleanup(() => clearInterval(t));\n }\n }\n\n unmount(): void {\n this._angle?.stop();\n }\n\n private mark(): void {\n this.items().forEach((it, i) => {\n if (i === this._i) it.setAttribute('aria-current', 'true');\n else it.removeAttribute('aria-current');\n });\n }\n\n goTo(i: number): void {\n const n = this.items().length;\n if (!n || !this._angle) return;\n const step = 360 / n;\n // shortest rotation from the current target\n const cur = this._angle.target;\n const curIdx = Math.round(cur / step);\n let delta = (((i - curIdx) % n) + n) % n;\n if (delta > n / 2) delta -= n;\n this._i = ((i % n) + n) % n;\n this._angle.set((curIdx + delta) * step);\n if (this.reduced) this.render(this._angle.value);\n this.mark();\n this.emit('change', { index: this._i });\n }\n\n next(): void {\n this.goTo(this._i + 1);\n }\n\n prev(): void {\n this.goTo(this._i - 1);\n }\n },\n { id: 'carousel-3d', text: css }\n );\n}\n","/**\n * motionary/components/cards — card effects (v2.4).\n * `<usa-card effect=\"flip | holo | glass | border-glow | conic-border | lift |\n * spotlight | sheen | parallax-layers | expand\">` (combinable),\n * `<usa-card-stack>` (swipeable deck), `<usa-sticky-stack>` (stacking on\n * scroll) and `<usa-carousel-3d>`.\n */\nimport { defineCard, type UsaCardElement } from './card';\nimport { defineCardStack, type UsaCardStackElement } from './card-stack';\nimport { defineStickyStack, type UsaStickyStackElement } from './sticky-stack';\nimport { defineCarousel3d, type UsaCarousel3dElement } from './carousel-3d';\n\nexport { defineCard, defineCardStack, defineStickyStack, defineCarousel3d };\nexport { CARD_EFFECTS } from './card';\nexport type { CardEffect } from './card';\nexport type { UsaCardElement, UsaCardStackElement, UsaStickyStackElement, UsaCarousel3dElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineCardComponents(): void {\n defineCard();\n defineCardStack();\n defineStickyStack();\n defineCarousel3d();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-card': UsaCardElement;\n 'usa-card-stack': UsaCardStackElement;\n 'usa-sticky-stack': UsaStickyStackElement;\n 'usa-carousel-3d': UsaCarousel3dElement;\n }\n}\n"],"names":["defineElement","clamp","raf","caf","springEasing","EASE_OUT","css","createSpring"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { u as defineElement, r as raf, l as caf, D as EASE_OUT, k as clamp } from '../chunks/base-BnRyfuyM.js';
2
- import { d as springEasing, c as createSpring } from '../chunks/spring-CZDNyqWp.js';
1
+ import { f as defineElement, r as raf, b as caf, D as EASE_OUT, d as clamp } from '../chunks/base-BTev8qxg.js';
2
+ import { d as springEasing, c as createSpring } from '../chunks/spring-BHuP55DR.js';
3
3
 
4
4
  var css$3 = "usa-card{--usa-card-radius:18px;--usa-card-bg:var(--usa-surface,#1b1e27);--usa-card-glow:var(--usa-accent,#7c5cff);--usa-card-x:50%;--usa-card-y:50%;--usa-card-nx:0;--usa-card-ny:0;position:relative;display:block;border-radius:var(--usa-card-radius);isolation:isolate;-webkit-tap-highlight-color:transparent}usa-card:focus-visible{outline:2px solid var(--usa-card-glow);outline-offset:3px}usa-card[effect~=\"lift\"]{transition:transform 0.45s cubic-bezier(0.34,1.56,0.64,1),box-shadow 0.45s ease}usa-card[effect~=\"lift\"][data-hover],usa-card[effect~=\"lift\"]:focus-visible{transform:translateY(-6px) perspective(900px) rotateX(calc(var(--usa-card-ny) * -4deg)) rotateY(calc(var(--usa-card-nx) * 4deg));box-shadow:0 22px 44px -18px rgb(0 0 0 / 0.55)}usa-card[effect~=\"glass\"]{background:color-mix(in srgb,var(--usa-card-bg) 45%,transparent);border:1px solid rgb(255 255 255 / 0.16);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5)}usa-card[effect~=\"spotlight\"]::before,usa-card[effect~=\"border-glow\"]::after{content:\"\";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity 0.3s ease}usa-card[effect~=\"spotlight\"]::before{z-index:-1;background:radial-gradient(260px circle at var(--usa-card-x) var(--usa-card-y),color-mix(in srgb,var(--usa-card-glow) 28%,transparent),transparent 70%)}usa-card[effect~=\"border-glow\"]::after{padding:1.5px;background:radial-gradient(180px circle at var(--usa-card-x) var(--usa-card-y),var(--usa-card-glow),transparent 70%);-webkit-mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}usa-card[data-hover]::before,usa-card[data-hover]::after{opacity:1}@property --usa-card-angle{syntax:\"<angle>\";inherits:false;initial-value:0deg}usa-card[effect~=\"conic-border\"]{border:2px solid transparent;background:linear-gradient(var(--usa-card-bg),var(--usa-card-bg)) padding-box,conic-gradient(from var(--usa-card-angle),var(--usa-card-glow),#22d3ee,#f472b6,var(--usa-card-glow)) border-box;animation:usa-card-spin 4s linear infinite}@keyframes usa-card-spin{to{--usa-card-angle:360deg}}usa-card .usa-card-sheen{position:absolute;inset:0;border-radius:inherit;overflow:hidden;pointer-events:none}usa-card .usa-card-sheen::before{content:\"\";position:absolute;top:0;bottom:0;width:45%;left:-60%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgb(255 255 255 / 0.35),transparent)}usa-card[effect~=\"sheen\"]:hover .usa-card-sheen::before,usa-card[effect~=\"sheen\"]:focus-visible .usa-card-sheen::before{left:130%;transition:left 0.8s cubic-bezier(0.22,1,0.36,1)}usa-card .usa-card-holo{position:absolute;inset:0;border-radius:inherit;pointer-events:none;mix-blend-mode:color-dodge;opacity:0.35;background:linear-gradient(115deg,transparent 20%,#ff7ad9 35%,#7af0ff 45%,#ffe27a 55%,transparent 70%) calc(var(--usa-card-x) * 1.4 - 20%) calc(var(--usa-card-y) * 1.4 - 20%) / 220% 220%;transition:opacity 0.3s ease}usa-card[data-hover] .usa-card-holo{opacity:0.7}usa-card[effect~=\"parallax-layers\"] [data-depth]{transition:transform 0.25s ease-out;will-change:transform}usa-card[effect~=\"flip\"]{perspective:1000px;display:grid}usa-card[effect~=\"flip\"]>[data-front],usa-card[effect~=\"flip\"]>[data-back]{grid-area:1 / 1;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:inherit;transition:transform 0.7s cubic-bezier(0.34,1.3,0.64,1),opacity 0.3s ease}usa-card[effect~=\"flip\"]>[data-back]{transform:rotateY(180deg)}usa-card[effect~=\"flip\"][axis=\"x\"]>[data-back]{transform:rotateX(180deg)}usa-card[effect~=\"flip\"][flipped]>[data-front],usa-card[effect~=\"flip\"]:not([trigger=\"click\"]):hover>[data-front]{transform:rotateY(-180deg)}usa-card[effect~=\"flip\"][flipped]>[data-back],usa-card[effect~=\"flip\"]:not([trigger=\"click\"]):hover>[data-back]{transform:rotateY(0deg)}usa-card[effect~=\"flip\"][axis=\"x\"][flipped]>[data-front],usa-card[effect~=\"flip\"][axis=\"x\"]:not([trigger=\"click\"]):hover>[data-front]{transform:rotateX(180deg)}usa-card[effect~=\"flip\"][axis=\"x\"][flipped]>[data-back],usa-card[effect~=\"flip\"][axis=\"x\"]:not([trigger=\"click\"]):hover>[data-back]{transform:rotateX(0deg)}usa-card[effect~=\"flip\"][trigger=\"click\"]{cursor:pointer}usa-card[effect~=\"expand\"]{cursor:zoom-in}usa-card[effect~=\"expand\"]:not([expanded]) [data-detail]{display:none}usa-card[expanded]{position:fixed;inset:6vh max(4vw,calc(50vw - 420px));z-index:1000;overflow:auto;cursor:default;background:var(--usa-card-bg);box-shadow:0 30px 80px -20px rgb(0 0 0 / 0.6)}.usa-card-backdrop{position:fixed;inset:0;z-index:999;background:rgb(0 0 0 / 0.45)}@media (prefers-reduced-motion:reduce){usa-card,usa-card *,usa-card .usa-card-sheen::before{transition-duration:0.01ms !important;animation:none !important}usa-card[effect~=\"lift\"][data-hover]{transform:none}usa-card[effect~=\"flip\"]>[data-front],usa-card[effect~=\"flip\"]>[data-back]{transform:none !important}usa-card[effect~=\"flip\"][flipped]>[data-front],usa-card[effect~=\"flip\"]:not([flipped])>[data-back]{opacity:0;visibility:hidden}usa-card[effect~=\"flip\"]:not([trigger=\"click\"]):hover>[data-front]{opacity:0;visibility:hidden}usa-card[effect~=\"flip\"]:not([trigger=\"click\"]):hover>[data-back]{opacity:1;visibility:visible}}@media (prefers-reduced-transparency:reduce),(forced-colors:active){usa-card[effect~=\"glass\"]{background:var(--usa-card-bg);-webkit-backdrop-filter:none;backdrop-filter:none}}";
5
5