@mhmo91/schmancy 0.10.35 → 0.10.37

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 (430) hide show
  1. package/custom-elements.json +1165 -1109
  2. package/dist/SchmancyElement-BHfQg3Tj.cjs +2 -0
  3. package/dist/SchmancyElement-BHfQg3Tj.cjs.map +1 -0
  4. package/dist/SchmancyElement-CDT2q1lA.js +284 -0
  5. package/dist/SchmancyElement-CDT2q1lA.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +3488 -3290
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +335 -275
  9. package/dist/{area-DviXdbDx.js → area-KtULlxuA.js} +2 -2
  10. package/dist/{area-DviXdbDx.js.map → area-KtULlxuA.js.map} +1 -1
  11. package/dist/{area-CTSTgjlx.cjs → area-fdKhYB6T.cjs} +1 -1
  12. package/dist/{area-CTSTgjlx.cjs.map → area-fdKhYB6T.cjs.map} +1 -1
  13. package/dist/area.cjs +1 -1
  14. package/dist/area.js +1 -1
  15. package/dist/{audio-Q9oB_cQR.cjs → audio-CUMAv9D_.cjs} +1 -1
  16. package/dist/{audio-Q9oB_cQR.cjs.map → audio-CUMAv9D_.cjs.map} +1 -1
  17. package/dist/{audio-DFYoaw0M.js → audio-zIJVTo_V.js} +1 -1
  18. package/dist/{audio-DFYoaw0M.js.map → audio-zIJVTo_V.js.map} +1 -1
  19. package/dist/audio.cjs +1 -1
  20. package/dist/audio.js +2 -2
  21. package/dist/{autocomplete-DmLXJr7C.cjs → autocomplete-DEZk6wBD.cjs} +1 -1
  22. package/dist/{autocomplete-DmLXJr7C.cjs.map → autocomplete-DEZk6wBD.cjs.map} +1 -1
  23. package/dist/{autocomplete-BDvuma6D.js → autocomplete-DIScyo8Q.js} +3 -3
  24. package/dist/{autocomplete-BDvuma6D.js.map → autocomplete-DIScyo8Q.js.map} +1 -1
  25. package/dist/autocomplete.cjs +1 -1
  26. package/dist/autocomplete.js +1 -1
  27. package/dist/avatar.cjs +1 -1
  28. package/dist/avatar.js +3 -3
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +1 -1
  31. package/dist/{boat-lr7MPZ7H.js → boat-BHPqSqJd.js} +67 -83
  32. package/dist/boat-BHPqSqJd.js.map +1 -0
  33. package/dist/boat-OBZ77exO.cjs +34 -0
  34. package/dist/boat-OBZ77exO.cjs.map +1 -0
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/breadcrumb.cjs +1 -1
  38. package/dist/breadcrumb.js +2 -2
  39. package/dist/{busy-CgzZbGfx.cjs → busy-BJNsKSCM.cjs} +1 -1
  40. package/dist/{busy-CgzZbGfx.cjs.map → busy-BJNsKSCM.cjs.map} +1 -1
  41. package/dist/{busy-DgQ4ux5N.js → busy-Dut78y4L.js} +2 -2
  42. package/dist/{busy-DgQ4ux5N.js.map → busy-Dut78y4L.js.map} +1 -1
  43. package/dist/busy.cjs +1 -1
  44. package/dist/busy.js +1 -1
  45. package/dist/{button-DFvR1iXX.cjs → button-DzlHLjWO.cjs} +1 -1
  46. package/dist/{button-DFvR1iXX.cjs.map → button-DzlHLjWO.cjs.map} +1 -1
  47. package/dist/{button-qbN1muQ0.js → button-kcpPQavY.js} +2 -2
  48. package/dist/{button-qbN1muQ0.js.map → button-kcpPQavY.js.map} +1 -1
  49. package/dist/button.cjs +4 -4
  50. package/dist/button.cjs.map +1 -1
  51. package/dist/button.js +16 -22
  52. package/dist/button.js.map +1 -1
  53. package/dist/{card-D_GlwZ5q.cjs → card-BLxPLqdQ.cjs} +1 -1
  54. package/dist/{card-D_GlwZ5q.cjs.map → card-BLxPLqdQ.cjs.map} +1 -1
  55. package/dist/{card-DAbr-7Vy.js → card-DxSKxCid.js} +2 -2
  56. package/dist/{card-DAbr-7Vy.js.map → card-DxSKxCid.js.map} +1 -1
  57. package/dist/card.cjs +1 -1
  58. package/dist/card.js +1 -1
  59. package/dist/{checkbox-BNORaxMF.js → checkbox-B1wiM3Dv.js} +2 -2
  60. package/dist/{checkbox-BNORaxMF.js.map → checkbox-B1wiM3Dv.js.map} +1 -1
  61. package/dist/{checkbox-BUY_uc_r.cjs → checkbox-BCLkhp5G.cjs} +1 -1
  62. package/dist/{checkbox-BUY_uc_r.cjs.map → checkbox-BCLkhp5G.cjs.map} +1 -1
  63. package/dist/checkbox.cjs +1 -1
  64. package/dist/checkbox.js +1 -1
  65. package/dist/{chips-CXZ4dJCK.cjs → chips-C9dS1WKn.cjs} +44 -33
  66. package/dist/chips-C9dS1WKn.cjs.map +1 -0
  67. package/dist/{chips-Dg6Lk6BT.js → chips-vWmwqQed.js} +145 -122
  68. package/dist/chips-vWmwqQed.js.map +1 -0
  69. package/dist/chips.cjs +1 -1
  70. package/dist/chips.js +2 -2
  71. package/dist/connectivity.cjs +1 -1
  72. package/dist/connectivity.js +3 -3
  73. package/dist/content-drawer.cjs +1 -1
  74. package/dist/content-drawer.js +1 -1
  75. package/dist/{date-range-C-_be3_E.cjs → date-range-BV6HuvLw.cjs} +25 -19
  76. package/dist/date-range-BV6HuvLw.cjs.map +1 -0
  77. package/dist/{date-range-BU6WX7d5.js → date-range-D3ge1b4c.js} +129 -137
  78. package/dist/date-range-D3ge1b4c.js.map +1 -0
  79. package/dist/{date-range-inline-DJtUmHKF.cjs → date-range-inline-DpYgdLRv.cjs} +1 -1
  80. package/dist/{date-range-inline-DJtUmHKF.cjs.map → date-range-inline-DpYgdLRv.cjs.map} +1 -1
  81. package/dist/{date-range-inline-7o7xtVIu.js → date-range-inline-DuWQaWps.js} +2 -2
  82. package/dist/{date-range-inline-7o7xtVIu.js.map → date-range-inline-DuWQaWps.js.map} +1 -1
  83. package/dist/date-range-inline.cjs +1 -1
  84. package/dist/date-range-inline.js +1 -1
  85. package/dist/date-range.cjs +1 -1
  86. package/dist/date-range.js +1 -1
  87. package/dist/delay.cjs +1 -1
  88. package/dist/delay.js +2 -2
  89. package/dist/{details-EfbDPVEo.js → details-C-GZaq3j.js} +2 -2
  90. package/dist/{details-EfbDPVEo.js.map → details-C-GZaq3j.js.map} +1 -1
  91. package/dist/{details-Bs0MyyvF.cjs → details-Dp5rLIWk.cjs} +1 -1
  92. package/dist/{details-Bs0MyyvF.cjs.map → details-Dp5rLIWk.cjs.map} +1 -1
  93. package/dist/details.cjs +1 -1
  94. package/dist/details.js +1 -1
  95. package/dist/{directives-fLwDj6b0.cjs → directives-D_l1E5H6.cjs} +3 -3
  96. package/dist/directives-D_l1E5H6.cjs.map +1 -0
  97. package/dist/{directives-zi1Mm2er.js → directives-DyS51FUh.js} +37 -21
  98. package/dist/directives-DyS51FUh.js.map +1 -0
  99. package/dist/directives.cjs +1 -1
  100. package/dist/directives.js +2 -2
  101. package/dist/{divider-CdIsWZrM.cjs → divider-CBnAmHMZ.cjs} +1 -1
  102. package/dist/{divider-CdIsWZrM.cjs.map → divider-CBnAmHMZ.cjs.map} +1 -1
  103. package/dist/{divider-CEPfrIwe.js → divider-nQffE0AD.js} +2 -2
  104. package/dist/{divider-CEPfrIwe.js.map → divider-nQffE0AD.js.map} +1 -1
  105. package/dist/divider.cjs +1 -1
  106. package/dist/divider.js +1 -1
  107. package/dist/dropdown.cjs +1 -1
  108. package/dist/dropdown.js +2 -2
  109. package/dist/{expand-g1vqqUp1.js → expand-DvTb-UPR.js} +3 -3
  110. package/dist/{expand-g1vqqUp1.js.map → expand-DvTb-UPR.js.map} +1 -1
  111. package/dist/{expand--at1k3qo.cjs → expand-mlP_3XWz.cjs} +1 -1
  112. package/dist/{expand--at1k3qo.cjs.map → expand-mlP_3XWz.cjs.map} +1 -1
  113. package/dist/expand.cjs +1 -1
  114. package/dist/expand.js +1 -1
  115. package/dist/fab.cjs +77 -0
  116. package/dist/fab.cjs.map +1 -0
  117. package/dist/fab.js +151 -0
  118. package/dist/fab.js.map +1 -0
  119. package/dist/{float-DxVzgI9o.js → float-C-Ko0Le3.js} +2 -2
  120. package/dist/{float-DxVzgI9o.js.map → float-C-Ko0Le3.js.map} +1 -1
  121. package/dist/{float-P9HukAm-.cjs → float-C17xgMT1.cjs} +1 -1
  122. package/dist/{float-P9HukAm-.cjs.map → float-C17xgMT1.cjs.map} +1 -1
  123. package/dist/float.cjs +1 -1
  124. package/dist/float.js +1 -1
  125. package/dist/{form-ByYhXe1p.cjs → form-CwPHcQYB.cjs} +1 -1
  126. package/dist/{form-ByYhXe1p.cjs.map → form-CwPHcQYB.cjs.map} +1 -1
  127. package/dist/{form-CqLaozHp.js → form-DA0hUu2h.js} +3 -3
  128. package/dist/{form-CqLaozHp.js.map → form-DA0hUu2h.js.map} +1 -1
  129. package/dist/form.cjs +6 -6
  130. package/dist/form.cjs.map +1 -1
  131. package/dist/form.js +25 -23
  132. package/dist/form.js.map +1 -1
  133. package/dist/handover/agent-runtime-followups.md +1 -1
  134. package/dist/handover/agent-runtime-v1.md +3 -3
  135. package/dist/{icons-CkphcMp6.js → icons-C6UfxmHZ.js} +2 -2
  136. package/dist/{icons-CkphcMp6.js.map → icons-C6UfxmHZ.js.map} +1 -1
  137. package/dist/{icons-DYtiRU5V.cjs → icons-CW3-oMSb.cjs} +1 -1
  138. package/dist/{icons-DYtiRU5V.cjs.map → icons-CW3-oMSb.cjs.map} +1 -1
  139. package/dist/icons.cjs +1 -1
  140. package/dist/icons.js +1 -1
  141. package/dist/{iframe-CjqJksl8.js → iframe-BTjZfYyh.js} +2 -2
  142. package/dist/{iframe-CjqJksl8.js.map → iframe-BTjZfYyh.js.map} +1 -1
  143. package/dist/{iframe-C3trkP8q.cjs → iframe-wuYT2xFz.cjs} +1 -1
  144. package/dist/{iframe-C3trkP8q.cjs.map → iframe-wuYT2xFz.cjs.map} +1 -1
  145. package/dist/iframe.cjs +1 -1
  146. package/dist/iframe.js +1 -1
  147. package/dist/index.cjs +1 -1
  148. package/dist/index.js +57 -56
  149. package/dist/{input-CG51zDVh.js → input-B_4g2ulO.js} +2 -2
  150. package/dist/{input-CG51zDVh.js.map → input-B_4g2ulO.js.map} +1 -1
  151. package/dist/{input-DuavpwNL.cjs → input-BrDiIT60.cjs} +1 -1
  152. package/dist/{input-DuavpwNL.cjs.map → input-BrDiIT60.cjs.map} +1 -1
  153. package/dist/{input-chip-57tgNXKT.cjs → input-chip-B-XWh4aE.cjs} +1 -1
  154. package/dist/input-chip-B-XWh4aE.cjs.map +1 -0
  155. package/dist/{input-chip-C6Lq1927.js → input-chip-BlWhOruv.js} +2 -2
  156. package/dist/input-chip-BlWhOruv.js.map +1 -0
  157. package/dist/input.cjs +1 -1
  158. package/dist/input.js +1 -1
  159. package/dist/json.cjs +1 -1
  160. package/dist/json.js +3 -3
  161. package/dist/kbd.cjs +1 -1
  162. package/dist/kbd.js +2 -2
  163. package/dist/{layout-6ipbiWTl.cjs → layout-BhyIcEVu.cjs} +1 -1
  164. package/dist/{layout-6ipbiWTl.cjs.map → layout-BhyIcEVu.cjs.map} +1 -1
  165. package/dist/{layout-D4IOwx7p.js → layout-Dxit9enO.js} +1 -1
  166. package/dist/{layout-D4IOwx7p.js.map → layout-Dxit9enO.js.map} +1 -1
  167. package/dist/layout.cjs +1 -1
  168. package/dist/layout.js +2 -2
  169. package/dist/{lightbox-H8pVWGMX.cjs → lightbox-CVBogswK.cjs} +1 -1
  170. package/dist/{lightbox-H8pVWGMX.cjs.map → lightbox-CVBogswK.cjs.map} +1 -1
  171. package/dist/{lightbox-CsyO2XSr.js → lightbox-D85XAAuC.js} +2 -2
  172. package/dist/{lightbox-CsyO2XSr.js.map → lightbox-D85XAAuC.js.map} +1 -1
  173. package/dist/lightbox.cjs +1 -1
  174. package/dist/lightbox.js +1 -1
  175. package/dist/{list-BAwH0pQW.js → list-DOF_yVn5.js} +2 -2
  176. package/dist/{list-BAwH0pQW.js.map → list-DOF_yVn5.js.map} +1 -1
  177. package/dist/{list-Bs9m8kw7.cjs → list-nVjLskgx.cjs} +1 -1
  178. package/dist/{list-Bs9m8kw7.cjs.map → list-nVjLskgx.cjs.map} +1 -1
  179. package/dist/list.cjs +1 -1
  180. package/dist/list.js +1 -1
  181. package/dist/{menu-BMcGzj1h.cjs → menu-DqmNjLgY.cjs} +1 -1
  182. package/dist/{menu-BMcGzj1h.cjs.map → menu-DqmNjLgY.cjs.map} +1 -1
  183. package/dist/{menu-tQVARVaC.js → menu-QrAK5Uu9.js} +3 -3
  184. package/dist/{menu-tQVARVaC.js.map → menu-QrAK5Uu9.js.map} +1 -1
  185. package/dist/menu.cjs +1 -1
  186. package/dist/menu.js +1 -1
  187. package/dist/{mixins-Bp0wIHg2.js → mixins-De1zjyhy.js} +1 -1
  188. package/dist/{mixins-Bp0wIHg2.js.map → mixins-De1zjyhy.js.map} +1 -1
  189. package/dist/{mixins-CGXSzZc7.cjs → mixins-DxHpyMHA.cjs} +1 -1
  190. package/dist/{mixins-CGXSzZc7.cjs.map → mixins-DxHpyMHA.cjs.map} +1 -1
  191. package/dist/mixins.cjs +1 -1
  192. package/dist/mixins.js +2 -2
  193. package/dist/nav-drawer.cjs +1 -1
  194. package/dist/nav-drawer.js +1 -1
  195. package/dist/navigation-bar.cjs +1 -1
  196. package/dist/navigation-bar.js +1 -1
  197. package/dist/navigation-rail.cjs +1 -1
  198. package/dist/navigation-rail.js +2 -2
  199. package/dist/{notification-D1tX2nx5.js → notification-BtAK7NK8.js} +4 -4
  200. package/dist/{notification-D1tX2nx5.js.map → notification-BtAK7NK8.js.map} +1 -1
  201. package/dist/{notification-Bz00zdpV.cjs → notification-DYzbUb5C.cjs} +1 -1
  202. package/dist/{notification-Bz00zdpV.cjs.map → notification-DYzbUb5C.cjs.map} +1 -1
  203. package/dist/notification.cjs +1 -1
  204. package/dist/notification.js +1 -1
  205. package/dist/{option-BpGV8Apj.js → option-DHwA0miA.js} +2 -2
  206. package/dist/{option-BpGV8Apj.js.map → option-DHwA0miA.js.map} +1 -1
  207. package/dist/{option-BnybLEDO.cjs → option-DnSPa8ro.cjs} +1 -1
  208. package/dist/{option-BnybLEDO.cjs.map → option-DnSPa8ro.cjs.map} +1 -1
  209. package/dist/option.cjs +1 -1
  210. package/dist/option.js +1 -1
  211. package/dist/{overlay-UQR2Dy3u.cjs → overlay-BVkqZmoS.cjs} +5 -5
  212. package/dist/overlay-BVkqZmoS.cjs.map +1 -0
  213. package/dist/{overlay-BpNhd74N.js → overlay-Del1sBEB.js} +108 -108
  214. package/dist/overlay-Del1sBEB.js.map +1 -0
  215. package/dist/overlay.cjs +1 -1
  216. package/dist/{overlay.confirm-body-CVDtVk5X.cjs → overlay.confirm-body-BV9umTAl.cjs} +1 -1
  217. package/dist/{overlay.confirm-body-CVDtVk5X.cjs.map → overlay.confirm-body-BV9umTAl.cjs.map} +1 -1
  218. package/dist/{overlay.confirm-body-BHcXu5Wk.js → overlay.confirm-body-DSONXUzl.js} +6 -6
  219. package/dist/{overlay.confirm-body-BHcXu5Wk.js.map → overlay.confirm-body-DSONXUzl.js.map} +1 -1
  220. package/dist/overlay.js +3 -3
  221. package/dist/{overlay.service-DTE6NwIM.js → overlay.service-BTp5Oq7f.js} +2 -2
  222. package/dist/{overlay.service-DTE6NwIM.js.map → overlay.service-BTp5Oq7f.js.map} +1 -1
  223. package/dist/{overlay.service-C8RsQzgM.cjs → overlay.service-XLlrsSdA.cjs} +1 -1
  224. package/dist/{overlay.service-C8RsQzgM.cjs.map → overlay.service-XLlrsSdA.cjs.map} +1 -1
  225. package/dist/{progress-gbIALDRs.cjs → progress-DUbTL9g9.cjs} +1 -1
  226. package/dist/{progress-gbIALDRs.cjs.map → progress-DUbTL9g9.cjs.map} +1 -1
  227. package/dist/{progress-CAKsxp29.js → progress-DYA83CFU.js} +2 -2
  228. package/dist/{progress-CAKsxp29.js.map → progress-DYA83CFU.js.map} +1 -1
  229. package/dist/progress.cjs +1 -1
  230. package/dist/progress.js +1 -1
  231. package/dist/{radio-group-CfJ5DtI4.cjs → radio-group-B-ORNtvR.cjs} +1 -1
  232. package/dist/{radio-group-CfJ5DtI4.cjs.map → radio-group-B-ORNtvR.cjs.map} +1 -1
  233. package/dist/{radio-group-otyvZvUk.js → radio-group-DxX0iJBo.js} +2 -2
  234. package/dist/{radio-group-otyvZvUk.js.map → radio-group-DxX0iJBo.js.map} +1 -1
  235. package/dist/radio-group.cjs +1 -1
  236. package/dist/radio-group.js +1 -1
  237. package/dist/range.cjs +1 -1
  238. package/dist/range.js +2 -2
  239. package/dist/{select-81jniVTs.cjs → select-B9uj_u-s.cjs} +1 -1
  240. package/dist/{select-81jniVTs.cjs.map → select-B9uj_u-s.cjs.map} +1 -1
  241. package/dist/{select-9vXx1fhr.js → select-C7gkA-ab.js} +3 -3
  242. package/dist/{select-9vXx1fhr.js.map → select-C7gkA-ab.js.map} +1 -1
  243. package/dist/select.cjs +1 -1
  244. package/dist/select.js +1 -1
  245. package/dist/skeleton.cjs +1 -1
  246. package/dist/skeleton.js +2 -2
  247. package/dist/skills/INDEX.md +1 -1
  248. package/dist/skills/SKILL.md +20 -18
  249. package/dist/skills/boat.md +21 -15
  250. package/dist/skills/fab.md +75 -0
  251. package/dist/skills/schmancy/INDEX.md +1 -1
  252. package/dist/skills/schmancy/SKILL.md +20 -18
  253. package/dist/skills/schmancy/boat.md +21 -15
  254. package/dist/skills/schmancy/fab.md +75 -0
  255. package/dist/skills/schmancy/steps.md +68 -34
  256. package/dist/skills/schmancy/theme.md +1 -1
  257. package/dist/skills/steps.md +68 -34
  258. package/dist/skills/theme.md +1 -1
  259. package/dist/slider.cjs +1 -1
  260. package/dist/slider.js +2 -2
  261. package/dist/{sound.service-CmIw63aM.cjs → sound.service-C7FDY_yD.cjs} +1 -1
  262. package/dist/{sound.service-CmIw63aM.cjs.map → sound.service-C7FDY_yD.cjs.map} +1 -1
  263. package/dist/{sound.service-D3ZSq1Kj.js → sound.service-O0232os6.js} +1 -1
  264. package/dist/{sound.service-D3ZSq1Kj.js.map → sound.service-O0232os6.js.map} +1 -1
  265. package/dist/{splash-screen-C5KAWXvA.cjs → splash-screen-DIS4odDr.cjs} +1 -1
  266. package/dist/{splash-screen-C5KAWXvA.cjs.map → splash-screen-DIS4odDr.cjs.map} +1 -1
  267. package/dist/{splash-screen-BOjrmGLk.js → splash-screen-jfE47xl0.js} +2 -2
  268. package/dist/{splash-screen-BOjrmGLk.js.map → splash-screen-jfE47xl0.js.map} +1 -1
  269. package/dist/splash-screen.cjs +1 -1
  270. package/dist/splash-screen.js +1 -1
  271. package/dist/{src-C5g3p1J5.js → src-BP3h-9d9.js} +36 -35
  272. package/dist/{src-C5g3p1J5.js.map → src-BP3h-9d9.js.map} +1 -1
  273. package/dist/{src-qzUpLbje.cjs → src-Um_pzb-U.cjs} +1 -1
  274. package/dist/{src-qzUpLbje.cjs.map → src-Um_pzb-U.cjs.map} +1 -1
  275. package/dist/{state-Cex3rmx2.cjs → state-Bj0M9a6T.cjs} +1 -1
  276. package/dist/{state-Cex3rmx2.cjs.map → state-Bj0M9a6T.cjs.map} +1 -1
  277. package/dist/{state-CWBRTSvE.js → state-DscWQpoM.js} +1 -1
  278. package/dist/{state-CWBRTSvE.js.map → state-DscWQpoM.js.map} +1 -1
  279. package/dist/state.cjs +1 -1
  280. package/dist/state.js +2 -2
  281. package/dist/steps.cjs +35 -19
  282. package/dist/steps.cjs.map +1 -1
  283. package/dist/steps.js +96 -73
  284. package/dist/steps.js.map +1 -1
  285. package/dist/{surface-9S5scTsD.js → surface-B4Wn4SOO.js} +2 -2
  286. package/dist/{surface-9S5scTsD.js.map → surface-B4Wn4SOO.js.map} +1 -1
  287. package/dist/{surface-PfiejLuw.cjs → surface-DRq6cVW6.cjs} +1 -1
  288. package/dist/{surface-PfiejLuw.cjs.map → surface-DRq6cVW6.cjs.map} +1 -1
  289. package/dist/surface.cjs +1 -1
  290. package/dist/surface.js +1 -1
  291. package/dist/switch.cjs +1 -1
  292. package/dist/switch.js +2 -2
  293. package/dist/table.cjs +1 -1
  294. package/dist/table.js +2 -2
  295. package/dist/{tabs-uYvb1P06.cjs → tabs-Ca_fbHPW.cjs} +1 -1
  296. package/dist/{tabs-uYvb1P06.cjs.map → tabs-Ca_fbHPW.cjs.map} +1 -1
  297. package/dist/{tabs-BBOjAmgG.js → tabs-CnQPo-XS.js} +2 -2
  298. package/dist/{tabs-BBOjAmgG.js.map → tabs-CnQPo-XS.js.map} +1 -1
  299. package/dist/tabs.cjs +1 -1
  300. package/dist/tabs.js +1 -1
  301. package/dist/teleport.cjs +1 -1
  302. package/dist/teleport.js +1 -1
  303. package/dist/{textarea-QzSj8Dkl.js → textarea-BvqENhTW.js} +2 -2
  304. package/dist/{textarea-QzSj8Dkl.js.map → textarea-BvqENhTW.js.map} +1 -1
  305. package/dist/{textarea-YPHX4g7Y.cjs → textarea-qr7oL8oU.cjs} +1 -1
  306. package/dist/{textarea-YPHX4g7Y.cjs.map → textarea-qr7oL8oU.cjs.map} +1 -1
  307. package/dist/textarea.cjs +1 -1
  308. package/dist/textarea.js +1 -1
  309. package/dist/theme-BSwJ2YZo.cjs +181 -0
  310. package/dist/{theme-iKUaS9JB.cjs.map → theme-BSwJ2YZo.cjs.map} +1 -1
  311. package/dist/{theme-C2Mp-VGt.js → theme-BV0EzHQ1.js} +6 -5
  312. package/dist/{theme-C2Mp-VGt.js.map → theme-BV0EzHQ1.js.map} +1 -1
  313. package/dist/{theme-button-CJmhxfMe.cjs → theme-button-C6fpUzPM.cjs} +1 -1
  314. package/dist/{theme-button-CJmhxfMe.cjs.map → theme-button-C6fpUzPM.cjs.map} +1 -1
  315. package/dist/{theme-button-DGWAXhzd.js → theme-button-O_xNCgI7.js} +2 -2
  316. package/dist/{theme-button-DGWAXhzd.js.map → theme-button-O_xNCgI7.js.map} +1 -1
  317. package/dist/theme-button.cjs +1 -1
  318. package/dist/theme-button.js +1 -1
  319. package/dist/theme.cjs +1 -1
  320. package/dist/theme.js +3 -3
  321. package/dist/{theme.service-hc4N-1Oz.js → theme.service-DwLhhOmP.js} +1 -1
  322. package/dist/{theme.service-hc4N-1Oz.js.map → theme.service-DwLhhOmP.js.map} +1 -1
  323. package/dist/{theme.service-p61RsJBF.cjs → theme.service-kn9MC025.cjs} +1 -1
  324. package/dist/{theme.service-p61RsJBF.cjs.map → theme.service-kn9MC025.cjs.map} +1 -1
  325. package/dist/tree.cjs +1 -1
  326. package/dist/tree.js +2 -2
  327. package/dist/{typography-DwV0sqht.js → typography-Dtdooaic.js} +2 -2
  328. package/dist/{typography-DwV0sqht.js.map → typography-Dtdooaic.js.map} +1 -1
  329. package/dist/{typography-Bdt8RlX2.cjs → typography-opFYuUYS.cjs} +1 -1
  330. package/dist/{typography-Bdt8RlX2.cjs.map → typography-opFYuUYS.cjs.map} +1 -1
  331. package/dist/typography.cjs +1 -1
  332. package/dist/typography.js +1 -1
  333. package/dist/visually-hidden.cjs +1 -1
  334. package/dist/visually-hidden.js +2 -2
  335. package/dist/{window-D2WfvNng.cjs → window-BSAemI9J.cjs} +1 -1
  336. package/dist/{window-D2WfvNng.cjs.map → window-BSAemI9J.cjs.map} +1 -1
  337. package/dist/{window-n4jN60B_.js → window-ConcHirJ.js} +3 -3
  338. package/dist/{window-n4jN60B_.js.map → window-ConcHirJ.js.map} +1 -1
  339. package/dist/window.cjs +1 -1
  340. package/dist/window.js +1 -1
  341. package/package.json +1 -1
  342. package/skills/schmancy/INDEX.md +1 -1
  343. package/skills/schmancy/SKILL.md +20 -18
  344. package/skills/schmancy/boat.md +21 -15
  345. package/skills/schmancy/fab.md +75 -0
  346. package/skills/schmancy/steps.md +68 -34
  347. package/skills/schmancy/theme.md +1 -1
  348. package/src/CLAUDE.md +22 -16
  349. package/src/boat/boat.test.ts +130 -0
  350. package/src/boat/boat.ts +144 -121
  351. package/src/button/icon-button.ts +18 -30
  352. package/src/chips/assist-chip.ts +2 -263
  353. package/src/chips/chips.ts +2 -259
  354. package/src/chips/filter-chip.ts +2 -255
  355. package/src/chips/index.ts +2 -5
  356. package/src/chips/input-chip.ts +2 -413
  357. package/src/chips/suggestion-chip.ts +2 -266
  358. package/src/directives/fill.ts +28 -5
  359. package/src/directives/reveal.ts +192 -118
  360. package/src/fab/fab.test.ts +101 -0
  361. package/src/fab/fab.ts +226 -0
  362. package/src/fab/index.ts +1 -0
  363. package/src/form/fields/chips/assist-chip.ts +263 -0
  364. package/src/form/fields/chips/chips.ts +234 -0
  365. package/src/form/fields/chips/filter-chip.ts +255 -0
  366. package/src/form/fields/chips/index.ts +5 -0
  367. package/src/form/fields/chips/input-chip.ts +413 -0
  368. package/src/form/fields/chips/suggestion-chip.ts +266 -0
  369. package/src/form/fields/date-range/date-range.test.ts +44 -0
  370. package/src/form/fields/date-range/date-range.ts +103 -97
  371. package/src/form/fields/index.ts +1 -0
  372. package/src/index.ts +2 -1
  373. package/src/overlay/overlay.animations.ts +2 -3
  374. package/src/overlay/overlay.component.ts +8 -4
  375. package/src/overlay/overlay.types.ts +14 -2
  376. package/src/steps/index.ts +1 -1
  377. package/src/steps/schmancy-step.ts +91 -65
  378. package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
  379. package/src/steps/steps.context.ts +5 -4
  380. package/src/steps/steps.test.ts +120 -0
  381. package/src/theme/theme.component.ts +1 -0
  382. package/src/theme/theme.style.css +3 -0
  383. package/types/src/boat/boat.d.ts +27 -9
  384. package/types/src/boat/boat.test.d.ts +2 -0
  385. package/types/src/button/icon-button.d.ts +3 -2
  386. package/types/src/chips/assist-chip.d.ts +1 -47
  387. package/types/src/chips/chips.d.ts +1 -43
  388. package/types/src/chips/filter-chip.d.ts +1 -67
  389. package/types/src/chips/index.d.ts +1 -5
  390. package/types/src/chips/input-chip.d.ts +1 -82
  391. package/types/src/chips/suggestion-chip.d.ts +1 -52
  392. package/types/src/directives/reveal.d.ts +15 -5
  393. package/types/src/fab/fab.d.ts +80 -0
  394. package/types/src/fab/fab.test.d.ts +2 -0
  395. package/types/src/fab/index.d.ts +1 -0
  396. package/types/src/form/fields/chips/assist-chip.d.ts +47 -0
  397. package/types/src/form/fields/chips/chips.d.ts +35 -0
  398. package/types/src/form/fields/chips/filter-chip.d.ts +67 -0
  399. package/types/src/form/fields/chips/index.d.ts +5 -0
  400. package/types/src/form/fields/chips/input-chip.d.ts +82 -0
  401. package/types/src/form/fields/chips/suggestion-chip.d.ts +52 -0
  402. package/types/src/form/fields/date-range/date-range.d.ts +5 -10
  403. package/types/src/form/fields/index.d.ts +1 -0
  404. package/types/src/index.d.ts +2 -1
  405. package/types/src/overlay/overlay.component.d.ts +1 -0
  406. package/types/src/overlay/overlay.types.d.ts +12 -2
  407. package/types/src/steps/index.d.ts +1 -1
  408. package/types/src/steps/schmancy-step.d.ts +8 -23
  409. package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
  410. package/types/src/steps/steps.context.d.ts +2 -1
  411. package/types/src/steps/steps.test.d.ts +2 -0
  412. package/types/src/theme/theme.component.d.ts +1 -0
  413. package/dist/SchmancyElement-CA0Wqt8m.js +0 -284
  414. package/dist/SchmancyElement-CA0Wqt8m.js.map +0 -1
  415. package/dist/SchmancyElement-CYIif26I.cjs +0 -2
  416. package/dist/SchmancyElement-CYIif26I.cjs.map +0 -1
  417. package/dist/boat-Vqjgo10B.cjs +0 -33
  418. package/dist/boat-Vqjgo10B.cjs.map +0 -1
  419. package/dist/boat-lr7MPZ7H.js.map +0 -1
  420. package/dist/chips-CXZ4dJCK.cjs.map +0 -1
  421. package/dist/chips-Dg6Lk6BT.js.map +0 -1
  422. package/dist/date-range-BU6WX7d5.js.map +0 -1
  423. package/dist/date-range-C-_be3_E.cjs.map +0 -1
  424. package/dist/directives-fLwDj6b0.cjs.map +0 -1
  425. package/dist/directives-zi1Mm2er.js.map +0 -1
  426. package/dist/input-chip-57tgNXKT.cjs.map +0 -1
  427. package/dist/input-chip-C6Lq1927.js.map +0 -1
  428. package/dist/overlay-BpNhd74N.js.map +0 -1
  429. package/dist/overlay-UQR2Dy3u.cjs.map +0 -1
  430. package/dist/theme-iKUaS9JB.cjs +0 -181
