motionary 0.0.0-stage → 6.2.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 (374) hide show
  1. package/CHANGELOG.md +803 -0
  2. package/LICENSE +21 -0
  3. package/README.md +218 -2
  4. package/README_ja.md +219 -0
  5. package/README_zh.md +219 -0
  6. package/bin/usa-codemod-5.mjs +79 -0
  7. package/bin/usa-codemod-6.mjs +146 -0
  8. package/dist/chunks/base-BaQV-2ha.cjs +436 -0
  9. package/dist/chunks/base-BaQV-2ha.cjs.map +1 -0
  10. package/dist/chunks/base-C_3cAoRz.js +404 -0
  11. package/dist/chunks/base-C_3cAoRz.js.map +1 -0
  12. package/dist/chunks/bind-B_CTL6Qn.js +22 -0
  13. package/dist/chunks/bind-B_CTL6Qn.js.map +1 -0
  14. package/dist/chunks/bind-Ui43-n2d.cjs +25 -0
  15. package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -0
  16. package/dist/chunks/core-B5T0dhFH.cjs +920 -0
  17. package/dist/chunks/core-B5T0dhFH.cjs.map +1 -0
  18. package/dist/chunks/core-BGAyaY6L.cjs +265 -0
  19. package/dist/chunks/core-BGAyaY6L.cjs.map +1 -0
  20. package/dist/chunks/core-D7cVumUu.js +909 -0
  21. package/dist/chunks/core-D7cVumUu.js.map +1 -0
  22. package/dist/chunks/core-VEBw36QK.js +260 -0
  23. package/dist/chunks/core-VEBw36QK.js.map +1 -0
  24. package/dist/chunks/core-ps8uvYuN.js +181 -0
  25. package/dist/chunks/core-ps8uvYuN.js.map +1 -0
  26. package/dist/chunks/core-zq17EeCI.cjs +185 -0
  27. package/dist/chunks/core-zq17EeCI.cjs.map +1 -0
  28. package/dist/chunks/fx-Bs6IrV4Q.js +109 -0
  29. package/dist/chunks/fx-Bs6IrV4Q.js.map +1 -0
  30. package/dist/chunks/fx-lBGVtQO1.cjs +114 -0
  31. package/dist/chunks/fx-lBGVtQO1.cjs.map +1 -0
  32. package/dist/chunks/generative-D2YyhaeO.js +336 -0
  33. package/dist/chunks/generative-D2YyhaeO.js.map +1 -0
  34. package/dist/chunks/generative-DzIZq-_g.cjs +348 -0
  35. package/dist/chunks/generative-DzIZq-_g.cjs.map +1 -0
  36. package/dist/chunks/gpu-Bu7qwugO.js +380 -0
  37. package/dist/chunks/gpu-Bu7qwugO.js.map +1 -0
  38. package/dist/chunks/gpu-CenK2l6b.cjs +387 -0
  39. package/dist/chunks/gpu-CenK2l6b.cjs.map +1 -0
  40. package/dist/chunks/index-tags-DucKMQr_.js +26 -0
  41. package/dist/chunks/index-tags-DucKMQr_.js.map +1 -0
  42. package/dist/chunks/index-tags-wv0R_vkO.cjs +28 -0
  43. package/dist/chunks/index-tags-wv0R_vkO.cjs.map +1 -0
  44. package/dist/chunks/presets-BYBVJVeP.js +226 -0
  45. package/dist/chunks/presets-BYBVJVeP.js.map +1 -0
  46. package/dist/chunks/presets-CUHys3sK.cjs +233 -0
  47. package/dist/chunks/presets-CUHys3sK.cjs.map +1 -0
  48. package/dist/chunks/registry-CKNLQpwd.js +121 -0
  49. package/dist/chunks/registry-CKNLQpwd.js.map +1 -0
  50. package/dist/chunks/registry-DehBVRDV.cjs +131 -0
  51. package/dist/chunks/registry-DehBVRDV.cjs.map +1 -0
  52. package/dist/chunks/spring-CbvHfVtP.js +219 -0
  53. package/dist/chunks/spring-CbvHfVtP.js.map +1 -0
  54. package/dist/chunks/spring-Dgx187Vh.cjs +232 -0
  55. package/dist/chunks/spring-Dgx187Vh.cjs.map +1 -0
  56. package/dist/chunks/stagger-CCFyhzSw.cjs +86 -0
  57. package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -0
  58. package/dist/chunks/stagger-DtMKo2SK.js +84 -0
  59. package/dist/chunks/stagger-DtMKo2SK.js.map +1 -0
  60. package/dist/chunks/variants-BhjyddG8.cjs +39 -0
  61. package/dist/chunks/variants-BhjyddG8.cjs.map +1 -0
  62. package/dist/chunks/variants-DRlKVHvu.js +35 -0
  63. package/dist/chunks/variants-DRlKVHvu.js.map +1 -0
  64. package/dist/components/a11y.cjs +276 -0
  65. package/dist/components/a11y.cjs.map +1 -0
  66. package/dist/components/a11y.d.cts +131 -0
  67. package/dist/components/a11y.d.ts +131 -0
  68. package/dist/components/a11y.js +259 -0
  69. package/dist/components/a11y.js.map +1 -0
  70. package/dist/components/angular.cjs +76 -0
  71. package/dist/components/angular.cjs.map +1 -0
  72. package/dist/components/angular.d.cts +1734 -0
  73. package/dist/components/angular.d.ts +1734 -0
  74. package/dist/components/angular.js +70 -0
  75. package/dist/components/angular.js.map +1 -0
  76. package/dist/components/background.cjs +659 -0
  77. package/dist/components/background.cjs.map +1 -0
  78. package/dist/components/background.css +9 -0
  79. package/dist/components/background.d.cts +166 -0
  80. package/dist/components/background.d.ts +166 -0
  81. package/dist/components/background.js +647 -0
  82. package/dist/components/background.js.map +1 -0
  83. package/dist/components/bridge.cjs +154 -0
  84. package/dist/components/bridge.cjs.map +1 -0
  85. package/dist/components/bridge.d.cts +63 -0
  86. package/dist/components/bridge.d.ts +63 -0
  87. package/dist/components/bridge.js +147 -0
  88. package/dist/components/bridge.js.map +1 -0
  89. package/dist/components/cards.cjs +561 -0
  90. package/dist/components/cards.cjs.map +1 -0
  91. package/dist/components/cards.css +6 -0
  92. package/dist/components/cards.d.cts +115 -0
  93. package/dist/components/cards.d.ts +115 -0
  94. package/dist/components/cards.js +554 -0
  95. package/dist/components/cards.js.map +1 -0
  96. package/dist/components/click.cjs +877 -0
  97. package/dist/components/click.cjs.map +1 -0
  98. package/dist/components/click.css +9 -0
  99. package/dist/components/click.d.cts +218 -0
  100. package/dist/components/click.d.ts +218 -0
  101. package/dist/components/click.js +863 -0
  102. package/dist/components/click.js.map +1 -0
  103. package/dist/components/depth.cjs +250 -0
  104. package/dist/components/depth.cjs.map +1 -0
  105. package/dist/components/depth.css +3 -0
  106. package/dist/components/depth.d.cts +86 -0
  107. package/dist/components/depth.d.ts +86 -0
  108. package/dist/components/depth.js +242 -0
  109. package/dist/components/depth.js.map +1 -0
  110. package/dist/components/effects.cjs +2258 -0
  111. package/dist/components/effects.cjs.map +1 -0
  112. package/dist/components/effects.d.cts +545 -0
  113. package/dist/components/effects.d.ts +545 -0
  114. package/dist/components/effects.js +2200 -0
  115. package/dist/components/effects.js.map +1 -0
  116. package/dist/components/feedback.cjs +442 -0
  117. package/dist/components/feedback.cjs.map +1 -0
  118. package/dist/components/feedback.css +7 -0
  119. package/dist/components/feedback.d.cts +144 -0
  120. package/dist/components/feedback.d.ts +144 -0
  121. package/dist/components/feedback.js +433 -0
  122. package/dist/components/feedback.js.map +1 -0
  123. package/dist/components/fx-gpu.cjs +12 -0
  124. package/dist/components/fx-gpu.cjs.map +1 -0
  125. package/dist/components/fx-gpu.d.cts +63 -0
  126. package/dist/components/fx-gpu.d.ts +63 -0
  127. package/dist/components/fx-gpu.js +5 -0
  128. package/dist/components/fx-gpu.js.map +1 -0
  129. package/dist/components/fx.cjs +169 -0
  130. package/dist/components/fx.cjs.map +1 -0
  131. package/dist/components/fx.css +3 -0
  132. package/dist/components/fx.d.cts +114 -0
  133. package/dist/components/fx.d.ts +114 -0
  134. package/dist/components/fx.js +156 -0
  135. package/dist/components/fx.js.map +1 -0
  136. package/dist/components/fx2.cjs +25 -0
  137. package/dist/components/fx2.cjs.map +1 -0
  138. package/dist/components/fx2.d.cts +136 -0
  139. package/dist/components/fx2.d.ts +136 -0
  140. package/dist/components/fx2.js +17 -0
  141. package/dist/components/fx2.js.map +1 -0
  142. package/dist/components/gesture.cjs +209 -0
  143. package/dist/components/gesture.cjs.map +1 -0
  144. package/dist/components/gesture.css +3 -0
  145. package/dist/components/gesture.d.cts +134 -0
  146. package/dist/components/gesture.d.ts +134 -0
  147. package/dist/components/gesture.js +203 -0
  148. package/dist/components/gesture.js.map +1 -0
  149. package/dist/components/interaction.cjs +424 -0
  150. package/dist/components/interaction.cjs.map +1 -0
  151. package/dist/components/interaction.css +8 -0
  152. package/dist/components/interaction.d.cts +115 -0
  153. package/dist/components/interaction.d.ts +115 -0
  154. package/dist/components/interaction.js +416 -0
  155. package/dist/components/interaction.js.map +1 -0
  156. package/dist/components/jsx.cjs +3 -0
  157. package/dist/components/jsx.cjs.map +1 -0
  158. package/dist/components/jsx.d.cts +53 -0
  159. package/dist/components/jsx.d.ts +53 -0
  160. package/dist/components/jsx.js +2 -0
  161. package/dist/components/jsx.js.map +1 -0
  162. package/dist/components/layout.cjs +257 -0
  163. package/dist/components/layout.cjs.map +1 -0
  164. package/dist/components/layout.css +3 -0
  165. package/dist/components/layout.d.cts +99 -0
  166. package/dist/components/layout.d.ts +99 -0
  167. package/dist/components/layout.js +249 -0
  168. package/dist/components/layout.js.map +1 -0
  169. package/dist/components/lazy.cjs +92 -0
  170. package/dist/components/lazy.cjs.map +1 -0
  171. package/dist/components/lazy.d.cts +48 -0
  172. package/dist/components/lazy.d.ts +48 -0
  173. package/dist/components/lazy.js +87 -0
  174. package/dist/components/lazy.js.map +1 -0
  175. package/dist/components/lite.cjs +11095 -0
  176. package/dist/components/lite.cjs.map +1 -0
  177. package/dist/components/lite.d.cts +4 -0
  178. package/dist/components/lite.d.ts +4 -0
  179. package/dist/components/lite.js +10827 -0
  180. package/dist/components/lite.js.map +1 -0
  181. package/dist/components/packs.cjs +192 -0
  182. package/dist/components/packs.cjs.map +1 -0
  183. package/dist/components/packs.css +3 -0
  184. package/dist/components/packs.d.cts +72 -0
  185. package/dist/components/packs.d.ts +72 -0
  186. package/dist/components/packs.js +184 -0
  187. package/dist/components/packs.js.map +1 -0
  188. package/dist/components/page.cjs +824 -0
  189. package/dist/components/page.cjs.map +1 -0
  190. package/dist/components/page.css +11 -0
  191. package/dist/components/page.d.cts +249 -0
  192. package/dist/components/page.d.ts +249 -0
  193. package/dist/components/page.js +799 -0
  194. package/dist/components/page.js.map +1 -0
  195. package/dist/components/perf.cjs +120 -0
  196. package/dist/components/perf.cjs.map +1 -0
  197. package/dist/components/perf.d.cts +98 -0
  198. package/dist/components/perf.d.ts +98 -0
  199. package/dist/components/perf.js +110 -0
  200. package/dist/components/perf.js.map +1 -0
  201. package/dist/components/physics.cjs +448 -0
  202. package/dist/components/physics.cjs.map +1 -0
  203. package/dist/components/physics.css +5 -0
  204. package/dist/components/physics.d.cts +189 -0
  205. package/dist/components/physics.d.ts +189 -0
  206. package/dist/components/physics.js +430 -0
  207. package/dist/components/physics.js.map +1 -0
  208. package/dist/components/react.cjs +96 -0
  209. package/dist/components/react.cjs.map +1 -0
  210. package/dist/components/react.d.cts +18 -0
  211. package/dist/components/react.d.ts +18 -0
  212. package/dist/components/react.js +91 -0
  213. package/dist/components/react.js.map +1 -0
  214. package/dist/components/reveal.cjs +362 -0
  215. package/dist/components/reveal.cjs.map +1 -0
  216. package/dist/components/reveal.css +5 -0
  217. package/dist/components/reveal.d.cts +105 -0
  218. package/dist/components/reveal.d.ts +105 -0
  219. package/dist/components/reveal.js +353 -0
  220. package/dist/components/reveal.js.map +1 -0
  221. package/dist/components/solid.cjs +86 -0
  222. package/dist/components/solid.cjs.map +1 -0
  223. package/dist/components/solid.d.cts +1751 -0
  224. package/dist/components/solid.d.ts +1751 -0
  225. package/dist/components/solid.js +82 -0
  226. package/dist/components/solid.js.map +1 -0
  227. package/dist/components/svelte.cjs +68 -0
  228. package/dist/components/svelte.cjs.map +1 -0
  229. package/dist/components/svelte.d.cts +1733 -0
  230. package/dist/components/svelte.d.ts +1733 -0
  231. package/dist/components/svelte.js +64 -0
  232. package/dist/components/svelte.js.map +1 -0
  233. package/dist/components/svg.cjs +359 -0
  234. package/dist/components/svg.cjs.map +1 -0
  235. package/dist/components/svg.css +3 -0
  236. package/dist/components/svg.d.cts +113 -0
  237. package/dist/components/svg.d.ts +113 -0
  238. package/dist/components/svg.js +347 -0
  239. package/dist/components/svg.js.map +1 -0
  240. package/dist/components/text.cjs +968 -0
  241. package/dist/components/text.cjs.map +1 -0
  242. package/dist/components/text.css +8 -0
  243. package/dist/components/text.d.cts +342 -0
  244. package/dist/components/text.d.ts +342 -0
  245. package/dist/components/text.js +947 -0
  246. package/dist/components/text.js.map +1 -0
  247. package/dist/components/timeline.cjs +109 -0
  248. package/dist/components/timeline.cjs.map +1 -0
  249. package/dist/components/timeline.css +3 -0
  250. package/dist/components/timeline.d.cts +155 -0
  251. package/dist/components/timeline.d.ts +155 -0
  252. package/dist/components/timeline.js +103 -0
  253. package/dist/components/timeline.js.map +1 -0
  254. package/dist/components/tokens.cjs +226 -0
  255. package/dist/components/tokens.cjs.map +1 -0
  256. package/dist/components/tokens.d.cts +74 -0
  257. package/dist/components/tokens.d.ts +74 -0
  258. package/dist/components/tokens.js +211 -0
  259. package/dist/components/tokens.js.map +1 -0
  260. package/dist/components/transitions.cjs +430 -0
  261. package/dist/components/transitions.cjs.map +1 -0
  262. package/dist/components/transitions.css +5 -0
  263. package/dist/components/transitions.d.cts +126 -0
  264. package/dist/components/transitions.d.ts +126 -0
  265. package/dist/components/transitions.js +423 -0
  266. package/dist/components/transitions.js.map +1 -0
  267. package/dist/components/ui.cjs +1050 -0
  268. package/dist/components/ui.cjs.map +1 -0
  269. package/dist/components/ui.css +14 -0
  270. package/dist/components/ui.d.cts +224 -0
  271. package/dist/components/ui.d.ts +224 -0
  272. package/dist/components/ui.js +1034 -0
  273. package/dist/components/ui.js.map +1 -0
  274. package/dist/components/vue.cjs +67 -0
  275. package/dist/components/vue.cjs.map +1 -0
  276. package/dist/components/vue.d.cts +1722 -0
  277. package/dist/components/vue.d.ts +1722 -0
  278. package/dist/components/vue.js +64 -0
  279. package/dist/components/vue.js.map +1 -0
  280. package/dist/components/webgl.cjs +459 -0
  281. package/dist/components/webgl.cjs.map +1 -0
  282. package/dist/components/webgl.css +3 -0
  283. package/dist/components/webgl.d.cts +133 -0
  284. package/dist/components/webgl.d.ts +133 -0
  285. package/dist/components/webgl.js +442 -0
  286. package/dist/components/webgl.js.map +1 -0
  287. package/dist/components/widgets.cjs +591 -0
  288. package/dist/components/widgets.cjs.map +1 -0
  289. package/dist/components/widgets.d.cts +110 -0
  290. package/dist/components/widgets.d.ts +110 -0
  291. package/dist/components/widgets.js +581 -0
  292. package/dist/components/widgets.js.map +1 -0
  293. package/dist/components.cjs +351 -0
  294. package/dist/components.cjs.map +1 -0
  295. package/dist/components.css +75 -0
  296. package/dist/components.d.cts +2997 -0
  297. package/dist/components.d.ts +2997 -0
  298. package/dist/components.js +106 -0
  299. package/dist/components.js.map +1 -0
  300. package/dist/components.umd.js +23 -0
  301. package/dist/components.umd.js.map +1 -0
  302. package/dist/element.cjs +97 -0
  303. package/dist/element.cjs.map +1 -0
  304. package/dist/element.d.cts +215 -0
  305. package/dist/element.d.ts +215 -0
  306. package/dist/element.js +95 -0
  307. package/dist/element.js.map +1 -0
  308. package/dist/element.umd.js +2 -0
  309. package/dist/element.umd.js.map +1 -0
  310. package/dist/index.cjs +149 -0
  311. package/dist/index.cjs.map +1 -0
  312. package/dist/index.d.cts +425 -0
  313. package/dist/index.d.ts +425 -0
  314. package/dist/index.js +131 -0
  315. package/dist/index.js.map +1 -0
  316. package/dist/index.umd.js +15 -0
  317. package/dist/index.umd.js.map +1 -0
  318. package/dist/presets/extended.cjs +243 -0
  319. package/dist/presets/extended.cjs.map +1 -0
  320. package/dist/presets/extended.d.cts +37 -0
  321. package/dist/presets/extended.d.ts +37 -0
  322. package/dist/presets/extended.js +239 -0
  323. package/dist/presets/extended.js.map +1 -0
  324. package/dist/presets-extended.umd.js +2 -0
  325. package/dist/presets-extended.umd.js.map +1 -0
  326. package/dist/react.cjs +68 -0
  327. package/dist/react.cjs.map +1 -0
  328. package/dist/react.d.cts +158 -0
  329. package/dist/react.d.ts +158 -0
  330. package/dist/react.js +65 -0
  331. package/dist/react.js.map +1 -0
  332. package/dist/solid.cjs +93 -0
  333. package/dist/solid.cjs.map +1 -0
  334. package/dist/solid.d.cts +249 -0
  335. package/dist/solid.d.ts +249 -0
  336. package/dist/solid.js +89 -0
  337. package/dist/solid.js.map +1 -0
  338. package/dist/svelte.cjs +66 -0
  339. package/dist/svelte.cjs.map +1 -0
  340. package/dist/svelte.d.cts +243 -0
  341. package/dist/svelte.d.ts +243 -0
  342. package/dist/svelte.js +63 -0
  343. package/dist/svelte.js.map +1 -0
  344. package/dist/vue.cjs +62 -0
  345. package/dist/vue.cjs.map +1 -0
  346. package/dist/vue.d.cts +158 -0
  347. package/dist/vue.d.ts +158 -0
  348. package/dist/vue.js +60 -0
  349. package/dist/vue.js.map +1 -0
  350. package/dist/widgets.umd.js +2 -0
  351. package/dist/widgets.umd.js.map +1 -0
  352. package/docs/API.md +147 -0
  353. package/docs/ROADMAP.md +14 -0
  354. package/docs/accessibility.md +60 -0
  355. package/docs/components.md +564 -0
  356. package/docs/deprecations.md +30 -0
  357. package/docs/frameworks-ssr.md +100 -0
  358. package/docs/hybrid-apps.md +145 -0
  359. package/docs/images/showcase-detail.png +0 -0
  360. package/docs/images/showcase-grid.png +0 -0
  361. package/docs/images/showcase-mobile.png +0 -0
  362. package/docs/migration-from-aos.md +67 -0
  363. package/docs/migration-from-gsap-scrolltrigger.md +80 -0
  364. package/docs/motion-tokens.css +31 -0
  365. package/docs/motion-tokens.md +46 -0
  366. package/docs/motion.tokens.json +132 -0
  367. package/docs/performance.md +24 -0
  368. package/docs/presets.md +310 -0
  369. package/docs/upgrading-3.md +21 -0
  370. package/docs/upgrading-4.md +65 -0
  371. package/docs/upgrading-5.md +31 -0
  372. package/docs/upgrading-6.md +32 -0
  373. package/docs/windows-apps.md +119 -0
  374. package/package.json +562 -4