@@ -1 +1 @@
1
- {"version":3,"file":"details-EfbDPVEo.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"details-C-GZaq3j.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CYIif26I.cjs`),t=require(`./mixins-CGXSzZc7.cjs`),n=require(`./animation-CCOIW4wJ.cjs`),r=require(`./reduced-motion-Ds-HjMzn.cjs`),i=require(`./cursor-glow-Bulq-38P.cjs`),a=require(`./magnetic-DKtc4umC.cjs`);let o=require(`rxjs`),s=require(`rxjs/operators`),c=require(`lit/decorators.js`),l=require(`lit`),u=require(`lit/directives/ref.js`);var d=class extends t.t(e.t){static{this.styles=[l.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-BHfQg3Tj.cjs`),t=require(`./mixins-DxHpyMHA.cjs`),n=require(`./animation-CCOIW4wJ.cjs`),r=require(`./reduced-motion-Ds-HjMzn.cjs`),i=require(`./cursor-glow-Bulq-38P.cjs`),a=require(`./magnetic-DKtc4umC.cjs`);let o=require(`rxjs`),s=require(`rxjs/operators`),c=require(`lit/decorators.js`),l=require(`lit`),u=require(`lit/directives/ref.js`);var d=class extends t.t(e.t){static{this.styles=[l.css`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"details-Bs0MyyvF.cjs","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"details-Dp5rLIWk.cjs","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
package/dist/details.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./details-Bs0MyyvF.cjs`);exports.SchmancyDetails=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./details-Dp5rLIWk.cjs`);exports.SchmancyDetails=e.t;
package/dist/details.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./details-EfbDPVEo.js";
1
+ import { t as e } from "./details-C-GZaq3j.js";
2
2
  export { e as SchmancyDetails };
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./audio-Q9oB_cQR.cjs`),t=require(`./animation-CCOIW4wJ.cjs`),n=require(`./reduced-motion-Ds-HjMzn.cjs`);require(`./cursor-glow-Bulq-38P.cjs`);const r=require(`./theme.service-p61RsJBF.cjs`),i=require(`./layout-6ipbiWTl.cjs`),a=require(`./overlay-stack-Bdr9lOqi.cjs`);require(`./gravity-6pL6CfIr.cjs`);const o=require(`./discovery.service-CIa3Eeuk.cjs`);require(`./magnetic-DKtc4umC.cjs`);let s=require(`rxjs`),c=require(`rxjs/operators`),l=require(`lit`),u=require(`lit/async-directive.js`),d=require(`lit/directive.js`);var f={smooth:t.d,snappy:t.f,bouncy:t.l,gentle:t.u},p=class extends u.AsyncDirective{constructor(...e){super(...e),this.element=null,this.originalContent=``,this.animations=[],this.disconnecting$=new s.Subject,this.initialized=!1}render(e){return l.noChange}update(e,[t]){return this.element=e.element,this.initialized||(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new s.Subject),t.text===void 0?this.originalContent=this.element.textContent||``:(this.originalContent=t.text,this.element.textContent=t.text),this.element.style.willChange=`transform, opacity`,t.animation===`typewriter`?this.element.textContent=``:this.element.style.opacity=`0`,this.initialize(t)),l.noChange}disconnected(){this.cleanup()}reconnected(){this.element&&(this.element.style.willChange=`transform, opacity`)}initialize(e){let{animation:t,delay:n=0,duration:r,stagger:i,preset:a=`snappy`,restart:o=!1}=e,l=f[a],u=r??l.duration,d=i??(t===`cyber-glitch`?30:50),p=this.createVisibilityObservable$();(o?p.pipe((0,c.switchMap)(e=>e?(0,s.timer)(n).pipe((0,c.switchMap)(()=>this.runAnimation$(t,u,d,l))):(0,s.defer)(()=>(this.resetToInitial(t),s.EMPTY)))):p.pipe((0,c.filter)(e=>e),(0,c.take)(1),(0,c.delay)(n),(0,c.switchMap)(()=>this.runAnimation$(t,u,d,l)))).pipe((0,c.takeUntil)(this.disconnecting$)).subscribe()}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.cancelAnimations(),this.element&&(this.element.textContent=this.originalContent,this.element.style.opacity=``,this.element.style.willChange=`auto`,this.element.style.transform=``,this.element.style.filter=``),this.element=null,this.initialized=!1}cancelAnimations(){this.animations.forEach(e=>e.cancel()),this.animations=[]}resetToInitial(e){this.cancelAnimations(),this.element&&(e===`typewriter`?this.element.textContent=``:(this.element.textContent=this.originalContent,this.element.style.opacity=`0`),this.element.style.transform=``,this.element.style.filter=``,this.element.style.willChange=`transform, opacity`)}getAccumulatedOpacity(){if(!this.element)return 0;let e=1,t=this.element.parentElement,n=0;for(;t&&t!==document.body&&n<10;){let r=window.getComputedStyle(t);if(r.visibility===`hidden`||r.display===`none`)return 0;let i=parseFloat(r.opacity)||1;if(i<1&&(e*=i,e<=.5))return e;if(t.assignedSlot){let n=this.getSlotAncestorOpacity(t.assignedSlot);if(n===0)return 0;e*=n}t=t.parentElement,n++}return e}getSlotAncestorOpacity(e){let t=1,n=e.parentElement;for(;n;){let e=window.getComputedStyle(n);if(e.visibility===`hidden`||e.display===`none`)return 0;t*=parseFloat(e.opacity)||1,n=n.parentElement}return t}createVisibilityObservable$(){let e=(0,s.fromEvent)(document,`visibilitychange`).pipe((0,c.startWith)(null),(0,c.map)(()=>document.visibilityState===`visible`),(0,c.distinctUntilChanged)());return(0,s.combineLatest)([(0,s.interval)(200).pipe((0,c.startWith)(0),(0,c.map)(()=>{if(!this.element)return!1;let e=this.element.getBoundingClientRect();return e.width>0&&e.height>0&&e.top<window.innerHeight&&e.bottom>0&&this.getAccumulatedOpacity()>.5}),(0,c.distinctUntilChanged)()),e]).pipe((0,c.map)(([e,t])=>e&&t),(0,c.distinctUntilChanged)())}runAnimation$(e,t,n,r){if(!this.element)return s.EMPTY;switch(e){case`fade-up`:return this.animateFadeUp$(t,r);case`blur-reveal`:return this.animateBlurReveal$(t,n,r);case`word-reveal`:return this.animateWordReveal$(t,n,r);case`cyber-glitch`:return this.animateCyberGlitch$(t,n,r);case`typewriter`:return this.animateTypewriter$(t);default:return s.EMPTY}}animateFadeUp$(e,t){if(!this.element)return s.EMPTY;let n=this.element.animate([{opacity:0,transform:`translateY(30px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:t.easingFallback,fill:`forwards`});return this.animations.push(n),(0,s.from)(n.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.opacity=``,this.element.style.transform=``,this.element.style.willChange=`auto`)}),(0,c.catchError)(()=>s.EMPTY))}wrapTextNodes(e){let t=[],n=document.createDocumentFragment(),r=Array.from(e.childNodes);for(let e of r)if(e.nodeType===Node.TEXT_NODE){let r=(e.textContent||``).split(/(\s+)/);for(let e of r)if(/^\s+$/.test(e))n.appendChild(document.createTextNode(e));else if(e.length>0){let r=document.createElement(`span`);r.textContent=e,n.appendChild(r),t.push(r)}}else e instanceof HTMLElement&&(n.appendChild(e),t.push(e));return e.textContent=``,e.appendChild(n),t}animateBlurReveal$(e,t,n){if(!this.element)return s.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,filter:`blur(8px)`,transform:`scale(0.9)`},{opacity:1,filter:`blur(0)`,transform:`scale(1)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,s.from)(i.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,c.catchError)(()=>s.EMPTY)):s.EMPTY}animateWordReveal$(e,t,n){if(!this.element)return s.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,transform:`translateY(20px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,s.from)(i.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,c.catchError)(()=>s.EMPTY)):s.EMPTY}animateCyberGlitch$(e,t,n){if(!this.element)return s.EMPTY;let r=this.originalContent.split(``),i=document.createDocumentFragment(),a=[];for(let e of r){let t=document.createElement(`span`);t.style.display=`inline-block`,t.style.opacity=`0`,t.textContent=e===` `?`\xA0`:e,i.appendChild(t),a.push(t)}this.element.textContent=``,this.element.appendChild(i),this.element.style.opacity=`1`,a.forEach((i,a)=>{if(r[a]===` `)return void(i.style.opacity=`1`);let o=i.animate([{opacity:0,transform:`translateY(-8px) scale(1.4)`,filter:`blur(4px)`},{opacity:1,transform:`translateY(0) scale(1)`,filter:`blur(0)`}],{duration:e,easing:n.easingFallback,delay:a*t,fill:`forwards`});this.animations.push(o)});let o=this.animations[this.animations.length-1];return o?(0,s.from)(o.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,a.forEach(e=>{e.style.willChange=`auto`}))}),(0,c.catchError)(()=>s.EMPTY)):s.EMPTY}animateTypewriter$(e){if(!this.element)return s.EMPTY;let t=this.originalContent,n=t.length;if(n===0)return s.EMPTY;let r=e/n,i=0;return(0,s.interval)(r).pipe((0,c.tap)(()=>{i++,this.element&&(this.element.textContent=t.slice(0,i))}),(0,c.takeWhile)(()=>i<n),(0,c.finalize)(()=>{this.element&&(this.element.textContent=this.originalContent,this.element.style.willChange=`auto`)}))}},m=(0,u.directive)(p),h=class extends u.AsyncDirective{constructor(...e){super(...e),this.state=null}render(e){return l.noChange}update(e,[t=``]){let n=e.element;if(!t)return this.cleanup(),l.noChange;if(this.state)return l.noChange;this.state={message:t,element:n,badge:null,animation:null},getComputedStyle(n).position===`static`&&(n.style.position=`relative`);let r=document.createElement(`div`);return r.style.cssText=`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./audio-CUMAv9D_.cjs`),t=require(`./animation-CCOIW4wJ.cjs`),n=require(`./reduced-motion-Ds-HjMzn.cjs`);require(`./cursor-glow-Bulq-38P.cjs`);const r=require(`./theme.service-kn9MC025.cjs`),i=require(`./layout-BhyIcEVu.cjs`),a=require(`./overlay-stack-Bdr9lOqi.cjs`);require(`./gravity-6pL6CfIr.cjs`);const o=require(`./discovery.service-CIa3Eeuk.cjs`);require(`./magnetic-DKtc4umC.cjs`);let s=require(`rxjs`),c=require(`rxjs/operators`),l=require(`lit`),u=require(`lit/async-directive.js`),d=require(`lit/directive.js`);var f={smooth:t.d,snappy:t.f,bouncy:t.l,gentle:t.u},p=class extends u.AsyncDirective{constructor(...e){super(...e),this.element=null,this.originalContent=``,this.animations=[],this.disconnecting$=new s.Subject,this.initialized=!1}render(e){return l.noChange}update(e,[t]){return this.element=e.element,this.initialized||(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new s.Subject),t.text===void 0?this.originalContent=this.element.textContent||``:(this.originalContent=t.text,this.element.textContent=t.text),this.element.style.willChange=`transform, opacity`,t.animation===`typewriter`?this.element.textContent=``:this.element.style.opacity=`0`,this.initialize(t)),l.noChange}disconnected(){this.cleanup()}reconnected(){this.element&&(this.element.style.willChange=`transform, opacity`)}initialize(e){let{animation:t,delay:n=0,duration:r,stagger:i,preset:a=`snappy`,restart:o=!1}=e,l=f[a],u=r??l.duration,d=i??(t===`cyber-glitch`?30:50),p=this.createVisibilityObservable$();(o?p.pipe((0,c.switchMap)(e=>e?(0,s.timer)(n).pipe((0,c.switchMap)(()=>this.runAnimation$(t,u,d,l))):(0,s.defer)(()=>(this.resetToInitial(t),s.EMPTY)))):p.pipe((0,c.filter)(e=>e),(0,c.take)(1),(0,c.delay)(n),(0,c.switchMap)(()=>this.runAnimation$(t,u,d,l)))).pipe((0,c.takeUntil)(this.disconnecting$)).subscribe()}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.cancelAnimations(),this.element&&(this.element.textContent=this.originalContent,this.element.style.opacity=``,this.element.style.willChange=`auto`,this.element.style.transform=``,this.element.style.filter=``),this.element=null,this.initialized=!1}cancelAnimations(){this.animations.forEach(e=>e.cancel()),this.animations=[]}resetToInitial(e){this.cancelAnimations(),this.element&&(e===`typewriter`?this.element.textContent=``:(this.element.textContent=this.originalContent,this.element.style.opacity=`0`),this.element.style.transform=``,this.element.style.filter=``,this.element.style.willChange=`transform, opacity`)}getAccumulatedOpacity(){if(!this.element)return 0;let e=1,t=this.element.parentElement,n=0;for(;t&&t!==document.body&&n<10;){let r=window.getComputedStyle(t);if(r.visibility===`hidden`||r.display===`none`)return 0;let i=parseFloat(r.opacity)||1;if(i<1&&(e*=i,e<=.5))return e;if(t.assignedSlot){let n=this.getSlotAncestorOpacity(t.assignedSlot);if(n===0)return 0;e*=n}t=t.parentElement,n++}return e}getSlotAncestorOpacity(e){let t=1,n=e.parentElement;for(;n;){let e=window.getComputedStyle(n);if(e.visibility===`hidden`||e.display===`none`)return 0;t*=parseFloat(e.opacity)||1,n=n.parentElement}return t}createVisibilityObservable$(){let e=(0,s.fromEvent)(document,`visibilitychange`).pipe((0,c.startWith)(null),(0,c.map)(()=>document.visibilityState===`visible`),(0,c.distinctUntilChanged)());return(0,s.combineLatest)([(0,s.interval)(200).pipe((0,c.startWith)(0),(0,c.map)(()=>{if(!this.element)return!1;let e=this.element.getBoundingClientRect();return e.width>0&&e.height>0&&e.top<window.innerHeight&&e.bottom>0&&this.getAccumulatedOpacity()>.5}),(0,c.distinctUntilChanged)()),e]).pipe((0,c.map)(([e,t])=>e&&t),(0,c.distinctUntilChanged)())}runAnimation$(e,t,n,r){if(!this.element)return s.EMPTY;switch(e){case`fade-up`:return this.animateFadeUp$(t,r);case`blur-reveal`:return this.animateBlurReveal$(t,n,r);case`word-reveal`:return this.animateWordReveal$(t,n,r);case`cyber-glitch`:return this.animateCyberGlitch$(t,n,r);case`typewriter`:return this.animateTypewriter$(t);default:return s.EMPTY}}animateFadeUp$(e,t){if(!this.element)return s.EMPTY;let n=this.element.animate([{opacity:0,transform:`translateY(30px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:t.easingFallback,fill:`forwards`});return this.animations.push(n),(0,s.from)(n.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.opacity=``,this.element.style.transform=``,this.element.style.willChange=`auto`)}),(0,c.catchError)(()=>s.EMPTY))}wrapTextNodes(e){let t=[],n=document.createDocumentFragment(),r=Array.from(e.childNodes);for(let e of r)if(e.nodeType===Node.TEXT_NODE){let r=(e.textContent||``).split(/(\s+)/);for(let e of r)if(/^\s+$/.test(e))n.appendChild(document.createTextNode(e));else if(e.length>0){let r=document.createElement(`span`);r.textContent=e,n.appendChild(r),t.push(r)}}else e instanceof HTMLElement&&(n.appendChild(e),t.push(e));return e.textContent=``,e.appendChild(n),t}animateBlurReveal$(e,t,n){if(!this.element)return s.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,filter:`blur(8px)`,transform:`scale(0.9)`},{opacity:1,filter:`blur(0)`,transform:`scale(1)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,s.from)(i.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,c.catchError)(()=>s.EMPTY)):s.EMPTY}animateWordReveal$(e,t,n){if(!this.element)return s.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,transform:`translateY(20px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,s.from)(i.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,c.catchError)(()=>s.EMPTY)):s.EMPTY}animateCyberGlitch$(e,t,n){if(!this.element)return s.EMPTY;let r=this.originalContent.split(``),i=document.createDocumentFragment(),a=[];for(let e of r){let t=document.createElement(`span`);t.style.display=`inline-block`,t.style.opacity=`0`,t.textContent=e===` `?`\xA0`:e,i.appendChild(t),a.push(t)}this.element.textContent=``,this.element.appendChild(i),this.element.style.opacity=`1`,a.forEach((i,a)=>{if(r[a]===` `)return void(i.style.opacity=`1`);let o=i.animate([{opacity:0,transform:`translateY(-8px) scale(1.4)`,filter:`blur(4px)`},{opacity:1,transform:`translateY(0) scale(1)`,filter:`blur(0)`}],{duration:e,easing:n.easingFallback,delay:a*t,fill:`forwards`});this.animations.push(o)});let o=this.animations[this.animations.length-1];return o?(0,s.from)(o.finished).pipe((0,c.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,a.forEach(e=>{e.style.willChange=`auto`}))}),(0,c.catchError)(()=>s.EMPTY)):s.EMPTY}animateTypewriter$(e){if(!this.element)return s.EMPTY;let t=this.originalContent,n=t.length;if(n===0)return s.EMPTY;let r=e/n,i=0;return(0,s.interval)(r).pipe((0,c.tap)(()=>{i++,this.element&&(this.element.textContent=t.slice(0,i))}),(0,c.takeWhile)(()=>i<n),(0,c.finalize)(()=>{this.element&&(this.element.textContent=this.originalContent,this.element.style.willChange=`auto`)}))}},m=(0,u.directive)(p),h=class extends u.AsyncDirective{constructor(...e){super(...e),this.state=null}render(e){return l.noChange}update(e,[t=``]){let n=e.element;if(!t)return this.cleanup(),l.noChange;if(this.state)return l.noChange;this.state={message:t,element:n,badge:null,animation:null},getComputedStyle(n).position===`static`&&(n.style.position=`relative`);let r=document.createElement(`div`);return r.style.cssText=`
2
2
  display: block;
3
3
  position: absolute;
4
4
  bottom: -8px;
@@ -157,7 +157,7 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./audio-Q9oB_cQR.cjs`),t=requir
157
157
  }
158
158
  }
159
159
 
160
- `,this.element.appendChild(this.styleElement),this.container=document.createElement(`div`),Object.assign(this.container.style,{position:`absolute`,inset:`0`,pointerEvents:`none`,zIndex:`0`,overflow:`hidden`,borderRadius:`inherit`,background:`rgba(0, 0, 0, 0.3)`}),this.element.insertBefore(this.container,this.element.firstChild),this.createFill(),this.createHexGrid(),this.createEnergyWave(),this.createScanLines(),this.createDataStreams(),this.createGlitchLayer(),this.createParticles(),this.createReadout())}createFill(){if(!this.container)return;let e=this.options.duration??600,t=4/this.getEffectiveSpeed();this.fillElement=document.createElement(`div`),Object.assign(this.fillElement.style,{position:`absolute`,left:`0`,right:`0`,bottom:`0`,height:`0%`,background:`linear-gradient(180deg,\n\t\t\t\t${this.variant.primary}00 0%,\n\t\t\t\t${this.variant.primary}25 20%,\n\t\t\t\t${this.variant.primary}50 60%,\n\t\t\t\t${this.variant.secondary}cc 100%\n\t\t\t)`,transition:`height ${e}ms cubic-bezier(0.4, 0, 0.2, 1)`,boxShadow:`\n\t\t\t\tinset 0 0 30px ${this.variant.glow}30,\n\t\t\t\tinset 0 -10px 20px ${this.variant.glow}20,\n\t\t\t\t0 0 15px ${this.variant.glow}25\n\t\t\t`,overflow:`hidden`,"--glow-color":this.variant.glow,animation:`future-fill-pulse ${t}s ease-in-out infinite`}),this.container.appendChild(this.fillElement)}createEnergyWave(){if(!this.fillElement)return;let e=this.getEffectiveSpeed();this.energyWave=document.createElement(`div`),Object.assign(this.energyWave.style,{position:`absolute`,left:`-10%`,top:`-12px`,width:`120%`,height:`24px`,background:`radial-gradient(ellipse at center,\n\t\t\t\t${this.variant.primary}90 0%,\n\t\t\t\t${this.variant.primary}40 30%,\n\t\t\t\ttransparent 70%\n\t\t\t)`,filter:`blur(6px) drop-shadow(0 0 6px ${this.variant.glow}80)`,animation:`energy-wave ${3/e}s ease-in-out infinite`}),this.fillElement.appendChild(this.energyWave)}createHexGrid(){if(!this.fillElement||!this.options.showGrid)return;let e=this.getEffectiveSpeed();this.hexGrid=document.createElement(`div`),Object.assign(this.hexGrid.style,{position:`absolute`,inset:`0`,background:this.createHexPattern(),opacity:`0.08`,animation:`hex-grid-pulse ${5/e}s ease-in-out infinite`,mixBlendMode:`screen`}),this.fillElement.appendChild(this.hexGrid)}createHexPattern(){let e=this.variant.gridColor;return`\n\t\t\trepeating-linear-gradient(\n\t\t\t\t0deg,\n\t\t\t\t${e}00 0px,\n\t\t\t\t${e}40 1px,\n\t\t\t\t${e}00 2px,\n\t\t\t\t${e}00 40px\n\t\t\t),\n\t\t\trepeating-linear-gradient(\n\t\t\t\t60deg,\n\t\t\t\t${e}00 0px,\n\t\t\t\t${e}40 1px,\n\t\t\t\t${e}00 2px,\n\t\t\t\t${e}00 40px\n\t\t\t),\n\t\t\trepeating-linear-gradient(\n\t\t\t\t120deg,\n\t\t\t\t${e}00 0px,\n\t\t\t\t${e}40 1px,\n\t\t\t\t${e}00 2px,\n\t\t\t\t${e}00 40px\n\t\t\t)\n\t\t`}createScanLines(){if(!this.fillElement||!this.options.showScanLines)return;let e=this.getEffectiveSpeed(),t=document.createElement(`div`);Object.assign(t.style,{position:`absolute`,inset:`0`,background:`repeating-linear-gradient(\n\t\t\t\t0deg,\n\t\t\t\ttransparent 0px,\n\t\t\t\t${this.variant.scanLine}08 1px,\n\t\t\t\ttransparent 2px,\n\t\t\t\ttransparent 4px\n\t\t\t)`,opacity:`0.15`,pointerEvents:`none`}),this.fillElement.appendChild(t),this.scanLine=document.createElement(`div`),Object.assign(this.scanLine.style,{position:`absolute`,left:`0`,right:`0`,top:`-1px`,height:`1px`,background:`linear-gradient(90deg,\n\t\t\t\ttransparent 0%,\n\t\t\t\t${this.variant.scanLine}cc 50%,\n\t\t\t\ttransparent 100%\n\t\t\t)`,boxShadow:`0 0 8px ${this.variant.glow}60`,animation:`scan-line-move ${6/e}s linear infinite`,opacity:`0.35`}),this.fillElement.appendChild(this.scanLine)}createParticles(){this.fillElement&&this.options.showParticles&&(this.particlesCanvas=document.createElement(`canvas`),Object.assign(this.particlesCanvas.style,{position:`absolute`,left:`0`,bottom:`0`,width:`100%`,height:`100%`,pointerEvents:`none`,zIndex:`5`}),this.fillElement.appendChild(this.particlesCanvas),this.particlesCtx=this.particlesCanvas.getContext(`2d`),this.resizeCanvas(),this.initParticles())}resizeCanvas(){if(!this.particlesCanvas||!this.fillElement)return;let e=this.fillElement.getBoundingClientRect();this.particlesCanvas.width=e.width,this.particlesCanvas.height=e.height}setupResizeObserver(){this.element&&typeof ResizeObserver<`u`&&(this.resizeObserver=new ResizeObserver(()=>{this.resizeCanvas()}),this.resizeObserver.observe(this.element))}initParticles(){let e=Math.floor(12*(this.options.intensity??1));for(let t=0;t<e;t++)this.spawnParticle()}spawnParticle(){if(!this.particlesCanvas)return;let e=this.particlesCanvas.width,t=this.particlesCanvas.height,n=this.getEffectiveSpeed();this.particles.push({x:Math.random()*e,y:t+30*Math.random(),vx:.5*(Math.random()-.5),vy:(-.4-1.2*Math.random())*n,size:.8+1.2*Math.random(),opacity:.2+.4*Math.random(),hue:60*Math.random()-30,life:0})}createDataStreams(){if(!this.fillElement)return;let e=this.getEffectiveSpeed();this.dataStreams=document.createElement(`div`),Object.assign(this.dataStreams.style,{position:`absolute`,inset:`0`,overflow:`hidden`,opacity:`0.18`,zIndex:`3`}),this.fillElement.appendChild(this.dataStreams);for(let t=0;t<3;t++){let n=document.createElement(`div`),r=15+30*t,i=4*Math.random(),a=3+2*Math.random();Object.assign(n.style,{position:`absolute`,left:`${r}%`,top:`0`,width:`1px`,height:`100%`,background:`linear-gradient(180deg,\n\t\t\t\t\ttransparent 0%,\n\t\t\t\t\t${this.variant.primary}cc 50%,\n\t\t\t\t\ttransparent 100%\n\t\t\t\t)`,animation:`data-stream ${a/e}s linear infinite`,animationDelay:`${i}s`,boxShadow:`0 0 4px ${this.variant.glow}40`}),this.dataStreams.appendChild(n)}}createGlitchLayer(){this.fillElement&&this.options.showGlitch&&(this.glitchLayer=document.createElement(`div`),Object.assign(this.glitchLayer.style,{position:`absolute`,inset:`0`,background:`linear-gradient(90deg,\n\t\t\t\t${this.variant.primary}20 0%,\n\t\t\t\ttransparent 50%,\n\t\t\t\t${this.variant.secondary}20 100%\n\t\t\t)`,opacity:`0.3`,animation:`glitch-shift 0.3s steps(1) infinite`,mixBlendMode:`overlay`}),this.fillElement.appendChild(this.glitchLayer))}createReadout(){if(!this.element||!this.options.showReadout)return;let e=this.getEffectiveSpeed();this.readout=document.createElement(`div`),Object.assign(this.readout.style,{position:`absolute`,top:`10px`,right:`10px`,fontFamily:`monospace`,fontSize:`1rem`,fontWeight:`600`,color:this.variant.primary,textShadow:`\n\t\t\t\t0 0 6px ${this.variant.glow}80,\n\t\t\t\t0 2px 4px rgba(0, 0, 0, 0.8)\n\t\t\t`,zIndex:`10`,pointerEvents:`none`,letterSpacing:`0.08em`,animation:`hologram-flicker ${8/e}s ease-in-out infinite`}),this.element.appendChild(this.readout);let t=document.createElement(`span`);t.textContent=` PWR`,t.style.opacity=`0.6`,t.style.fontSize=`0.7em`,this.readout.appendChild(t)}updateColors(){this.fillElement&&(this.fillElement.style.background=`linear-gradient(180deg,\n\t\t\t\t${this.variant.primary}00 0%,\n\t\t\t\t${this.variant.primary}25 20%,\n\t\t\t\t${this.variant.primary}50 60%,\n\t\t\t\t${this.variant.secondary}cc 100%\n\t\t\t)`,this.fillElement.style.boxShadow=`\n\t\t\t\tinset 0 0 30px ${this.variant.glow}30,\n\t\t\t\tinset 0 -10px 20px ${this.variant.glow}20,\n\t\t\t\t0 0 15px ${this.variant.glow}25\n\t\t\t`,this.fillElement.style.setProperty(`--glow-color`,this.variant.glow)),this.energyWave&&(this.energyWave.style.background=`radial-gradient(ellipse at center,\n\t\t\t\t${this.variant.primary}90 0%,\n\t\t\t\t${this.variant.primary}40 30%,\n\t\t\t\ttransparent 70%\n\t\t\t)`,this.energyWave.style.filter=`blur(6px) drop-shadow(0 0 6px ${this.variant.glow}80)`),this.hexGrid&&(this.hexGrid.style.background=this.createHexPattern()),this.dataStreams&&this.dataStreams.querySelectorAll(`div`).forEach(e=>{let t=e;t.style.background=`linear-gradient(180deg,\n\t\t\t\t\ttransparent 0%,\n\t\t\t\t\t${this.variant.primary}cc 50%,\n\t\t\t\t\ttransparent 100%\n\t\t\t\t)`,t.style.boxShadow=`0 0 4px ${this.variant.glow}40`}),this.glitchLayer&&(this.glitchLayer.style.background=`linear-gradient(90deg,\n\t\t\t\t${this.variant.primary}20 0%,\n\t\t\t\ttransparent 50%,\n\t\t\t\t${this.variant.secondary}20 100%\n\t\t\t)`),this.readout&&(this.readout.style.color=this.variant.primary,this.readout.style.textShadow=`\n\t\t\t\t0 0 6px ${this.variant.glow}80,\n\t\t\t\t0 2px 4px rgba(0, 0, 0, 0.8)\n\t\t\t`),this.element&&!1!==this.options.glassEffect&&(this.element.style.border=`1.5px solid ${this.variant.primary}30`)}startAnimation(){this.lastTime=performance.now(),this.animate(this.lastTime)}updateParticles(e){if(!this.particlesCanvas||!this.particlesCtx||!this.options.showParticles)return;let t=this.particlesCtx,n=this.particlesCanvas.width,r=this.particlesCanvas.height;t.clearRect(0,0,n,r);for(let n=this.particles.length-1;n>=0;n--){let r=this.particles[n],i=this.getEffectiveSpeed();if(r.x+=r.vx*e*60*i,r.y+=r.vy*e*60*i,r.life+=e,r.life>2&&(r.opacity*=.95),r.opacity<.01||r.y<-50){this.particles.splice(n,1),this.spawnParticle();continue}let a=t.createRadialGradient(r.x,r.y,0,r.x,r.y,2.5*r.size);a.addColorStop(0,this.hexToRGBA(this.variant.particle,.8*r.opacity)),a.addColorStop(.5,this.hexToRGBA(this.variant.particle,.15*r.opacity)),a.addColorStop(1,this.hexToRGBA(this.variant.particle,0)),t.fillStyle=a,t.beginPath(),t.arc(r.x,r.y,2.5*r.size,0,2*Math.PI),t.fill(),t.fillStyle=this.hexToRGBA(this.variant.particle,.7*r.opacity),t.beginPath(),t.arc(r.x,r.y,.8*r.size,0,2*Math.PI),t.fill()}}hexToRGBA(e,t){return`rgba(${parseInt(e.slice(1,3),16)}, ${parseInt(e.slice(3,5),16)}, ${parseInt(e.slice(5,7),16)}, ${t})`}updateFill(){let e=Math.max(0,this.options.percent),t=Math.min(e,100),n=e<20,r=e>100;this.currentPercent=t;let i=this.getEffectiveSpeed();if(this.fillElement){this.fillElement.style.height=`${t}%`;let e=this.options.duration??600;this.fillElement.style.transition=`height ${e}ms cubic-bezier(0.4, 0, 0.2, 1)`}if(this.readout){let t=Math.round(e);this.readout.firstChild.textContent=t.toString().padStart(3,`0`),this.options.criticalEffects&&(this.readout.style.animation=n?`critical-flash 1s ease-in-out infinite`:r?`overfill-surge 1.5s ease-in-out infinite`:`hologram-flicker ${8/i}s ease-in-out infinite`)}if(this.fillElement){let e=4/i;this.options.criticalEffects&&n?this.fillElement.style.animation=`future-fill-pulse 1s ease-in-out infinite, critical-flash 1.5s ease-in-out infinite`:this.options.criticalEffects&&r?this.fillElement.style.animation=`future-fill-pulse 1.2s ease-in-out infinite, overfill-surge 1.5s ease-in-out infinite`:this.fillElement.style.animation=`future-fill-pulse ${e}s ease-in-out infinite`}this.energyWave&&(this.energyWave.style.animation=`energy-wave ${3/i}s ease-in-out infinite`),this.scanLine&&(this.scanLine.style.animation=`scan-line-move ${6/i}s linear infinite`),this.hexGrid&&(this.hexGrid.style.animation=`hex-grid-pulse ${5/i}s ease-in-out infinite`)}disconnected(){this.animationFrame&&cancelAnimationFrame(this.animationFrame),this.resizeObserver&&this.resizeObserver.disconnect(),this.styleElement?.remove(),this.container?.remove(),this.readout?.remove(),this.element&&Object.assign(this.element.style,this.originalStyles),this.element=null,this.container=null,this.fillElement=null,this.energyWave=null,this.scanLine=null,this.particlesCanvas=null,this.particlesCtx=null,this.hexGrid=null,this.readout=null,this.dataStreams=null,this.glitchLayer=null,this.particles=[],this.resizeObserver=null}},ae=(0,u.directive)(ie),oe=()=>!1;function se(e){oe=e}function ce(){return oe()}function le(e,t=l.nothing){return ce()?e:t}var ue=class extends d.Directive{constructor(e){super(e),this.config={}}update(e,[t]){if(e.type!==d.PartType.ELEMENT)throw Error("The `classMap` directive must be used in the `class` attribute");let n=e.element;this.config=t,this.config.bgColor&&(n.style.backgroundColor=this.config.bgColor),this.config.color&&(n.style.color=this.config.color)}render(e){return this.config=e,l.nothing}},de=(0,d.directive)(ue),P=new WeakMap;function F(e,t){let n=e.match(/var\(([^,)]+)/);return n&&getComputedStyle(document.documentElement).getPropertyValue(n[1]).trim()||t}var fe=class extends d.Directive{constructor(e){if(super(e),e.type!==d.PartType.ELEMENT)throw Error(`confirmClick directive can only be used on elements`)}render(e,t){}update(e,[t,n={}]){let r=e.element,i=P.get(r);if(i){if(i.callback=t,this.optionsEqual(i.options,n))return;this.cleanup(r)}let a=new s.Subject,o=this.setupClickListener(r,n??{},a);P.set(r,{subscription:o,callback:t,options:n??{},overlayElement:null,isConfirming:!1,cancel$:a})}optionsEqual(e,t){return t?e.timeout===t.timeout&&e.icon===t.icon:Object.keys(e).length===0}setupClickListener(e,t,n){return(0,s.fromEvent)(e,`click`).pipe((0,c.tap)(r=>{let i=P.get(e);i&&!i.isConfirming&&(r.stopPropagation(),r.preventDefault(),i.isConfirming=!0,this.showOverlay(e,i,t,n))})).subscribe()}showOverlay(e,t,n,r){let i=n.timeout??3e3,a=e,o=n.icon??a.icon??a._capturedIcon??e.textContent?.trim()??`warning`,l=F(`var(--schmancy-sys-color-error-default)`,`#dc2626`),u=F(`var(--schmancy-sys-color-error-on)`,`#ffffff`),d=F(`var(--schmancy-sys-color-error-container)`,`#fecaca`),f=document.createElement(`div`);f.setAttribute(`role`,`status`),f.setAttribute(`aria-label`,`Click again to confirm`);let p=e.getBoundingClientRect(),m=p.width,h=p.height,g=window.devicePixelRatio||1,_=getComputedStyle(e);Object.assign(f.style,{position:`fixed`,top:`${p.top}px`,left:`${p.left}px`,width:`${m}px`,height:`${h}px`,zIndex:`10000`,borderRadius:_.borderRadius||`50%`,overflow:`hidden`,cursor:`pointer`,opacity:`0`,transform:`scale(0.6)`,transition:`opacity 250ms cubic-bezier(0.22, 1.25, 0.36, 1), transform 300ms cubic-bezier(0.22, 1.25, 0.36, 1)`});let v=document.createElement(`canvas`);v.width=m*g,v.height=h*g,v.style.width=`${m}px`,v.style.height=`${h}px`,v.style.position=`absolute`,v.style.top=`0`,v.style.left=`0`,f.appendChild(v);let y=Math.round(.5*Math.min(m,h)),b=document.createElement(`schmancy-icon`);b.textContent=o,b.setAttribute(`size`,`${y}px`),Object.assign(b.style,{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:u,pointerEvents:`none`}),f.appendChild(b),document.body.appendChild(f),t.overlayElement=f,(0,s.of)(null).pipe((0,c.observeOn)(s.animationFrameScheduler)).subscribe(()=>{f.style.opacity=`1`,f.style.transform=`scale(1)`});let x=v.getContext(`2d`);if(!x)return;x.scale(g,g);let S=m/2,C=h/2,w=Math.min(m,h)/2-1,T=w-3,E=e=>{x.clearRect(0,0,m,h),x.beginPath(),x.arc(S,C,T,0,2*Math.PI),x.fillStyle=l,x.fill();let t=1-e;if(t>0){let e=-Math.PI/2,n=e+2*Math.PI*t;x.beginPath(),x.arc(S,C,w,e,n),x.arc(S,C,T,n,e,!0),x.closePath(),x.fillStyle=d,x.fill()}};E(0);let ee=performance.now(),D=(0,s.interval)(0,s.animationFrameScheduler).pipe((0,c.map)(()=>(performance.now()-ee)/i),(0,c.takeWhile)(e=>e<=1),(0,c.takeUntil)(r),(0,c.tap)(e=>E(e))).subscribe({complete:()=>{P.get(e)?.isConfirming&&this.hideOverlay(e)}});t.subscription.add(D);let O=(0,s.merge)((0,s.fromEvent)(f,`click`).pipe((0,c.take)(1),(0,c.tap)(()=>{t.callback(),this.hideOverlay(e)})),(0,s.fromEvent)(document,`click`,{capture:!0}).pipe((0,c.filter)(t=>!f.contains(t.target)&&!e.contains(t.target)),(0,c.take)(1),(0,c.tap)(()=>this.hideOverlay(e))),(0,s.fromEvent)(document,`keydown`).pipe((0,c.filter)(e=>e.key===`Escape`),(0,c.take)(1),(0,c.tap)(()=>this.hideOverlay(e)))).pipe((0,c.take)(1),(0,c.takeUntil)(r)).subscribe();t.subscription.add(O)}hideOverlay(e){let t=P.get(e);if(t&&(t.cancel$.next(),t.isConfirming=!1,t.overlayElement)){let e=t.overlayElement;e.style.opacity=`0`,e.style.transform=`scale(0.6)`,(0,s.timer)(250).pipe((0,c.tap)(()=>{document.body.contains(e)&&document.body.removeChild(e)})).subscribe(),t.overlayElement=null}}cleanup(e){let t=P.get(e);t&&(t.cancel$.next(),t.cancel$.complete(),t.subscription.unsubscribe(),t.overlayElement&&document.body.contains(t.overlayElement)&&document.body.removeChild(t.overlayElement),P.delete(e))}disconnected(e){this.cleanup(e.element)}reconnected(e){let t=e.element,n=P.get(t);if(n){let e=new s.Subject,r=this.setupClickListener(t,n.options,e);P.set(t,{subscription:r,callback:n.callback,options:n.options,overlayElement:null,isConfirming:!1,cancel$:e})}}},pe=(0,d.directive)(fe),me=class extends u.AsyncDirective{constructor(...e){super(...e),this.element=null,this.items=[],this.subscription=null,this.typewriterSub=null,this.currentAnimation=null,this.addDisplayEl=null,this.disconnecting$=new s.Subject,this.initialized=!1}render(e){return l.noChange}update(e,[t={}]){if(this.element=e.element,!this.initialized&&this.isConnected){if(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new s.Subject),this.items=Array.from(this.element.children).filter(e=>e instanceof HTMLElement),this.items.length===0)return l.noChange;this.element.style.display=`inline-grid`,this.element.style.verticalAlign=`bottom`,this.items.forEach((e,t)=>{e.style.gridColumn=`1`,e.style.gridRow=`1`,e.style.visibility=t===0?``:`hidden`}),this.startCycling(t)}return l.noChange}disconnected(){this.cleanup()}reconnected(){}startCycling(e){let{mode:t=`replace`}=e;this.items.length<2||(t===`add`?this.startAddCycling(e):this.startReplaceCycling(e))}startReplaceCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0}=e,a=e=>(0,s.defer)(()=>new s.Observable(i=>{let a=this.items[e],o=(e-1+this.items.length)%this.items.length,l=this.items[o],u=parseInt(a.dataset.hold||``,10)||n,d=this.transitionItems(l,a,t,r).pipe((0,c.switchMap)(()=>(0,s.timer)(u)),(0,c.take)(1),(0,c.takeUntil)(this.disconnecting$)).subscribe({next:()=>{i.next(),i.complete()},error:e=>i.error(e)});return()=>d.unsubscribe()})),o=parseInt(this.items[0].dataset.hold||``,10)||n,l=(0,s.concat)((0,s.defer)(()=>new s.Observable(e=>{let t=(0,s.timer)(o).pipe((0,c.takeUntil)(this.disconnecting$)).subscribe({next:()=>{e.next(),e.complete()}});return()=>t.unsubscribe()})),(0,s.concat)(...[...Array.from({length:this.items.length},(e,t)=>t).slice(1),0].map(e=>a(e))).pipe((0,c.repeat)()));this.subscription=(0,s.timer)(i).pipe((0,c.switchMap)(()=>l),(0,c.takeUntil)(this.disconnecting$)).subscribe()}startAddCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0,separator:a=`, `}=e,o=this.items.map(e=>e.textContent||``);this.items.forEach(e=>{e.style.display=`none`});let l=document.createElement(`span`);this.element.appendChild(l),this.addDisplayEl=l;let u=(0,s.defer)(()=>{l.textContent=``;let e=``,i=o.map((i,o)=>{let u=parseInt(this.items[o].dataset.hold||``,10)||n,d=(o>0?a:``)+i;return(0,s.defer)(()=>t===`typewriter`?this.typewriterAdd(l,e,d,r).pipe((0,c.tap)(()=>{e+=d}),(0,c.switchMap)(()=>(0,s.timer)(u))):(0,s.defer)(()=>(e+=d,l.textContent=e,(0,s.timer)(u))))}),u=(0,s.defer)(()=>{let t=l.animate([{opacity:1},{opacity:0}],{duration:r,fill:`forwards`});return this.currentAnimation=t,(0,s.from)(t.finished).pipe((0,c.tap)(()=>{t.cancel(),l.textContent=``,l.style.opacity=``,e=``}),(0,c.switchMap)(()=>(0,s.timer)(300)))});return(0,s.concat)(...i,u)});this.subscription=(0,s.timer)(i).pipe((0,c.switchMap)(()=>u.pipe((0,c.repeat)())),(0,c.takeUntil)(this.disconnecting$)).subscribe()}typewriterAdd(e,t,n,r){if(n.length===0)return(0,s.of)(void 0);let i=r/n.length;return new s.Observable(r=>{let a=0,o=(0,s.interval)(i).pipe((0,c.tap)(()=>{a++,e.textContent=t+n.slice(0,a)}),(0,c.takeWhile)(()=>a<n.length),(0,c.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{e.textContent=t+n,r.next(),r.complete()}});return()=>o.unsubscribe()})}transitionItems(e,t,n,r){switch(this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,n){case`slide`:return this.slideTransition(e,t,r);case`typewriter`:return this.typewriterTransition(e,t,r);default:return this.fadeTransition(e,t,r)}}fadeTransition(e,t,n){let r=e.animate([{opacity:1},{opacity:0}],{duration:n/2,fill:`forwards`});return this.currentAnimation=r,(0,s.from)(r.finished).pipe((0,c.switchMap)(()=>{r.cancel(),e.style.visibility=`hidden`,t.style.visibility=``;let i=t.animate([{opacity:0},{opacity:1}],{duration:n/2,fill:`forwards`});return this.currentAnimation=i,(0,s.from)(i.finished).pipe((0,c.tap)(()=>{i.cancel()}),(0,c.map)(()=>{}),(0,c.catchError)(()=>s.EMPTY))}),(0,c.catchError)(()=>s.EMPTY))}slideTransition(e,t,n){let r=`cubic-bezier(0.4, 0, 0.2, 1)`;t.style.visibility=``;let i=e.animate([{transform:`translateY(0)`,opacity:1},{transform:`translateY(-100%)`,opacity:0}],{duration:n,fill:`forwards`,easing:r}),a=t.animate([{transform:`translateY(100%)`,opacity:0},{transform:`translateY(0)`,opacity:1}],{duration:n,fill:`forwards`,easing:r});return this.currentAnimation=a,(0,s.from)(a.finished).pipe((0,c.tap)(()=>{i.cancel(),a.cancel(),e.style.visibility=`hidden`}),(0,c.map)(()=>{}),(0,c.catchError)(()=>s.EMPTY))}typewriterTransition(e,t,n){let r=e.textContent||``,i=t.textContent||``,a=r.length+i.length;if(a===0)return e.style.visibility=`hidden`,t.style.visibility=``,(0,s.of)(void 0);let o=n/a;return new s.Observable(n=>{let a=r.length;return this.typewriterSub=(0,s.concat)((0,s.interval)(o).pipe((0,c.tap)(()=>{a--,e.textContent=r.slice(0,a)}),(0,c.takeWhile)(()=>a>0)),(0,s.defer)(()=>(e.style.visibility=`hidden`,e.textContent=r,t.style.visibility=``,t.textContent=``,(0,s.of)(null))),(0,s.defer)(()=>{let e=0;return(0,s.interval)(o).pipe((0,c.tap)(()=>{e++,t.textContent=i.slice(0,e)}),(0,c.takeWhile)(()=>e<i.length))})).pipe((0,c.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{t.textContent=i,n.next(),n.complete()}}),()=>{this.typewriterSub?.unsubscribe(),this.typewriterSub=null}})}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,this.subscription?.unsubscribe(),this.subscription=null,this.addDisplayEl&&=(this.addDisplayEl.remove(),null),this.items.forEach((e,t)=>{e.style.gridColumn=``,e.style.gridRow=``,e.style.visibility=t===0?``:`hidden`,e.style.opacity=``,e.style.transform=``}),this.element=null,this.items=[],this.initialized=!1}},he=(0,u.directive)(me),ge=class extends u.AsyncDirective{constructor(...e){super(...e),this.maxBlur=8,this.duration=400,this.isBlurred=!1,this.transitionSet=!1}render(e){}update(e,[t]){if(e.type!==d.PartType.ELEMENT)throw Error(`depthOfField directive must be used on an element`);this.element=e.element,this.maxBlur=t.maxBlur??8,this.duration=t.duration??400,this.transitionSet||n.t.value||(this.element.style.transition=`filter ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1), scale ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1)`,this.transitionSet=!0),t.active&&!this.isBlurred?this.applyBlur():!t.active&&this.isBlurred&&this.clearBlur()}applyBlur(){this.element.style.filter=`blur(${this.maxBlur}px) saturate(60%)`,this.element.style.scale=`1.01`,this.isBlurred=!0}clearBlur(){this.element.style.filter=``,this.element.style.scale=``,this.isBlurred=!1}disconnected(){this.isBlurred&&this.clearBlur()}reconnected(){}},_e=(0,d.directive)(ge),I=new s.BehaviorSubject(null),L=new s.BehaviorSubject(null),R=new Map,z=new Map,B=[];function V(e){B.push(`[${new Date().toISOString().slice(11,23)}] ${e}`)}var H=null;L.pipe((0,c.distinctUntilChanged)((e,t)=>e?.target===t?.target&&e?.position===t?.position)).subscribe(e=>{if(!e)return void(H&&(H.style.display=`none`));if(n.t.value)return;let t=function(){if(H)return H;let e=document.createElement(`div`);e.setAttribute(`data-schmancy-drop-line`,``),Object.assign(e.style,{position:`fixed`,height:`2px`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,borderRadius:`1px`,pointerEvents:`none`,zIndex:`10000`,transition:`top 100ms ease, left 100ms ease, width 100ms ease`,boxShadow:`0 0 4px var(--schmancy-sys-color-tertiary-default, #6750A4)`,display:`none`});for(let t of[`left`,`right`]){let n=document.createElement(`div`);Object.assign(n.style,{position:`absolute`,width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,top:`-2px`,[t]:`-3px`}),e.appendChild(n)}return document.body.appendChild(e),H=e,e}(),r=e.target.getBoundingClientRect(),i=e.position===`before`?r.top-1:r.bottom+1;Object.assign(t.style,{top:`${i}px`,left:`${r.left}px`,width:`${r.width}px`,display:`block`})});var U=class extends d.Directive{constructor(...e){super(...e),this.destroy$=new s.Subject}update(e,[r]){if(this.id=r,!this.element){let r=e.element;this.element=r,r.draggable=!0,r.style.cursor=`grab`,(0,s.fromEvent)(r,`dragstart`).pipe((0,c.tap)(e=>{e.stopPropagation(),e.dataTransfer?.setData(`application/json`,JSON.stringify({id:this.id})),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`),r.style.cursor=`grabbing`,B.length=0,V(`DRAGSTART id=${this.id} tag=${r.tagName}`),I.next(this.id),z.clear();let t=r.parentElement;if(t)for(let[e,n]of R)n.parentElement===t&&z.set(e,n.getBoundingClientRect())}),(0,c.observeOn)(s.animationFrameScheduler),(0,c.tap)(()=>{n.t.value||(r.style.transition=`transform 150ms ease, box-shadow 150ms ease, opacity 150ms ease`,r.style.transform=`scale(1.03)`,r.style.boxShadow=`0 8px 25px rgba(0,0,0,0.15)`,r.style.opacity=`0.6`,r.style.zIndex=`1000`,r.style.pointerEvents=`none`)}),(0,c.switchMap)(()=>(0,s.fromEvent)(r,`dragend`).pipe((0,c.take)(1),(0,c.tap)(()=>{let e=L.value;if(r.style.removeProperty(`transition`),r.style.removeProperty(`transform`),r.style.removeProperty(`box-shadow`),r.style.removeProperty(`opacity`),r.style.removeProperty(`z-index`),r.style.removeProperty(`pointer-events`),r.style.cursor=`grab`,e){let{target:r,destinationId:i,position:a}=e;V(`DROP source=${this.id} dest=${i} pos=${a}`),r.dispatchEvent(new CustomEvent(`drop`,{detail:{source:this.id,destination:i,position:a},bubbles:!0,composed:!0})),(0,s.timer)(0,s.animationFrameScheduler).pipe((0,c.skip)(1),(0,c.take)(1)).subscribe(()=>{if(!n.t.value&&z.size!==0){for(let[e,n]of z){let r=R.get(e);if(!r)continue;let i=r.getBoundingClientRect(),a=n.left-i.left,o=n.top-i.top;Math.abs(a)<1&&Math.abs(o)<1||r.animate([{transform:`translate(${a}px, ${o}px)`},{transform:`translate(0,0)`}],{duration:t.f.duration,easing:t.f.easingFallback,fill:`none`})}z.clear()}})}I.next(null),L.next(null),V(`DRAGEND id=${this.id}`),B.length!==0&&(B.length=0)}))),(0,c.takeUntil)(this.destroy$)).subscribe()}return this.registeredId&&this.registeredId!==r&&R.delete(this.registeredId),R.set(r,this.element),this.registeredId=r,l.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.registeredId&&R.delete(this.registeredId),this.element=void 0}reconnected(){this.destroy$=new s.Subject,this.element=void 0}render(e){return l.nothing}},ve=(0,d.directive)(U),W=class extends d.Directive{constructor(...e){super(...e),this.destroy$=new s.Subject}update(e,[t]){if(this.destinationId=t,!this.element){let t=e.element;this.element=t,(0,s.fromEvent)(t,`dragenter`).pipe((0,c.tap)(e=>{V(`NATIVE-DRAGENTER dest=${this.destinationId}`),e.preventDefault()}),(0,c.takeUntil)(this.destroy$)).subscribe(),(0,s.fromEvent)(t,`dragover`).pipe((0,c.tap)(e=>{V(`NATIVE-DRAGOVER dest=${this.destinationId}`),e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,c.takeUntil)(this.destroy$)).subscribe(),(0,s.fromEvent)(t,`drop`).pipe((0,c.tap)(e=>{e.preventDefault(),V(`NATIVE-DROP dest=${this.destinationId}`)}),(0,c.takeUntil)(this.destroy$)).subscribe(),I.pipe((0,c.switchMap)(e=>e&&e!==this.destinationId?(V(`DROP-ACTIVE dest=${this.destinationId} src=${e}`),(0,s.fromEvent)(t,`dragover`).pipe((0,c.tap)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,c.tap)(n=>{let r=function(e,t,n){let r=t.getBoundingClientRect(),i=n?R.get(n):null;if(!i)return e.clientY<r.top+r.height/2?`before`:`after`;let a=i.getBoundingClientRect();if(Math.abs(a.top-r.top)<r.height/2){let t=r.left+r.width/2;return a.left>r.left?e.clientX<t?`before`:null:e.clientX>=t?`after`:null}let o=r.top+r.height/2;return a.top>r.top?e.clientY<o?`before`:null:e.clientY>=o?`after`:null}(n,t,e);L.next(r?{target:t,destinationId:this.destinationId,position:r}:null)}))):(L.next(null),s.EMPTY)),(0,c.takeUntil)(this.destroy$)).subscribe()}return l.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.element=void 0}reconnected(){this.destroy$=new s.Subject,this.element=void 0}render(e){return l.nothing}},ye=(0,d.directive)(W),be=class extends u.AsyncDirective{constructor(...e){super(...e),this.element=null,this.disconnecting$=new s.Subject}subscribe(){let e=this.element;e&&(0,s.combineLatest)([(0,s.merge)((0,s.fromEvent)(window,`resize`,{passive:!0}),window.visualViewport?(0,s.merge)((0,s.fromEvent)(window.visualViewport,`resize`,{passive:!0}),(0,s.fromEvent)(window.visualViewport,`scroll`,{passive:!0})):s.EMPTY,(0,s.fromEvent)(window,`orientationchange`),(0,s.fromEvent)(document,`focusout`,{passive:!0}).pipe((0,c.switchMap)(()=>(0,s.timer)(100))),i.t(e),e.parentElement?i.t(e.parentElement):s.EMPTY).pipe((0,c.auditTime)(0,s.animationFrameScheduler),(0,c.startWith)(null)),r.n.bottomOffset$,r.n.fullscreen$]).pipe((0,c.filter)(()=>{let e=window.visualViewport;return!e||Math.abs(e.scale-1)<=.01}),(0,c.tap)(([,t,n])=>{let r=window.visualViewport,i=e.getBoundingClientRect(),a=e.style;a.boxSizing=`border-box`,a.height=`${Math.max(0,(r?.height??window.innerHeight)-i.top)}px`,a.width=`${Math.max(0,(r?.width??window.innerWidth)-i.left)}px`,a.paddingBottom=`${n?0:t}px`,a.minHeight=`0`,a.minWidth=`0`,a.overflow=`hidden`}),(0,c.takeUntil)(this.disconnecting$)).subscribe()}render(){}update(e){if(e.type!==d.PartType.ELEMENT)throw Error(`fill directive can only be used on elements`);let t=e.element;this.element!==t&&(this.element=t,this.subscribe())}disconnected(){this.disconnecting$.next(),this.element=null}reconnected(){this.element&&(this.disconnecting$=new s.Subject,this.subscribe())}},xe=(0,u.directive)(be),Se=class extends u.AsyncDirective{constructor(...e){super(...e),this.state=null,this.destroy$=new s.Subject,this.subscriptions=new s.Subscription}render(e){return l.noChange}update(e,[t={}]){let n=e.element,{emoji:r=``,position:i=`auto`,showAfter:a=0,hideAfter:o,animation:c=`point`,shimmerDuration:u=3e3}=t;return!this.state||this.state.emoji===r&&this.state.position===i&&this.state.showAfter===a&&this.state.hideAfter===o&&this.state.animation===c&&this.state.shimmerDuration===u||this.cleanup(),!this.state&&this.isConnected&&(this.state={emoji:r,position:i,showAfter:a,hideAfter:o,animation:c,shimmerDuration:u,element:n,activeAnimations:new Set},this.destroy$=new s.Subject,this.subscriptions=new s.Subscription,this.scheduleShow()),l.noChange}scheduleShow(){if(!this.state||!this.isConnected)return;let e=this.state.showAfter,t=(0,s.timer)(e).pipe((0,c.takeUntil)(this.destroy$),(0,c.filter)(()=>this.isConnected&&this.state!==null),(0,c.switchMap)(()=>a.t.activeCount>0?(0,s.timer)(500).pipe((0,c.takeUntil)(this.destroy$),(0,c.switchMap)(()=>this.waitForOverlaysClear())):(0,s.timer)(0))).subscribe({next:()=>{this.isConnected&&this.state&&this.show()},error:()=>{}});this.subscriptions.add(t)}waitForOverlaysClear(){return(0,s.timer)(500).pipe((0,c.takeUntil)(this.destroy$),(0,c.switchMap)(()=>this.isConnected?a.t.activeCount>0?this.waitForOverlaysClear():(0,s.timer)(0):s.EMPTY))}show(){if(!this.state||!this.state.element||!this.isConnected)return;let e=this.state.element,t=window.getComputedStyle(e),n=t.position;this.state.originalOverflow=e.style.overflow,this.state.originalPosition=e.style.position,n===`static`&&(e.style.position=`relative`),e.style.overflow=`hidden`;let r=document.createElement(`div`);r.className=`fyi-shimmer-overlay`;let i=t.borderRadius;if(Object.assign(r.style,{position:`absolute`,inset:`0`,pointerEvents:`none`,zIndex:`9999`,borderRadius:i,background:`
160
+ `,this.element.appendChild(this.styleElement),this.container=document.createElement(`div`),Object.assign(this.container.style,{position:`absolute`,inset:`0`,pointerEvents:`none`,zIndex:`0`,overflow:`hidden`,borderRadius:`inherit`,background:`rgba(0, 0, 0, 0.3)`}),this.element.insertBefore(this.container,this.element.firstChild),this.createFill(),this.createHexGrid(),this.createEnergyWave(),this.createScanLines(),this.createDataStreams(),this.createGlitchLayer(),this.createParticles(),this.createReadout())}createFill(){if(!this.container)return;let e=this.options.duration??600,t=4/this.getEffectiveSpeed();this.fillElement=document.createElement(`div`),Object.assign(this.fillElement.style,{position:`absolute`,left:`0`,right:`0`,bottom:`0`,height:`0%`,background:`linear-gradient(180deg,\n\t\t\t\t${this.variant.primary}00 0%,\n\t\t\t\t${this.variant.primary}25 20%,\n\t\t\t\t${this.variant.primary}50 60%,\n\t\t\t\t${this.variant.secondary}cc 100%\n\t\t\t)`,transition:`height ${e}ms cubic-bezier(0.4, 0, 0.2, 1)`,boxShadow:`\n\t\t\t\tinset 0 0 30px ${this.variant.glow}30,\n\t\t\t\tinset 0 -10px 20px ${this.variant.glow}20,\n\t\t\t\t0 0 15px ${this.variant.glow}25\n\t\t\t`,overflow:`hidden`,"--glow-color":this.variant.glow,animation:`future-fill-pulse ${t}s ease-in-out infinite`}),this.container.appendChild(this.fillElement)}createEnergyWave(){if(!this.fillElement)return;let e=this.getEffectiveSpeed();this.energyWave=document.createElement(`div`),Object.assign(this.energyWave.style,{position:`absolute`,left:`-10%`,top:`-12px`,width:`120%`,height:`24px`,background:`radial-gradient(ellipse at center,\n\t\t\t\t${this.variant.primary}90 0%,\n\t\t\t\t${this.variant.primary}40 30%,\n\t\t\t\ttransparent 70%\n\t\t\t)`,filter:`blur(6px) drop-shadow(0 0 6px ${this.variant.glow}80)`,animation:`energy-wave ${3/e}s ease-in-out infinite`}),this.fillElement.appendChild(this.energyWave)}createHexGrid(){if(!this.fillElement||!this.options.showGrid)return;let e=this.getEffectiveSpeed();this.hexGrid=document.createElement(`div`),Object.assign(this.hexGrid.style,{position:`absolute`,inset:`0`,background:this.createHexPattern(),opacity:`0.08`,animation:`hex-grid-pulse ${5/e}s ease-in-out infinite`,mixBlendMode:`screen`}),this.fillElement.appendChild(this.hexGrid)}createHexPattern(){let e=this.variant.gridColor;return`\n\t\t\trepeating-linear-gradient(\n\t\t\t\t0deg,\n\t\t\t\t${e}00 0px,\n\t\t\t\t${e}40 1px,\n\t\t\t\t${e}00 2px,\n\t\t\t\t${e}00 40px\n\t\t\t),\n\t\t\trepeating-linear-gradient(\n\t\t\t\t60deg,\n\t\t\t\t${e}00 0px,\n\t\t\t\t${e}40 1px,\n\t\t\t\t${e}00 2px,\n\t\t\t\t${e}00 40px\n\t\t\t),\n\t\t\trepeating-linear-gradient(\n\t\t\t\t120deg,\n\t\t\t\t${e}00 0px,\n\t\t\t\t${e}40 1px,\n\t\t\t\t${e}00 2px,\n\t\t\t\t${e}00 40px\n\t\t\t)\n\t\t`}createScanLines(){if(!this.fillElement||!this.options.showScanLines)return;let e=this.getEffectiveSpeed(),t=document.createElement(`div`);Object.assign(t.style,{position:`absolute`,inset:`0`,background:`repeating-linear-gradient(\n\t\t\t\t0deg,\n\t\t\t\ttransparent 0px,\n\t\t\t\t${this.variant.scanLine}08 1px,\n\t\t\t\ttransparent 2px,\n\t\t\t\ttransparent 4px\n\t\t\t)`,opacity:`0.15`,pointerEvents:`none`}),this.fillElement.appendChild(t),this.scanLine=document.createElement(`div`),Object.assign(this.scanLine.style,{position:`absolute`,left:`0`,right:`0`,top:`-1px`,height:`1px`,background:`linear-gradient(90deg,\n\t\t\t\ttransparent 0%,\n\t\t\t\t${this.variant.scanLine}cc 50%,\n\t\t\t\ttransparent 100%\n\t\t\t)`,boxShadow:`0 0 8px ${this.variant.glow}60`,animation:`scan-line-move ${6/e}s linear infinite`,opacity:`0.35`}),this.fillElement.appendChild(this.scanLine)}createParticles(){this.fillElement&&this.options.showParticles&&(this.particlesCanvas=document.createElement(`canvas`),Object.assign(this.particlesCanvas.style,{position:`absolute`,left:`0`,bottom:`0`,width:`100%`,height:`100%`,pointerEvents:`none`,zIndex:`5`}),this.fillElement.appendChild(this.particlesCanvas),this.particlesCtx=this.particlesCanvas.getContext(`2d`),this.resizeCanvas(),this.initParticles())}resizeCanvas(){if(!this.particlesCanvas||!this.fillElement)return;let e=this.fillElement.getBoundingClientRect();this.particlesCanvas.width=e.width,this.particlesCanvas.height=e.height}setupResizeObserver(){this.element&&typeof ResizeObserver<`u`&&(this.resizeObserver=new ResizeObserver(()=>{this.resizeCanvas()}),this.resizeObserver.observe(this.element))}initParticles(){let e=Math.floor(12*(this.options.intensity??1));for(let t=0;t<e;t++)this.spawnParticle()}spawnParticle(){if(!this.particlesCanvas)return;let e=this.particlesCanvas.width,t=this.particlesCanvas.height,n=this.getEffectiveSpeed();this.particles.push({x:Math.random()*e,y:t+30*Math.random(),vx:.5*(Math.random()-.5),vy:(-.4-1.2*Math.random())*n,size:.8+1.2*Math.random(),opacity:.2+.4*Math.random(),hue:60*Math.random()-30,life:0})}createDataStreams(){if(!this.fillElement)return;let e=this.getEffectiveSpeed();this.dataStreams=document.createElement(`div`),Object.assign(this.dataStreams.style,{position:`absolute`,inset:`0`,overflow:`hidden`,opacity:`0.18`,zIndex:`3`}),this.fillElement.appendChild(this.dataStreams);for(let t=0;t<3;t++){let n=document.createElement(`div`),r=15+30*t,i=4*Math.random(),a=3+2*Math.random();Object.assign(n.style,{position:`absolute`,left:`${r}%`,top:`0`,width:`1px`,height:`100%`,background:`linear-gradient(180deg,\n\t\t\t\t\ttransparent 0%,\n\t\t\t\t\t${this.variant.primary}cc 50%,\n\t\t\t\t\ttransparent 100%\n\t\t\t\t)`,animation:`data-stream ${a/e}s linear infinite`,animationDelay:`${i}s`,boxShadow:`0 0 4px ${this.variant.glow}40`}),this.dataStreams.appendChild(n)}}createGlitchLayer(){this.fillElement&&this.options.showGlitch&&(this.glitchLayer=document.createElement(`div`),Object.assign(this.glitchLayer.style,{position:`absolute`,inset:`0`,background:`linear-gradient(90deg,\n\t\t\t\t${this.variant.primary}20 0%,\n\t\t\t\ttransparent 50%,\n\t\t\t\t${this.variant.secondary}20 100%\n\t\t\t)`,opacity:`0.3`,animation:`glitch-shift 0.3s steps(1) infinite`,mixBlendMode:`overlay`}),this.fillElement.appendChild(this.glitchLayer))}createReadout(){if(!this.element||!this.options.showReadout)return;let e=this.getEffectiveSpeed();this.readout=document.createElement(`div`),Object.assign(this.readout.style,{position:`absolute`,top:`10px`,right:`10px`,fontFamily:`monospace`,fontSize:`1rem`,fontWeight:`600`,color:this.variant.primary,textShadow:`\n\t\t\t\t0 0 6px ${this.variant.glow}80,\n\t\t\t\t0 2px 4px rgba(0, 0, 0, 0.8)\n\t\t\t`,zIndex:`10`,pointerEvents:`none`,letterSpacing:`0.08em`,animation:`hologram-flicker ${8/e}s ease-in-out infinite`}),this.element.appendChild(this.readout);let t=document.createElement(`span`);t.textContent=` PWR`,t.style.opacity=`0.6`,t.style.fontSize=`0.7em`,this.readout.appendChild(t)}updateColors(){this.fillElement&&(this.fillElement.style.background=`linear-gradient(180deg,\n\t\t\t\t${this.variant.primary}00 0%,\n\t\t\t\t${this.variant.primary}25 20%,\n\t\t\t\t${this.variant.primary}50 60%,\n\t\t\t\t${this.variant.secondary}cc 100%\n\t\t\t)`,this.fillElement.style.boxShadow=`\n\t\t\t\tinset 0 0 30px ${this.variant.glow}30,\n\t\t\t\tinset 0 -10px 20px ${this.variant.glow}20,\n\t\t\t\t0 0 15px ${this.variant.glow}25\n\t\t\t`,this.fillElement.style.setProperty(`--glow-color`,this.variant.glow)),this.energyWave&&(this.energyWave.style.background=`radial-gradient(ellipse at center,\n\t\t\t\t${this.variant.primary}90 0%,\n\t\t\t\t${this.variant.primary}40 30%,\n\t\t\t\ttransparent 70%\n\t\t\t)`,this.energyWave.style.filter=`blur(6px) drop-shadow(0 0 6px ${this.variant.glow}80)`),this.hexGrid&&(this.hexGrid.style.background=this.createHexPattern()),this.dataStreams&&this.dataStreams.querySelectorAll(`div`).forEach(e=>{let t=e;t.style.background=`linear-gradient(180deg,\n\t\t\t\t\ttransparent 0%,\n\t\t\t\t\t${this.variant.primary}cc 50%,\n\t\t\t\t\ttransparent 100%\n\t\t\t\t)`,t.style.boxShadow=`0 0 4px ${this.variant.glow}40`}),this.glitchLayer&&(this.glitchLayer.style.background=`linear-gradient(90deg,\n\t\t\t\t${this.variant.primary}20 0%,\n\t\t\t\ttransparent 50%,\n\t\t\t\t${this.variant.secondary}20 100%\n\t\t\t)`),this.readout&&(this.readout.style.color=this.variant.primary,this.readout.style.textShadow=`\n\t\t\t\t0 0 6px ${this.variant.glow}80,\n\t\t\t\t0 2px 4px rgba(0, 0, 0, 0.8)\n\t\t\t`),this.element&&!1!==this.options.glassEffect&&(this.element.style.border=`1.5px solid ${this.variant.primary}30`)}startAnimation(){this.lastTime=performance.now(),this.animate(this.lastTime)}updateParticles(e){if(!this.particlesCanvas||!this.particlesCtx||!this.options.showParticles)return;let t=this.particlesCtx,n=this.particlesCanvas.width,r=this.particlesCanvas.height;t.clearRect(0,0,n,r);for(let n=this.particles.length-1;n>=0;n--){let r=this.particles[n],i=this.getEffectiveSpeed();if(r.x+=r.vx*e*60*i,r.y+=r.vy*e*60*i,r.life+=e,r.life>2&&(r.opacity*=.95),r.opacity<.01||r.y<-50){this.particles.splice(n,1),this.spawnParticle();continue}let a=t.createRadialGradient(r.x,r.y,0,r.x,r.y,2.5*r.size);a.addColorStop(0,this.hexToRGBA(this.variant.particle,.8*r.opacity)),a.addColorStop(.5,this.hexToRGBA(this.variant.particle,.15*r.opacity)),a.addColorStop(1,this.hexToRGBA(this.variant.particle,0)),t.fillStyle=a,t.beginPath(),t.arc(r.x,r.y,2.5*r.size,0,2*Math.PI),t.fill(),t.fillStyle=this.hexToRGBA(this.variant.particle,.7*r.opacity),t.beginPath(),t.arc(r.x,r.y,.8*r.size,0,2*Math.PI),t.fill()}}hexToRGBA(e,t){return`rgba(${parseInt(e.slice(1,3),16)}, ${parseInt(e.slice(3,5),16)}, ${parseInt(e.slice(5,7),16)}, ${t})`}updateFill(){let e=Math.max(0,this.options.percent),t=Math.min(e,100),n=e<20,r=e>100;this.currentPercent=t;let i=this.getEffectiveSpeed();if(this.fillElement){this.fillElement.style.height=`${t}%`;let e=this.options.duration??600;this.fillElement.style.transition=`height ${e}ms cubic-bezier(0.4, 0, 0.2, 1)`}if(this.readout){let t=Math.round(e);this.readout.firstChild.textContent=t.toString().padStart(3,`0`),this.options.criticalEffects&&(this.readout.style.animation=n?`critical-flash 1s ease-in-out infinite`:r?`overfill-surge 1.5s ease-in-out infinite`:`hologram-flicker ${8/i}s ease-in-out infinite`)}if(this.fillElement){let e=4/i;this.options.criticalEffects&&n?this.fillElement.style.animation=`future-fill-pulse 1s ease-in-out infinite, critical-flash 1.5s ease-in-out infinite`:this.options.criticalEffects&&r?this.fillElement.style.animation=`future-fill-pulse 1.2s ease-in-out infinite, overfill-surge 1.5s ease-in-out infinite`:this.fillElement.style.animation=`future-fill-pulse ${e}s ease-in-out infinite`}this.energyWave&&(this.energyWave.style.animation=`energy-wave ${3/i}s ease-in-out infinite`),this.scanLine&&(this.scanLine.style.animation=`scan-line-move ${6/i}s linear infinite`),this.hexGrid&&(this.hexGrid.style.animation=`hex-grid-pulse ${5/i}s ease-in-out infinite`)}disconnected(){this.animationFrame&&cancelAnimationFrame(this.animationFrame),this.resizeObserver&&this.resizeObserver.disconnect(),this.styleElement?.remove(),this.container?.remove(),this.readout?.remove(),this.element&&Object.assign(this.element.style,this.originalStyles),this.element=null,this.container=null,this.fillElement=null,this.energyWave=null,this.scanLine=null,this.particlesCanvas=null,this.particlesCtx=null,this.hexGrid=null,this.readout=null,this.dataStreams=null,this.glitchLayer=null,this.particles=[],this.resizeObserver=null}},ae=(0,u.directive)(ie),oe=()=>!1;function se(e){oe=e}function ce(){return oe()}function le(e,t=l.nothing){return ce()?e:t}var ue=class extends d.Directive{constructor(e){super(e),this.config={}}update(e,[t]){if(e.type!==d.PartType.ELEMENT)throw Error("The `classMap` directive must be used in the `class` attribute");let n=e.element;this.config=t,this.config.bgColor&&(n.style.backgroundColor=this.config.bgColor),this.config.color&&(n.style.color=this.config.color)}render(e){return this.config=e,l.nothing}},de=(0,d.directive)(ue),P=new WeakMap;function F(e,t){let n=e.match(/var\(([^,)]+)/);return n&&getComputedStyle(document.documentElement).getPropertyValue(n[1]).trim()||t}var fe=class extends d.Directive{constructor(e){if(super(e),e.type!==d.PartType.ELEMENT)throw Error(`confirmClick directive can only be used on elements`)}render(e,t){}update(e,[t,n={}]){let r=e.element,i=P.get(r);if(i){if(i.callback=t,this.optionsEqual(i.options,n))return;this.cleanup(r)}let a=new s.Subject,o=this.setupClickListener(r,n??{},a);P.set(r,{subscription:o,callback:t,options:n??{},overlayElement:null,isConfirming:!1,cancel$:a})}optionsEqual(e,t){return t?e.timeout===t.timeout&&e.icon===t.icon:Object.keys(e).length===0}setupClickListener(e,t,n){return(0,s.fromEvent)(e,`click`).pipe((0,c.tap)(r=>{let i=P.get(e);i&&!i.isConfirming&&(r.stopPropagation(),r.preventDefault(),i.isConfirming=!0,this.showOverlay(e,i,t,n))})).subscribe()}showOverlay(e,t,n,r){let i=n.timeout??3e3,a=e,o=n.icon??a.icon??a._capturedIcon??e.textContent?.trim()??`warning`,l=F(`var(--schmancy-sys-color-error-default)`,`#dc2626`),u=F(`var(--schmancy-sys-color-error-on)`,`#ffffff`),d=F(`var(--schmancy-sys-color-error-container)`,`#fecaca`),f=document.createElement(`div`);f.setAttribute(`role`,`status`),f.setAttribute(`aria-label`,`Click again to confirm`);let p=e.getBoundingClientRect(),m=p.width,h=p.height,g=window.devicePixelRatio||1,_=getComputedStyle(e);Object.assign(f.style,{position:`fixed`,top:`${p.top}px`,left:`${p.left}px`,width:`${m}px`,height:`${h}px`,zIndex:`10000`,borderRadius:_.borderRadius||`50%`,overflow:`hidden`,cursor:`pointer`,opacity:`0`,transform:`scale(0.6)`,transition:`opacity 250ms cubic-bezier(0.22, 1.25, 0.36, 1), transform 300ms cubic-bezier(0.22, 1.25, 0.36, 1)`});let v=document.createElement(`canvas`);v.width=m*g,v.height=h*g,v.style.width=`${m}px`,v.style.height=`${h}px`,v.style.position=`absolute`,v.style.top=`0`,v.style.left=`0`,f.appendChild(v);let y=Math.round(.5*Math.min(m,h)),b=document.createElement(`schmancy-icon`);b.textContent=o,b.setAttribute(`size`,`${y}px`),Object.assign(b.style,{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:u,pointerEvents:`none`}),f.appendChild(b),document.body.appendChild(f),t.overlayElement=f,(0,s.of)(null).pipe((0,c.observeOn)(s.animationFrameScheduler)).subscribe(()=>{f.style.opacity=`1`,f.style.transform=`scale(1)`});let x=v.getContext(`2d`);if(!x)return;x.scale(g,g);let S=m/2,C=h/2,w=Math.min(m,h)/2-1,T=w-3,E=e=>{x.clearRect(0,0,m,h),x.beginPath(),x.arc(S,C,T,0,2*Math.PI),x.fillStyle=l,x.fill();let t=1-e;if(t>0){let e=-Math.PI/2,n=e+2*Math.PI*t;x.beginPath(),x.arc(S,C,w,e,n),x.arc(S,C,T,n,e,!0),x.closePath(),x.fillStyle=d,x.fill()}};E(0);let ee=performance.now(),D=(0,s.interval)(0,s.animationFrameScheduler).pipe((0,c.map)(()=>(performance.now()-ee)/i),(0,c.takeWhile)(e=>e<=1),(0,c.takeUntil)(r),(0,c.tap)(e=>E(e))).subscribe({complete:()=>{P.get(e)?.isConfirming&&this.hideOverlay(e)}});t.subscription.add(D);let O=(0,s.merge)((0,s.fromEvent)(f,`click`).pipe((0,c.take)(1),(0,c.tap)(()=>{t.callback(),this.hideOverlay(e)})),(0,s.fromEvent)(document,`click`,{capture:!0}).pipe((0,c.filter)(t=>!f.contains(t.target)&&!e.contains(t.target)),(0,c.take)(1),(0,c.tap)(()=>this.hideOverlay(e))),(0,s.fromEvent)(document,`keydown`).pipe((0,c.filter)(e=>e.key===`Escape`),(0,c.take)(1),(0,c.tap)(()=>this.hideOverlay(e)))).pipe((0,c.take)(1),(0,c.takeUntil)(r)).subscribe();t.subscription.add(O)}hideOverlay(e){let t=P.get(e);if(t&&(t.cancel$.next(),t.isConfirming=!1,t.overlayElement)){let e=t.overlayElement;e.style.opacity=`0`,e.style.transform=`scale(0.6)`,(0,s.timer)(250).pipe((0,c.tap)(()=>{document.body.contains(e)&&document.body.removeChild(e)})).subscribe(),t.overlayElement=null}}cleanup(e){let t=P.get(e);t&&(t.cancel$.next(),t.cancel$.complete(),t.subscription.unsubscribe(),t.overlayElement&&document.body.contains(t.overlayElement)&&document.body.removeChild(t.overlayElement),P.delete(e))}disconnected(e){this.cleanup(e.element)}reconnected(e){let t=e.element,n=P.get(t);if(n){let e=new s.Subject,r=this.setupClickListener(t,n.options,e);P.set(t,{subscription:r,callback:n.callback,options:n.options,overlayElement:null,isConfirming:!1,cancel$:e})}}},pe=(0,d.directive)(fe),me=class extends u.AsyncDirective{constructor(...e){super(...e),this.element=null,this.items=[],this.subscription=null,this.typewriterSub=null,this.currentAnimation=null,this.addDisplayEl=null,this.disconnecting$=new s.Subject,this.initialized=!1}render(e){return l.noChange}update(e,[t={}]){if(this.element=e.element,!this.initialized&&this.isConnected){if(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new s.Subject),this.items=Array.from(this.element.children).filter(e=>e instanceof HTMLElement),this.items.length===0)return l.noChange;this.element.style.display=`inline-grid`,this.element.style.verticalAlign=`bottom`,this.items.forEach((e,t)=>{e.style.gridColumn=`1`,e.style.gridRow=`1`,e.style.visibility=t===0?``:`hidden`}),this.startCycling(t)}return l.noChange}disconnected(){this.cleanup()}reconnected(){}startCycling(e){let{mode:t=`replace`}=e;this.items.length<2||(t===`add`?this.startAddCycling(e):this.startReplaceCycling(e))}startReplaceCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0}=e,a=e=>(0,s.defer)(()=>new s.Observable(i=>{let a=this.items[e],o=(e-1+this.items.length)%this.items.length,l=this.items[o],u=parseInt(a.dataset.hold||``,10)||n,d=this.transitionItems(l,a,t,r).pipe((0,c.switchMap)(()=>(0,s.timer)(u)),(0,c.take)(1),(0,c.takeUntil)(this.disconnecting$)).subscribe({next:()=>{i.next(),i.complete()},error:e=>i.error(e)});return()=>d.unsubscribe()})),o=parseInt(this.items[0].dataset.hold||``,10)||n,l=(0,s.concat)((0,s.defer)(()=>new s.Observable(e=>{let t=(0,s.timer)(o).pipe((0,c.takeUntil)(this.disconnecting$)).subscribe({next:()=>{e.next(),e.complete()}});return()=>t.unsubscribe()})),(0,s.concat)(...[...Array.from({length:this.items.length},(e,t)=>t).slice(1),0].map(e=>a(e))).pipe((0,c.repeat)()));this.subscription=(0,s.timer)(i).pipe((0,c.switchMap)(()=>l),(0,c.takeUntil)(this.disconnecting$)).subscribe()}startAddCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0,separator:a=`, `}=e,o=this.items.map(e=>e.textContent||``);this.items.forEach(e=>{e.style.display=`none`});let l=document.createElement(`span`);this.element.appendChild(l),this.addDisplayEl=l;let u=(0,s.defer)(()=>{l.textContent=``;let e=``,i=o.map((i,o)=>{let u=parseInt(this.items[o].dataset.hold||``,10)||n,d=(o>0?a:``)+i;return(0,s.defer)(()=>t===`typewriter`?this.typewriterAdd(l,e,d,r).pipe((0,c.tap)(()=>{e+=d}),(0,c.switchMap)(()=>(0,s.timer)(u))):(0,s.defer)(()=>(e+=d,l.textContent=e,(0,s.timer)(u))))}),u=(0,s.defer)(()=>{let t=l.animate([{opacity:1},{opacity:0}],{duration:r,fill:`forwards`});return this.currentAnimation=t,(0,s.from)(t.finished).pipe((0,c.tap)(()=>{t.cancel(),l.textContent=``,l.style.opacity=``,e=``}),(0,c.switchMap)(()=>(0,s.timer)(300)))});return(0,s.concat)(...i,u)});this.subscription=(0,s.timer)(i).pipe((0,c.switchMap)(()=>u.pipe((0,c.repeat)())),(0,c.takeUntil)(this.disconnecting$)).subscribe()}typewriterAdd(e,t,n,r){if(n.length===0)return(0,s.of)(void 0);let i=r/n.length;return new s.Observable(r=>{let a=0,o=(0,s.interval)(i).pipe((0,c.tap)(()=>{a++,e.textContent=t+n.slice(0,a)}),(0,c.takeWhile)(()=>a<n.length),(0,c.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{e.textContent=t+n,r.next(),r.complete()}});return()=>o.unsubscribe()})}transitionItems(e,t,n,r){switch(this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,n){case`slide`:return this.slideTransition(e,t,r);case`typewriter`:return this.typewriterTransition(e,t,r);default:return this.fadeTransition(e,t,r)}}fadeTransition(e,t,n){let r=e.animate([{opacity:1},{opacity:0}],{duration:n/2,fill:`forwards`});return this.currentAnimation=r,(0,s.from)(r.finished).pipe((0,c.switchMap)(()=>{r.cancel(),e.style.visibility=`hidden`,t.style.visibility=``;let i=t.animate([{opacity:0},{opacity:1}],{duration:n/2,fill:`forwards`});return this.currentAnimation=i,(0,s.from)(i.finished).pipe((0,c.tap)(()=>{i.cancel()}),(0,c.map)(()=>{}),(0,c.catchError)(()=>s.EMPTY))}),(0,c.catchError)(()=>s.EMPTY))}slideTransition(e,t,n){let r=`cubic-bezier(0.4, 0, 0.2, 1)`;t.style.visibility=``;let i=e.animate([{transform:`translateY(0)`,opacity:1},{transform:`translateY(-100%)`,opacity:0}],{duration:n,fill:`forwards`,easing:r}),a=t.animate([{transform:`translateY(100%)`,opacity:0},{transform:`translateY(0)`,opacity:1}],{duration:n,fill:`forwards`,easing:r});return this.currentAnimation=a,(0,s.from)(a.finished).pipe((0,c.tap)(()=>{i.cancel(),a.cancel(),e.style.visibility=`hidden`}),(0,c.map)(()=>{}),(0,c.catchError)(()=>s.EMPTY))}typewriterTransition(e,t,n){let r=e.textContent||``,i=t.textContent||``,a=r.length+i.length;if(a===0)return e.style.visibility=`hidden`,t.style.visibility=``,(0,s.of)(void 0);let o=n/a;return new s.Observable(n=>{let a=r.length;return this.typewriterSub=(0,s.concat)((0,s.interval)(o).pipe((0,c.tap)(()=>{a--,e.textContent=r.slice(0,a)}),(0,c.takeWhile)(()=>a>0)),(0,s.defer)(()=>(e.style.visibility=`hidden`,e.textContent=r,t.style.visibility=``,t.textContent=``,(0,s.of)(null))),(0,s.defer)(()=>{let e=0;return(0,s.interval)(o).pipe((0,c.tap)(()=>{e++,t.textContent=i.slice(0,e)}),(0,c.takeWhile)(()=>e<i.length))})).pipe((0,c.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{t.textContent=i,n.next(),n.complete()}}),()=>{this.typewriterSub?.unsubscribe(),this.typewriterSub=null}})}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,this.subscription?.unsubscribe(),this.subscription=null,this.addDisplayEl&&=(this.addDisplayEl.remove(),null),this.items.forEach((e,t)=>{e.style.gridColumn=``,e.style.gridRow=``,e.style.visibility=t===0?``:`hidden`,e.style.opacity=``,e.style.transform=``}),this.element=null,this.items=[],this.initialized=!1}},he=(0,u.directive)(me),ge=class extends u.AsyncDirective{constructor(...e){super(...e),this.maxBlur=8,this.duration=400,this.isBlurred=!1,this.transitionSet=!1}render(e){}update(e,[t]){if(e.type!==d.PartType.ELEMENT)throw Error(`depthOfField directive must be used on an element`);this.element=e.element,this.maxBlur=t.maxBlur??8,this.duration=t.duration??400,this.transitionSet||n.t.value||(this.element.style.transition=`filter ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1), scale ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1)`,this.transitionSet=!0),t.active&&!this.isBlurred?this.applyBlur():!t.active&&this.isBlurred&&this.clearBlur()}applyBlur(){this.element.style.filter=`blur(${this.maxBlur}px) saturate(60%)`,this.element.style.scale=`1.01`,this.isBlurred=!0}clearBlur(){this.element.style.filter=``,this.element.style.scale=``,this.isBlurred=!1}disconnected(){this.isBlurred&&this.clearBlur()}reconnected(){}},_e=(0,d.directive)(ge),I=new s.BehaviorSubject(null),L=new s.BehaviorSubject(null),R=new Map,z=new Map,B=[];function V(e){B.push(`[${new Date().toISOString().slice(11,23)}] ${e}`)}var H=null;L.pipe((0,c.distinctUntilChanged)((e,t)=>e?.target===t?.target&&e?.position===t?.position)).subscribe(e=>{if(!e)return void(H&&(H.style.display=`none`));if(n.t.value)return;let t=function(){if(H)return H;let e=document.createElement(`div`);e.setAttribute(`data-schmancy-drop-line`,``),Object.assign(e.style,{position:`fixed`,height:`2px`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,borderRadius:`1px`,pointerEvents:`none`,zIndex:`10000`,transition:`top 100ms ease, left 100ms ease, width 100ms ease`,boxShadow:`0 0 4px var(--schmancy-sys-color-tertiary-default, #6750A4)`,display:`none`});for(let t of[`left`,`right`]){let n=document.createElement(`div`);Object.assign(n.style,{position:`absolute`,width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,top:`-2px`,[t]:`-3px`}),e.appendChild(n)}return document.body.appendChild(e),H=e,e}(),r=e.target.getBoundingClientRect(),i=e.position===`before`?r.top-1:r.bottom+1;Object.assign(t.style,{top:`${i}px`,left:`${r.left}px`,width:`${r.width}px`,display:`block`})});var U=class extends d.Directive{constructor(...e){super(...e),this.destroy$=new s.Subject}update(e,[r]){if(this.id=r,!this.element){let r=e.element;this.element=r,r.draggable=!0,r.style.cursor=`grab`,(0,s.fromEvent)(r,`dragstart`).pipe((0,c.tap)(e=>{e.stopPropagation(),e.dataTransfer?.setData(`application/json`,JSON.stringify({id:this.id})),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`),r.style.cursor=`grabbing`,B.length=0,V(`DRAGSTART id=${this.id} tag=${r.tagName}`),I.next(this.id),z.clear();let t=r.parentElement;if(t)for(let[e,n]of R)n.parentElement===t&&z.set(e,n.getBoundingClientRect())}),(0,c.observeOn)(s.animationFrameScheduler),(0,c.tap)(()=>{n.t.value||(r.style.transition=`transform 150ms ease, box-shadow 150ms ease, opacity 150ms ease`,r.style.transform=`scale(1.03)`,r.style.boxShadow=`0 8px 25px rgba(0,0,0,0.15)`,r.style.opacity=`0.6`,r.style.zIndex=`1000`,r.style.pointerEvents=`none`)}),(0,c.switchMap)(()=>(0,s.fromEvent)(r,`dragend`).pipe((0,c.take)(1),(0,c.tap)(()=>{let e=L.value;if(r.style.removeProperty(`transition`),r.style.removeProperty(`transform`),r.style.removeProperty(`box-shadow`),r.style.removeProperty(`opacity`),r.style.removeProperty(`z-index`),r.style.removeProperty(`pointer-events`),r.style.cursor=`grab`,e){let{target:r,destinationId:i,position:a}=e;V(`DROP source=${this.id} dest=${i} pos=${a}`),r.dispatchEvent(new CustomEvent(`drop`,{detail:{source:this.id,destination:i,position:a},bubbles:!0,composed:!0})),(0,s.timer)(0,s.animationFrameScheduler).pipe((0,c.skip)(1),(0,c.take)(1)).subscribe(()=>{if(!n.t.value&&z.size!==0){for(let[e,n]of z){let r=R.get(e);if(!r)continue;let i=r.getBoundingClientRect(),a=n.left-i.left,o=n.top-i.top;Math.abs(a)<1&&Math.abs(o)<1||r.animate([{transform:`translate(${a}px, ${o}px)`},{transform:`translate(0,0)`}],{duration:t.f.duration,easing:t.f.easingFallback,fill:`none`})}z.clear()}})}I.next(null),L.next(null),V(`DRAGEND id=${this.id}`),B.length!==0&&(B.length=0)}))),(0,c.takeUntil)(this.destroy$)).subscribe()}return this.registeredId&&this.registeredId!==r&&R.delete(this.registeredId),R.set(r,this.element),this.registeredId=r,l.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.registeredId&&R.delete(this.registeredId),this.element=void 0}reconnected(){this.destroy$=new s.Subject,this.element=void 0}render(e){return l.nothing}},ve=(0,d.directive)(U),W=class extends d.Directive{constructor(...e){super(...e),this.destroy$=new s.Subject}update(e,[t]){if(this.destinationId=t,!this.element){let t=e.element;this.element=t,(0,s.fromEvent)(t,`dragenter`).pipe((0,c.tap)(e=>{V(`NATIVE-DRAGENTER dest=${this.destinationId}`),e.preventDefault()}),(0,c.takeUntil)(this.destroy$)).subscribe(),(0,s.fromEvent)(t,`dragover`).pipe((0,c.tap)(e=>{V(`NATIVE-DRAGOVER dest=${this.destinationId}`),e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,c.takeUntil)(this.destroy$)).subscribe(),(0,s.fromEvent)(t,`drop`).pipe((0,c.tap)(e=>{e.preventDefault(),V(`NATIVE-DROP dest=${this.destinationId}`)}),(0,c.takeUntil)(this.destroy$)).subscribe(),I.pipe((0,c.switchMap)(e=>e&&e!==this.destinationId?(V(`DROP-ACTIVE dest=${this.destinationId} src=${e}`),(0,s.fromEvent)(t,`dragover`).pipe((0,c.tap)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,c.tap)(n=>{let r=function(e,t,n){let r=t.getBoundingClientRect(),i=n?R.get(n):null;if(!i)return e.clientY<r.top+r.height/2?`before`:`after`;let a=i.getBoundingClientRect();if(Math.abs(a.top-r.top)<r.height/2){let t=r.left+r.width/2;return a.left>r.left?e.clientX<t?`before`:null:e.clientX>=t?`after`:null}let o=r.top+r.height/2;return a.top>r.top?e.clientY<o?`before`:null:e.clientY>=o?`after`:null}(n,t,e);L.next(r?{target:t,destinationId:this.destinationId,position:r}:null)}))):(L.next(null),s.EMPTY)),(0,c.takeUntil)(this.destroy$)).subscribe()}return l.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.element=void 0}reconnected(){this.destroy$=new s.Subject,this.element=void 0}render(e){return l.nothing}},ye=(0,d.directive)(W),be=class extends u.AsyncDirective{constructor(...e){super(...e),this.element=null,this.disconnecting$=new s.Subject}subscribe(){let e=this.element;e&&(0,s.combineLatest)([(0,s.merge)((0,s.fromEvent)(window,`resize`,{passive:!0}),window.visualViewport?(0,s.merge)((0,s.fromEvent)(window.visualViewport,`resize`,{passive:!0}),(0,s.fromEvent)(window.visualViewport,`scroll`,{passive:!0})):s.EMPTY,(0,s.fromEvent)(window,`orientationchange`),(0,s.fromEvent)(document,`focusout`,{passive:!0}).pipe((0,c.switchMap)(()=>(0,s.timer)(100))),i.t(e),e.parentElement?i.t(e.parentElement):s.EMPTY).pipe((0,c.auditTime)(0,s.animationFrameScheduler),(0,c.startWith)(null)),r.n.bottomOffset$,r.n.fullscreen$]).pipe((0,c.filter)(()=>{let e=window.visualViewport;return!e||Math.abs(e.scale-1)<=.01}),(0,c.map)(([,t,n])=>{let r=window.visualViewport,i=e.getBoundingClientRect();return{height:`${Math.max(0,(r?.height??window.innerHeight)-i.top)}px`,width:`${Math.max(0,(r?.width??window.innerWidth)-i.left)}px`,paddingBottom:`${n?0:t}px`}}),(0,c.distinctUntilChanged)((e,t)=>e.height===t.height&&e.width===t.width&&e.paddingBottom===t.paddingBottom),(0,c.tap)(({height:t,width:n,paddingBottom:r})=>{let i=e.style;i.boxSizing=`border-box`,i.height=t,i.width=n,i.paddingBottom=r,i.minHeight=`0`,i.minWidth=`0`,i.overflow=`hidden`}),(0,c.takeUntil)(this.disconnecting$)).subscribe()}render(){}update(e){if(e.type!==d.PartType.ELEMENT)throw Error(`fill directive can only be used on elements`);let t=e.element;this.element!==t&&(this.element=t,this.subscribe())}disconnected(){this.disconnecting$.next(),this.element=null}reconnected(){this.element&&(this.disconnecting$=new s.Subject,this.subscribe())}},xe=(0,u.directive)(be),Se=class extends u.AsyncDirective{constructor(...e){super(...e),this.state=null,this.destroy$=new s.Subject,this.subscriptions=new s.Subscription}render(e){return l.noChange}update(e,[t={}]){let n=e.element,{emoji:r=``,position:i=`auto`,showAfter:a=0,hideAfter:o,animation:c=`point`,shimmerDuration:u=3e3}=t;return!this.state||this.state.emoji===r&&this.state.position===i&&this.state.showAfter===a&&this.state.hideAfter===o&&this.state.animation===c&&this.state.shimmerDuration===u||this.cleanup(),!this.state&&this.isConnected&&(this.state={emoji:r,position:i,showAfter:a,hideAfter:o,animation:c,shimmerDuration:u,element:n,activeAnimations:new Set},this.destroy$=new s.Subject,this.subscriptions=new s.Subscription,this.scheduleShow()),l.noChange}scheduleShow(){if(!this.state||!this.isConnected)return;let e=this.state.showAfter,t=(0,s.timer)(e).pipe((0,c.takeUntil)(this.destroy$),(0,c.filter)(()=>this.isConnected&&this.state!==null),(0,c.switchMap)(()=>a.t.activeCount>0?(0,s.timer)(500).pipe((0,c.takeUntil)(this.destroy$),(0,c.switchMap)(()=>this.waitForOverlaysClear())):(0,s.timer)(0))).subscribe({next:()=>{this.isConnected&&this.state&&this.show()},error:()=>{}});this.subscriptions.add(t)}waitForOverlaysClear(){return(0,s.timer)(500).pipe((0,c.takeUntil)(this.destroy$),(0,c.switchMap)(()=>this.isConnected?a.t.activeCount>0?this.waitForOverlaysClear():(0,s.timer)(0):s.EMPTY))}show(){if(!this.state||!this.state.element||!this.isConnected)return;let e=this.state.element,t=window.getComputedStyle(e),n=t.position;this.state.originalOverflow=e.style.overflow,this.state.originalPosition=e.style.position,n===`static`&&(e.style.position=`relative`),e.style.overflow=`hidden`;let r=document.createElement(`div`);r.className=`fyi-shimmer-overlay`;let i=t.borderRadius;if(Object.assign(r.style,{position:`absolute`,inset:`0`,pointerEvents:`none`,zIndex:`9999`,borderRadius:i,background:`
161
161
  linear-gradient(
162
162
  108deg,
163
163
  transparent 0%,
@@ -307,7 +307,7 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./audio-Q9oB_cQR.cjs`),t=requir
307
307
  transition: opacity 0s !important;
308
308
  }
309
309
  }
310
- `,document.head.appendChild(e)})(),this.state?.autoHideSub&&(this.state.autoHideSub.unsubscribe(),this.state.autoHideSub=null);let r=n.t.value;if(this.state?.overlay&&this.state.isDimmed)return this.state.isDimmed=!1,this.state.options=t,this.state.fadeFinishedSub?.unsubscribe(),this.state.fadeFinishedSub=null,this.awakenOverlay(t,r),void this.scheduleAutoHide(t);this.state?.overlay||this.createOverlay(e,t,r),this.scheduleAutoHide(t)}awakenOverlay(e,n){if(!this.state?.overlay)return;let r=this.state.overlay;r.style.setProperty(`--nebula-intensity`,String(e.intensity)),r.animate([{opacity:e.idleOpacity,transform:`scale(0.98) translateZ(0)`},{opacity:.7*e.intensity,transform:`scale(1.01) translateZ(0)`},{opacity:e.intensity,transform:`scale(1) translateZ(0)`}],{duration:n?0:.6*e.fadeInDuration,easing:n?`linear`:t._(t.d),fill:`forwards`}),r.classList.remove(`paused`,`dimmed`),r.classList.add(`running`),r.style.animation=``}createOverlay(e,n,r){let i=window.getComputedStyle(e).position,a=e.style.position,o=e.style.overflow,s=e.style.contain;i===`static`&&(e.style.position=`relative`),e.style.overflow=`hidden`,e.style.contain=`paint`;let c=n.temperature,l=Math.max(0,c),u=Math.max(0,-c),d=n.intensity,f=Math.round(3+5*n.chromaticAberration),p=Math.round(20+60*u),m=Math.round(80+80*u),h=Math.round(20+80*l),g=Math.round(255-55*l),_=Math.round(100+100*u),v=Math.round(100*l),y=Math.round(255-55*l),b=Math.round(100+55*u),x=Math.round(255-55*u),S=document.createElement(`div`);if(S.className=`nebula-overlay running`,Object.assign(S.style,{position:`absolute`,inset:`-20%`,zIndex:n.background?`-1`:`9999`,opacity:`0`,"--nebula-intensity":String(d),"--nebula-blur-base":10*n.blur+`px`,"--nebula-idle-opacity":String(n.idleOpacity),"--nebula-aberration":`${f}px`,"--nebula-blur-core":12*n.blur+`px`}),r){let e=document.createElement(`div`);Object.assign(e.style,{position:`absolute`,inset:`0`,background:`\n\t\t\t\t\tradial-gradient(ellipse 45% 40% at 50% 50%,\n\t\t\t\t\t\trgba(255,${b},${x},${.12*d}) 0%,\n\t\t\t\t\t\trgba(${h},100,${g},${.06*d}) 40%,\n\t\t\t\t\t\ttransparent 70%),\n\t\t\t\t\tradial-gradient(circle 8% at 50% 50%,\n\t\t\t\t\t\trgba(255,255,255,${.15*d}) 0%,\n\t\t\t\t\t\ttransparent 100%)`,filter:`blur(${10*n.blur}px)`,opacity:String(d)}),S.appendChild(e)}else{let e=document.createElement(`div`);e.className=`nebula-layer`,Object.assign(e.style,{position:`absolute`,inset:`-5%`,background:`\n\t\t\t\t\tlinear-gradient(155deg,\n\t\t\t\t\t\ttransparent 0%, transparent 38%,\n\t\t\t\t\t\trgba(8,2,18,${.35*d}) 44%,\n\t\t\t\t\t\trgba(0,0,0,${.4*d}) 49%,\n\t\t\t\t\t\trgba(8,2,18,${.35*d}) 54%,\n\t\t\t\t\t\ttransparent 60%, transparent 100%),\n\t\t\t\t\tlinear-gradient(225deg,\n\t\t\t\t\t\ttransparent 0%, transparent 42%,\n\t\t\t\t\t\trgba(5,0,12,${.28*d}) 47%,\n\t\t\t\t\t\trgba(0,0,0,${.32*d}) 50%,\n\t\t\t\t\t\trgba(5,0,12,${.28*d}) 53%,\n\t\t\t\t\t\ttransparent 58%, transparent 100%),\n\t\t\t\t\tradial-gradient(ellipse 110% 110% at 50% 50%,\n\t\t\t\t\t\ttransparent 35%,\n\t\t\t\t\t\trgba(3,0,8,${.2*d}) 60%,\n\t\t\t\t\t\trgba(0,0,0,${.35*d}) 85%),\n\t\t\t\t\tradial-gradient(ellipse 50% 45% at 30% 35%,\n\t\t\t\t\t\trgba(0,0,0,${.3*d}) 0%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 40% 55% at 70% 65%,\n\t\t\t\t\t\trgba(0,0,0,${.25*d}) 0%,\n\t\t\t\t\t\ttransparent 60%)`,filter:`blur(${4*n.blur}px)`,mixBlendMode:`multiply`,transform:`translateZ(0)`}),S.appendChild(e);let t=document.createElement(`div`);t.className=`nebula-layer`,Object.assign(t.style,{position:`absolute`,inset:`-15%`,background:`\n\t\t\t\t\tradial-gradient(ellipse 55% 50% at 48% 50%,\n\t\t\t\t\t\trgba(255,${p},${m},${.14*d}) 0%,\n\t\t\t\t\t\trgba(255,${p},${m},${.06*d}) 35%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 30% 35% at 30% 35%,\n\t\t\t\t\t\trgba(255,${_},200,${.1*d}) 0%,\n\t\t\t\t\t\trgba(255,${_},200,${.03*d}) 50%,\n\t\t\t\t\t\ttransparent 70%),\n\t\t\t\t\tradial-gradient(ellipse 25% 30% at 65% 70%,\n\t\t\t\t\t\trgba(255,${Math.min(255,p+30)},${m},${.08*d}) 0%,\n\t\t\t\t\t\ttransparent 60%)`,filter:`blur(${18*n.blur}px) saturate(1.4)`,mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-chromatic-red ${35e3/n.speed}ms ${We} infinite`}),S.appendChild(t);let r=document.createElement(`div`);r.className=`nebula-layer`,Object.assign(r.style,{position:`absolute`,inset:`-15%`,background:`\n\t\t\t\t\tradial-gradient(ellipse 50% 55% at 52% 50%,\n\t\t\t\t\t\trgba(${h},100,${g},${.12*d}) 0%,\n\t\t\t\t\t\trgba(${h},100,${g},${.05*d}) 35%,\n\t\t\t\t\t\ttransparent 60%),\n\t\t\t\t\tradial-gradient(ellipse 35% 30% at 68% 40%,\n\t\t\t\t\t\trgba(${v},${y},200,${.09*d}) 0%,\n\t\t\t\t\t\trgba(${v},${y},200,${.03*d}) 45%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 28% 25% at 35% 65%,\n\t\t\t\t\t\trgba(${h},100,${Math.min(255,g+20)},${.07*d}) 0%,\n\t\t\t\t\t\ttransparent 55%)`,filter:`blur(${18*n.blur}px) saturate(1.4)`,mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-chromatic-blue ${35e3/n.speed}ms ${We} infinite`}),S.appendChild(r);let i=document.createElement(`div`);i.className=`nebula-layer`,Object.assign(i.style,{position:`absolute`,inset:`0`,background:`\n\t\t\t\t\tradial-gradient(ellipse 20% 22% at 50% 50%,\n\t\t\t\t\t\trgba(255,${b},${x},${.18*d}) 0%,\n\t\t\t\t\t\trgba(255,${_},200,${.08*d}) 40%,\n\t\t\t\t\t\trgba(${h},100,${g},${.03*d}) 65%,\n\t\t\t\t\t\ttransparent 80%),\n\t\t\t\t\tradial-gradient(circle 6% at 50% 50%,\n\t\t\t\t\t\trgba(255,255,255,${.25*d}) 0%,\n\t\t\t\t\t\trgba(255,240,245,${.1*d}) 50%,\n\t\t\t\t\t\ttransparent 100%)`,mixBlendMode:`screen`,transform:`translateZ(0)`,transformOrigin:`50% 50%`,filter:`blur(${12*n.blur}px) saturate(1.6)`,animation:`nebula-iridescent ${28e3/n.speed}ms linear infinite`}),S.appendChild(i);let a=document.createElement(`div`);if(a.className=`nebula-layer`,Object.assign(a.style,{position:`absolute`,inset:`-12%`,background:`\n\t\t\t\t\tradial-gradient(ellipse 60% 12% at 50% 48%,\n\t\t\t\t\t\trgba(255,${_},200,${.1*d}) 0%,\n\t\t\t\t\t\ttransparent 70%),\n\t\t\t\t\tradial-gradient(ellipse 12% 55% at 48% 50%,\n\t\t\t\t\t\trgba(${v},${y},200,${.08*d}) 0%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 45% 10% at 45% 35%,\n\t\t\t\t\t\trgba(255,${b},${x},${.07*d}) 0%,\n\t\t\t\t\t\ttransparent 60%),\n\t\t\t\t\tradial-gradient(ellipse 10% 40% at 60% 60%,\n\t\t\t\t\t\trgba(${h},100,${g},${.06*d}) 0%,\n\t\t\t\t\t\ttransparent 55%)`,filter:`blur(${14*n.blur}px)`,mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-tendrils-breathe ${22e3/n.speed}ms ${X} infinite`}),S.appendChild(a),n.particleCount>0){let e=document.createElement(`div`);e.className=`nebula-layer`;let t=[];for(let e=0;e<n.particleCount;e++){let e=5+90*Math.random(),n=5+90*Math.random(),r=.5+2*Math.random(),i=Math.round(360*Math.random()),a=(.3+.5*Math.random())*d;t.push(`radial-gradient(circle ${r}px at ${e}% ${n}%, hsla(${i},80%,70%,${a}) 0%, transparent 100%)`)}Object.assign(e.style,{position:`absolute`,inset:`0`,background:t.join(`,`),mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-particle-twinkle ${5e3/n.speed}ms ${X} infinite`}),S.appendChild(e)}}e.appendChild(S);let C=r?0:n.fadeInDuration,w=r?`linear`:t._(t.d);S.animate([{opacity:0,transform:`scale(0.85) translateZ(0)`},{opacity:.4*n.intensity,transform:`scale(0.97) translateZ(0)`},{opacity:n.intensity,transform:`scale(1) translateZ(0)`}],{duration:C,easing:w,fill:`forwards`}),this.state={element:e,overlay:S,originalPosition:a,originalOverflow:o,originalContain:s,isDimmed:!1,autoHideSub:null,fadeFinishedSub:null,options:n,reducedMotion:r,isVisible:document.visibilityState===`visible`},this.coordinator.register(this,e)}scheduleAutoHide(e){!this.state||e.autoHideDuration<=0||(this.state.autoHideSub=(0,s.timer)(e.autoHideDuration).pipe((0,c.take)(1),(0,c.tap)(()=>{this.state&&(this.state.autoHideSub=null,this.hide(this.state.options))})).subscribe())}hide(e){if(!this.state?.overlay||(this.state.autoHideSub&&(this.state.autoHideSub.unsubscribe(),this.state.autoHideSub=null),this.state.isDimmed))return;this.state.isDimmed=!0;let n=this.state.overlay,r=this.state.options,i=this.state.reducedMotion,a=i?0:e.fadeOutDuration,o=i?`linear`:t._(t.u);if(e.idleOpacity<=0)return void n.animate([{opacity:r.intensity,transform:`scale(1) translateZ(0)`},{opacity:.4*r.intensity,transform:`scale(0.95) translateZ(0)`},{opacity:0,transform:`scale(0.9) translateZ(0)`}],{duration:a,easing:o,fill:`forwards`});let l=n.animate([{opacity:r.intensity,transform:`scale(1) translateZ(0)`},{opacity:.5*r.intensity,transform:`scale(0.99) translateZ(0)`},{opacity:e.idleOpacity,transform:`scale(1) translateZ(0)`}],{duration:a,easing:o,fill:`forwards`});this.state.fadeFinishedSub?.unsubscribe(),this.state.fadeFinishedSub=(0,s.from)(l.finished).pipe((0,c.take)(1),(0,c.tap)(()=>{this.state?.overlay&&(this.state.overlay.classList.add(`dimmed`),e.idleBreathe&&!i&&(this.state.overlay.style.animation=`nebula-idle-breathe ${12e3/r.speed}ms ${X} infinite`))}),(0,c.catchError)(()=>s.EMPTY)).subscribe()}cleanup(){this.state&&=(this.coordinator.unregister(this,this.state.element),this.state.autoHideSub?.unsubscribe(),this.state.fadeFinishedSub?.unsubscribe(),this.state.overlay?.remove(),this.state.element.style.position=this.state.originalPosition,this.state.element.style.overflow=this.state.originalOverflow,this.state.element.style.contain=this.state.originalContain,null)}disconnected(){this.cleanup()}reconnected(){this.state&&this.coordinator.register(this,this.state.element)}},Je=(0,u.directive)(qe),Ye={smooth:t.d,snappy:t.f,bouncy:t.l,gentle:t.u},Xe=class extends u.AsyncDirective{constructor(e){if(super(e),this.initialized=!1,this.element=null,e.type!==d.PartType.ELEMENT)throw Error(`reveal() can only be used on elements`)}render(e,t){return l.noChange}update(e,[r=!1,i={}]){let a=e.element;this.element=a;let{preset:o=`smooth`,maxHeight:s=`10rem`,duration:c,easing:u}=i,d=Ye[o],f=c??d.duration,p=u??t._(d),m=n.t.value;return this.initialized||=(this.setupElement(a,f,p,m),!0),r?(a.style.maxHeight=s,a.style.opacity=`1`,a.style.transform=`translateY(0) scale(1)`,a.style.pointerEvents=``,a.style.paddingTop=``,a.style.paddingBottom=``,a.style.marginTop=``,a.style.marginBottom=``,a.removeAttribute(`aria-hidden`),a.removeAttribute(`inert`)):(a.style.maxHeight=`0`,a.style.opacity=`0`,a.style.transform=`translateY(-8px) scale(0.98)`,a.style.pointerEvents=`none`,a.style.paddingTop=`0`,a.style.paddingBottom=`0`,a.style.marginTop=`0`,a.style.marginBottom=`0`,a.setAttribute(`aria-hidden`,`true`),a.setAttribute(`inert`,``)),l.noChange}setupElement(e,t,n,r){e.style.overflow=`hidden`,e.style.transition=r?`none`:[`max-height ${t}ms ${n}`,`opacity ${t}ms ${n}`,`transform ${t}ms ${n}`,`padding ${t}ms ${n}`,`margin ${t}ms ${n}`].join(`, `)}disconnected(){this.element&&(this.element.style.willChange=``)}reconnected(){}},Ze=(0,u.directive)(Xe),Qe=!1,$e=class extends u.AsyncDirective{constructor(...e){super(...e),this.teardown$=new s.Subject}render(){}update(e){if(e.type!==d.PartType.ELEMENT)throw Error(`ripple directive must be used on an element`);this.element=e.element,function(){if(Qe)return;let e=document.createElement(`style`);e.id=`schmancy-ripple-shared`,e.textContent=`
310
+ `,document.head.appendChild(e)})(),this.state?.autoHideSub&&(this.state.autoHideSub.unsubscribe(),this.state.autoHideSub=null);let r=n.t.value;if(this.state?.overlay&&this.state.isDimmed)return this.state.isDimmed=!1,this.state.options=t,this.state.fadeFinishedSub?.unsubscribe(),this.state.fadeFinishedSub=null,this.awakenOverlay(t,r),void this.scheduleAutoHide(t);this.state?.overlay||this.createOverlay(e,t,r),this.scheduleAutoHide(t)}awakenOverlay(e,n){if(!this.state?.overlay)return;let r=this.state.overlay;r.style.setProperty(`--nebula-intensity`,String(e.intensity)),r.animate([{opacity:e.idleOpacity,transform:`scale(0.98) translateZ(0)`},{opacity:.7*e.intensity,transform:`scale(1.01) translateZ(0)`},{opacity:e.intensity,transform:`scale(1) translateZ(0)`}],{duration:n?0:.6*e.fadeInDuration,easing:n?`linear`:t._(t.d),fill:`forwards`}),r.classList.remove(`paused`,`dimmed`),r.classList.add(`running`),r.style.animation=``}createOverlay(e,n,r){let i=window.getComputedStyle(e).position,a=e.style.position,o=e.style.overflow,s=e.style.contain;i===`static`&&(e.style.position=`relative`),e.style.overflow=`hidden`,e.style.contain=`paint`;let c=n.temperature,l=Math.max(0,c),u=Math.max(0,-c),d=n.intensity,f=Math.round(3+5*n.chromaticAberration),p=Math.round(20+60*u),m=Math.round(80+80*u),h=Math.round(20+80*l),g=Math.round(255-55*l),_=Math.round(100+100*u),v=Math.round(100*l),y=Math.round(255-55*l),b=Math.round(100+55*u),x=Math.round(255-55*u),S=document.createElement(`div`);if(S.className=`nebula-overlay running`,Object.assign(S.style,{position:`absolute`,inset:`-20%`,zIndex:n.background?`-1`:`9999`,opacity:`0`,"--nebula-intensity":String(d),"--nebula-blur-base":10*n.blur+`px`,"--nebula-idle-opacity":String(n.idleOpacity),"--nebula-aberration":`${f}px`,"--nebula-blur-core":12*n.blur+`px`}),r){let e=document.createElement(`div`);Object.assign(e.style,{position:`absolute`,inset:`0`,background:`\n\t\t\t\t\tradial-gradient(ellipse 45% 40% at 50% 50%,\n\t\t\t\t\t\trgba(255,${b},${x},${.12*d}) 0%,\n\t\t\t\t\t\trgba(${h},100,${g},${.06*d}) 40%,\n\t\t\t\t\t\ttransparent 70%),\n\t\t\t\t\tradial-gradient(circle 8% at 50% 50%,\n\t\t\t\t\t\trgba(255,255,255,${.15*d}) 0%,\n\t\t\t\t\t\ttransparent 100%)`,filter:`blur(${10*n.blur}px)`,opacity:String(d)}),S.appendChild(e)}else{let e=document.createElement(`div`);e.className=`nebula-layer`,Object.assign(e.style,{position:`absolute`,inset:`-5%`,background:`\n\t\t\t\t\tlinear-gradient(155deg,\n\t\t\t\t\t\ttransparent 0%, transparent 38%,\n\t\t\t\t\t\trgba(8,2,18,${.35*d}) 44%,\n\t\t\t\t\t\trgba(0,0,0,${.4*d}) 49%,\n\t\t\t\t\t\trgba(8,2,18,${.35*d}) 54%,\n\t\t\t\t\t\ttransparent 60%, transparent 100%),\n\t\t\t\t\tlinear-gradient(225deg,\n\t\t\t\t\t\ttransparent 0%, transparent 42%,\n\t\t\t\t\t\trgba(5,0,12,${.28*d}) 47%,\n\t\t\t\t\t\trgba(0,0,0,${.32*d}) 50%,\n\t\t\t\t\t\trgba(5,0,12,${.28*d}) 53%,\n\t\t\t\t\t\ttransparent 58%, transparent 100%),\n\t\t\t\t\tradial-gradient(ellipse 110% 110% at 50% 50%,\n\t\t\t\t\t\ttransparent 35%,\n\t\t\t\t\t\trgba(3,0,8,${.2*d}) 60%,\n\t\t\t\t\t\trgba(0,0,0,${.35*d}) 85%),\n\t\t\t\t\tradial-gradient(ellipse 50% 45% at 30% 35%,\n\t\t\t\t\t\trgba(0,0,0,${.3*d}) 0%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 40% 55% at 70% 65%,\n\t\t\t\t\t\trgba(0,0,0,${.25*d}) 0%,\n\t\t\t\t\t\ttransparent 60%)`,filter:`blur(${4*n.blur}px)`,mixBlendMode:`multiply`,transform:`translateZ(0)`}),S.appendChild(e);let t=document.createElement(`div`);t.className=`nebula-layer`,Object.assign(t.style,{position:`absolute`,inset:`-15%`,background:`\n\t\t\t\t\tradial-gradient(ellipse 55% 50% at 48% 50%,\n\t\t\t\t\t\trgba(255,${p},${m},${.14*d}) 0%,\n\t\t\t\t\t\trgba(255,${p},${m},${.06*d}) 35%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 30% 35% at 30% 35%,\n\t\t\t\t\t\trgba(255,${_},200,${.1*d}) 0%,\n\t\t\t\t\t\trgba(255,${_},200,${.03*d}) 50%,\n\t\t\t\t\t\ttransparent 70%),\n\t\t\t\t\tradial-gradient(ellipse 25% 30% at 65% 70%,\n\t\t\t\t\t\trgba(255,${Math.min(255,p+30)},${m},${.08*d}) 0%,\n\t\t\t\t\t\ttransparent 60%)`,filter:`blur(${18*n.blur}px) saturate(1.4)`,mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-chromatic-red ${35e3/n.speed}ms ${We} infinite`}),S.appendChild(t);let r=document.createElement(`div`);r.className=`nebula-layer`,Object.assign(r.style,{position:`absolute`,inset:`-15%`,background:`\n\t\t\t\t\tradial-gradient(ellipse 50% 55% at 52% 50%,\n\t\t\t\t\t\trgba(${h},100,${g},${.12*d}) 0%,\n\t\t\t\t\t\trgba(${h},100,${g},${.05*d}) 35%,\n\t\t\t\t\t\ttransparent 60%),\n\t\t\t\t\tradial-gradient(ellipse 35% 30% at 68% 40%,\n\t\t\t\t\t\trgba(${v},${y},200,${.09*d}) 0%,\n\t\t\t\t\t\trgba(${v},${y},200,${.03*d}) 45%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 28% 25% at 35% 65%,\n\t\t\t\t\t\trgba(${h},100,${Math.min(255,g+20)},${.07*d}) 0%,\n\t\t\t\t\t\ttransparent 55%)`,filter:`blur(${18*n.blur}px) saturate(1.4)`,mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-chromatic-blue ${35e3/n.speed}ms ${We} infinite`}),S.appendChild(r);let i=document.createElement(`div`);i.className=`nebula-layer`,Object.assign(i.style,{position:`absolute`,inset:`0`,background:`\n\t\t\t\t\tradial-gradient(ellipse 20% 22% at 50% 50%,\n\t\t\t\t\t\trgba(255,${b},${x},${.18*d}) 0%,\n\t\t\t\t\t\trgba(255,${_},200,${.08*d}) 40%,\n\t\t\t\t\t\trgba(${h},100,${g},${.03*d}) 65%,\n\t\t\t\t\t\ttransparent 80%),\n\t\t\t\t\tradial-gradient(circle 6% at 50% 50%,\n\t\t\t\t\t\trgba(255,255,255,${.25*d}) 0%,\n\t\t\t\t\t\trgba(255,240,245,${.1*d}) 50%,\n\t\t\t\t\t\ttransparent 100%)`,mixBlendMode:`screen`,transform:`translateZ(0)`,transformOrigin:`50% 50%`,filter:`blur(${12*n.blur}px) saturate(1.6)`,animation:`nebula-iridescent ${28e3/n.speed}ms linear infinite`}),S.appendChild(i);let a=document.createElement(`div`);if(a.className=`nebula-layer`,Object.assign(a.style,{position:`absolute`,inset:`-12%`,background:`\n\t\t\t\t\tradial-gradient(ellipse 60% 12% at 50% 48%,\n\t\t\t\t\t\trgba(255,${_},200,${.1*d}) 0%,\n\t\t\t\t\t\ttransparent 70%),\n\t\t\t\t\tradial-gradient(ellipse 12% 55% at 48% 50%,\n\t\t\t\t\t\trgba(${v},${y},200,${.08*d}) 0%,\n\t\t\t\t\t\ttransparent 65%),\n\t\t\t\t\tradial-gradient(ellipse 45% 10% at 45% 35%,\n\t\t\t\t\t\trgba(255,${b},${x},${.07*d}) 0%,\n\t\t\t\t\t\ttransparent 60%),\n\t\t\t\t\tradial-gradient(ellipse 10% 40% at 60% 60%,\n\t\t\t\t\t\trgba(${h},100,${g},${.06*d}) 0%,\n\t\t\t\t\t\ttransparent 55%)`,filter:`blur(${14*n.blur}px)`,mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-tendrils-breathe ${22e3/n.speed}ms ${X} infinite`}),S.appendChild(a),n.particleCount>0){let e=document.createElement(`div`);e.className=`nebula-layer`;let t=[];for(let e=0;e<n.particleCount;e++){let e=5+90*Math.random(),n=5+90*Math.random(),r=.5+2*Math.random(),i=Math.round(360*Math.random()),a=(.3+.5*Math.random())*d;t.push(`radial-gradient(circle ${r}px at ${e}% ${n}%, hsla(${i},80%,70%,${a}) 0%, transparent 100%)`)}Object.assign(e.style,{position:`absolute`,inset:`0`,background:t.join(`,`),mixBlendMode:`screen`,transform:`translateZ(0)`,animation:`nebula-particle-twinkle ${5e3/n.speed}ms ${X} infinite`}),S.appendChild(e)}}e.appendChild(S);let C=r?0:n.fadeInDuration,w=r?`linear`:t._(t.d);S.animate([{opacity:0,transform:`scale(0.85) translateZ(0)`},{opacity:.4*n.intensity,transform:`scale(0.97) translateZ(0)`},{opacity:n.intensity,transform:`scale(1) translateZ(0)`}],{duration:C,easing:w,fill:`forwards`}),this.state={element:e,overlay:S,originalPosition:a,originalOverflow:o,originalContain:s,isDimmed:!1,autoHideSub:null,fadeFinishedSub:null,options:n,reducedMotion:r,isVisible:document.visibilityState===`visible`},this.coordinator.register(this,e)}scheduleAutoHide(e){!this.state||e.autoHideDuration<=0||(this.state.autoHideSub=(0,s.timer)(e.autoHideDuration).pipe((0,c.take)(1),(0,c.tap)(()=>{this.state&&(this.state.autoHideSub=null,this.hide(this.state.options))})).subscribe())}hide(e){if(!this.state?.overlay||(this.state.autoHideSub&&(this.state.autoHideSub.unsubscribe(),this.state.autoHideSub=null),this.state.isDimmed))return;this.state.isDimmed=!0;let n=this.state.overlay,r=this.state.options,i=this.state.reducedMotion,a=i?0:e.fadeOutDuration,o=i?`linear`:t._(t.u);if(e.idleOpacity<=0)return void n.animate([{opacity:r.intensity,transform:`scale(1) translateZ(0)`},{opacity:.4*r.intensity,transform:`scale(0.95) translateZ(0)`},{opacity:0,transform:`scale(0.9) translateZ(0)`}],{duration:a,easing:o,fill:`forwards`});let l=n.animate([{opacity:r.intensity,transform:`scale(1) translateZ(0)`},{opacity:.5*r.intensity,transform:`scale(0.99) translateZ(0)`},{opacity:e.idleOpacity,transform:`scale(1) translateZ(0)`}],{duration:a,easing:o,fill:`forwards`});this.state.fadeFinishedSub?.unsubscribe(),this.state.fadeFinishedSub=(0,s.from)(l.finished).pipe((0,c.take)(1),(0,c.tap)(()=>{this.state?.overlay&&(this.state.overlay.classList.add(`dimmed`),e.idleBreathe&&!i&&(this.state.overlay.style.animation=`nebula-idle-breathe ${12e3/r.speed}ms ${X} infinite`))}),(0,c.catchError)(()=>s.EMPTY)).subscribe()}cleanup(){this.state&&=(this.coordinator.unregister(this,this.state.element),this.state.autoHideSub?.unsubscribe(),this.state.fadeFinishedSub?.unsubscribe(),this.state.overlay?.remove(),this.state.element.style.position=this.state.originalPosition,this.state.element.style.overflow=this.state.originalOverflow,this.state.element.style.contain=this.state.originalContain,null)}disconnected(){this.cleanup()}reconnected(){this.state&&this.coordinator.register(this,this.state.element)}},Je=(0,u.directive)(qe),Ye={smooth:t.d,snappy:t.f,bouncy:t.l,gentle:t.u},Xe=class extends u.AsyncDirective{constructor(e){if(super(e),this.initialized=!1,this.teardown$=new s.Subject,this.firstUpdate=!0,e.type!==d.PartType.ELEMENT)throw Error(`reveal() can only be used on elements`)}render(e,t){return l.noChange}update(e,[r=!1,i={}]){let a=e.element,{preset:o=`smooth`,maxHeight:u,duration:d,easing:f}=i,p=u!==void 0,m=Ye[o],h=d??m.duration,g=f??t._(m),_=n.t.value,v=this.firstUpdate;if(this.firstUpdate=!1,this.initialized||(this.initialized=!0,a.style.transition=_?`none`:[`max-height ${h}ms ${g}`,`opacity ${h}ms ${g}`,`transform ${h}ms ${g}`,`padding ${h}ms ${g}`,`margin ${h}ms ${g}`].join(`, `)),r){if(v)p?(a.style.maxHeight=u,a.style.overflow=`auto`):(a.style.maxHeight=``,a.style.overflow=``),a.style.opacity=`1`,a.style.transform=`translateY(0) scale(1)`;else if(_)p?(a.style.maxHeight=u,a.style.overflow=`auto`):(a.style.maxHeight=``,a.style.overflow=``),a.style.opacity=`1`,a.style.transform=`translateY(0) scale(1)`;else{a.style.overflow=`hidden`,a.style.maxHeight=`0`,a.offsetHeight;let e=p?u:`${a.scrollHeight}px`;a.style.maxHeight=e,a.style.opacity=`1`,a.style.transform=`translateY(0) scale(1)`,p?(0,s.fromEvent)(a,`transitionend`).pipe((0,c.filter)(e=>e.propertyName===`max-height`&&e.target===a),(0,c.take)(1),(0,c.takeUntil)(this.teardown$)).subscribe(()=>{a.style.overflow=`auto`}):(0,s.fromEvent)(a,`transitionend`).pipe((0,c.filter)(e=>e.propertyName===`max-height`&&e.target===a),(0,c.take)(1),(0,c.takeUntil)(this.teardown$)).subscribe(()=>{a.style.maxHeight=``,a.style.overflow=``})}a.style.pointerEvents=``,a.style.paddingTop=``,a.style.paddingBottom=``,a.style.marginTop=``,a.style.marginBottom=``,a.removeAttribute(`aria-hidden`),a.removeAttribute(`inert`)}else a.style.maxHeight===``||a.style.maxHeight===`none`?(a.style.overflow=`hidden`,a.style.maxHeight=`${a.scrollHeight}px`,a.offsetHeight):a.style.overflow=`hidden`,a.style.maxHeight=`0`,a.style.opacity=`0`,a.style.transform=`translateY(-8px) scale(0.98)`,a.style.pointerEvents=`none`,a.style.paddingTop=`0`,a.style.paddingBottom=`0`,a.style.marginTop=`0`,a.style.marginBottom=`0`,a.setAttribute(`aria-hidden`,`true`),a.setAttribute(`inert`,``);return l.noChange}disconnected(){this.teardown$.next()}reconnected(){}},Ze=(0,u.directive)(Xe),Qe=!1,$e=class extends u.AsyncDirective{constructor(...e){super(...e),this.teardown$=new s.Subject}render(){}update(e){if(e.type!==d.PartType.ELEMENT)throw Error(`ripple directive must be used on an element`);this.element=e.element,function(){if(Qe)return;let e=document.createElement(`style`);e.id=`schmancy-ripple-shared`,e.textContent=`
311
311
  .schmancy-ripple-effect {
312
312
  position: absolute;
313
313
  border-radius: 50%;