@@ -0,0 +1,433 @@
1
+ import { x as defineElement, z as kindOf, y as EASE_OUT, k as clamp, F as FLUENT_DECELERATE, E as EASE_SPRING } from '../chunks/base-C_3cAoRz.js';
2
+
3
+ var css$4 = "usa-spinner{--usa-spinner-size:32px;--usa-spinner-color:currentColor;position:relative;display:inline-block;vertical-align:middle;flex:none;width:var(--usa-spinner-size);height:var(--usa-spinner-size);color:var(--usa-spinner-color)}usa-spinner i{position:absolute;display:block}usa-spinner[paused] *,usa-spinner[paused] *::after{animation-play-state:paused !important}usa-spinner svg{width:100%;height:100%;animation:usa-spin 2s linear infinite;overflow:visible}usa-spinner svg circle{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-dasharray:0.5 100;stroke-dashoffset:0;animation:usa-ring-arc 1.6s ease-in-out infinite}@keyframes usa-spin{to{transform:rotate(360deg)}}@keyframes usa-ring-arc{0%{stroke-dasharray:0.5 100;stroke-dashoffset:0}50%{stroke-dasharray:62 100;stroke-dashoffset:-20}100%{stroke-dasharray:0.5 100;stroke-dashoffset:-99}}usa-spinner[data-kind=\"windows\"] i{inset:0;opacity:0;animation:usa-orbit 5.5s infinite}usa-spinner[data-kind=\"windows\"] i::after{content:\"\";position:absolute;left:50%;top:0;width:12%;height:12%;margin-left:-6%;border-radius:50%;background:currentColor}usa-spinner[data-kind=\"windows\"] i:nth-child(2){animation-delay:240ms;--n:1}usa-spinner[data-kind=\"windows\"] i:nth-child(3){animation-delay:480ms;--n:2}usa-spinner[data-kind=\"windows\"] i:nth-child(4){animation-delay:720ms;--n:3}usa-spinner[data-kind=\"windows\"] i:nth-child(5){animation-delay:960ms;--n:4}@keyframes usa-orbit{0%{transform:rotate(225deg);opacity:1;animation-timing-function:ease-out}7%{transform:rotate(345deg);animation-timing-function:linear}30%{transform:rotate(455deg);animation-timing-function:ease-in-out}39%{transform:rotate(690deg);animation-timing-function:linear}70%{transform:rotate(815deg);opacity:1;animation-timing-function:ease-out}75%{transform:rotate(945deg);animation-timing-function:ease-out}76%,100%{transform:rotate(945deg);opacity:0}}usa-spinner[data-kind=\"ring\"] i{inset:0;border-radius:50%;border:calc(var(--usa-spinner-size) / 9) solid color-mix(in srgb,currentColor 20%,transparent);border-top-color:currentColor;animation:usa-spin 0.8s linear infinite}usa-spinner[data-kind=\"dots\"]{display:inline-flex;align-items:center;justify-content:space-between;height:calc(var(--usa-spinner-size) / 2.5)}usa-spinner[data-kind=\"dots\"] i{position:static;width:22%;aspect-ratio:1;border-radius:50%;background:currentColor;animation:usa-dot 1.2s ease-in-out infinite}usa-spinner[data-kind=\"dots\"] i:nth-child(2){animation-delay:0.15s}usa-spinner[data-kind=\"dots\"] i:nth-child(3){animation-delay:0.3s}@keyframes usa-dot{0%,60%,100%{transform:translateY(0);opacity:0.35}30%{transform:translateY(-70%);opacity:1}}usa-spinner[data-kind=\"pulse\"] i{inset:0;border-radius:50%;background:currentColor;opacity:0;animation:usa-pulse 1.6s cubic-bezier(0.22,1,0.36,1) infinite}usa-spinner[data-kind=\"pulse\"] i:nth-child(2){animation-delay:0.8s}@keyframes usa-pulse{from{transform:scale(0.1);opacity:0.8}to{transform:scale(1);opacity:0}}usa-spinner[data-kind=\"bars\"]{display:inline-flex;align-items:center;justify-content:space-between}usa-spinner[data-kind=\"bars\"] i{position:static;width:16%;height:100%;border-radius:2px;background:currentColor;transform:scaleY(0.35);animation:usa-bar 1s ease-in-out infinite}usa-spinner[data-kind=\"bars\"] i:nth-child(2){animation-delay:0.12s}usa-spinner[data-kind=\"bars\"] i:nth-child(3){animation-delay:0.24s}usa-spinner[data-kind=\"bars\"] i:nth-child(4){animation-delay:0.36s}@keyframes usa-bar{0%,100%{transform:scaleY(0.35)}40%{transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){usa-spinner svg,usa-spinner i,usa-spinner i::after{animation:usa-calm 2.4s ease-in-out infinite !important}usa-spinner[data-kind=\"windows\"] i{transform:rotate(calc(var(--n,0) * 72deg))}usa-spinner svg circle{animation:none;stroke-dasharray:30 100}}@keyframes usa-calm{0%,100%{opacity:1}50%{opacity:0.4}}";
4
+
5
+ const SPINNER_VARIANTS = ['fluent', 'windows', 'ring', 'dots', 'pulse', 'bars'];
6
+ function markup(variant) {
7
+ switch (variant) {
8
+ case 'windows':
9
+ return '<i></i><i></i><i></i><i></i><i></i>';
10
+ case 'dots':
11
+ return '<i></i><i></i><i></i>';
12
+ case 'bars':
13
+ return '<i></i><i></i><i></i><i></i>';
14
+ case 'pulse':
15
+ return '<i></i><i></i>';
16
+ case 'ring':
17
+ return '<i></i>';
18
+ default:
19
+ return '<svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="7" pathLength="100"/></svg>';
20
+ }
21
+ }
22
+ function defineSpinner(tag = 'usa-spinner') {
23
+ return defineElement(tag, (Base) => class UsaSpinner extends Base {
24
+ static get observedAttributes() {
25
+ return ['kind', 'size', 'label'];
26
+ }
27
+ /** The spinner kind (`kind` attribute). */
28
+ get kind() {
29
+ return kindOf(this, SPINNER_VARIANTS, 'fluent');
30
+ }
31
+ set kind(v) {
32
+ this.setAttribute('kind', v);
33
+ }
34
+ mount() {
35
+ const variant = this.kind;
36
+ if (this.getAttribute('data-kind') !== variant) {
37
+ this.innerHTML = markup(variant);
38
+ this.setAttribute('data-kind', variant);
39
+ }
40
+ const size = this.getAttribute('size');
41
+ if (size)
42
+ this.style.setProperty('--usa-spinner-size', `${Number(size)}px`);
43
+ else
44
+ this.style.removeProperty('--usa-spinner-size');
45
+ this.setAttribute('role', 'progressbar');
46
+ if (!this.hasAttribute('aria-label') || this.hasAttribute('label'))
47
+ this.setAttribute('aria-label', this.str('label', 'Loading'));
48
+ }
49
+ }, { id: 'spinner', text: css$4 });
50
+ }
51
+
52
+ var css$3 = "usa-skeleton{display:block;--usa-skeleton-base:color-mix(in srgb,currentColor 10%,transparent);--usa-skeleton-shine:color-mix(in srgb,currentColor 9%,transparent);--usa-skeleton-radius:8px}usa-skeleton[loading]>:not(.usa-skeleton-ph){display:none !important}usa-skeleton .usa-skeleton-ph{display:flex;gap:14px;align-items:flex-start}usa-skeleton .usa-bone-lines{flex:1;display:grid;gap:10px;min-width:0}usa-skeleton .usa-bone{position:relative;display:block;overflow:hidden;height:0.9em;border-radius:var(--usa-skeleton-radius);background:var(--usa-skeleton-base)}usa-skeleton .usa-bone-last{width:62%}usa-skeleton .usa-bone-block{height:120px}usa-skeleton .usa-bone-circle{border-radius:50%;flex:none}usa-skeleton .usa-bone-avatar{width:44px;height:44px}usa-skeleton .usa-bone::after{content:\"\";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--usa-skeleton-shine),transparent);animation:usa-skeleton 1.5s ease-in-out infinite}@keyframes usa-skeleton{to{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){usa-skeleton .usa-bone::after{animation:none}}";
53
+
54
+ function defineSkeleton(tag = 'usa-skeleton') {
55
+ return defineElement(tag, (Base) => class UsaSkeleton extends Base {
56
+ constructor() {
57
+ super(...arguments);
58
+ this._ph = null;
59
+ }
60
+ static get observedAttributes() {
61
+ return ['loading', 'lines', 'width', 'height', 'circle', 'avatar', 'radius'];
62
+ }
63
+ get loading() {
64
+ return this.hasAttribute('loading');
65
+ }
66
+ set loading(v) {
67
+ this.toggleAttribute('loading', !!v);
68
+ }
69
+ changed(name) {
70
+ if (name === 'loading')
71
+ this.sync(true);
72
+ else {
73
+ this._ph?.remove();
74
+ this._ph = null;
75
+ this.sync(false);
76
+ }
77
+ }
78
+ mount() {
79
+ this.sync(false);
80
+ }
81
+ build() {
82
+ const ph = document.createElement('div');
83
+ ph.className = 'usa-skeleton-ph';
84
+ ph.setAttribute('aria-hidden', 'true');
85
+ const bone = (cls = '') => {
86
+ const b = document.createElement('span');
87
+ b.className = `usa-bone ${cls}`.trim();
88
+ return b;
89
+ };
90
+ const radius = this.getAttribute('radius');
91
+ if (radius)
92
+ this.style.setProperty('--usa-skeleton-radius', radius);
93
+ if (this.flag('circle') || this.hasAttribute('width') || this.hasAttribute('height')) {
94
+ const b = bone(this.flag('circle') ? 'usa-bone-circle' : 'usa-bone-block');
95
+ b.style.width = this.str('width', this.flag('circle') ? this.str('height', '48px') : '100%');
96
+ b.style.height = this.str('height', this.flag('circle') ? b.style.width : '120px');
97
+ ph.append(b);
98
+ }
99
+ else {
100
+ if (this.flag('avatar'))
101
+ ph.append(bone('usa-bone-circle usa-bone-avatar'));
102
+ const col = document.createElement('div');
103
+ col.className = 'usa-bone-lines';
104
+ const n = Math.max(1, Math.min(20, this.num('lines', 3)));
105
+ for (let i = 0; i < n; i++)
106
+ col.append(bone(i === n - 1 && n > 1 ? 'usa-bone-last' : ''));
107
+ ph.append(col);
108
+ }
109
+ return ph;
110
+ }
111
+ sync(animate) {
112
+ const loading = this.loading;
113
+ this.setAttribute('aria-busy', String(loading));
114
+ if (loading) {
115
+ if (!this._ph) {
116
+ this._ph = this.build();
117
+ this.prepend(this._ph);
118
+ }
119
+ return;
120
+ }
121
+ if (this._ph) {
122
+ this._ph.remove();
123
+ this._ph = null;
124
+ }
125
+ if (animate && !this.reduced) {
126
+ for (const kid of Array.from(this.children)) {
127
+ this.motion(kid, [{ opacity: 0, transform: 'translateY(4px)' }, { opacity: 1, transform: 'none' }], { duration: 360, easing: EASE_OUT });
128
+ }
129
+ }
130
+ this.emit('loaded');
131
+ }
132
+ }, { id: 'skeleton', text: css$3 });
133
+ }
134
+
135
+ var css$2 = "usa-progress{--usa-progress-color:var(--usa-accent,#7c5cff);--usa-progress-track:color-mix(in srgb,currentColor 14%,transparent);position:relative;display:block;height:var(--usa-progress-height,4px);border-radius:999px;overflow:hidden;background:var(--usa-progress-track);contain:paint}usa-progress .usa-progress-bar{position:absolute;inset:0;border-radius:inherit;background:var(--usa-progress-color);transform:scaleX(0);transform-origin:0 50%;transition:transform 0.45s cubic-bezier(0.22,1,0.36,1)}usa-progress .usa-progress-bar2{display:none}usa-progress[data-indeterminate] .usa-progress-bar{right:auto;width:40%;transform:translateX(-100%);transition:none;animation:usa-indet 2s cubic-bezier(0.4,0,0.6,1) infinite}usa-progress[data-indeterminate] .usa-progress-bar2{display:block;width:60%;animation:usa-indet2 2s cubic-bezier(0.4,0,0.6,1) 1s infinite}usa-progress[state=\"paused\"]{--usa-progress-color:#c19c00}usa-progress[state=\"error\"]{--usa-progress-color:#d13438}usa-progress[state=\"paused\"] .usa-progress-bar,usa-progress[state=\"error\"] .usa-progress-bar{animation-play-state:paused}@keyframes usa-indet{from{transform:translateX(-100%)}to{transform:translateX(250%)}}@keyframes usa-indet2{from{transform:translateX(-100%)}to{transform:translateX(167%)}}@media (prefers-reduced-motion:reduce){usa-progress .usa-progress-bar{transition:none}usa-progress[data-indeterminate] .usa-progress-bar{width:100%;transform:none;animation:usa-calm-bar 2.4s ease-in-out infinite}usa-progress[data-indeterminate] .usa-progress-bar2{display:none}}@keyframes usa-calm-bar{0%,100%{opacity:1}50%{opacity:0.4}}";
136
+
137
+ function defineProgress(tag = 'usa-progress') {
138
+ return defineElement(tag, (Base) => class UsaProgress extends Base {
139
+ constructor() {
140
+ super(...arguments);
141
+ this._fill = null;
142
+ }
143
+ static get observedAttributes() {
144
+ return ['value', 'max', 'indeterminate', 'label'];
145
+ }
146
+ get value() {
147
+ const v = this.getAttribute('value');
148
+ return v === null || v === '' || Number.isNaN(Number(v)) ? null : Number(v);
149
+ }
150
+ set value(v) {
151
+ if (v === null || v === undefined)
152
+ this.removeAttribute('value');
153
+ else
154
+ this.setAttribute('value', String(v));
155
+ }
156
+ get max() {
157
+ const m = this.num('max', 100);
158
+ return m > 0 ? m : 100;
159
+ }
160
+ set max(v) {
161
+ this.setAttribute('max', String(v));
162
+ }
163
+ get ratio() {
164
+ const v = this.value;
165
+ return this.hasAttribute('indeterminate') || v === null ? null : clamp(v / this.max, 0, 1);
166
+ }
167
+ changed() {
168
+ this.sync();
169
+ }
170
+ mount() {
171
+ if (!this._fill) {
172
+ this.innerHTML = '<span class="usa-progress-bar"></span><span class="usa-progress-bar usa-progress-bar2"></span>';
173
+ this._fill = this.firstElementChild;
174
+ }
175
+ this.setAttribute('role', 'progressbar');
176
+ this.sync();
177
+ }
178
+ sync() {
179
+ const ratio = this.ratio;
180
+ const label = this.getAttribute('label');
181
+ if (label)
182
+ this.setAttribute('aria-label', label);
183
+ this.toggleAttribute('data-indeterminate', ratio === null);
184
+ if (ratio === null) {
185
+ this.removeAttribute('aria-valuenow');
186
+ if (this._fill)
187
+ this._fill.style.transform = '';
188
+ return;
189
+ }
190
+ this.setAttribute('aria-valuemin', '0');
191
+ this.setAttribute('aria-valuemax', String(this.max));
192
+ this.setAttribute('aria-valuenow', String(this.value));
193
+ if (this._fill)
194
+ this._fill.style.transform = `scaleX(${ratio})`;
195
+ if (ratio === 1)
196
+ this.emit('complete');
197
+ }
198
+ }, { id: 'progress', text: css$2 });
199
+ }
200
+
201
+ var css$1 = "usa-toaster{position:fixed;z-index:2147483000;right:16px;bottom:16px;display:flex;flex-direction:column;gap:10px;width:min(360px,calc(100vw - 32px));pointer-events:none}usa-toaster[position^=\"top\"]{bottom:auto;top:16px}usa-toaster[position$=\"left\"]{right:auto;left:16px}usa-toaster[position$=\"center\"]{right:auto;left:50%;translate:-50% 0}usa-toaster .usa-toast{--usa-toast-accent:#0078d4;pointer-events:auto;display:flex;align-items:flex-start;gap:10px;padding:12px 12px 12px 14px;border-radius:10px;background:var(--usa-toast-bg,color-mix(in srgb,Canvas 92%,transparent));color:var(--usa-toast-fg,CanvasText);border:1px solid color-mix(in srgb,CanvasText 12%,transparent);border-left:3px solid var(--usa-toast-accent);box-shadow:0 8px 28px -8px rgb(0 0 0 / 0.35);font:inherit;font-size:14px;line-height:1.4;-webkit-backdrop-filter:blur(20px) saturate(1.4);backdrop-filter:blur(20px) saturate(1.4)}usa-toaster .usa-toast[data-type=\"success\"]{--usa-toast-accent:#0f9d58}usa-toaster .usa-toast[data-type=\"warning\"]{--usa-toast-accent:#c19c00}usa-toaster .usa-toast[data-type=\"error\"]{--usa-toast-accent:#d13438}usa-toaster .usa-toast-icon{flex:none;width:20px;height:20px;fill:none;stroke:var(--usa-toast-accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}usa-toaster .usa-toast-msg{flex:1;min-width:0;padding-top:1px;overflow-wrap:anywhere}usa-toaster .usa-toast-action,usa-toaster .usa-toast-close{flex:none;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;border-radius:6px;padding:2px 6px}usa-toaster .usa-toast-action{color:var(--usa-toast-accent);font-weight:600}usa-toaster .usa-toast-close{opacity:0.6;line-height:0;padding:3px}usa-toaster .usa-toast-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}usa-toaster .usa-toast-action:hover,usa-toaster .usa-toast-close:hover{background:color-mix(in srgb,currentColor 10%,transparent);opacity:1}";
202
+
203
+ const ICONS = {
204
+ info: '<path d="M12 8h.01M11 12h1v5h1"/>',
205
+ success: '<path d="m8 12.5 3 3 5-6"/>',
206
+ warning: '<path d="M12 8v5M12 16.5h.01"/>',
207
+ error: '<path d="m9 9 6 6M15 9l-6 6"/>',
208
+ };
209
+ function defineToaster(tag = 'usa-toaster') {
210
+ return defineElement(tag, (Base) => class UsaToaster extends Base {
211
+ static get observedAttributes() {
212
+ return ['label'];
213
+ }
214
+ mount() {
215
+ this.setAttribute('role', 'region');
216
+ this.setAttribute('aria-label', this.str('label', 'Notifications'));
217
+ }
218
+ flip(mutate) {
219
+ const kids = Array.from(this.children);
220
+ const before = new Map(kids.map((k) => [k, k.getBoundingClientRect().top]));
221
+ mutate();
222
+ if (this.reduced)
223
+ return;
224
+ for (const k of Array.from(this.children)) {
225
+ const top = before.get(k);
226
+ if (top === undefined || k.hasAttribute('data-leaving'))
227
+ continue;
228
+ const dy = top - k.getBoundingClientRect().top;
229
+ if (Math.abs(dy) > 0.5)
230
+ this.motion(k, [{ transform: `translateY(${dy}px)` }, { transform: 'none' }], { duration: 320, easing: EASE_OUT, composite: 'add' });
231
+ }
232
+ }
233
+ enterFrames() {
234
+ if (this.reduced)
235
+ return [{ opacity: 0 }, { opacity: 1 }];
236
+ const pos = this.str('position', 'bottom-right');
237
+ const x = pos.endsWith('right') ? '110%' : pos.endsWith('left') ? '-110%' : '0';
238
+ const y = pos.endsWith('center') ? (pos.startsWith('top') ? '-120%' : '120%') : '0';
239
+ return [{ opacity: 0, transform: `translate(${x}, ${y}) scale(0.96)` }, { opacity: 1, transform: 'none' }];
240
+ }
241
+ show(message, options = {}) {
242
+ const type = options.type || 'info';
243
+ const el = document.createElement('div');
244
+ el.className = 'usa-toast';
245
+ el.setAttribute('data-type', type);
246
+ el.setAttribute('role', type === 'error' ? 'alert' : 'status');
247
+ el.innerHTML = `<svg class="usa-toast-icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/>${ICONS[type] || ICONS.info}</svg><div class="usa-toast-msg"></div>`;
248
+ el.querySelector('.usa-toast-msg').textContent = message;
249
+ let closed = null;
250
+ let timer = 0;
251
+ const close = () => {
252
+ if (closed)
253
+ return closed;
254
+ clearTimeout(timer);
255
+ el.setAttribute('data-leaving', '');
256
+ const frames = this.enterFrames().reverse();
257
+ const a = el.isConnected ? this.motion(el, frames, { duration: 220, easing: 'cubic-bezier(0.7, 0, 0.84, 0)', fill: 'forwards' }) : null;
258
+ closed = new Promise((resolve) => {
259
+ const done = () => {
260
+ this.flip(() => el.remove());
261
+ resolve();
262
+ };
263
+ if (a)
264
+ a.onfinish = done;
265
+ else
266
+ done();
267
+ });
268
+ return closed;
269
+ };
270
+ if (options.action) {
271
+ const btn = document.createElement('button');
272
+ btn.type = 'button';
273
+ btn.className = 'usa-toast-action';
274
+ btn.textContent = options.action.label;
275
+ btn.addEventListener('click', () => {
276
+ options.action.onClick();
277
+ close();
278
+ });
279
+ el.append(btn);
280
+ }
281
+ if (options.dismissible !== false) {
282
+ const x = document.createElement('button');
283
+ x.type = 'button';
284
+ x.className = 'usa-toast-close';
285
+ x.setAttribute('aria-label', 'Close');
286
+ x.innerHTML = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m7 7 10 10M17 7 7 17"/></svg>';
287
+ x.addEventListener('click', () => close());
288
+ el.append(x);
289
+ }
290
+ const duration = options.duration ?? 4000;
291
+ const arm = () => {
292
+ clearTimeout(timer);
293
+ if (duration > 0)
294
+ timer = setTimeout(close, duration);
295
+ };
296
+ const hold = () => clearTimeout(timer);
297
+ el.addEventListener('pointerenter', hold);
298
+ el.addEventListener('pointerleave', arm);
299
+ el.addEventListener('focusin', hold);
300
+ el.addEventListener('focusout', arm);
301
+ const top = this.str('position', 'bottom-right').startsWith('top');
302
+ this.flip(() => (top ? this.prepend(el) : this.append(el)));
303
+ this.motion(el, this.enterFrames(), { duration: 420, easing: FLUENT_DECELERATE });
304
+ arm();
305
+ const live = Array.from(this.querySelectorAll('.usa-toast:not([data-leaving])'));
306
+ const max = Math.max(1, this.num('max', 4));
307
+ const extra = live.length - max;
308
+ if (extra > 0)
309
+ (top ? live.slice(-extra) : live.slice(0, extra)).forEach((t) => t._close?.());
310
+ el._close = close;
311
+ this.emit('toast', { element: el, message, type });
312
+ return { element: el, close };
313
+ }
314
+ clear() {
315
+ this.querySelectorAll('.usa-toast').forEach((t) => t._close?.());
316
+ }
317
+ }, { id: 'toast', text: css$1 });
318
+ }
319
+ /**
320
+ * Show a toast. Defines `<usa-toaster>` and adds one to `<body>` if the
321
+ * page has none. Returns a handle with `close()`. No-op on the server.
322
+ *
323
+ * ```js
324
+ * toast('Saved', { type: 'success' });
325
+ * ```
326
+ */
327
+ function toast(message, options = {}) {
328
+ if (typeof document === 'undefined' || !defineToaster())
329
+ return null;
330
+ let host = typeof options.toaster === 'string' ? document.querySelector(options.toaster) : options.toaster || document.querySelector('usa-toaster');
331
+ if (!host) {
332
+ host = document.createElement('usa-toaster');
333
+ document.body.append(host);
334
+ }
335
+ return host.show(message, options);
336
+ }
337
+
338
+ var css = "usa-check{--usa-check-size:56px;--usa-check-color:#0f9d58;display:inline-block;width:var(--usa-check-size);height:var(--usa-check-size);vertical-align:middle}usa-check[data-kind=\"error\"]{--usa-check-color:#d13438}usa-check[data-kind=\"warning\"]{--usa-check-color:#c19c00}usa-check svg{width:100%;height:100%;overflow:visible}usa-check circle,usa-check path{fill:none;stroke:var(--usa-check-color);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 1}usa-check[data-state=\"idle\"] circle,usa-check[data-state=\"idle\"] path{stroke-dashoffset:1}usa-check[data-state=\"done\"] circle,usa-check[data-state=\"done\"] path{stroke-dashoffset:0}";
339
+
340
+ const PATHS = {
341
+ success: 'M15 27 l7 7 l14 -15',
342
+ error: 'M18 18 L34 34 M34 18 L18 34',
343
+ warning: 'M26 15 V30 M26 37 V37.5',
344
+ };
345
+ function defineCheck(tag = 'usa-check') {
346
+ return defineElement(tag, (Base) => class UsaCheck extends Base {
347
+ constructor() {
348
+ super(...arguments);
349
+ this._anims = [];
350
+ }
351
+ static get observedAttributes() {
352
+ return ['kind', 'size', 'label'];
353
+ }
354
+ mount() {
355
+ const variant = kindOf(this, PATHS, 'success');
356
+ this.innerHTML = `<svg viewBox="0 0 52 52" aria-hidden="true"><circle class="usa-check-circle" cx="26" cy="26" r="23" pathLength="1"/><path class="usa-check-mark" d="${PATHS[variant]}" pathLength="1"/></svg>`;
357
+ this.setAttribute('data-kind', variant);
358
+ const size = this.getAttribute('size');
359
+ if (size)
360
+ this.style.setProperty('--usa-check-size', `${Number(size)}px`);
361
+ const label = this.getAttribute('label');
362
+ if (label) {
363
+ this.setAttribute('role', 'img');
364
+ this.setAttribute('aria-label', label);
365
+ }
366
+ if (this.reduced) {
367
+ this.setAttribute('data-state', 'done');
368
+ return;
369
+ }
370
+ this.setAttribute('data-state', 'idle');
371
+ const start = this.str('start', 'view');
372
+ if (start === 'load')
373
+ this.play();
374
+ else if (start === 'view') {
375
+ let done = false;
376
+ this.inView((v) => v && !done && ((done = true), this.play()), { threshold: 0.5 });
377
+ }
378
+ }
379
+ unmount() {
380
+ this._anims.splice(0).forEach((a) => a.cancel());
381
+ }
382
+ reset() {
383
+ this._anims.splice(0).forEach((a) => a.cancel());
384
+ this.setAttribute('data-state', this.reduced ? 'done' : 'idle');
385
+ }
386
+ play() {
387
+ this.reset();
388
+ this.setAttribute('data-state', 'done');
389
+ const circle = this.querySelector('.usa-check-circle');
390
+ const mark = this.querySelector('.usa-check-mark');
391
+ const svg = this.querySelector('svg');
392
+ if (this.reduced || !circle || !mark || !svg) {
393
+ this.emit('complete');
394
+ return Promise.resolve();
395
+ }
396
+ const draw = [{ strokeDashoffset: 1 }, { strokeDashoffset: 0 }];
397
+ const anims = [
398
+ this.motion(circle, draw, { duration: 520, easing: EASE_OUT, fill: 'backwards' }),
399
+ this.motion(mark, draw, { duration: 340, delay: 420, easing: EASE_OUT, fill: 'backwards' }),
400
+ this.motion(svg, [{ transform: 'scale(1)' }, { transform: 'scale(1.12)' }, { transform: 'scale(1)' }], { duration: 420, delay: 640, easing: EASE_SPRING }),
401
+ ].filter((a) => !!a);
402
+ this._anims = anims;
403
+ return new Promise((resolve) => {
404
+ const last = anims[anims.length - 1];
405
+ const done = () => {
406
+ this.emit('complete');
407
+ resolve();
408
+ };
409
+ if (last)
410
+ last.onfinish = done;
411
+ else
412
+ done();
413
+ });
414
+ }
415
+ }, { id: 'check', text: css });
416
+ }
417
+
418
+ /**
419
+ * motionary/components/feedback — loading & feedback.
420
+ * `<usa-spinner>`, `<usa-skeleton>`, `<usa-progress>`, `<usa-toaster>` +
421
+ * `toast()`, `<usa-check>`.
422
+ */
423
+ /** Register every component of this category under its default tag. */
424
+ function defineFeedbackComponents() {
425
+ defineSpinner();
426
+ defineSkeleton();
427
+ defineProgress();
428
+ defineToaster();
429
+ defineCheck();
430
+ }
431
+
432
+ export { SPINNER_VARIANTS, defineCheck, defineFeedbackComponents, defineProgress, defineSkeleton, defineSpinner, defineToaster, toast };
433
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sources":["../../src/components/feedback/spinner.ts","../../src/components/feedback/skeleton.ts","../../src/components/feedback/progress.ts","../../src/components/feedback/toast.ts","../../src/components/feedback/check.ts","../../src/components/feedback/index.ts"],"sourcesContent":["import { kindOf, defineElement, type UsaElement } from '../base';\nimport css from './spinner.css?raw';\n\nexport const SPINNER_VARIANTS = ['fluent', 'windows', 'ring', 'dots', 'pulse', 'bars'] as const;\nexport type SpinnerVariant = (typeof SPINNER_VARIANTS)[number];\n\n/**\n * `<usa-spinner>` — indeterminate loading indicators, pure CSS animations\n * of `transform` / `opacity` (plus an SVG stroke for `fluent`).\n *\n * Kinds (`kind`): `fluent` (default — the WinUI / Windows 11\n * ProgressRing arc), `windows` (the Windows 10 boot \"orbiting dots\"),\n * `ring` (classic border spinner), `dots` (three bouncing dots / typing\n * indicator), `pulse` (expanding ripple), `bars` (equalizer).\n * Attributes: `size` (px, 32), `label` (accessible name, \"Loading\"),\n * `paused`. Colour follows `color` / `--usa-spinner-color`.\n * `role=\"progressbar\"` without a value (indeterminate). Reduced motion:\n * a slow opacity pulse instead of movement.\n */\nexport interface UsaSpinnerElement extends UsaElement {\n /** Spinner kind (`kind` attribute). */\n kind: SpinnerVariant;\n}\n\nfunction markup(variant: string): string {\n switch (variant) {\n case 'windows':\n return '<i></i><i></i><i></i><i></i><i></i>';\n case 'dots':\n return '<i></i><i></i><i></i>';\n case 'bars':\n return '<i></i><i></i><i></i><i></i>';\n case 'pulse':\n return '<i></i><i></i>';\n case 'ring':\n return '<i></i>';\n default:\n return '<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><circle cx=\"8\" cy=\"8\" r=\"7\" pathLength=\"100\"/></svg>';\n }\n}\n\nexport function defineSpinner(tag = 'usa-spinner'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSpinner extends Base {\n static get observedAttributes(): string[] {\n return ['kind', 'size', 'label'];\n }\n\n /** The spinner kind (`kind` attribute). */\n get kind(): SpinnerVariant {\n return kindOf(this, SPINNER_VARIANTS, 'fluent') as SpinnerVariant;\n }\n set kind(v: SpinnerVariant) {\n this.setAttribute('kind', v);\n }\n\n\n mount(): void {\n const variant = this.kind;\n if (this.getAttribute('data-kind') !== variant) {\n this.innerHTML = markup(variant);\n this.setAttribute('data-kind', variant);\n }\n const size = this.getAttribute('size');\n if (size) this.style.setProperty('--usa-spinner-size', `${Number(size)}px`);\n else this.style.removeProperty('--usa-spinner-size');\n this.setAttribute('role', 'progressbar');\n if (!this.hasAttribute('aria-label') || this.hasAttribute('label')) this.setAttribute('aria-label', this.str('label', 'Loading'));\n }\n },\n { id: 'spinner', text: css }\n );\n}\n","import { defineElement, EASE_OUT, type UsaElement } from '../base';\nimport css from './skeleton.css?raw';\n\n/**\n * `<usa-skeleton>` — shimmering placeholders while content loads. With\n * `loading`, it shows `lines` bars (or one block of `width` × `height`,\n * or a `circle`) and hides its children; remove `loading` and the real\n * content fades in.\n *\n * Attributes: `loading`, `lines` (3), `width`, `height` (CSS lengths),\n * `circle`, `radius`, `avatar` (circle + lines, like a list row).\n * `aria-busy` follows `loading`. Reduced motion: no shimmer sweep.\n */\nexport interface UsaSkeletonElement extends UsaElement {\n loading: boolean;\n}\n\nexport function defineSkeleton(tag = 'usa-skeleton'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSkeleton extends Base {\n static get observedAttributes(): string[] {\n return ['loading', 'lines', 'width', 'height', 'circle', 'avatar', 'radius'];\n }\n\n private _ph: HTMLElement | null = null;\n\n get loading(): boolean {\n return this.hasAttribute('loading');\n }\n set loading(v: boolean) {\n this.toggleAttribute('loading', !!v);\n }\n\n changed(name: string): void {\n if (name === 'loading') this.sync(true);\n else {\n this._ph?.remove();\n this._ph = null;\n this.sync(false);\n }\n }\n\n mount(): void {\n this.sync(false);\n }\n\n private build(): HTMLElement {\n const ph = document.createElement('div');\n ph.className = 'usa-skeleton-ph';\n ph.setAttribute('aria-hidden', 'true');\n const bone = (cls = '') => {\n const b = document.createElement('span');\n b.className = `usa-bone ${cls}`.trim();\n return b;\n };\n const radius = this.getAttribute('radius');\n if (radius) this.style.setProperty('--usa-skeleton-radius', radius);\n if (this.flag('circle') || this.hasAttribute('width') || this.hasAttribute('height')) {\n const b = bone(this.flag('circle') ? 'usa-bone-circle' : 'usa-bone-block');\n b.style.width = this.str('width', this.flag('circle') ? this.str('height', '48px') : '100%');\n b.style.height = this.str('height', this.flag('circle') ? b.style.width : '120px');\n ph.append(b);\n } else {\n if (this.flag('avatar')) ph.append(bone('usa-bone-circle usa-bone-avatar'));\n const col = document.createElement('div');\n col.className = 'usa-bone-lines';\n const n = Math.max(1, Math.min(20, this.num('lines', 3)));\n for (let i = 0; i < n; i++) col.append(bone(i === n - 1 && n > 1 ? 'usa-bone-last' : ''));\n ph.append(col);\n }\n return ph;\n }\n\n private sync(animate: boolean): void {\n const loading = this.loading;\n this.setAttribute('aria-busy', String(loading));\n if (loading) {\n if (!this._ph) {\n this._ph = this.build();\n this.prepend(this._ph);\n }\n return;\n }\n if (this._ph) {\n this._ph.remove();\n this._ph = null;\n }\n if (animate && !this.reduced) {\n for (const kid of Array.from(this.children)) {\n this.motion(kid, [{ opacity: 0, transform: 'translateY(4px)' }, { opacity: 1, transform: 'none' }], { duration: 360, easing: EASE_OUT });\n }\n }\n this.emit('loaded');\n }\n },\n { id: 'skeleton', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport css from './progress.css?raw';\n\n/**\n * `<usa-progress>` — a linear progress bar. Determinate (`value` / `max`)\n * bars glide between values with `transform: scaleX()`; without a value,\n * or with `indeterminate`, it shows the Windows Fluent indeterminate\n * animation (two sliding segments).\n *\n * Attributes: `value`, `max` (100), `indeterminate`, `state`\n * (`paused` | `error` — the WinUI states), `label` (accessible name).\n * `role=\"progressbar\"` with `aria-valuenow` when determinate.\n * Reduced motion: no glide; indeterminate becomes a gentle pulse.\n */\nexport interface UsaProgressElement extends UsaElement {\n value: number | null;\n max: number;\n /** 0–1, or `null` when indeterminate. */\n readonly ratio: number | null;\n}\n\nexport function defineProgress(tag = 'usa-progress'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaProgress extends Base {\n static get observedAttributes(): string[] {\n return ['value', 'max', 'indeterminate', 'label'];\n }\n\n private _fill: HTMLElement | null = null;\n\n get value(): number | null {\n const v = this.getAttribute('value');\n return v === null || v === '' || Number.isNaN(Number(v)) ? null : Number(v);\n }\n set value(v: number | null) {\n if (v === null || v === undefined) this.removeAttribute('value');\n else this.setAttribute('value', String(v));\n }\n get max(): number {\n const m = this.num('max', 100);\n return m > 0 ? m : 100;\n }\n set max(v: number) {\n this.setAttribute('max', String(v));\n }\n get ratio(): number | null {\n const v = this.value;\n return this.hasAttribute('indeterminate') || v === null ? null : clamp(v / this.max, 0, 1);\n }\n\n changed(): void {\n this.sync();\n }\n\n mount(): void {\n if (!this._fill) {\n this.innerHTML = '<span class=\"usa-progress-bar\"></span><span class=\"usa-progress-bar usa-progress-bar2\"></span>';\n this._fill = this.firstElementChild as HTMLElement;\n }\n this.setAttribute('role', 'progressbar');\n this.sync();\n }\n\n private sync(): void {\n const ratio = this.ratio;\n const label = this.getAttribute('label');\n if (label) this.setAttribute('aria-label', label);\n this.toggleAttribute('data-indeterminate', ratio === null);\n if (ratio === null) {\n this.removeAttribute('aria-valuenow');\n if (this._fill) this._fill.style.transform = '';\n return;\n }\n this.setAttribute('aria-valuemin', '0');\n this.setAttribute('aria-valuemax', String(this.max));\n this.setAttribute('aria-valuenow', String(this.value));\n if (this._fill) this._fill.style.transform = `scaleX(${ratio})`;\n if (ratio === 1) this.emit('complete');\n }\n },\n { id: 'progress', text: css }\n );\n}\n","import { defineElement, EASE_OUT, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport css from './toast.css?raw';\n\nexport type ToastType = 'info' | 'success' | 'warning' | 'error';\n\nexport interface ToastOptions {\n /** ms before it hides itself; `0` keeps it until closed (default 4000). */\n duration?: number;\n type?: ToastType;\n /** Optional action button. */\n action?: { label: string; onClick: () => void };\n /** Show a close button (default `true`). */\n dismissible?: boolean;\n /** The toaster to use (default: the first `<usa-toaster>`, created if missing). */\n toaster?: UsaToasterElement | string;\n}\n\nexport interface ToastHandle {\n element: HTMLElement;\n close(): Promise<void>;\n}\n\n/**\n * `<usa-toaster>` — the region toasts slide into (`role=\"region\"`, each\n * toast `role=\"status\"`, errors `role=\"alert\"`). Toasts pause their timer\n * while hovered or focused, and the stack re-flows with a FLIP animation.\n *\n * Attributes: `position` (`bottom-right` default, `bottom-left`,\n * `bottom-center`, `top-right`, `top-left`, `top-center`), `max` (visible\n * toasts, 4), `label` (region name, \"Notifications\").\n * Reduced motion: toasts fade instead of sliding.\n */\nexport interface UsaToasterElement extends UsaElement {\n show(message: string, options?: ToastOptions): ToastHandle;\n clear(): void;\n}\n\nconst ICONS: Record<ToastType, string> = {\n info: '<path d=\"M12 8h.01M11 12h1v5h1\"/>',\n success: '<path d=\"m8 12.5 3 3 5-6\"/>',\n warning: '<path d=\"M12 8v5M12 16.5h.01\"/>',\n error: '<path d=\"m9 9 6 6M15 9l-6 6\"/>',\n};\n\nexport function defineToaster(tag = 'usa-toaster'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaToaster extends Base {\n static get observedAttributes(): string[] {\n return ['label'];\n }\n\n mount(): void {\n this.setAttribute('role', 'region');\n this.setAttribute('aria-label', this.str('label', 'Notifications'));\n }\n\n private flip(mutate: () => void): void {\n const kids = Array.from(this.children) as HTMLElement[];\n const before = new Map(kids.map((k) => [k, k.getBoundingClientRect().top]));\n mutate();\n if (this.reduced) return;\n for (const k of Array.from(this.children) as HTMLElement[]) {\n const top = before.get(k);\n if (top === undefined || k.hasAttribute('data-leaving')) continue;\n const dy = top - k.getBoundingClientRect().top;\n if (Math.abs(dy) > 0.5) this.motion(k, [{ transform: `translateY(${dy}px)` }, { transform: 'none' }], { duration: 320, easing: EASE_OUT, composite: 'add' } as KeyframeAnimationOptions);\n }\n }\n\n private enterFrames(): Keyframe[] {\n if (this.reduced) return [{ opacity: 0 }, { opacity: 1 }];\n const pos = this.str('position', 'bottom-right');\n const x = pos.endsWith('right') ? '110%' : pos.endsWith('left') ? '-110%' : '0';\n const y = pos.endsWith('center') ? (pos.startsWith('top') ? '-120%' : '120%') : '0';\n return [{ opacity: 0, transform: `translate(${x}, ${y}) scale(0.96)` }, { opacity: 1, transform: 'none' }];\n }\n\n show(message: string, options: ToastOptions = {}): ToastHandle {\n const type = options.type || 'info';\n const el = document.createElement('div');\n el.className = 'usa-toast';\n el.setAttribute('data-type', type);\n el.setAttribute('role', type === 'error' ? 'alert' : 'status');\n el.innerHTML = `<svg class=\"usa-toast-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"/>${ICONS[type] || ICONS.info}</svg><div class=\"usa-toast-msg\"></div>`;\n (el.querySelector('.usa-toast-msg') as HTMLElement).textContent = message;\n let closed: Promise<void> | null = null;\n let timer: ReturnType<typeof setTimeout> | 0 = 0;\n const close = (): Promise<void> => {\n if (closed) return closed;\n clearTimeout(timer as ReturnType<typeof setTimeout>);\n el.setAttribute('data-leaving', '');\n const frames = this.enterFrames().reverse();\n const a = el.isConnected ? this.motion(el, frames, { duration: 220, easing: 'cubic-bezier(0.7, 0, 0.84, 0)', fill: 'forwards' }) : null;\n closed = new Promise<void>((resolve) => {\n const done = () => {\n this.flip(() => el.remove());\n resolve();\n };\n if (a) a.onfinish = done;\n else done();\n });\n return closed;\n };\n if (options.action) {\n const btn = document.createElement('button');\n btn.type = 'button';\n btn.className = 'usa-toast-action';\n btn.textContent = options.action.label;\n btn.addEventListener('click', () => {\n options.action!.onClick();\n close();\n });\n el.append(btn);\n }\n if (options.dismissible !== false) {\n const x = document.createElement('button');\n x.type = 'button';\n x.className = 'usa-toast-close';\n x.setAttribute('aria-label', 'Close');\n x.innerHTML = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m7 7 10 10M17 7 7 17\"/></svg>';\n x.addEventListener('click', () => close());\n el.append(x);\n }\n const duration = options.duration ?? 4000;\n const arm = () => {\n clearTimeout(timer as ReturnType<typeof setTimeout>);\n if (duration > 0) timer = setTimeout(close, duration);\n };\n const hold = () => clearTimeout(timer as ReturnType<typeof setTimeout>);\n el.addEventListener('pointerenter', hold);\n el.addEventListener('pointerleave', arm);\n el.addEventListener('focusin', hold);\n el.addEventListener('focusout', arm);\n const top = this.str('position', 'bottom-right').startsWith('top');\n this.flip(() => (top ? this.prepend(el) : this.append(el)));\n this.motion(el, this.enterFrames(), { duration: 420, easing: FLUENT_DECELERATE });\n arm();\n const live = Array.from(this.querySelectorAll<HTMLElement>('.usa-toast:not([data-leaving])'));\n const max = Math.max(1, this.num('max', 4));\n const extra = live.length - max;\n if (extra > 0) (top ? live.slice(-extra) : live.slice(0, extra)).forEach((t) => (t as any)._close?.());\n (el as any)._close = close;\n this.emit('toast', { element: el, message, type });\n return { element: el, close };\n }\n\n clear(): void {\n this.querySelectorAll<HTMLElement>('.usa-toast').forEach((t) => (t as any)._close?.());\n }\n },\n { id: 'toast', text: css }\n );\n}\n\n/**\n * Show a toast. Defines `<usa-toaster>` and adds one to `<body>` if the\n * page has none. Returns a handle with `close()`. No-op on the server.\n *\n * ```js\n * toast('Saved', { type: 'success' });\n * ```\n */\nexport function toast(message: string, options: ToastOptions = {}): ToastHandle | null {\n if (typeof document === 'undefined' || !defineToaster()) return null;\n let host: UsaToasterElement | null =\n typeof options.toaster === 'string' ? document.querySelector(options.toaster) : options.toaster || document.querySelector('usa-toaster');\n if (!host) {\n host = document.createElement('usa-toaster') as UsaToasterElement;\n document.body.append(host);\n }\n return host.show(message, options);\n}\n","import { kindOf, defineElement, EASE_OUT, EASE_SPRING, type UsaElement } from '../base';\nimport css from './check.css?raw';\n\n/**\n * `<usa-check>` — an animated result icon: the circle draws itself, then the\n * check mark (or cross / exclamation) strokes in with a little pop.\n *\n * Attributes: `kind` (`success` default, `error`, `warning`), `size`\n * (px, 56), `start` (`view` default | `load` | `manual`), `label`\n * (accessible name, e.g. \"Payment complete\"; the icon is decorative\n * without it). Event: `usa:complete`. Reduced motion: drawn instantly.\n */\nexport interface UsaCheckElement extends UsaElement {\n play(): Promise<void>;\n reset(): void;\n}\n\nconst PATHS: Record<string, string> = {\n success: 'M15 27 l7 7 l14 -15',\n error: 'M18 18 L34 34 M34 18 L18 34',\n warning: 'M26 15 V30 M26 37 V37.5',\n};\n\nexport function defineCheck(tag = 'usa-check'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCheck extends Base {\n static get observedAttributes(): string[] {\n return ['kind', 'size', 'label'];\n }\n\n private _anims: Animation[] = [];\n\n mount(): void {\n const variant = kindOf(this, PATHS, 'success');\n this.innerHTML = `<svg viewBox=\"0 0 52 52\" aria-hidden=\"true\"><circle class=\"usa-check-circle\" cx=\"26\" cy=\"26\" r=\"23\" pathLength=\"1\"/><path class=\"usa-check-mark\" d=\"${PATHS[variant]}\" pathLength=\"1\"/></svg>`;\n this.setAttribute('data-kind', variant);\n const size = this.getAttribute('size');\n if (size) this.style.setProperty('--usa-check-size', `${Number(size)}px`);\n const label = this.getAttribute('label');\n if (label) {\n this.setAttribute('role', 'img');\n this.setAttribute('aria-label', label);\n }\n if (this.reduced) {\n this.setAttribute('data-state', 'done');\n return;\n }\n this.setAttribute('data-state', 'idle');\n const start = this.str('start', 'view');\n if (start === 'load') this.play();\n else if (start === 'view') {\n let done = false;\n this.inView((v) => v && !done && ((done = true), this.play()), { threshold: 0.5 });\n }\n }\n\n unmount(): void {\n this._anims.splice(0).forEach((a) => a.cancel());\n }\n\n reset(): void {\n this._anims.splice(0).forEach((a) => a.cancel());\n this.setAttribute('data-state', this.reduced ? 'done' : 'idle');\n }\n\n play(): Promise<void> {\n this.reset();\n this.setAttribute('data-state', 'done');\n const circle = this.querySelector('.usa-check-circle');\n const mark = this.querySelector('.usa-check-mark');\n const svg = this.querySelector('svg');\n if (this.reduced || !circle || !mark || !svg) {\n this.emit('complete');\n return Promise.resolve();\n }\n const draw = [{ strokeDashoffset: 1 }, { strokeDashoffset: 0 }];\n const anims = [\n this.motion(circle, draw, { duration: 520, easing: EASE_OUT, fill: 'backwards' }),\n this.motion(mark, draw, { duration: 340, delay: 420, easing: EASE_OUT, fill: 'backwards' }),\n this.motion(svg, [{ transform: 'scale(1)' }, { transform: 'scale(1.12)' }, { transform: 'scale(1)' }], { duration: 420, delay: 640, easing: EASE_SPRING }),\n ].filter((a): a is Animation => !!a);\n this._anims = anims;\n return new Promise((resolve) => {\n const last = anims[anims.length - 1];\n const done = () => {\n this.emit('complete');\n resolve();\n };\n if (last) last.onfinish = done;\n else done();\n });\n }\n },\n { id: 'check', text: css }\n );\n}\n","/**\n * motionary/components/feedback — loading & feedback.\n * `<usa-spinner>`, `<usa-skeleton>`, `<usa-progress>`, `<usa-toaster>` +\n * `toast()`, `<usa-check>`.\n */\nimport { defineSpinner, type UsaSpinnerElement } from './spinner';\nimport { defineSkeleton, type UsaSkeletonElement } from './skeleton';\nimport { defineProgress, type UsaProgressElement } from './progress';\nimport { defineToaster, type UsaToasterElement } from './toast';\nimport { defineCheck, type UsaCheckElement } from './check';\n\nexport { defineSpinner, defineSkeleton, defineProgress, defineToaster, defineCheck };\nexport { toast } from './toast';\nexport { SPINNER_VARIANTS } from './spinner';\nexport type { SpinnerVariant } from './spinner';\nexport type { ToastOptions, ToastHandle, ToastType } from './toast';\nexport type { UsaSpinnerElement, UsaSkeletonElement, UsaProgressElement, UsaToasterElement, UsaCheckElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineFeedbackComponents(): void {\n defineSpinner();\n defineSkeleton();\n defineProgress();\n defineToaster();\n defineCheck();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-spinner': UsaSpinnerElement;\n 'usa-skeleton': UsaSkeletonElement;\n 'usa-progress': UsaProgressElement;\n 'usa-toaster': UsaToasterElement;\n 'usa-check': UsaCheckElement;\n }\n}\n"],"names":["css"],"mappings":";;;;AAGO,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;AAqBrF,SAAS,MAAM,CAAC,OAAe,EAAA;IAC7B,QAAQ,OAAO;AACb,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,qCAAqC;AAC9C,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,uBAAuB;AAChC,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,8BAA8B;AACvC,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,gBAAgB;AACzB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS;AAClB,QAAA;AACE,YAAA,OAAO,kGAAkG;;AAE/G;AAEM,SAAU,aAAa,CAAC,GAAG,GAAG,aAAa,EAAA;AAC/C,IAAA,OAAO,aAAa,CAClB,GAAG,EACH,CAAC,IAAI,KACH,MAAM,UAAW,SAAQ,IAAI,CAAA;AAC3B,QAAA,WAAW,kBAAkB,GAAA;AAC3B,YAAA,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAClC;;AAGA,QAAA,IAAI,IAAI,GAAA;YACN,OAAO,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,CAAmB;QACnE;QACA,IAAI,IAAI,CAAC,CAAiB,EAAA;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9B;QAGA,KAAK,GAAA;AACH,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;YACzB,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,OAAO,EAAE;AAC9C,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;YACzC;YACA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACtC,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,CAAC;;AACtE,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC;AACpD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACnI;KACD,EACH,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAEA,KAAG,EAAE,CAC7B;AACH;;;;ACzDM,SAAU,cAAc,CAAC,GAAG,GAAG,cAAc,EAAA;AACjD,IAAA,OAAO,aAAa,CAClB,GAAG,EACH,CAAC,IAAI,KACH,MAAM,WAAY,SAAQ,IAAI,CAAA;AAA9B,QAAA,WAAA,GAAA;;YAKU,IAAA,CAAA,GAAG,GAAuB,IAAI;QAsExC;AA1EE,QAAA,WAAW,kBAAkB,GAAA;AAC3B,YAAA,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC9E;AAIA,QAAA,IAAI,OAAO,GAAA;AACT,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACrC;QACA,IAAI,OAAO,CAAC,CAAU,EAAA;YACpB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC;AAEA,QAAA,OAAO,CAAC,IAAY,EAAA;YAClB,IAAI,IAAI,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClC;AACH,gBAAA,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,GAAG,IAAI;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAClB;QACF;QAEA,KAAK,GAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAClB;QAEQ,KAAK,GAAA;YACX,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,YAAA,EAAE,CAAC,SAAS,GAAG,iBAAiB;AAChC,YAAA,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AACtC,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,KAAI;gBACxB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;gBACxC,CAAC,CAAC,SAAS,GAAG,CAAA,SAAA,EAAY,GAAG,CAAA,CAAE,CAAC,IAAI,EAAE;AACtC,gBAAA,OAAO,CAAC;AACV,YAAA,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC1C,YAAA,IAAI,MAAM;gBAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC;YACnE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AACpF,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAC1E,gBAAA,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AAC5F,gBAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;AAClF,gBAAA,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACd;iBAAO;AACL,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,gBAAA,GAAG,CAAC,SAAS,GAAG,gBAAgB;gBAChC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC;AACzF,gBAAA,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB;AACA,YAAA,OAAO,EAAE;QACX;AAEQ,QAAA,IAAI,CAAC,OAAgB,EAAA;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;YAC5B,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACb,oBAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxB;gBACA;YACF;AACA,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,gBAAA,IAAI,CAAC,GAAG,GAAG,IAAI;YACjB;AACA,YAAA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC5B,gBAAA,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC3C,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAC1I;YACF;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrB;KACD,EACH,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAEA,KAAG,EAAE,CAC9B;AACH;;;;AC9EM,SAAU,cAAc,CAAC,GAAG,GAAG,cAAc,EAAA;AACjD,IAAA,OAAO,aAAa,CAClB,GAAG,EACH,CAAC,IAAI,KACH,MAAM,WAAY,SAAQ,IAAI,CAAA;AAA9B,QAAA,WAAA,GAAA;;YAKU,IAAA,CAAA,KAAK,GAAuB,IAAI;QAmD1C;AAvDE,QAAA,WAAW,kBAAkB,GAAA;YAC3B,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC;QACnD;AAIA,QAAA,IAAI,KAAK,GAAA;YACP,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACpC,YAAA,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QAC7E;QACA,IAAI,KAAK,CAAC,CAAgB,EAAA;AACxB,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;;gBAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C;AACA,QAAA,IAAI,GAAG,GAAA;YACL,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;QACxB;QACA,IAAI,GAAG,CAAC,CAAS,EAAA;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC;AACA,QAAA,IAAI,KAAK,GAAA;AACP,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AACpB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5F;QAEA,OAAO,GAAA;YACL,IAAI,CAAC,IAAI,EAAE;QACb;QAEA,KAAK,GAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,SAAS,GAAG,gGAAgG;AACjH,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAgC;YACpD;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC;YACxC,IAAI,CAAC,IAAI,EAAE;QACb;QAEQ,IAAI,GAAA;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACxC,YAAA,IAAI,KAAK;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,KAAK,IAAI,CAAC;AAC1D,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gBAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;gBACrC,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;gBAC/C;YACF;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,CAAG;YAC/D,IAAI,KAAK,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACxC;KACD,EACH,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAEA,KAAG,EAAE,CAC9B;AACH;;;;AC/CA,MAAM,KAAK,GAA8B;AACvC,IAAA,IAAI,EAAE,mCAAmC;AACzC,IAAA,OAAO,EAAE,6BAA6B;AACtC,IAAA,OAAO,EAAE,iCAAiC;AAC1C,IAAA,KAAK,EAAE,gCAAgC;CACxC;AAEK,SAAU,aAAa,CAAC,GAAG,GAAG,aAAa,EAAA;AAC/C,IAAA,OAAO,aAAa,CAClB,GAAG,EACH,CAAC,IAAI,KACH,MAAM,UAAW,SAAQ,IAAI,CAAA;AAC3B,QAAA,WAAW,kBAAkB,GAAA;YAC3B,OAAO,CAAC,OAAO,CAAC;QAClB;QAEA,KAAK,GAAA;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACrE;AAEQ,QAAA,IAAI,CAAC,MAAkB,EAAA;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAkB;YACvD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,YAAA,MAAM,EAAE;YACR,IAAI,IAAI,CAAC,OAAO;gBAAE;AAClB,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAkB,EAAE;gBAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC;oBAAE;gBACzD,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG;AAC9C,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AAAE,oBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA,GAAA,CAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAA8B,CAAC;YAC1L;QACF;QAEQ,WAAW,GAAA;YACjB,IAAI,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC;AAChD,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,GAAG;AAC/E,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,IAAI,GAAG;YACnF,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAA,UAAA,EAAa,CAAC,CAAA,EAAA,EAAK,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC5G;AAEA,QAAA,IAAI,CAAC,OAAe,EAAE,OAAA,GAAwB,EAAE,EAAA;AAC9C,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM;YACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,YAAA,EAAE,CAAC,SAAS,GAAG,WAAW;AAC1B,YAAA,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;AAClC,YAAA,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9D,YAAA,EAAE,CAAC,SAAS,GAAG,CAAA,kGAAA,EAAqG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,yCAAyC;YACrL,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAiB,CAAC,WAAW,GAAG,OAAO;YACzE,IAAI,MAAM,GAAyB,IAAI;YACvC,IAAI,KAAK,GAAsC,CAAC;YAChD,MAAM,KAAK,GAAG,MAAoB;AAChC,gBAAA,IAAI,MAAM;AAAE,oBAAA,OAAO,MAAM;gBACzB,YAAY,CAAC,KAAsC,CAAC;AACpD,gBAAA,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE;AAC3C,gBAAA,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,+BAA+B,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI;AACvI,gBAAA,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;oBACrC,MAAM,IAAI,GAAG,MAAK;wBAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AAC5B,wBAAA,OAAO,EAAE;AACX,oBAAA,CAAC;AACD,oBAAA,IAAI,CAAC;AAAE,wBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI;;AACnB,wBAAA,IAAI,EAAE;AACb,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,MAAM;AACf,YAAA,CAAC;AACD,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC5C,gBAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;AACnB,gBAAA,GAAG,CAAC,SAAS,GAAG,kBAAkB;gBAClC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK;AACtC,gBAAA,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,oBAAA,OAAO,CAAC,MAAO,CAAC,OAAO,EAAE;AACzB,oBAAA,KAAK,EAAE;AACT,gBAAA,CAAC,CAAC;AACF,gBAAA,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB;AACA,YAAA,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;gBACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC1C,gBAAA,CAAC,CAAC,IAAI,GAAG,QAAQ;AACjB,gBAAA,CAAC,CAAC,SAAS,GAAG,iBAAiB;AAC/B,gBAAA,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;AACrC,gBAAA,CAAC,CAAC,SAAS,GAAG,oFAAoF;gBAClG,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,KAAK,EAAE,CAAC;AAC1C,gBAAA,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACd;AACA,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI;YACzC,MAAM,GAAG,GAAG,MAAK;gBACf,YAAY,CAAC,KAAsC,CAAC;gBACpD,IAAI,QAAQ,GAAG,CAAC;AAAE,oBAAA,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,YAAA,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAsC,CAAC;AACvE,YAAA,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC;AACzC,YAAA,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC;AACxC,YAAA,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC;AACpC,YAAA,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;AAClE,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AACjF,YAAA,GAAG,EAAE;AACL,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,gCAAgC,CAAC,CAAC;AAC7F,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG;YAC/B,IAAI,KAAK,GAAG,CAAC;AAAE,gBAAA,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,MAAM,IAAI,CAAC;AACrG,YAAA,EAAU,CAAC,MAAM,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClD,YAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE;QAC/B;QAEA,KAAK,GAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAc,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,MAAM,IAAI,CAAC;QACxF;KACD,EACH,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAEA,KAAG,EAAE,CAC3B;AACH;AAEA;;;;;;;AAOG;SACa,KAAK,CAAC,OAAe,EAAE,UAAwB,EAAE,EAAA;AAC/D,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,aAAa,EAAE;AAAE,QAAA,OAAO,IAAI;AACpE,IAAA,IAAI,IAAI,GACN,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;IAC1I,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAsB;AACjE,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B;IACA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC;;;;AC5JA,MAAM,KAAK,GAA2B;AACpC,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,KAAK,EAAE,6BAA6B;AACpC,IAAA,OAAO,EAAE,yBAAyB;CACnC;AAEK,SAAU,WAAW,CAAC,GAAG,GAAG,WAAW,EAAA;AAC3C,IAAA,OAAO,aAAa,CAClB,GAAG,EACH,CAAC,IAAI,KACH,MAAM,QAAS,SAAQ,IAAI,CAAA;AAA3B,QAAA,WAAA,GAAA;;YAKU,IAAA,CAAA,MAAM,GAAgB,EAAE;QA8DlC;AAlEE,QAAA,WAAW,kBAAkB,GAAA;AAC3B,YAAA,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAClC;QAIA,KAAK,GAAA;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,CAAA,oJAAA,EAAuJ,KAAK,CAAC,OAAO,CAAC,CAAA,wBAAA,CAA0B;AAChN,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACtC,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,CAAC;YACzE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YACxC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC;YACxC;AACA,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;gBACvC;YACF;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;YACvC,IAAI,KAAK,KAAK,MAAM;gBAAE,IAAI,CAAC,IAAI,EAAE;AAC5B,iBAAA,IAAI,KAAK,KAAK,MAAM,EAAE;gBACzB,IAAI,IAAI,GAAG,KAAK;AAChB,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;YACpF;QACF;QAEA,OAAO,GAAA;YACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClD;QAEA,KAAK,GAAA;YACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QACjE;QAEA,IAAI,GAAA;YACF,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;AAC5C,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACrB,gBAAA,OAAO,OAAO,CAAC,OAAO,EAAE;YAC1B;AACA,YAAA,MAAM,IAAI,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;AAC/D,YAAA,MAAM,KAAK,GAAG;gBACZ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACjF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC3F,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aAC3J,CAAC,MAAM,CAAC,CAAC,CAAC,KAAqB,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,MAAK;AAChB,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACrB,oBAAA,OAAO,EAAE;AACX,gBAAA,CAAC;AACD,gBAAA,IAAI,IAAI;AAAE,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AACzB,oBAAA,IAAI,EAAE;AACb,YAAA,CAAC,CAAC;QACJ;KACD,EACH,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAC3B;AACH;;ACjGA;;;;AAIG;AAcH;SACgB,wBAAwB,GAAA;AACtC,IAAA,aAAa,EAAE;AACf,IAAA,cAAc,EAAE;AAChB,IAAA,cAAc,EAAE;AAChB,IAAA,aAAa,EAAE;AACf,IAAA,WAAW,EAAE;AACf;;;;"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ require('../chunks/registry-DehBVRDV.cjs');
4
+ require('../chunks/generative-DzIZq-_g.cjs');
5
+ var components_fxGpu = require('../chunks/gpu-CenK2l6b.cjs');
6
+ require('../chunks/base-BaQV-2ha.cjs');
7
+
8
+
9
+
10
+ exports.GPU_FX = components_fxGpu.GPU_FX;
11
+ exports.registerGpuEffects = components_fxGpu.registerGpuEffects;
12
+ //# sourceMappingURL=fx-gpu.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fx-gpu.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,63 @@
1
+ type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
2
+ type Cleanup = () => void;
3
+
4
+ /**
5
+ * 5.0 — unified plugin-style effect registration. Every effect (built-in or
6
+ * yours) is a plain object registered once and played the same way:
7
+ * `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or
8
+ * `<usa-fx effect="name" trigger="click">`. Effects get a context that
9
+ * already applies reduced motion, motion sensitivity, intensity and the
10
+ * animation budget.
11
+ */
12
+
13
+ declare const EFFECT_KINDS: readonly ["enter", "exit", "attention", "click", "hover", "card", "loop", "page", "background", "text", "cursor", "scroll"];
14
+ type EffectKind = (typeof EFFECT_KINDS)[number];
15
+ interface EffectContext {
16
+ /** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */
17
+ readonly reduced: boolean;
18
+ readonly sensitivity: MotionSensitivity;
19
+ /** The triggering event (pointer position for click effects), if any. */
20
+ readonly event?: Event;
21
+ /** `el.animate()` with the library's motion rules (may return `null`). */
22
+ animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;
23
+ /** Register teardown for long-running effects (loops, listeners). */
24
+ onCleanup(fn: Cleanup): void;
25
+ }
26
+ interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {
27
+ /** Unique, kebab-case. */
28
+ name: string;
29
+ kind: EffectKind;
30
+ /** One line for docs and the gallery. */
31
+ description?: string;
32
+ /** Option defaults (merged under the caller's options). */
33
+ defaults?: Partial<O>;
34
+ /**
35
+ * Under reduced motion: `'skip'` (do nothing — default for loop, background
36
+ * and cursor effects) or `'run'` (run with `ctx.reduced === true`, the
37
+ * effect degrades itself — default for everything else).
38
+ */
39
+ reduced?: 'skip' | 'run';
40
+ /** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */
41
+ run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;
42
+ }
43
+
44
+ /**
45
+ * 6.2 — GPU effect pack (`motionary/components/fx-gpu`), registered through
46
+ * `registerEffect()`:
47
+ *
48
+ * - WebGL2 shaders with a Canvas 2D fallback (kind `background`): `fluid`
49
+ * (domain-warped fluid that swirls around the pointer), `smoke`, `fire`,
50
+ * `ink` (ink blooming in water), `fireflies`.
51
+ * - Canvas 2D particles (kind `background`): `sakura` (falling cherry
52
+ * petals), `leaves` (tumbling autumn leaves).
53
+ * - `splash` (kind `click`): droplets + a ring burst from the pointer.
54
+ *
55
+ * Every background renders only while visible, lowers its resolution when
56
+ * frames are slow, and draws one static frame under reduced motion.
57
+ */
58
+
59
+ declare const GPU_FX: EffectDefinition[];
60
+ /** Register the 6.2 GPU pack (idempotent). */
61
+ declare function registerGpuEffects(): void;
62
+
63
+ export { GPU_FX, registerGpuEffects };