@mhmo91/schmancy 0.10.42 → 0.10.44

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 (759) hide show
  1. package/custom-elements.json +264 -79
  2. package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
  3. package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
  4. package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
  5. package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +4032 -3886
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +215 -58
  9. package/dist/animation-CCOIW4wJ.cjs.map +1 -1
  10. package/dist/animation-DCznELuT.js.map +1 -1
  11. package/dist/area-CbajcnmJ.cjs +21 -0
  12. package/dist/area-CbajcnmJ.cjs.map +1 -0
  13. package/dist/{area-DtCNCb8w.js → area-MxLAyWgV.js} +22 -22
  14. package/dist/area-MxLAyWgV.js.map +1 -0
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{audio-DdN76ikW.js → audio-B_0PGwYC.js} +1 -1
  18. package/dist/audio-B_0PGwYC.js.map +1 -0
  19. package/dist/{audio-B924fI5N.cjs → audio-CpwrIaw-.cjs} +1 -1
  20. package/dist/audio-CpwrIaw-.cjs.map +1 -0
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/autocomplete-CILzaDB7.cjs +115 -0
  24. package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
  25. package/dist/{autocomplete-UNOknYUz.js → autocomplete-DV9RxCun.js} +113 -113
  26. package/dist/autocomplete-DV9RxCun.js.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +1 -1
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +4 -4
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.cjs +1 -1
  34. package/dist/badge.js +1 -1
  35. package/dist/{boat-BZah1Sf9.js → boat-DoZGgQ0P.js} +5 -5
  36. package/dist/{boat-BZah1Sf9.js.map → boat-DoZGgQ0P.js.map} +1 -1
  37. package/dist/{boat-D3bEjxf8.cjs → boat-sg0cWO8a.cjs} +2 -2
  38. package/dist/{boat-D3bEjxf8.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
  39. package/dist/boat.cjs +1 -1
  40. package/dist/boat.js +1 -1
  41. package/dist/breadcrumb.cjs +32 -31
  42. package/dist/breadcrumb.cjs.map +1 -1
  43. package/dist/breadcrumb.js +33 -32
  44. package/dist/breadcrumb.js.map +1 -1
  45. package/dist/busy-Brs-TDh9.cjs +133 -0
  46. package/dist/busy-Brs-TDh9.cjs.map +1 -0
  47. package/dist/busy-g4LoQmhB.js +172 -0
  48. package/dist/busy-g4LoQmhB.js.map +1 -0
  49. package/dist/busy.cjs +1 -1
  50. package/dist/busy.js +1 -1
  51. package/dist/{button-CTvS5YX4.cjs → button-Cml67Y_d.cjs} +41 -32
  52. package/dist/button-Cml67Y_d.cjs.map +1 -0
  53. package/dist/{button-DgoDfcJx.js → button-DWANpZfD.js} +43 -34
  54. package/dist/button-DWANpZfD.js.map +1 -0
  55. package/dist/button.cjs +40 -33
  56. package/dist/button.cjs.map +1 -1
  57. package/dist/button.js +42 -35
  58. package/dist/button.js.map +1 -1
  59. package/dist/calendar-2dJrw9pR.cjs +58 -0
  60. package/dist/calendar-2dJrw9pR.cjs.map +1 -0
  61. package/dist/calendar-kCe5LaBa.js +434 -0
  62. package/dist/calendar-kCe5LaBa.js.map +1 -0
  63. package/dist/calendar.cjs +1 -0
  64. package/dist/calendar.js +2 -0
  65. package/dist/{card-C6ijJZpF.js → card-CS_hYJbz.js} +136 -136
  66. package/dist/card-CS_hYJbz.js.map +1 -0
  67. package/dist/card-d0KhTnx5.cjs +177 -0
  68. package/dist/card-d0KhTnx5.cjs.map +1 -0
  69. package/dist/card.cjs +1 -1
  70. package/dist/card.js +1 -1
  71. package/dist/{checkbox-7vEPZuGC.js → checkbox-Bjp7kWuE.js} +2 -2
  72. package/dist/{checkbox-7vEPZuGC.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
  73. package/dist/{checkbox-DXKdxkXE.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
  74. package/dist/{checkbox-DXKdxkXE.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
  75. package/dist/checkbox.cjs +1 -1
  76. package/dist/checkbox.js +1 -1
  77. package/dist/{chips-9eG-96_D.cjs → chips-BHBVkxsa.cjs} +142 -153
  78. package/dist/chips-BHBVkxsa.cjs.map +1 -0
  79. package/dist/{chips-DF7akwz7.js → chips-DACeW7YL.js} +127 -138
  80. package/dist/chips-DACeW7YL.js.map +1 -0
  81. package/dist/chips.cjs +1 -1
  82. package/dist/chips.js +2 -2
  83. package/dist/connectivity.cjs +53 -35
  84. package/dist/connectivity.cjs.map +1 -1
  85. package/dist/connectivity.js +55 -37
  86. package/dist/connectivity.js.map +1 -1
  87. package/dist/content-drawer.cjs +1 -1
  88. package/dist/content-drawer.js +1 -1
  89. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  90. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  91. package/dist/date-range-B2VN7cl_.cjs +138 -0
  92. package/dist/date-range-B2VN7cl_.cjs.map +1 -0
  93. package/dist/date-range-CDF_5ju_.js +439 -0
  94. package/dist/date-range-CDF_5ju_.js.map +1 -0
  95. package/dist/{date-range-inline-DV2c_gWM.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
  96. package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
  97. package/dist/{date-range-inline-BnOD-ddB.js → date-range-inline-D6Ozerzw.js} +3 -5
  98. package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
  99. package/dist/date-range-inline.cjs +1 -1
  100. package/dist/date-range-inline.js +1 -1
  101. package/dist/date-range.cjs +1 -1
  102. package/dist/date-range.js +2 -2
  103. package/dist/dayjs.min-CvRZTfam.cjs +1 -0
  104. package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
  105. package/dist/dayjs.min-DnELezPs.js +296 -0
  106. package/dist/dayjs.min-DnELezPs.js.map +1 -0
  107. package/dist/delay.cjs +1 -1
  108. package/dist/delay.js +3 -3
  109. package/dist/{details-ByF66CyY.js → details-Ct1_GwKr.js} +104 -93
  110. package/dist/details-Ct1_GwKr.js.map +1 -0
  111. package/dist/{details-B2-jECBh.cjs → details-D4fVOaj4.cjs} +109 -98
  112. package/dist/details-D4fVOaj4.cjs.map +1 -0
  113. package/dist/details.cjs +1 -1
  114. package/dist/details.js +1 -1
  115. package/dist/{directives-DCb_LA9R.cjs → directives-B2VxfwRL.cjs} +1 -1
  116. package/dist/directives-B2VxfwRL.cjs.map +1 -0
  117. package/dist/{directives-BL7mzVsA.js → directives-Dj8jlv-Q.js} +3 -3
  118. package/dist/directives-Dj8jlv-Q.js.map +1 -0
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +2 -2
  121. package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
  122. package/dist/discovery.service-DZFxtRwW.js.map +1 -1
  123. package/dist/divider-B3v33OnX.cjs +57 -0
  124. package/dist/divider-B3v33OnX.cjs.map +1 -0
  125. package/dist/divider-BJHW3q11.js +89 -0
  126. package/dist/divider-BJHW3q11.js.map +1 -0
  127. package/dist/divider.cjs +1 -1
  128. package/dist/divider.js +1 -1
  129. package/dist/dropdown.cjs +40 -40
  130. package/dist/dropdown.cjs.map +1 -1
  131. package/dist/dropdown.js +41 -41
  132. package/dist/dropdown.js.map +1 -1
  133. package/dist/{expand-cZ8rfCWP.js → expand-BT8mOu8Q.js} +103 -97
  134. package/dist/expand-BT8mOu8Q.js.map +1 -0
  135. package/dist/expand-D0YdR9nR.cjs +147 -0
  136. package/dist/expand-D0YdR9nR.cjs.map +1 -0
  137. package/dist/expand.cjs +1 -1
  138. package/dist/expand.js +1 -1
  139. package/dist/fab.cjs +1 -1
  140. package/dist/fab.cjs.map +1 -1
  141. package/dist/fab.js +2 -2
  142. package/dist/fab.js.map +1 -1
  143. package/dist/{float-DkGyWSWy.cjs → float-BPQlDyai.cjs} +1 -1
  144. package/dist/{float-DkGyWSWy.cjs.map → float-BPQlDyai.cjs.map} +1 -1
  145. package/dist/{float-zn3DgXBT.js → float-BQcxj3i_.js} +2 -2
  146. package/dist/{float-zn3DgXBT.js.map → float-BQcxj3i_.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{form-DowzVsgI.cjs → form-CoWFnClb.cjs} +8 -13
  150. package/dist/form-CoWFnClb.cjs.map +1 -0
  151. package/dist/{form-tG7LwDm4.js → form-hC2LvCHX.js} +10 -15
  152. package/dist/form-hC2LvCHX.js.map +1 -0
  153. package/dist/form.cjs +12 -13
  154. package/dist/form.cjs.map +1 -1
  155. package/dist/form.js +23 -24
  156. package/dist/form.js.map +1 -1
  157. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  158. package/dist/gravity-sVK3zGBF.js.map +1 -1
  159. package/dist/handover/agent-runtime-followups.md +1 -1
  160. package/dist/handover/agent-runtime-v1.md +3 -3
  161. package/dist/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
  162. package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
  163. package/dist/icons-BeGKDZ-k.cjs +22 -0
  164. package/dist/icons-BeGKDZ-k.cjs.map +1 -0
  165. package/dist/{icons-Dup5skuk.js → icons-DEJnIxml.js} +20 -22
  166. package/dist/icons-DEJnIxml.js.map +1 -0
  167. package/dist/icons.cjs +1 -1
  168. package/dist/icons.js +1 -1
  169. package/dist/{iframe-CDJjnNmo.cjs → iframe-BkSukM9C.cjs} +9 -9
  170. package/dist/iframe-BkSukM9C.cjs.map +1 -0
  171. package/dist/{iframe-Xc3EPMZT.js → iframe-V3S-bwEY.js} +10 -10
  172. package/dist/iframe-V3S-bwEY.js.map +1 -0
  173. package/dist/iframe.cjs +1 -1
  174. package/dist/iframe.js +1 -1
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.js +61 -60
  177. package/dist/{input-cTyDxW9L.js → input-CPFCSQld.js} +3 -10
  178. package/dist/input-CPFCSQld.js.map +1 -0
  179. package/dist/{input-DnmC6J1T.cjs → input-DSfwfhhj.cjs} +2 -9
  180. package/dist/input-DSfwfhhj.cjs.map +1 -0
  181. package/dist/input-chip-BUuFJUky.cjs +129 -0
  182. package/dist/input-chip-BUuFJUky.cjs.map +1 -0
  183. package/dist/{input-chip-CYI17YOq.js → input-chip-C3a1fwKB.js} +87 -104
  184. package/dist/input-chip-C3a1fwKB.js.map +1 -0
  185. package/dist/input.cjs +1 -1
  186. package/dist/input.js +1 -1
  187. package/dist/json.cjs +5 -1
  188. package/dist/json.cjs.map +1 -1
  189. package/dist/json.js +8 -4
  190. package/dist/json.js.map +1 -1
  191. package/dist/kbd.cjs +28 -28
  192. package/dist/kbd.cjs.map +1 -1
  193. package/dist/kbd.js +29 -29
  194. package/dist/kbd.js.map +1 -1
  195. package/dist/{layout-CNlZSJFU.cjs → layout-CdyHy_oX.cjs} +1 -1
  196. package/dist/layout-CdyHy_oX.cjs.map +1 -0
  197. package/dist/{layout-DDxw0EwL.js → layout-k6fOkpif.js} +1 -1
  198. package/dist/layout-k6fOkpif.js.map +1 -0
  199. package/dist/layout.cjs +26 -26
  200. package/dist/layout.cjs.map +1 -1
  201. package/dist/layout.js +27 -27
  202. package/dist/layout.js.map +1 -1
  203. package/dist/lazy-BaAiIUru.js.map +1 -1
  204. package/dist/lazy-C-7a4FAe.cjs.map +1 -1
  205. package/dist/{lightbox-CH-y3rYB.js → lightbox-DIG0VLOK.js} +8 -14
  206. package/dist/lightbox-DIG0VLOK.js.map +1 -0
  207. package/dist/{lightbox-CvtqoInF.cjs → lightbox-E5rgd-hu.cjs} +7 -13
  208. package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
  209. package/dist/lightbox.cjs +1 -1
  210. package/dist/lightbox.js +1 -1
  211. package/dist/list-BRz0rDSH.cjs +47 -0
  212. package/dist/list-BRz0rDSH.cjs.map +1 -0
  213. package/dist/{list-DrsawQ5R.js → list-NrOYDPBo.js} +42 -35
  214. package/dist/list-NrOYDPBo.js.map +1 -0
  215. package/dist/list.cjs +1 -1
  216. package/dist/list.js +1 -1
  217. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  218. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  219. package/dist/{menu-CsY5lMqY.js → menu-B1Ei9SVj.js} +12 -12
  220. package/dist/menu-B1Ei9SVj.js.map +1 -0
  221. package/dist/{menu-BFRcTe3o.cjs → menu-Duvl66Nl.cjs} +10 -10
  222. package/dist/menu-Duvl66Nl.cjs.map +1 -0
  223. package/dist/menu.cjs +1 -1
  224. package/dist/menu.js +1 -1
  225. package/dist/{mixins-BoMURWag.cjs → mixins-Cjn20BQH.cjs} +42 -100
  226. package/dist/mixins-Cjn20BQH.cjs.map +1 -0
  227. package/dist/{mixins-bCEXbwJV.js → mixins-q4KAL8Xr.js} +42 -100
  228. package/dist/mixins-q4KAL8Xr.js.map +1 -0
  229. package/dist/mixins.cjs +1 -1
  230. package/dist/mixins.js +2 -2
  231. package/dist/nav-drawer.cjs +1 -1
  232. package/dist/nav-drawer.js +1 -1
  233. package/dist/navigation-bar.cjs +1 -1
  234. package/dist/navigation-bar.js +1 -1
  235. package/dist/navigation-rail.cjs +2 -4
  236. package/dist/navigation-rail.cjs.map +1 -1
  237. package/dist/navigation-rail.js +3 -5
  238. package/dist/navigation-rail.js.map +1 -1
  239. package/dist/{notification-DFKRMmSq.js → notification-COhUhUCr.js} +5 -7
  240. package/dist/notification-COhUhUCr.js.map +1 -0
  241. package/dist/{notification-FBf3Mb2e.cjs → notification-DsdA_MJe.cjs} +2 -4
  242. package/dist/notification-DsdA_MJe.cjs.map +1 -0
  243. package/dist/notification.cjs +1 -1
  244. package/dist/notification.js +1 -1
  245. package/dist/{option-Ct0lGdH3.js → option-BIzgTbXz.js} +20 -20
  246. package/dist/option-BIzgTbXz.js.map +1 -0
  247. package/dist/option-C5hhqR2z.cjs +43 -0
  248. package/dist/option-C5hhqR2z.cjs.map +1 -0
  249. package/dist/option.cjs +1 -1
  250. package/dist/option.js +1 -1
  251. package/dist/{overlay-sRXiMkjn.cjs → overlay-BzgF8P7i.cjs} +48 -41
  252. package/dist/overlay-BzgF8P7i.cjs.map +1 -0
  253. package/dist/{overlay-Bh8Q_R01.js → overlay-LoRRemny.js} +52 -45
  254. package/dist/overlay-LoRRemny.js.map +1 -0
  255. package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
  256. package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
  257. package/dist/overlay.cjs +1 -1
  258. package/dist/{overlay.confirm-body-CQihsR20.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
  259. package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
  260. package/dist/{overlay.confirm-body-Jc1EuMGs.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
  261. package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
  262. package/dist/overlay.js +3 -3
  263. package/dist/{overlay.service-BXPgS7ay.js → overlay.service-BuUeti6X.js} +2 -2
  264. package/dist/overlay.service-BuUeti6X.js.map +1 -0
  265. package/dist/{overlay.service-9Dp3g7ot.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
  266. package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
  267. package/dist/{progress-CYLshdo2.js → progress-D7n3SKAO.js} +50 -50
  268. package/dist/progress-D7n3SKAO.js.map +1 -0
  269. package/dist/progress-DsCnFsH5.cjs +51 -0
  270. package/dist/progress-DsCnFsH5.cjs.map +1 -0
  271. package/dist/progress.cjs +1 -1
  272. package/dist/progress.js +1 -1
  273. package/dist/{radio-group-6kCgOgBL.cjs → radio-group-CaAjg9UV.cjs} +1 -1
  274. package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
  275. package/dist/{radio-group-bZtZHOj_.js → radio-group-Drpl6Pl8.js} +2 -2
  276. package/dist/radio-group-Drpl6Pl8.js.map +1 -0
  277. package/dist/radio-group.cjs +1 -1
  278. package/dist/radio-group.js +1 -1
  279. package/dist/range.cjs +4 -2
  280. package/dist/range.cjs.map +1 -1
  281. package/dist/range.js +5 -3
  282. package/dist/range.js.map +1 -1
  283. package/dist/reduced-motion-D-L12p7G.js.map +1 -1
  284. package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
  285. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
  286. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
  287. package/dist/rxjs-utils.cjs +1 -1
  288. package/dist/rxjs-utils.js +1 -1
  289. package/dist/search-DPKoC-dT.cjs.map +1 -1
  290. package/dist/search-MvIBA93K.js.map +1 -1
  291. package/dist/{select-CU3X-PIa.js → select-CTXkrrVZ.js} +13 -13
  292. package/dist/select-CTXkrrVZ.js.map +1 -0
  293. package/dist/select-DcLcpPCh.cjs +56 -0
  294. package/dist/select-DcLcpPCh.cjs.map +1 -0
  295. package/dist/select.cjs +1 -1
  296. package/dist/select.js +1 -1
  297. package/dist/skeleton.cjs +37 -33
  298. package/dist/skeleton.cjs.map +1 -1
  299. package/dist/skeleton.js +38 -34
  300. package/dist/skeleton.js.map +1 -1
  301. package/dist/skills/schmancy/surface.md +38 -22
  302. package/dist/skills/surface.md +38 -22
  303. package/dist/slider.cjs +31 -31
  304. package/dist/slider.cjs.map +1 -1
  305. package/dist/slider.js +32 -32
  306. package/dist/slider.js.map +1 -1
  307. package/dist/{sound.service-B4ZmXpH9.js → sound.service-AJwuk3yr.js} +1 -1
  308. package/dist/sound.service-AJwuk3yr.js.map +1 -0
  309. package/dist/{sound.service-DjlMvicQ.cjs → sound.service-CVsxhQkX.cjs} +1 -1
  310. package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
  311. package/dist/{splash-screen-emCLYoVl.js → splash-screen-DANfqvlo.js} +23 -26
  312. package/dist/splash-screen-DANfqvlo.js.map +1 -0
  313. package/dist/splash-screen-K74cgU6S.cjs +38 -0
  314. package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
  315. package/dist/splash-screen.cjs +1 -1
  316. package/dist/splash-screen.js +1 -1
  317. package/dist/{src-DGDTkOvC.js → src-Bo-vvN6m.js} +173 -175
  318. package/dist/src-Bo-vvN6m.js.map +1 -0
  319. package/dist/src-MdpH1zth.cjs +237 -0
  320. package/dist/src-MdpH1zth.cjs.map +1 -0
  321. package/dist/{state-CumAEPQH.cjs → state-BWQiqN6I.cjs} +1 -1
  322. package/dist/state-BWQiqN6I.cjs.map +1 -0
  323. package/dist/{state-DMd_FUeA.js → state-DBA_gzJO.js} +1 -1
  324. package/dist/state-DBA_gzJO.js.map +1 -0
  325. package/dist/state.cjs +1 -1
  326. package/dist/state.js +2 -2
  327. package/dist/steps.cjs +20 -12
  328. package/dist/steps.cjs.map +1 -1
  329. package/dist/steps.js +21 -13
  330. package/dist/steps.js.map +1 -1
  331. package/dist/surface-COBvWWFb.cjs +7 -0
  332. package/dist/surface-COBvWWFb.cjs.map +1 -0
  333. package/dist/{surface-DNiYigsX.js → surface-DXk1X1tL.js} +9 -9
  334. package/dist/{surface-DNiYigsX.js.map → surface-DXk1X1tL.js.map} +1 -1
  335. package/dist/surface.cjs +1 -1
  336. package/dist/surface.js +1 -1
  337. package/dist/switch.cjs +13 -4
  338. package/dist/switch.cjs.map +1 -1
  339. package/dist/switch.js +14 -5
  340. package/dist/switch.js.map +1 -1
  341. package/dist/table.cjs +4 -10
  342. package/dist/table.cjs.map +1 -1
  343. package/dist/table.js +5 -11
  344. package/dist/table.js.map +1 -1
  345. package/dist/{tabs-4T_4kCf-.js → tabs-BYhFWnsx.js} +7 -7
  346. package/dist/tabs-BYhFWnsx.js.map +1 -0
  347. package/dist/{tabs-Byxxt-AH.cjs → tabs-CJwB0fr0.cjs} +6 -6
  348. package/dist/tabs-CJwB0fr0.cjs.map +1 -0
  349. package/dist/tabs.cjs +1 -1
  350. package/dist/tabs.js +1 -1
  351. package/dist/teleport.cjs +1 -1
  352. package/dist/teleport.js +1 -1
  353. package/dist/{textarea-kkYNk1ET.js → textarea-BjDx1w2g.js} +37 -41
  354. package/dist/textarea-BjDx1w2g.js.map +1 -0
  355. package/dist/{textarea-BwYwH9fu.cjs → textarea-CGgznhd6.cjs} +36 -40
  356. package/dist/textarea-CGgznhd6.cjs.map +1 -0
  357. package/dist/textarea.cjs +1 -1
  358. package/dist/textarea.js +1 -1
  359. package/dist/{theme-BG0EnzYP.cjs → theme-BVul7lHS.cjs} +6 -6
  360. package/dist/{theme-BG0EnzYP.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
  361. package/dist/{theme-DwQBl6sr.js → theme-Dvm5J8nh.js} +11 -11
  362. package/dist/{theme-DwQBl6sr.js.map → theme-Dvm5J8nh.js.map} +1 -1
  363. package/dist/{theme-button-BD8anzsZ.js → theme-button-Bko5ohFP.js} +2 -2
  364. package/dist/{theme-button-BD8anzsZ.js.map → theme-button-Bko5ohFP.js.map} +1 -1
  365. package/dist/{theme-button-DlrNoCMA.cjs → theme-button-YLY7zR1c.cjs} +1 -1
  366. package/dist/{theme-button-DlrNoCMA.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
  367. package/dist/theme-button.cjs +1 -1
  368. package/dist/theme-button.js +1 -1
  369. package/dist/theme.cjs +1 -1
  370. package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
  371. package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
  372. package/dist/theme.js +4 -4
  373. package/dist/{theme.service-Dv_55nfE.js → theme.service-D94nm7Bf.js} +1 -1
  374. package/dist/theme.service-D94nm7Bf.js.map +1 -0
  375. package/dist/{theme.service-pjkTM209.cjs → theme.service-h2fXQq7x.cjs} +1 -1
  376. package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
  377. package/dist/tooltip.cjs.map +1 -1
  378. package/dist/tooltip.js.map +1 -1
  379. package/dist/tree.cjs +14 -14
  380. package/dist/tree.cjs.map +1 -1
  381. package/dist/tree.js +15 -15
  382. package/dist/tree.js.map +1 -1
  383. package/dist/types.cjs +1 -1
  384. package/dist/types.cjs.map +1 -1
  385. package/dist/types.js +19 -2
  386. package/dist/types.js.map +1 -1
  387. package/dist/typewriter.cjs.map +1 -1
  388. package/dist/typewriter.js.map +1 -1
  389. package/dist/typography-ByF2k5yW.js +358 -0
  390. package/dist/typography-ByF2k5yW.js.map +1 -0
  391. package/dist/typography-Cfav17it.cjs +282 -0
  392. package/dist/typography-Cfav17it.cjs.map +1 -0
  393. package/dist/typography.cjs +1 -1
  394. package/dist/typography.js +1 -1
  395. package/dist/utils-DIXndz6Q.cjs.map +1 -0
  396. package/dist/utils-dSPH7Oh9.js.map +1 -0
  397. package/dist/utils.cjs +1 -1
  398. package/dist/utils.js +1 -1
  399. package/dist/visually-hidden.cjs +13 -13
  400. package/dist/visually-hidden.cjs.map +1 -1
  401. package/dist/visually-hidden.js +14 -14
  402. package/dist/visually-hidden.js.map +1 -1
  403. package/dist/window-Br1OmpL-.cjs +67 -0
  404. package/dist/window-Br1OmpL-.cjs.map +1 -0
  405. package/dist/{window-C76zstbV.js → window-CCmN4but.js} +24 -15
  406. package/dist/window-CCmN4but.js.map +1 -0
  407. package/dist/window.cjs +1 -1
  408. package/dist/window.js +1 -1
  409. package/package.json +1 -1
  410. package/skills/schmancy/surface.md +38 -22
  411. package/src/area/area.component.ts +249 -163
  412. package/src/area/area.service.test.ts +994 -1006
  413. package/src/area/area.service.ts +76 -72
  414. package/src/area/index.ts +7 -7
  415. package/src/area/lazy.ts +39 -42
  416. package/src/area/route.component.ts +54 -52
  417. package/src/area/router.types.ts +7 -7
  418. package/src/audio/emotional-sounds.ts +880 -801
  419. package/src/audio/sound.service.ts +26 -5
  420. package/src/avatar/avatar.ts +4 -4
  421. package/src/badge/badge.ts +15 -12
  422. package/src/badge/index.ts +1 -1
  423. package/src/boat/boat.ts +1 -1
  424. package/src/breadcrumb/breadcrumb.ts +37 -32
  425. package/src/busy/busy.ts +15 -12
  426. package/src/busy/index.ts +2 -2
  427. package/src/busy/spinner.ts +132 -119
  428. package/src/button/button.test.ts +5 -1
  429. package/src/button/button.ts +113 -72
  430. package/src/button/icon-button.ts +64 -46
  431. package/src/button/index.ts +2 -2
  432. package/src/calendar/calendar.test.ts +504 -0
  433. package/src/calendar/calendar.ts +587 -0
  434. package/src/calendar/index.ts +2 -0
  435. package/src/card/actions.ts +11 -9
  436. package/src/card/card.ts +79 -77
  437. package/src/card/content.ts +8 -6
  438. package/src/card/index.ts +4 -4
  439. package/src/card/media.ts +50 -50
  440. package/src/chips/assist-chip.ts +1 -1
  441. package/src/chips/chips.ts +1 -1
  442. package/src/chips/filter-chip.ts +1 -1
  443. package/src/chips/index.ts +1 -1
  444. package/src/chips/input-chip.ts +1 -1
  445. package/src/chips/suggestion-chip.ts +1 -1
  446. package/src/connectivity/connectivity-status.ts +90 -62
  447. package/src/content-drawer/drawer.service.ts +47 -36
  448. package/src/content-drawer/drawer.ts +31 -18
  449. package/src/content-drawer/index.ts +5 -5
  450. package/src/content-drawer/main.ts +9 -7
  451. package/src/content-drawer/sheet.ts +8 -6
  452. package/src/date-range-inline/date-range-inline.ts +523 -522
  453. package/src/date-range-inline/index.ts +2 -2
  454. package/src/delay/index.ts +1 -1
  455. package/src/details/details.ts +119 -105
  456. package/src/details/index.ts +1 -1
  457. package/src/directives/ai-badge.ts +1 -5
  458. package/src/directives/animate-text.ts +43 -31
  459. package/src/directives/art/effects/howl.ts +1 -4
  460. package/src/directives/art/effects/samwa.ts +11 -5
  461. package/src/directives/art/effects/snow.ts +1 -2
  462. package/src/directives/battery.ts +21 -12
  463. package/src/directives/confirm-click.ts +9 -17
  464. package/src/directives/cursor-glow.ts +1 -1
  465. package/src/directives/cycle-text.ts +7 -21
  466. package/src/directives/drag.ts +50 -45
  467. package/src/directives/fyi.ts +1 -6
  468. package/src/directives/gravity.ts +10 -8
  469. package/src/directives/hummingbird.ts +256 -107
  470. package/src/directives/index.ts +29 -29
  471. package/src/directives/intersect.ts +11 -11
  472. package/src/directives/layout.ts +25 -36
  473. package/src/directives/liquid.ts +4 -10
  474. package/src/directives/living-border.ts +7 -5
  475. package/src/directives/long-press.ts +2 -1
  476. package/src/directives/magnetic.ts +7 -6
  477. package/src/directives/nebula.ts +34 -28
  478. package/src/directives/overflow-within.ts +18 -20
  479. package/src/directives/reduced-motion.ts +9 -9
  480. package/src/directives/reveal.ts +193 -195
  481. package/src/directives/ripple.ts +9 -7
  482. package/src/directives/urgent.ts +3 -1
  483. package/src/directives/working-snake.ts +1 -1
  484. package/src/discovery/discovery.service.ts +198 -210
  485. package/src/discovery/index.ts +1 -1
  486. package/src/divider/divider.ts +49 -47
  487. package/src/divider/index.ts +1 -1
  488. package/src/dropdown/dropdown-content.ts +42 -40
  489. package/src/dropdown/index.ts +2 -2
  490. package/src/expand/expand-root.component.ts +70 -61
  491. package/src/expand/expand.component.ts +48 -43
  492. package/src/fab/fab.test.ts +1 -2
  493. package/src/fab/fab.ts +2 -4
  494. package/src/form/fields/autocomplete/autocomplete.scss +6 -2
  495. package/src/form/fields/autocomplete/autocomplete.ts +712 -724
  496. package/src/form/fields/autocomplete/index.ts +1 -1
  497. package/src/form/fields/checkbox/checkbox.ts +1 -4
  498. package/src/form/fields/chips/assist-chip.ts +69 -72
  499. package/src/form/fields/chips/chips.ts +14 -15
  500. package/src/form/fields/chips/filter-chip.ts +36 -32
  501. package/src/form/fields/chips/index.ts +5 -5
  502. package/src/form/fields/chips/input-chip.ts +130 -142
  503. package/src/form/fields/chips/suggestion-chip.ts +69 -72
  504. package/src/form/fields/date-range/date-range-dialog.ts +154 -194
  505. package/src/form/fields/date-range/date-range-helpers.ts +63 -64
  506. package/src/form/fields/date-range/date-range.test.ts +575 -121
  507. package/src/form/fields/date-range/date-range.ts +343 -395
  508. package/src/form/fields/date-range/index.ts +2 -2
  509. package/src/form/fields/input/index.ts +8 -8
  510. package/src/form/fields/input/input.scss +30 -26
  511. package/src/form/fields/input/input.test.ts +4 -1
  512. package/src/form/fields/input/input.ts +4 -20
  513. package/src/form/fields/radio-group/index.ts +2 -2
  514. package/src/form/fields/radio-group/radio-button.ts +8 -8
  515. package/src/form/fields/radio-group/radio-group.ts +4 -1
  516. package/src/form/fields/range/range.ts +3 -1
  517. package/src/form/fields/select/index.ts +2 -2
  518. package/src/form/fields/select/select.ts +51 -45
  519. package/src/form/fields/switch/switch.ts +13 -7
  520. package/src/form/fields/textarea/index.ts +1 -1
  521. package/src/form/fields/textarea/textarea.ts +44 -49
  522. package/src/form/form-summary.ts +15 -14
  523. package/src/form/form.test.ts +0 -1
  524. package/src/form/form.ts +11 -23
  525. package/src/icons/icon.ts +25 -25
  526. package/src/icons/index.ts +1 -1
  527. package/src/iframe/iframe.ts +11 -9
  528. package/src/index.ts +1 -0
  529. package/src/json/json.ts +9 -2
  530. package/src/kbd/kbd.ts +30 -28
  531. package/src/layout/scroll/index.ts +1 -1
  532. package/src/layout/scroll/scroll.ts +54 -54
  533. package/src/lightbox/lightbox-service.ts +27 -18
  534. package/src/lightbox/lightbox.directive.ts +2 -1
  535. package/src/lightbox/lightbox.ts +21 -38
  536. package/src/list/index.ts +3 -3
  537. package/src/list/list-item.ts +32 -26
  538. package/src/list/list.ts +13 -8
  539. package/src/menu/index.ts +2 -2
  540. package/src/menu/menu-item.ts +7 -5
  541. package/src/menu/menu.ts +8 -6
  542. package/src/nav-drawer/appbar.ts +9 -7
  543. package/src/nav-drawer/content.ts +10 -8
  544. package/src/nav-drawer/drawer.ts +29 -25
  545. package/src/nav-drawer/index.ts +6 -6
  546. package/src/navigation-bar/index.ts +2 -2
  547. package/src/navigation-bar/navigation-bar-item.ts +127 -118
  548. package/src/navigation-bar/navigation-bar.ts +103 -91
  549. package/src/navigation-rail/index.ts +2 -2
  550. package/src/navigation-rail/navigation-rail.ts +21 -22
  551. package/src/notification/index.ts +6 -6
  552. package/src/notification/notification-service.ts +1 -2
  553. package/src/notification/notification.scss +5 -1
  554. package/src/notification/notification.ts +1 -3
  555. package/src/notification/notify.ts +204 -207
  556. package/src/option/index.ts +1 -1
  557. package/src/option/option.ts +26 -25
  558. package/src/overlay/overlay.animations.ts +4 -14
  559. package/src/overlay/overlay.component.ts +110 -131
  560. package/src/overlay/overlay.confirm-body.ts +26 -48
  561. package/src/overlay/overlay.gestures.ts +8 -10
  562. package/src/overlay/overlay.layout.ts +1 -4
  563. package/src/overlay/overlay.positioning.ts +4 -15
  564. package/src/overlay/overlay.service.ts +9 -24
  565. package/src/overlay/overlay.stack.test.ts +4 -1
  566. package/src/overlay/overlay.stack.ts +4 -4
  567. package/src/overlay/overlay.types.ts +11 -20
  568. package/src/progress/index.ts +1 -1
  569. package/src/progress/progress.ts +135 -133
  570. package/src/rxjs-utils/index.ts +6 -6
  571. package/src/rxjs-utils/waitForElement.ts +20 -20
  572. package/src/rxjs-utils/waitForElementAll.ts +21 -21
  573. package/src/rxjs-utils/waitForElements.ts +27 -27
  574. package/src/rxjs-utils/waitForElementsAll.ts +27 -29
  575. package/src/rxjs-utils/waitUntil.ts +7 -12
  576. package/src/skeleton/skeleton.ts +39 -33
  577. package/src/slider/index.ts +2 -2
  578. package/src/slider/slide.ts +14 -12
  579. package/src/slider/slider.ts +24 -22
  580. package/src/splash-screen/index.ts +1 -1
  581. package/src/splash-screen/splash-screen.ts +26 -27
  582. package/src/state/active-host.ts +4 -5
  583. package/src/state/index.ts +34 -53
  584. package/src/state/persist.ts +14 -11
  585. package/src/state/schmancy-context.ts +88 -88
  586. package/src/state/state.test-d.ts +3 -13
  587. package/src/state/state.test.ts +1 -4
  588. package/src/steps/index.ts +3 -3
  589. package/src/steps/schmancy-step.ts +41 -31
  590. package/src/steps/schmancy-steps.ts +7 -5
  591. package/src/surface/index.ts +1 -1
  592. package/src/surface/surface.styles.ts +53 -104
  593. package/src/surface/surface.ts +10 -8
  594. package/src/table/index.ts +2 -2
  595. package/src/table/row.ts +1 -4
  596. package/src/table/table.ts +2 -5
  597. package/src/tabs/index.ts +2 -2
  598. package/src/tabs/tabs-group.ts +8 -6
  599. package/src/teleport/index.ts +2 -2
  600. package/src/test-utils/a11y.ts +1 -3
  601. package/src/theme/index.ts +17 -17
  602. package/src/theme/theme-audio-player.ts +18 -16
  603. package/src/theme/theme-controller-boat.ts +1 -1
  604. package/src/theme/theme-controller.ts +36 -32
  605. package/src/theme/theme.component.ts +5 -9
  606. package/src/theme/theme.events.ts +1 -1
  607. package/src/theme/theme.format.ts +7 -7
  608. package/src/theme/theme.service.ts +453 -468
  609. package/src/theme/theme.style.css +78 -23
  610. package/src/theme-button/index.ts +1 -1
  611. package/src/tooltip/tooltip.directive.ts +1 -1
  612. package/src/tree/index.ts +1 -1
  613. package/src/tree/tree.ts +24 -16
  614. package/src/types/surface.ts +38 -44
  615. package/src/typewriter/typewriter.directive.ts +30 -39
  616. package/src/typography/typography.ts +289 -269
  617. package/src/utils/animation.ts +2 -8
  618. package/src/utils/index.ts +6 -6
  619. package/src/utils/number.ts +480 -517
  620. package/src/utils/overlay-stack.ts +1 -3
  621. package/src/utils/search.ts +5 -9
  622. package/src/visually-hidden/visually-hidden.ts +15 -13
  623. package/src/window/window-manager.ts +6 -1
  624. package/src/window/window-position.ts +7 -5
  625. package/src/window/window.ts +143 -108
  626. package/types/src/calendar/calendar.d.ts +108 -0
  627. package/types/src/calendar/calendar.test.d.ts +1 -0
  628. package/types/src/calendar/index.d.ts +2 -0
  629. package/types/src/directives/cursor-glow.d.ts +1 -1
  630. package/types/src/directives/hummingbird.d.ts +3 -3
  631. package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
  632. package/types/src/form/fields/date-range/date-range.d.ts +39 -66
  633. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  634. package/types/src/form/fields/date-range/index.d.ts +1 -1
  635. package/types/src/index.d.ts +1 -0
  636. package/types/src/surface/surface.styles.d.ts +13 -6
  637. package/types/src/types/surface.d.ts +17 -22
  638. package/types/src/utils/number.d.ts +1 -1
  639. package/dist/SchmancyElement-OG71FtNv.js +0 -286
  640. package/dist/SchmancyElement-OG71FtNv.js.map +0 -1
  641. package/dist/SchmancyElement-PS1u0j1B.cjs +0 -2
  642. package/dist/SchmancyElement-PS1u0j1B.cjs.map +0 -1
  643. package/dist/area-CaEI33G0.cjs +0 -21
  644. package/dist/area-CaEI33G0.cjs.map +0 -1
  645. package/dist/area-DtCNCb8w.js.map +0 -1
  646. package/dist/audio-B924fI5N.cjs.map +0 -1
  647. package/dist/audio-DdN76ikW.js.map +0 -1
  648. package/dist/autocomplete-Dq3BkitV.cjs +0 -115
  649. package/dist/autocomplete-Dq3BkitV.cjs.map +0 -1
  650. package/dist/autocomplete-UNOknYUz.js.map +0 -1
  651. package/dist/busy--WqiXKnl.cjs +0 -134
  652. package/dist/busy--WqiXKnl.cjs.map +0 -1
  653. package/dist/busy-DzXyO0z6.js +0 -173
  654. package/dist/busy-DzXyO0z6.js.map +0 -1
  655. package/dist/button-CTvS5YX4.cjs.map +0 -1
  656. package/dist/button-DgoDfcJx.js.map +0 -1
  657. package/dist/card-C6ijJZpF.js.map +0 -1
  658. package/dist/card-Ci3_9Dd4.cjs +0 -177
  659. package/dist/card-Ci3_9Dd4.cjs.map +0 -1
  660. package/dist/chips-9eG-96_D.cjs.map +0 -1
  661. package/dist/chips-DF7akwz7.js.map +0 -1
  662. package/dist/date-range-C13_R3OA.js +0 -966
  663. package/dist/date-range-C13_R3OA.js.map +0 -1
  664. package/dist/date-range-Q2xj5Syc.cjs +0 -142
  665. package/dist/date-range-Q2xj5Syc.cjs.map +0 -1
  666. package/dist/date-range-inline-BnOD-ddB.js.map +0 -1
  667. package/dist/date-range-inline-DV2c_gWM.cjs.map +0 -1
  668. package/dist/details-B2-jECBh.cjs.map +0 -1
  669. package/dist/details-ByF66CyY.js.map +0 -1
  670. package/dist/directives-BL7mzVsA.js.map +0 -1
  671. package/dist/directives-DCb_LA9R.cjs.map +0 -1
  672. package/dist/divider-Bv2QiOZL.cjs +0 -57
  673. package/dist/divider-Bv2QiOZL.cjs.map +0 -1
  674. package/dist/divider-gYuz0zDU.js +0 -89
  675. package/dist/divider-gYuz0zDU.js.map +0 -1
  676. package/dist/expand-B9IUGVtc.cjs +0 -141
  677. package/dist/expand-B9IUGVtc.cjs.map +0 -1
  678. package/dist/expand-cZ8rfCWP.js.map +0 -1
  679. package/dist/form-DowzVsgI.cjs.map +0 -1
  680. package/dist/form-tG7LwDm4.js.map +0 -1
  681. package/dist/icons-BZeCloP9.cjs +0 -24
  682. package/dist/icons-BZeCloP9.cjs.map +0 -1
  683. package/dist/icons-Dup5skuk.js.map +0 -1
  684. package/dist/iframe-CDJjnNmo.cjs.map +0 -1
  685. package/dist/iframe-Xc3EPMZT.js.map +0 -1
  686. package/dist/input-DnmC6J1T.cjs.map +0 -1
  687. package/dist/input-cTyDxW9L.js.map +0 -1
  688. package/dist/input-chip-CV91URyU.cjs +0 -146
  689. package/dist/input-chip-CV91URyU.cjs.map +0 -1
  690. package/dist/input-chip-CYI17YOq.js.map +0 -1
  691. package/dist/layout-CNlZSJFU.cjs.map +0 -1
  692. package/dist/layout-DDxw0EwL.js.map +0 -1
  693. package/dist/lightbox-CH-y3rYB.js.map +0 -1
  694. package/dist/lightbox-CvtqoInF.cjs.map +0 -1
  695. package/dist/list-Dl8KfxrF.cjs +0 -40
  696. package/dist/list-Dl8KfxrF.cjs.map +0 -1
  697. package/dist/list-DrsawQ5R.js.map +0 -1
  698. package/dist/menu-BFRcTe3o.cjs.map +0 -1
  699. package/dist/menu-CsY5lMqY.js.map +0 -1
  700. package/dist/mixins-BoMURWag.cjs.map +0 -1
  701. package/dist/mixins-bCEXbwJV.js.map +0 -1
  702. package/dist/notification-DFKRMmSq.js.map +0 -1
  703. package/dist/notification-FBf3Mb2e.cjs.map +0 -1
  704. package/dist/option-Ct0lGdH3.js.map +0 -1
  705. package/dist/option-Il1KpU8M.cjs +0 -43
  706. package/dist/option-Il1KpU8M.cjs.map +0 -1
  707. package/dist/overlay-Bh8Q_R01.js.map +0 -1
  708. package/dist/overlay-sRXiMkjn.cjs.map +0 -1
  709. package/dist/overlay.confirm-body-CQihsR20.js.map +0 -1
  710. package/dist/overlay.confirm-body-Jc1EuMGs.cjs.map +0 -1
  711. package/dist/overlay.service-9Dp3g7ot.cjs.map +0 -1
  712. package/dist/overlay.service-BXPgS7ay.js.map +0 -1
  713. package/dist/progress-CWC5XYZ_.cjs +0 -51
  714. package/dist/progress-CWC5XYZ_.cjs.map +0 -1
  715. package/dist/progress-CYLshdo2.js.map +0 -1
  716. package/dist/radio-group-6kCgOgBL.cjs.map +0 -1
  717. package/dist/radio-group-bZtZHOj_.js.map +0 -1
  718. package/dist/select-CU3X-PIa.js.map +0 -1
  719. package/dist/select-MXsF8KsU.cjs +0 -56
  720. package/dist/select-MXsF8KsU.cjs.map +0 -1
  721. package/dist/sound.service-B4ZmXpH9.js.map +0 -1
  722. package/dist/sound.service-DjlMvicQ.cjs.map +0 -1
  723. package/dist/splash-screen-CN9dZcqC.cjs +0 -41
  724. package/dist/splash-screen-CN9dZcqC.cjs.map +0 -1
  725. package/dist/splash-screen-emCLYoVl.js.map +0 -1
  726. package/dist/src-DGDTkOvC.js.map +0 -1
  727. package/dist/src-DK3111z_.cjs +0 -240
  728. package/dist/src-DK3111z_.cjs.map +0 -1
  729. package/dist/state-CumAEPQH.cjs.map +0 -1
  730. package/dist/state-DMd_FUeA.js.map +0 -1
  731. package/dist/surface-DGI-FBoi.cjs +0 -7
  732. package/dist/surface-DGI-FBoi.cjs.map +0 -1
  733. package/dist/tabs-4T_4kCf-.js.map +0 -1
  734. package/dist/tabs-Byxxt-AH.cjs.map +0 -1
  735. package/dist/textarea-BwYwH9fu.cjs.map +0 -1
  736. package/dist/textarea-kkYNk1ET.js.map +0 -1
  737. package/dist/theme.service-Dv_55nfE.js.map +0 -1
  738. package/dist/theme.service-pjkTM209.cjs.map +0 -1
  739. package/dist/typography-BVkU11_q.js +0 -358
  740. package/dist/typography-BVkU11_q.js.map +0 -1
  741. package/dist/typography-aaQaIcNc.cjs +0 -282
  742. package/dist/typography-aaQaIcNc.cjs.map +0 -1
  743. package/dist/utils-DTa3QHxk.cjs.map +0 -1
  744. package/dist/utils-H8wNknWC.js.map +0 -1
  745. package/dist/window-C76zstbV.js.map +0 -1
  746. package/dist/window-CmB9XZzT.cjs +0 -58
  747. package/dist/window-CmB9XZzT.cjs.map +0 -1
  748. package/src/form/fields/date-range/date-range-presets.ts +0 -220
  749. package/src/form/fields/date-range/date-utils.ts +0 -58
  750. package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
  751. package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
  752. /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
  753. /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
  754. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
  755. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
  756. /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
  757. /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
  758. /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
  759. /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
@@ -1,2 +0,0 @@
1
- require(`./chunk-CncqDLb2.cjs`);let e=require(`rxjs`),t=require(`rxjs/operators`),n=require(`lit/directives/class-map.js`),r=require(`lit/directives/style-map.js`),i=require(`@lit/context`),a=require(`lit`),o=require(`@lit-labs/signals`);var s=`schmancy-discover`,c=`schmancy-discover-response`;function l(n,r=100){let i=`${n}-where-are-you`,a=`${n}-here-i-am`;return new e.Observable(n=>{let o=(0,e.fromEvent)(window,a).pipe((0,t.takeUntil)((0,e.timer)(r)),(0,t.map)(e=>e.detail.component),(0,t.defaultIfEmpty)(null)).subscribe(e=>{n.next(e),n.complete()});return window.dispatchEvent(new CustomEvent(i,{bubbles:!0,composed:!0})),()=>o.unsubscribe()})}function u(...t){return t.length===0?new e.Observable(e=>{e.next(null),e.complete()}):(0,e.race)(...t.map(e=>l(e)))}function d(n,r=150){let i=`discover-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new e.Observable(a=>{let o=(0,e.fromEvent)(window,c).pipe((0,t.takeUntil)((0,e.timer)(r)),(0,t.map)(e=>e.detail),(0,t.map)(e=>e.requestId===i?e.element:null),(0,t.take)(1),(0,t.defaultIfEmpty)(null)).subscribe(e=>{a.next(e),a.complete()});return window.dispatchEvent(new CustomEvent(s,{detail:{selector:n,requestId:i},bubbles:!0,composed:!0})),()=>o.unsubscribe()})}function f(n,r=150){let i=`discover-all-${Date.now()}-${Math.random().toString(36).slice(2)}`,a=[];return new e.Observable(o=>{let l=(0,e.fromEvent)(window,c).pipe((0,t.takeUntil)((0,e.timer)(r))).subscribe({next:e=>{e.detail.requestId===i&&a.push(e.detail.element)},complete:()=>{o.next(a),o.complete()}});return window.dispatchEvent(new CustomEvent(s,{detail:{selector:n,requestId:i},bubbles:!0,composed:!0})),()=>l.unsubscribe()})}function p(e,t=150){return/^[#.\[]/.test(e)?d(e,t):l(e,t)}var m=(0,i.createContext)(`theme-context`);function h(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}var g=a=>{class o extends a{constructor(...t){super(...t),this.disconnecting=new e.Subject}#e;#t;get locale(){return this.theme?.locale??(typeof navigator<`u`?navigator.language:`de-DE`)}get stableId(){if(this.#e)return this.#e;let e=[];for(let t=this;t?.parentElement&&e.length<5;t=t.parentElement){let n=t.tagName.toLowerCase(),r=Array.from(t.parentElement.children).filter(e=>e.tagName===t.tagName);e.unshift(r.length>1?`${n}:nth-of-type(${r.indexOf(t)+1})`:n)}let t=Array.from(e.join(`>`)).reduce((e,t)=>Math.imul(31,e)+t.charCodeAt(0)|0,0);return this.#e=`el-${Math.abs(t).toString(36)}`}get uid(){return this.getAttribute(`uid`)||(this.#t||=`el-${crypto.randomUUID()}`,this.#t)}set uid(e){e?this.setAttribute(`uid`,e):this.removeAttribute(`uid`)}dispatchScopedEvent(e,t,n={}){let{bubbles:r=!1,composed:i=!0}=n;this.dispatchEvent(new CustomEvent(`${e}::${this.uid}`,{detail:t,bubbles:r,composed:i})),this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:r,composed:i}))}classMap(e){let t={};return Object.keys(e).forEach(n=>{n.trim().split(` `).filter(Boolean).forEach(r=>{t[r]=e[n]})}),(0,n.classMap)(t)}styleMap(e){return(0,r.styleMap)(e)}connectedCallback(){super.connectedCallback(),this.setupDiscoveryResponse()}setupDiscoveryResponse(){let n=this.tagName.toLowerCase(),r=`${n}-where-are-you`,i=`${n}-here-i-am`;(0,e.fromEvent)(window,r).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(()=>{window.dispatchEvent(new CustomEvent(i,{detail:{component:this},bubbles:!0,composed:!0}))}),(0,e.fromEvent)(window,s).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(({detail:{selector:e,requestId:t}})=>{let n=null;if(e.startsWith(`#`)){let t=e.slice(1);this.id!==t&&this.uid!==t||(n=this)}!n&&this.shadowRoot&&(n=this.shadowRoot.querySelector(e)),n&&window.dispatchEvent(new CustomEvent(c,{detail:{requestId:t,element:n},bubbles:!0,composed:!0}))})}discover(e){return l(e)}disconnectedCallback(){this.disconnecting.next(!0),this.disconnecting.complete(),super.disconnectedCallback()}}return h([(0,i.consume)({context:m,subscribe:!0})],o.prototype,`theme`,void 0),o},_=(0,a.unsafeCSS)(`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--color-primary:var(--schmancy-sys-color-primary-default);--color-error:var(--schmancy-sys-color-error-default);--font-mono:var(--schmancy-font-family), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-x-6{inset-inline:1.5rem}.-top-12{top:-3rem}.top-0{top:0}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.top-8{top:2rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\\[-3\\.5rem\\]{bottom:-3.5rem}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-3\\.5{left:.875rem}.left-4{left:1rem}.left-\\[calc\\(100\\%\\+8px\\)\\]{left:calc(100% + 8px)}.isolate{isolation:isolate}.z-0{z-index:0}.z-5{z-index:5}.z-10{z-index:10}.z-20{z-index:20}.z-49{z-index:49}.z-50{z-index:50}.z-100{z-index:100}.z-1000{z-index:1000}.z-9998{z-index:9998}.z-\\[1000\\]{z-index:1000}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-mx-1{margin-inline:-.25rem}.-mx-2{margin-inline:-.5rem}.mx-auto{margin-inline:auto}.my-0\\.5{margin-block:.125rem}.my-4{margin-block:1rem}.-mt-2\\.5{margin-top:-.625rem}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.-mr-1{margin-right:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.-ml-2\\.5{margin-left:-.625rem}.-ml-px{margin-left:-1px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.ml-px{margin-left:1px}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.size-3{width:.75rem;height:.75rem}.size-5{width:1.25rem;height:1.25rem}.size-8{width:2rem;height:2rem}.size-10{width:2.5rem;height:2.5rem}.size-14{width:3.5rem;height:3.5rem}.size-24{width:6rem;height:6rem}.size-\\[18px\\]{width:18px;height:18px}.h-0\\.5{height:.125rem}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-64{height:16rem}.h-\\[90dvh\\]{height:90dvh}.h-\\[240px\\]{height:240px}.h-\\[250px\\]{height:250px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[90dvh\\]{max-height:90dvh}.max-h-\\[90vh\\]{max-height:90vh}.min-h-0{min-height:0}.min-h-12{min-height:3rem}.min-h-14{min-height:3.5rem}.min-h-\\[32px\\]{min-height:32px}.min-h-\\[36px\\]{min-height:36px}.min-h-\\[40px\\]{min-height:40px}.min-h-\\[50px\\]{min-height:50px}.min-h-\\[60px\\]{min-height:60px}.min-h-\\[400px\\]{min-height:400px}.min-h-screen{min-height:100vh}.w-0{width:0}.w-0\\.5{width:.125rem}.w-1{width:.25rem}.w-1\\.5{width:.375rem}.w-1\\/3{width:33.3333%}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-60{width:15rem}.w-\\[240px\\]{width:240px}.w-\\[250px\\]{width:250px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-14{max-width:3.5rem}.max-w-\\[90vw\\]{max-width:90vw}.max-w-\\[168px\\]{max-width:168px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[720px\\]{max-width:720px}.max-w-\\[min\\(480px\\,calc\\(100vw-2rem\\)\\)\\]{max-width:min(480px,100vw - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.min-w-0{min-width:0}.min-w-4{min-width:1rem}.min-w-14{min-width:3.5rem}.min-w-16{min-width:4rem}.min-w-\\[6px\\]{min-width:6px}.min-w-\\[16px\\]{min-width:16px}.min-w-\\[48px\\]{min-width:48px}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[140px\\]{min-width:140px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-x-1{--tw-translate-x:calc(.25rem * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[ripple_600ms_linear\\]{animation:.6s linear ripple}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-x{resize:horizontal}.resize-y{resize:vertical}.appearance-none{appearance:none}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-stretch{justify-items:stretch}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-\\[8px\\]{gap:8px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(.25rem * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[8px\\]{border-radius:8px}.rounded-\\[22px\\]{border-radius:22px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:.75rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.rounded-t-\\[28px\\]{border-top-left-radius:28px;border-top-right-radius:28px}.rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.rounded-l-2xl{border-top-left-radius:1rem;border-bottom-left-radius:1rem}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-r-2xl{border-top-right-radius:1rem;border-bottom-right-radius:1rem}.rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.rounded-tr-2xl{border-top-right-radius:1rem}.rounded-b-2xl{border-bottom-right-radius:1rem;border-bottom-left-radius:1rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-br-2xl{border-bottom-right-radius:1rem}.rounded-bl-2xl{border-bottom-left-radius:1rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r-4{border-right-style:var(--tw-border-style);border-right-width:4px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--schmancy-sys-color-outlineVariant\\)\\]{border-color:var(--schmancy-sys-color-outlineVariant)}.border-error-default{border-color:var(--schmancy-sys-color-error-default)}.border-info-default{border-color:var(--schmancy-sys-color-info-default)}.border-outline{border-color:var(--schmancy-sys-color-outline)}.border-outline-variant,.border-outline-variant\\/30{border-color:var(--schmancy-sys-color-outlineVariant)}@supports (color:color-mix(in lab, red, red)){.border-outline-variant\\/30{border-color:color-mix(in oklab, var(--schmancy-sys-color-outlineVariant) 30%, transparent)}}.border-outline\\/20{border-color:var(--schmancy-sys-color-outline)}@supports (color:color-mix(in lab, red, red)){.border-outline\\/20{border-color:color-mix(in oklab, var(--schmancy-sys-color-outline) 20%, transparent)}}.border-outlineVariant{border-color:var(--schmancy-sys-color-outlineVariant)}.border-primary-default{border-color:var(--schmancy-sys-color-primary-default)}.border-secondary-default{border-color:var(--schmancy-sys-color-secondary-default)}.border-success-default{border-color:var(--schmancy-sys-color-success-default)}.border-surface-container{border-color:var(--schmancy-sys-color-surface-container)}.border-surface-default{border-color:var(--schmancy-sys-color-surface-default)}.border-surface-on\\/8{border-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.border-surface-on\\/8{border-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 8%, transparent)}}.border-transparent{border-color:#0000}.border-warning-default{border-color:var(--schmancy-sys-color-warning-default)}.border-white{border-color:#fff}.bg-\\[\\#ff0000\\]{background-color:red}.bg-\\[var\\(--schmancy-sys-color-X\\)\\]{background-color:var(--schmancy-sys-color-X)}.bg-black{background-color:#000}.bg-black\\/95{background-color:oklab(0% none none/.95)}.bg-black\\/\\[0\\.07\\]{background-color:oklab(0% none none/.07)}.bg-error{background-color:var(--schmancy-sys-color-error-default)}.bg-error-container{background-color:var(--schmancy-sys-color-error-container)}.bg-error-default,.bg-error-default\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab, red, red)){.bg-error-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-error-default) 70%, transparent)}}.bg-error\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab, red, red)){.bg-error\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-error-default) 70%, transparent)}}.bg-info-container{background-color:var(--schmancy-sys-color-info-container)}.bg-info-default{background-color:var(--schmancy-sys-color-info-default)}.bg-outline{background-color:var(--schmancy-sys-color-outline)}.bg-outlineVariant{background-color:var(--schmancy-sys-color-outlineVariant)}.bg-primary{background-color:var(--schmancy-sys-color-primary-default)}.bg-primary-container,.bg-primary-container\\/20{background-color:var(--schmancy-sys-color-primary-container)}@supports (color:color-mix(in lab, red, red)){.bg-primary-container\\/20{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-container) 20%, transparent)}}.bg-primary-default,.bg-primary-default\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 70%, transparent)}}.bg-primary-on{background-color:var(--schmancy-sys-color-primary-on)}.bg-primary-onContainer{background-color:var(--schmancy-sys-color-primary-onContainer)}.bg-primary\\/40{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 40%, transparent)}}.bg-primary\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 70%, transparent)}}.bg-scrim{background-color:var(--schmancy-sys-color-scrim)}.bg-secondary{background-color:var(--schmancy-sys-color-secondary-default)}.bg-secondary-container{background-color:var(--schmancy-sys-color-secondary-container)}.bg-secondary-default,.bg-secondary-default\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 70%, transparent)}}.bg-secondary-onContainer{background-color:var(--schmancy-sys-color-secondary-onContainer)}.bg-secondary\\/15{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/15{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 15%, transparent)}}.bg-secondary\\/40{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 40%, transparent)}}.bg-secondary\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 70%, transparent)}}.bg-success{background-color:var(--schmancy-sys-color-success-default)}.bg-success-container{background-color:var(--schmancy-sys-color-success-container)}.bg-success-default,.bg-success-default\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 70%, transparent)}}.bg-success\\/10{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/10{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 10%, transparent)}}.bg-success\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 70%, transparent)}}.bg-surface-bright{background-color:var(--schmancy-sys-color-surface-bright)}.bg-surface-container,.bg-surface-container\\/10{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/10{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 10%, transparent)}}.bg-surface-container\\/20{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/20{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 20%, transparent)}}.bg-surface-container\\/85{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/85{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 85%, transparent)}}.bg-surface-containerHigh{background-color:var(--schmancy-sys-color-surface-containerHigh)}.bg-surface-containerHighest{background-color:var(--schmancy-sys-color-surface-containerHighest)}.bg-surface-containerLow{background-color:var(--schmancy-sys-color-surface-containerLow)}.bg-surface-containerLowest{background-color:var(--schmancy-sys-color-surface-containerLowest)}.bg-surface-default{background-color:var(--schmancy-sys-color-surface-default)}.bg-surface-dim{background-color:var(--schmancy-sys-color-surface-dim)}.bg-surface-high{background-color:var(--schmancy-sys-color-surface-high)}.bg-surface-highest{background-color:var(--schmancy-sys-color-surface-highest)}.bg-surface-low{background-color:var(--schmancy-sys-color-surface-low)}.bg-surface-lowest,.bg-surface-lowest\\/55{background-color:var(--schmancy-sys-color-surface-lowest)}@supports (color:color-mix(in lab, red, red)){.bg-surface-lowest\\/55{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-lowest) 55%, transparent)}}.bg-surface-on{background-color:var(--schmancy-sys-color-surface-on)}.bg-surface\\/70{background-color:var(--schmancy-sys-color-surface-default)}@supports (color:color-mix(in lab, red, red)){.bg-surface\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-default) 70%, transparent)}}.bg-tertiary{background-color:var(--schmancy-sys-color-tertiary-default)}.bg-tertiary-container{background-color:var(--schmancy-sys-color-tertiary-container)}.bg-tertiary-default,.bg-tertiary-default\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 70%, transparent)}}.bg-tertiary-onContainer{background-color:var(--schmancy-sys-color-tertiary-onContainer)}.bg-tertiary\\/40{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 40%, transparent)}}.bg-tertiary\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 70%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--schmancy-sys-color-warning-default)}.bg-warning-container{background-color:var(--schmancy-sys-color-warning-container)}.bg-warning-default,.bg-warning\\/70{background-color:var(--schmancy-sys-color-warning-default)}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-warning-default) 70%, transparent)}}.bg-white\\/15{background-color:oklab(100% 0 5.96046e-8/.15)}.bg-white\\/20{background-color:oklab(100% 0 5.96046e-8/.2)}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.from-surface-on\\/20{--tw-gradient-from:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.from-surface-on\\/20{--tw-gradient-from:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 20%, transparent)}}.from-surface-on\\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-12{padding:3rem}.px-1{padding-inline:.25rem}.px-1\\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-2\\.5{padding-inline:.625rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-5{padding-inline:1.25rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:1.75rem}.py-0\\.5{padding-block:.125rem}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-2\\.5{padding-block:.625rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.ps-4{padding-inline-start:1rem}.pe-5{padding-inline-end:1.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pt-10{padding-top:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--schmancy-font-family), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5 / 2.25))}.text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,calc(1.75 / 1.25))}.text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.text-\\[8px\\]{font-size:8px}.text-\\[10px\\]{font-size:10px}.text-\\[18px\\]{font-size:18px}.leading-3{--tw-leading:calc(.25rem * 3);line-height:.75rem}.leading-4{--tw-leading:calc(.25rem * 4);line-height:1rem}.leading-5{--tw-leading:calc(.25rem * 5);line-height:1.25rem}.leading-6{--tw-leading:calc(.25rem * 6);line-height:1.5rem}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:1.25;line-height:1.25}.font-bold{--tw-font-weight:700;font-weight:700}.font-medium{--tw-font-weight:500;font-weight:500}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-\\[0\\.01em\\]{--tw-tracking:.01em;letter-spacing:.01em}.tracking-\\[0\\.1px\\]{--tw-tracking:.1px;letter-spacing:.1px}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-\\[\\#000\\]{color:#000}.text-error,.text-error-default{color:var(--schmancy-sys-color-error-default)}.text-error-on{color:var(--schmancy-sys-color-error-on)}.text-error-onContainer{color:var(--schmancy-sys-color-error-onContainer)}.text-info-default{color:var(--schmancy-sys-color-info-default)}.text-info-on{color:var(--schmancy-sys-color-info-on)}.text-info-onContainer{color:var(--schmancy-sys-color-info-onContainer)}.text-primary-container{color:var(--schmancy-sys-color-primary-container)}.text-primary-default{color:var(--schmancy-sys-color-primary-default)}.text-primary-on{color:var(--schmancy-sys-color-primary-on)}.text-primary-onContainer{color:var(--schmancy-sys-color-primary-onContainer)}.text-secondary-default{color:var(--schmancy-sys-color-secondary-default)}.text-secondary-on{color:var(--schmancy-sys-color-secondary-on)}.text-secondary-onContainer{color:var(--schmancy-sys-color-secondary-onContainer)}.text-success,.text-success-default{color:var(--schmancy-sys-color-success-default)}.text-success-on{color:var(--schmancy-sys-color-success-on)}.text-success-on-container,.text-success-onContainer{color:var(--schmancy-sys-color-success-onContainer)}.text-surface-on{color:var(--schmancy-sys-color-surface-on)}.text-surface-on-variant{color:var(--schmancy-sys-color-surface-onVariant)}.text-surface-on\\/40{color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.text-surface-on\\/40{color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 40%, transparent)}}.text-surface-onVariant{color:var(--schmancy-sys-color-surface-onVariant)}.text-tertiary-default{color:var(--schmancy-sys-color-tertiary-default)}.text-tertiary-on{color:var(--schmancy-sys-color-tertiary-on)}.text-tertiary-onContainer{color:var(--schmancy-sys-color-tertiary-onContainer)}.text-warning-default{color:var(--schmancy-sys-color-warning-default)}.text-warning-on{color:var(--schmancy-sys-color-warning-on)}.text-warning-onContainer{color:var(--schmancy-sys-color-warning-onContainer)}.text-white{color:#fff}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.caret-transparent{caret-color:#0000}.opacity-0{opacity:0}.opacity-1{opacity:.01}.opacity-30{opacity:.3}.opacity-38{opacity:.38}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-85{opacity:.85}.opacity-100{opacity:1}.opacity-\\[0\\.12\\]{opacity:.12}.opacity-\\[0\\.38\\]{opacity:.38}.opacity-\\[var\\(--schmancy-sys-state-disabled-opacity\\)\\]{opacity:var(--schmancy-sys-state-disabled-opacity)}.opacity-\\[var\\(--schmancy-sys-state-pressed-opacity\\)\\]{opacity:var(--schmancy-sys-state-pressed-opacity)}.shadow-1{--tw-shadow:var(--schmancy-sys-elevation-1);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[inset_0_1px_1px_0_rgba\\(255\\,255\\,255\\,0\\.2\\)\\]{--tw-shadow:inset 0 1px 1px 0 var(--tw-shadow-color,#fff3);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[inset_0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:inset 0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-overlay{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 28px 60px -20px var(--tw-shadow-color,#00000073), inset 0 1px 0 0 var(--tw-shadow-color,var(--schmancy-sys-color-surface-on))}@supports (color:color-mix(in lab, red, red)){.shadow-overlay{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 28px 60px -20px var(--tw-shadow-color,#00000073), inset 0 1px 0 0 var(--tw-shadow-color,color-mix(in srgb, var(--schmancy-sys-color-surface-on) 8%, transparent))}}.shadow-overlay{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-overlay-anchored{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 12px 28px -12px var(--tw-shadow-color,#00000059), inset 0 1px 0 0 var(--tw-shadow-color,var(--schmancy-sys-color-surface-on))}@supports (color:color-mix(in lab, red, red)){.shadow-overlay-anchored{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 12px 28px -12px var(--tw-shadow-color,#00000059), inset 0 1px 0 0 var(--tw-shadow-color,color-mix(in srgb, var(--schmancy-sys-color-surface-on) 8%, transparent))}}.shadow-overlay-anchored{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-error-default{--tw-ring-color:var(--schmancy-sys-color-error-default)}.ring-primary,.ring-primary-default{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.ring-secondary-default{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-surface-containerLow{--tw-ring-offset-color:var(--schmancy-sys-color-surface-containerLow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.outline-offset-4{outline-offset:4px}.outline-error-default{outline-color:var(--schmancy-sys-color-error-default)}.outline-secondary-default{outline-color:var(--schmancy-sys-color-secondary-default)}.brightness-110{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\\[16px\\]{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-brightness-105{--tw-backdrop-brightness:brightness(105%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:cubic-bezier(.4, 0, 1, 1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{--tw-ease:cubic-bezier(.4, 0, .2, 1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:cubic-bezier(0, 0, .2, 1);transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-\\[opacity\\]{will-change:opacity}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:border-primary-default:is(:where(.group):hover *){border-color:var(--schmancy-sys-color-primary-default)}.group-hover\\:bg-primary-container:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-primary-container)}.group-hover\\:bg-primary-default:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-primary-default)}.group-hover\\:bg-surface-containerHighest:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-surface-containerHighest)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\\:shadow-lg:is(:where(.group):hover *){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-1\\/2:before{content:var(--tw-content);top:50%}.before\\:left-1\\/2:before{content:var(--tw-content);left:50%}.before\\:h-0:before{content:var(--tw-content);height:0}.before\\:h-\\[200\\%\\]:before{content:var(--tw-content);height:200%}.before\\:w-0:before{content:var(--tw-content);width:0}.before\\:w-\\[200\\%\\]:before{content:var(--tw-content);width:200%}.before\\:-translate-x-1\\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:-translate-y-1\\/2:before{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-current:before{content:var(--tw-content);background-color:currentColor}.before\\:opacity-0:before{content:var(--tw-content);opacity:0}.before\\:opacity-12:before{content:var(--tw-content);opacity:.12}.before\\:transition-all:before{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.before\\:duration-300:before{content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}.before\\:content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:right-3:after{content:var(--tw-content);right:.75rem}.after\\:bottom-\\[-4px\\]:after{content:var(--tw-content);bottom:-4px}.after\\:left-3:after{content:var(--tw-content);left:.75rem}.after\\:h-px:after{content:var(--tw-content);height:1px}.after\\:bg-outline-variant:after{content:var(--tw-content);background-color:var(--schmancy-sys-color-outlineVariant)}.after\\:opacity-12:after{content:var(--tw-content);opacity:.12}.focus-within\\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\\:ring-error-default:focus-within{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus-within\\:ring-secondary-default:focus-within{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus-within\\:ring-inset:focus-within{--tw-ring-inset:inset}@media (hover:hover){.hover\\:z-\\[100\\]:hover{z-index:100}.hover\\:translate-x-0:hover{--tw-translate-x:calc(.25rem * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.hover\\:border-outlineVariant:hover{border-color:var(--schmancy-sys-color-outlineVariant)}.hover\\:bg-error-container:hover{background-color:var(--schmancy-sys-color-error-container)}.hover\\:bg-error-default:hover{background-color:var(--schmancy-sys-color-error-default)}.hover\\:bg-error-on:hover{background-color:var(--schmancy-sys-color-error-on)}.hover\\:bg-info-container:hover{background-color:var(--schmancy-sys-color-info-container)}.hover\\:bg-info-default:hover{background-color:var(--schmancy-sys-color-info-default)}.hover\\:bg-info-on:hover{background-color:var(--schmancy-sys-color-info-on)}.hover\\:bg-primary-container:hover{background-color:var(--schmancy-sys-color-primary-container)}.hover\\:bg-primary-default:hover,.hover\\:bg-primary-default\\/8:hover{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary-default\\/8:hover{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 8%, transparent)}}.hover\\:bg-primary-on:hover{background-color:var(--schmancy-sys-color-primary-on)}.hover\\:bg-secondary-container:hover{background-color:var(--schmancy-sys-color-secondary-container)}.hover\\:bg-secondary-default:hover{background-color:var(--schmancy-sys-color-secondary-default)}.hover\\:bg-secondary-on:hover{background-color:var(--schmancy-sys-color-secondary-on)}.hover\\:bg-success-container:hover{background-color:var(--schmancy-sys-color-success-container)}.hover\\:bg-success-default:hover{background-color:var(--schmancy-sys-color-success-default)}.hover\\:bg-success-on:hover{background-color:var(--schmancy-sys-color-success-on)}.hover\\:bg-surface-containerHigh:hover{background-color:var(--schmancy-sys-color-surface-containerHigh)}.hover\\:bg-surface-containerHighest:hover{background-color:var(--schmancy-sys-color-surface-containerHighest)}.hover\\:bg-surface-containerLow:hover{background-color:var(--schmancy-sys-color-surface-containerLow)}.hover\\:bg-surface-high:hover{background-color:var(--schmancy-sys-color-surface-high)}.hover\\:bg-surface-on:hover,.hover\\:bg-surface-on\\/5:hover{background-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-surface-on\\/5:hover{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 5%, transparent)}}.hover\\:bg-surface-onVariant:hover{background-color:var(--schmancy-sys-color-surface-onVariant)}.hover\\:bg-warning-container:hover{background-color:var(--schmancy-sys-color-warning-container)}.hover\\:bg-warning-default:hover{background-color:var(--schmancy-sys-color-warning-default)}.hover\\:bg-warning-on:hover{background-color:var(--schmancy-sys-color-warning-on)}.hover\\:bg-white\\/25:hover{background-color:oklab(100% 0 5.96046e-8/.25)}.hover\\:bg-white\\/30:hover{background-color:oklab(100% 0 5.96046e-8/.3)}.hover\\:text-surface-on:hover{color:var(--schmancy-sys-color-surface-on)}.hover\\:opacity-8:hover{opacity:.08}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-\\[0\\.08\\]:hover{opacity:.08}.hover\\:opacity-\\[var\\(--schmancy-sys-state-hover-opacity\\)\\]:hover{opacity:var(--schmancy-sys-state-hover-opacity)}.hover\\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-xs:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:brightness-95:hover{--tw-brightness:brightness(95%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\\:brightness-\\[0\\.92\\]:hover{--tw-brightness:brightness(.92);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-secondary-default:focus{border-color:var(--schmancy-sys-color-secondary-default)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error-default:focus{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus\\:ring-primary-container:focus{--tw-ring-color:var(--schmancy-sys-color-primary-container)}.focus\\:ring-secondary-default:focus{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\\:z-1:focus-visible{z-index:1}.focus-visible\\:opacity-10:focus-visible,.focus-visible\\:opacity-\\[0\\.10\\]:focus-visible{opacity:.1}.focus-visible\\:opacity-\\[var\\(--schmancy-sys-state-focus-opacity\\)\\]:focus-visible{opacity:var(--schmancy-sys-state-focus-opacity)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-primary-default:focus-visible,.focus-visible\\:ring-primary-default\\/50:focus-visible{--tw-ring-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-primary-default\\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 50%, transparent)}}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-primary:focus-visible,.focus-visible\\:outline-primary-default:focus-visible{outline-color:var(--schmancy-sys-color-primary-default)}.focus-visible\\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:bg-surface-on\\/8:active{background-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.active\\:bg-surface-on\\/8:active{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 8%, transparent)}}.active\\:opacity-10:active,.active\\:opacity-\\[0\\.10\\]:active{opacity:.1}.active\\:brightness-90:active{--tw-brightness:brightness(90%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.active\\:brightness-\\[0\\.85\\]:active{--tw-brightness:brightness(.85);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}@media (prefers-reduced-motion:reduce){.motion-reduce\\:hidden{display:none}}@media (width>=40rem){.sm\\:top-2{top:.5rem}.sm\\:right-2{right:.5rem}.sm\\:bottom-\\[-3rem\\]{bottom:-3rem}.sm\\:left-4{left:1rem}.sm\\:-mx-2{margin-inline:-.5rem}.sm\\:mt-1{margin-top:.25rem}.sm\\:mt-4{margin-top:1rem}.sm\\:ml-6{margin-left:1.5rem}.sm\\:ml-10{margin-left:2.5rem}.sm\\:h-5{height:1.25rem}.sm\\:h-12{height:3rem}.sm\\:min-h-\\[40px\\]{min-height:40px}.sm\\:w-5{width:1.25rem}.sm\\:px-2{padding-inline:.5rem}.sm\\:px-3{padding-inline:.75rem}.sm\\:py-2{padding-block:.5rem}.sm\\:py-3{padding-block:.75rem}.sm\\:pb-8{padding-bottom:2rem}.sm\\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,calc(2.25 / 1.875))}}@media (width>=48rem){.md\\:top-4{top:1rem}.md\\:right-4{right:1rem}.md\\:bottom-\\[-3\\.5rem\\]{bottom:-3.5rem}.md\\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5 / 2.25))}.md\\:text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}}@media (width>=64rem){.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}}.\\[\\&\\>\\.ripple\\]\\:scale-100>.ripple{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@layer schmancy.tokens;@layer schmancy.base{:host,:root{font-family:var(--schmancy-font-family);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:host,:root{--lightningcss-light: ;--lightningcss-dark:initial}}:host,:host *,*{touch-action:pan-x pan-y}.interactive{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .4s,filter .2s}.interactive:hover{filter:brightness(1.03);box-shadow:0 4px 20px -6px var(--schmancy-sys-color-primary-default);transform:translateY(-1px)}@supports (color:color-mix(in lab, red, red)){.interactive:hover{box-shadow:0 4px 20px -6px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 18%, transparent)}}.interactive:active{filter:brightness(.96);box-shadow:none;transition-duration:.1s;transform:scale(.97)}@media (prefers-reduced-motion:reduce){.interactive{transition:filter .15s}.interactive:hover{box-shadow:none;transform:none}.interactive:active{transform:none}}}@layer schmancy.components;@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}`),v=e=>{class t extends a.LitElement{static{this.styles=[(0,a.unsafeCSS)(e),_]}}return t},y=e=>{class t extends g(v(e)){constructor(...e){super(...e),this.disconnectedCallback=()=>{super.disconnectedCallback()}}}return t},b=Symbol.for(`schmancy.state.activeHost.stack`),x=globalThis;x[b]??={stack:[void 0]};var S=x[b].stack;if(typeof Promise<`u`&&!(`k`in Promise.prototype)){Object.defineProperty(Promise.prototype,`k`,{value:!0,configurable:!1,enumerable:!1,writable:!1});let e=Promise.prototype.then;Promise.prototype.then=function(t,n){let r=S[S.length-1],i=t&&(e=>{S.push(r);try{return t(e)}finally{S.pop()}}),a=n&&(e=>{S.push(r);try{return n(e)}finally{S.pop()}});return e.call(this,i,a)}}var C={run(e,t){S.push(e);try{return t()}finally{S.pop()}},get:()=>S[S.length-1]},w=Symbol.for(`schmancy.state.activeHost.eventHost`),T=globalThis[w]??={host:void 0,scheduled:!1};function E(e){T.host=e,T.scheduled||(T.scheduled=!0,queueMicrotask(()=>{T.scheduled=!1,T.host=void 0}))}function D(){let e=C.get();return e===void 0?T.host===void 0?typeof document<`u`&&document.activeElement instanceof HTMLElement?document.activeElement:void 0:T.host:e}function O(e){return Symbol.for(`schmancy.state:${e}`)}var k=(0,o.SignalWatcher)(g(a.LitElement));function A(e){return e===`constructor`||!!e.startsWith(`_$`)}var j=new WeakSet;function M(e){let t=e.prototype;for(;t&&t!==HTMLElement.prototype&&!j.has(t);){j.add(t);let e=Object.getOwnPropertyDescriptors(t);for(let[n,r]of Object.entries(e)){if(A(n)||typeof r.value!=`function`||!r.configurable)continue;let e=r.value;Object.defineProperty(t,n,{...r,value:function(...t){return C.run(this,()=>e.apply(this,t))}})}t=Object.getPrototypeOf(t)}}var N=new WeakMap,P=class extends k{constructor(){super(),this.abortController=new AbortController,this.disconnectedSignal=this.abortController.signal,M(this.constructor)}static finalizeStyles(e){return[...super.finalizeStyles(e),_]}addEventListener(e,t,n){t==null?super.addEventListener(e,t,n):super.addEventListener(e,function(e,t){let n=N.get(t);if(n)return n;let r=function(n){C.run(e,()=>{typeof t==`function`?t.call(this,n):t.handleEvent(n)})};return N.set(t,r),r}(this,t),n)}removeEventListener(e,t,n){if(t==null)return void super.removeEventListener(e,t,n);let r=N.get(t);super.removeEventListener(e,r??t,n)}disconnectedCallback(){this.abortController.abort(),super.disconnectedCallback()}};function F(e){return t=>(M(t),customElements.define(e,t),t)}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return d}});
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchmancyElement-PS1u0j1B.cjs","names":["#stableId","#uid"],"sources":["../mixins/discovery.service.ts","../src/theme/context.ts","../mixins/baseElement.ts","../mixins/tailwind.css?inline","../mixins/tailwind.mixin.ts","../src/state/active-host.ts","../mixins/SchmancyElement.ts"],"sourcesContent":["import { fromEvent, timer, race, Observable } from 'rxjs'\nimport { takeUntil, map, defaultIfEmpty, take } from 'rxjs/operators'\n\n/**\n * Global discovery event names\n */\nconst DISCOVER_EVENT = 'schmancy-discover'\nconst DISCOVER_RESPONSE_EVENT = 'schmancy-discover-response'\n\n/**\n * Discovery request detail\n */\ninterface DiscoverRequest {\n\tselector: string\n\trequestId: string\n}\n\n/**\n * Discovery response detail\n */\ninterface DiscoverResponse {\n\trequestId: string\n\telement: HTMLElement\n}\n\n/**\n * Discover a component in the DOM using the WhereAreYou/HereIAm pattern.\n *\n * @param componentTag - The tag name of the component to discover (e.g., 'schmancy-navigation-rail')\n * @param timeout - How long to wait for a response in milliseconds (default: 100)\n * @returns Observable that emits the discovered component or null if not found\n */\nexport function discoverComponent<T extends HTMLElement>(\n\tcomponentTag: string,\n\ttimeout = 100,\n): Observable<T | null> {\n\tconst whereAreYouEvent = `${componentTag}-where-are-you`\n\tconst hereIAmEvent = `${componentTag}-here-i-am`\n\n\treturn new Observable(subscriber => {\n\t\t// Listen for response first (you were right!)\n\t\tconst subscription = fromEvent<CustomEvent>(window, hereIAmEvent)\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(timer(timeout)),\n\t\t\t\tmap(e => e.detail.component as T),\n\t\t\t\tdefaultIfEmpty(null),\n\t\t\t)\n\t\t\t.subscribe(component => {\n\t\t\t\tsubscriber.next(component)\n\t\t\t\tsubscriber.complete()\n\t\t\t})\n\n\t\t// Then dispatch discovery request\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(whereAreYouEvent, {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\t// Return cleanup function\n\t\treturn () => subscription.unsubscribe()\n\t})\n}\n\n/**\n * Discover any of multiple components using race.\n * Returns the first component that responds.\n *\n * @param componentTags - Array of component tag names to discover\n * @returns Observable that emits the first discovered component or null if none found\n */\nexport function discoverAnyComponent<T extends HTMLElement>(...componentTags: string[]): Observable<T | null> {\n\tif (componentTags.length === 0) {\n\t\treturn new Observable(subscriber => {\n\t\t\tsubscriber.next(null)\n\t\t\tsubscriber.complete()\n\t\t})\n\t}\n\n\treturn race(...componentTags.map(tag => discoverComponent<T>(tag)))\n}\n\n/**\n * Universal element discovery - finds ANY element by CSS selector across shadow DOM boundaries.\n * Uses event-based discovery pattern - no DOM traversal needed.\n *\n * How it works:\n * 1. Broadcasts a discovery request event on window\n * 2. All $LitElement components receive this event and check their shadow DOM\n * 3. If a match is found, they respond with the element\n *\n * @param selector - CSS selector (e.g., '#my-id', '.my-class', '[data-attr]')\n * @param timeout - How long to wait for a response in milliseconds (default: 150)\n * @returns Observable that emits the discovered element or null if not found\n *\n * @example\n * ```typescript\n * // Find element by ID across shadow boundaries\n * discoverElement('#app-card').subscribe(el => {\n * if (el) console.log('Found:', el)\n * })\n *\n * // Find element by class\n * discoverElement('.special-button').subscribe(el => {...})\n * ```\n */\nexport function discoverElement<T extends HTMLElement>(\n\tselector: string,\n\ttimeout = 150,\n): Observable<T | null> {\n\tconst requestId = `discover-${Date.now()}-${Math.random().toString(36).slice(2)}`\n\n\treturn new Observable(subscriber => {\n\t\t// Listen for response first\n\t\tconst subscription = fromEvent<CustomEvent<DiscoverResponse>>(window, DISCOVER_RESPONSE_EVENT)\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(timer(timeout)),\n\t\t\t\tmap(e => e.detail),\n\t\t\t\t// Filter for our specific request\n\t\t\t\tmap(detail => (detail.requestId === requestId ? (detail.element as T) : null)),\n\t\t\t\t// Only take the first non-null response\n\t\t\t\ttake(1),\n\t\t\t\tdefaultIfEmpty(null),\n\t\t\t)\n\t\t\t.subscribe(element => {\n\t\t\t\tsubscriber.next(element)\n\t\t\t\tsubscriber.complete()\n\t\t\t})\n\n\t\t// Broadcast discovery request\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent<DiscoverRequest>(DISCOVER_EVENT, {\n\t\t\t\tdetail: { selector, requestId },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\treturn () => subscription.unsubscribe()\n\t})\n}\n\n/**\n * Discover multiple elements matching a selector.\n * Collects all responses within the timeout period.\n *\n * @param selector - CSS selector\n * @param timeout - How long to collect responses (default: 150ms)\n * @returns Observable that emits array of discovered elements\n */\nexport function discoverAllElements<T extends HTMLElement>(\n\tselector: string,\n\ttimeout = 150,\n): Observable<T[]> {\n\tconst requestId = `discover-all-${Date.now()}-${Math.random().toString(36).slice(2)}`\n\tconst elements: T[] = []\n\n\treturn new Observable(subscriber => {\n\t\t// Collect all responses\n\t\tconst subscription = fromEvent<CustomEvent<DiscoverResponse>>(window, DISCOVER_RESPONSE_EVENT)\n\t\t\t.pipe(takeUntil(timer(timeout)))\n\t\t\t.subscribe({\n\t\t\t\tnext: e => {\n\t\t\t\t\tif (e.detail.requestId === requestId) {\n\t\t\t\t\t\telements.push(e.detail.element as T)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tsubscriber.next(elements)\n\t\t\t\t\tsubscriber.complete()\n\t\t\t\t},\n\t\t\t})\n\n\t\t// Broadcast discovery request\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent<DiscoverRequest>(DISCOVER_EVENT, {\n\t\t\t\tdetail: { selector, requestId },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\treturn () => subscription.unsubscribe()\n\t})\n}\n\n/**\n * Smart discovery - automatically detects if input is a CSS selector or component tag.\n *\n * @param query - CSS selector (starts with #, ., [) OR component tag name\n * @param timeout - How long to wait (default: 150ms)\n * @returns Observable that emits the discovered element or null\n *\n * @example\n * ```typescript\n * // CSS selector - uses discoverElement\n * discover('#my-element').subscribe(...)\n *\n * // Component tag - uses discoverComponent\n * discover('schmancy-fancy').subscribe(...)\n * ```\n */\nexport function discover<T extends HTMLElement>(\n\tquery: string,\n\ttimeout = 150,\n): Observable<T | null> {\n\t// Check if it's a CSS selector (starts with #, ., or [)\n\tconst isCssSelector = /^[#.\\[]/.test(query)\n\n\tif (isCssSelector) {\n\t\treturn discoverElement<T>(query, timeout)\n\t}\n\n\t// Otherwise treat as component tag name\n\treturn discoverComponent<T>(query, timeout)\n}\n\n// Export event names for use in baseElement\nexport { DISCOVER_EVENT, DISCOVER_RESPONSE_EVENT }\nexport type { DiscoverRequest, DiscoverResponse }\n","import { createContext } from '@lit/context'\nimport { TSchmancyTheme } from './theme.interface'\n\n/**\n * Lit Context for sharing theme configuration across components.\\n *\n * This context is provided by SchmancyThemeComponent and can be consumed\n * by any child component to access the current theme configuration.\n *\n * @type {Context<Partial<TSchmancyTheme>>}\n *\n * @example\n * ```typescript\n * import { consume } from '@lit/context'\n * import { themeContext } from '@schmancy/theme'\n *\n * class MyComponent extends LitElement {\n * @consume({ context: themeContext })\n * theme?: Partial<TSchmancyTheme>\n *\n * render() {\n * // Access theme variables\n * const primaryColor = this.theme?.sys?.color?.primary?.default\n * // ...\n * }\n * }\n * ```\n */\nexport const themeContext = createContext<Partial<TSchmancyTheme>>('theme-context')\n","import type { Constructor } from './constructor'\nimport { LitElement } from 'lit'\nimport { Subject, fromEvent, Observable } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { discoverComponent, DISCOVER_EVENT, DISCOVER_RESPONSE_EVENT, type DiscoverRequest } from './discovery.service'\nimport { consume } from '@lit/context'\nimport { themeContext } from '../src/theme/context'\nimport type { TSchmancyTheme } from '../src/theme/theme.interface'\n\nexport declare class IBaseMixin {\n\tdisconnecting: Subject<boolean>\n\tclassMap: typeof classMap\n\tstyleMap: typeof styleMap\n\tdiscover<T extends HTMLElement>(tag: string): Observable<T | null>\n\treadonly stableId: string\n\tuid: string\n\t/**\n\t * Current locale from theme context. Use with Intl.NumberFormat/DateTimeFormat.\n\t * Defaults to navigator.language if no theme provider is found.\n\t * @example new Intl.NumberFormat(this.locale).format(1234.56)\n\t */\n\treadonly locale: string\n\tdispatchScopedEvent<T>(eventName: string, detail?: T, options?: { bubbles?: boolean; composed?: boolean }): void\n}\n\nexport const BaseElement = <T extends Constructor<LitElement>>(superClass: T) => {\n\tclass BaseElement extends superClass {\n\t\tdisconnecting = new Subject<boolean>()\n\t\t#stableId?: string\n\t\t#uid?: string\n\n\t\t@consume({ context: themeContext, subscribe: true })\n\t\tprivate theme?: Partial<TSchmancyTheme>\n\n\t\t/** Current locale from theme context. Falls back to navigator.language. */\n\t\tget locale(): string {\n\t\t\treturn this.theme?.locale ?? (typeof navigator !== 'undefined' ? navigator.language : 'de-DE')\n\t\t}\n\n\t\t/** Stable ID from DOM path - lazy, only computed on first access */\n\t\tget stableId(): string {\n\t\t\tif (this.#stableId) return this.#stableId\n\t\t\tconst path: string[] = []\n\t\t\tfor (let el: Element | null = this; el?.parentElement && path.length < 5; el = el.parentElement) {\n\t\t\t\tconst tag = el.tagName.toLowerCase()\n\t\t\t\tconst siblings = Array.from(el.parentElement.children).filter(c => c.tagName === el!.tagName)\n\t\t\t\tpath.unshift(siblings.length > 1 ? `${tag}:nth-of-type(${siblings.indexOf(el) + 1})` : tag)\n\t\t\t}\n\t\t\tconst hash = Array.from(path.join('>')).reduce((h, c) => Math.imul(31, h) + c.charCodeAt(0) | 0, 0)\n\t\t\treturn this.#stableId = `el-${Math.abs(hash).toString(36)}`\n\t\t}\n\n\t\t/**\n\t\t * Unique instance ID - can be overridden via attribute, otherwise auto-generated.\n\t\t * Usage: <my-component uid=\"custom-id\"> or let it auto-generate\n\t\t */\n\t\tget uid(): string {\n\t\t\t// Check if uid was set via attribute\n\t\t\tconst attrUid = this.getAttribute('uid')\n\t\t\tif (attrUid) return attrUid\n\n\t\t\t// Auto-generate if not set\n\t\t\tif (!this.#uid) {\n\t\t\t\tthis.#uid = `el-${crypto.randomUUID()}`\n\t\t\t}\n\t\t\treturn this.#uid\n\t\t}\n\n\t\tset uid(value: string) {\n\t\t\tif (value) {\n\t\t\t\tthis.setAttribute('uid', value)\n\t\t\t} else {\n\t\t\t\tthis.removeAttribute('uid')\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Dispatch an event scoped to this component instance.\n\t\t * Emits BOTH scoped event (eventName::uid) and generic event for backward compatibility.\n\t\t * This prevents event collision between multiple instances of the same component.\n\t\t */\n\t\tdispatchScopedEvent<T>(eventName: string, detail?: T, options: { bubbles?: boolean; composed?: boolean } = {}): void {\n\t\t\tconst { bubbles = false, composed = true } = options\n\n\t\t\t// Emit scoped event for new code\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent(`${eventName}::${this.uid}`, {\n\t\t\t\t\tdetail,\n\t\t\t\t\tbubbles,\n\t\t\t\t\tcomposed,\n\t\t\t\t})\n\t\t\t)\n\n\t\t\t// Emit generic event for backward compatibility\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent(eventName, {\n\t\t\t\t\tdetail,\n\t\t\t\t\tbubbles,\n\t\t\t\t\tcomposed,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tclassMap(classes: Record<string, boolean>) {\n\t\t\tconst newClasses: Record<string, boolean> = {}\n\t\t\tObject.keys(classes).forEach(key => {\n\t\t\t\tkey\n\t\t\t\t\t.trim()\n\t\t\t\t\t.split(' ')\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.forEach(k => {\n\t\t\t\t\t\tnewClasses[k] = classes[key]\n\t\t\t\t\t})\n\t\t\t})\n\t\t\treturn classMap(newClasses)\n\t\t}\n\n\t\tstyleMap(styles: Record<string, string | number>) {\n\t\t\treturn styleMap(styles)\n\t\t}\n\n\t\tconnectedCallback() {\n\t\t\tsuper.connectedCallback()\n\t\t\tthis.setupDiscoveryResponse()\n\t\t}\n\n\t\tprivate setupDiscoveryResponse() {\n\t\t\tconst tagName = this.tagName.toLowerCase()\n\t\t\tconst whereAreYouEvent = `${tagName}-where-are-you`\n\t\t\tconst hereIAmEvent = `${tagName}-here-i-am`\n\n\t\t\t// 1. Component tag discovery (e.g., 'schmancy-fancy-where-are-you')\n\t\t\tfromEvent(window, whereAreYouEvent)\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent(hereIAmEvent, {\n\t\t\t\t\t\t\tdetail: { component: this },\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t})\n\n\t\t\t// 2. CSS selector discovery (e.g., '#app-card', '.my-class', '[uid=\"xyz\"]')\n\t\t\tfromEvent<CustomEvent<DiscoverRequest>>(window, DISCOVER_EVENT)\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(({ detail: { selector, requestId } }) => {\n\t\t\t\t\tlet found: Element | null = null\n\n\t\t\t\t\t// Check if selector matches this component's id or uid\n\t\t\t\t\tif (selector.startsWith('#')) {\n\t\t\t\t\t\tconst id = selector.slice(1)\n\t\t\t\t\t\tif (this.id === id || this.uid === id) {\n\t\t\t\t\t\t\tfound = this\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check our shadow DOM for matching element\n\t\t\t\t\tif (!found && this.shadowRoot) {\n\t\t\t\t\t\tfound = this.shadowRoot.querySelector(selector)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (found) {\n\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent(DISCOVER_RESPONSE_EVENT, {\n\t\t\t\t\t\t\t\tdetail: { requestId, element: found },\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\t// Make discover public to match the interface\n\t\tdiscover<T extends HTMLElement>(tag: string): Observable<T | null> {\n\t\t\treturn discoverComponent<T>(tag)\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.disconnecting.next(true)\n\t\t\tthis.disconnecting.complete()\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\treturn BaseElement as Constructor<IBaseMixin> & T\n}\n","@import 'tailwindcss';\n\n/* Tell Tailwind's content scanner to also look at the library source,\n which lives one level up from this file. Without this, consumers whose\n Vite root sits outside the library (e.g. the demo at `/demo/`) only get\n utilities for classes typed in their own source — library classes like\n `bg-primary-default`, `border-outline`, `text-primary-on` silently no-op. */\n@source \"../src/**/*.{ts,tsx,js,jsx,html}\";\n\n/* grid-rows-[auto_1fr] is an arbitrary-value utility used in shadow-DOM\n templates (app-home, workspace-settings, counterparties-page, orders-page).\n Tailwind v4's scanner only sees ../src; force-emit it so those templates\n get the correct grid layout inside shadow roots. */\n@source inline(\"grid-rows-[auto_1fr]\");\n\n/* Cascade-layer order contract. Consumer (unlayered) CSS always overrides\n library styles regardless of specificity. Library-internal tokens and\n components live in named layers so consumers can target them precisely. */\n@layer schmancy.tokens, schmancy.base, schmancy.components;\n\n@layer schmancy.base {\n:host,\n:root {\n\tfont-family: var(--schmancy-font-family);\n\t/* Advertise both schemes so UA form controls, scrollbars, and\n\t `light-dark()` all render correctly until a theme resolves it. */\n\tcolor-scheme: light dark;\n}\n:host,\n:host *,\n* {\n\t/* pan-x pan-y allows scrolling but disables pinch-zoom */\n\ttouch-action: pan-x pan-y;\n}\n\n/* Interactive: luminous lift on hover, spring compress on active */\n.interactive {\n\ttransition:\n\t\ttransform 300ms cubic-bezier(0.34, 1.56, 0.64, 1),\n\t\tbox-shadow 400ms ease,\n\t\tfilter 200ms ease;\n}\n.interactive:hover {\n\ttransform: translateY(-1px);\n\tfilter: brightness(1.03);\n\tbox-shadow: 0 4px 20px -6px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 18%, transparent);\n}\n.interactive:active {\n\ttransform: scale(0.97);\n\tfilter: brightness(0.96);\n\tbox-shadow: none;\n\ttransition-duration: 100ms;\n}\n@media (prefers-reduced-motion: reduce) {\n\t.interactive { transition: filter 150ms ease; }\n\t.interactive:hover { transform: none; box-shadow: none; }\n\t.interactive:active { transform: none; }\n}\n@theme inline {\n\t--md-ref-typeface-brand: var(--schmancy-font-family);\n\t--md-ref-typeface-plain: var(--schmancy-font-family);\n\t--md-sys-color-primary: var(--schmancy-sys-color-primary-default);\n\t--md-sys-color-secondary: var(--schmancy-sys-color-secondary-default);\n\n\t--*: initial;\n\t--border-style: solid;\n\t--spacing: 4px;\n\t--color-scrim: var(--schmancy-sys-color-scrim);\n\t--color-outline-default: var(--schmancy-sys-color-outline);\n\t--color-outline-variant: var(--schmancy-sys-color-outlineVariant);\n\t/* Shorthand alias */\n\t--color-outline: var(--schmancy-sys-color-outline);\n\t--color-surface-default: var(--schmancy-sys-color-surface-default);\n\t--color-surface-dim: var(--schmancy-sys-color-surface-dim);\n\t--color-surface-bright: var(--schmancy-sys-color-surface-bright);\n\t--color-surface-container: var(--schmancy-sys-color-surface-container);\n\t--color-surface-low: var(--schmancy-sys-color-surface-low);\n\t--color-surface-high: var(--schmancy-sys-color-surface-high);\n\t--color-surface-highest: var(--schmancy-sys-color-surface-highest);\n\t--color-surface-lowest: var(--schmancy-sys-color-surface-lowest);\n\t/* CamelCase variants for Tailwind compatibility */\n\t--color-surface-containerLow: var(--schmancy-sys-color-surface-containerLow);\n\t--color-surface-containerHigh: var(--schmancy-sys-color-surface-containerHigh);\n\t--color-surface-containerLowest: var(--schmancy-sys-color-surface-containerLowest);\n\t--color-surface-containerHighest: var(--schmancy-sys-color-surface-containerHighest);\n\t--color-surface-on: var(--schmancy-sys-color-surface-on);\n\t--color-surface-on-variant: var(--schmancy-sys-color-surface-onVariant);\n\t--color-primary-default: var(--schmancy-sys-color-primary-default);\n\t--color-primary-on: var(--schmancy-sys-color-primary-on);\n\t--color-primary-container: var(--schmancy-sys-color-primary-container);\n\t--color-primary-on-container: var(--schmancy-sys-color-primary-onContainer);\n\t--color-secondary-default: var(--schmancy-sys-color-secondary-default);\n\t--color-secondary-on: var(--schmancy-sys-color-secondary-on);\n\t--color-secondary-container: var(--schmancy-sys-color-secondary-container);\n\t--color-secondary-on-container: var(--schmancy-sys-color-secondary-onContainer);\n\t--color-tertiary-default: var(--schmancy-sys-color-tertiary-default);\n\t--color-tertiary-on: var(--schmancy-sys-color-tertiary-on);\n\t--color-tertiary-container: var(--schmancy-sys-color-tertiary-container);\n\t--color-tertiary-on-container: var(--schmancy-sys-color-tertiary-onContainer);\n\t--color-error-default: var(--schmancy-sys-color-error-default);\n\t--color-error-on: var(--schmancy-sys-color-error-on);\n\t--color-error-container: var(--schmancy-sys-color-error-container);\n\t--color-error-on-container: var(--schmancy-sys-color-error-onContainer);\n\t--color-success-default: var(--schmancy-sys-color-success-default);\n\t--color-success-on: var(--schmancy-sys-color-success-on);\n\t--color-success-container: var(--schmancy-sys-color-success-container);\n\t--color-success-on-container: var(--schmancy-sys-color-success-onContainer);\n\t--color-warning-default: var(--schmancy-sys-color-warning-default);\n\t--color-warning-on: var(--schmancy-sys-color-warning-on);\n\t--color-warning-container: var(--schmancy-sys-color-warning-container);\n\t--color-warning-on-container: var(--schmancy-sys-color-warning-onContainer);\n\t--color-info-default: var(--schmancy-sys-color-info-default);\n\t--color-info-on: var(--schmancy-sys-color-info-on);\n\t--color-info-container: var(--schmancy-sys-color-info-container);\n\t--color-info-on-container: var(--schmancy-sys-color-info-onContainer);\n\n\t/* DEPRECATED: camelCase aliases for backward compatibility - use hyphenated format instead */\n\t--color-outlineVariant: var(--schmancy-sys-color-outlineVariant);\n\t--color-surface-onVariant: var(--schmancy-sys-color-surface-onVariant);\n\t--color-primary-onContainer: var(--schmancy-sys-color-primary-onContainer);\n\t--color-secondary-onContainer: var(--schmancy-sys-color-secondary-onContainer);\n\t--color-tertiary-onContainer: var(--schmancy-sys-color-tertiary-onContainer);\n\t--color-error-onContainer: var(--schmancy-sys-color-error-onContainer);\n\t--color-success-onContainer: var(--schmancy-sys-color-success-onContainer);\n\t--color-warning-onContainer: var(--schmancy-sys-color-warning-onContainer);\n\t--color-info-onContainer: var(--schmancy-sys-color-info-onContainer);\n\n\t/* Shorthand aliases (maps to -default variant) */\n\t--color-primary: var(--schmancy-sys-color-primary-default);\n\t--color-secondary: var(--schmancy-sys-color-secondary-default);\n\t--color-tertiary: var(--schmancy-sys-color-tertiary-default);\n\t--color-error: var(--schmancy-sys-color-error-default);\n\t--color-success: var(--schmancy-sys-color-success-default);\n\t--color-warning: var(--schmancy-sys-color-warning-default);\n\t--color-info: var(--schmancy-sys-color-info-default);\n\t--color-surface: var(--schmancy-sys-color-surface-default);\n\n\t--shadow-0: var(--schmancy-sys-elevation-0);\n\t--shadow-1: var(--schmancy-sys-elevation-1);\n\t--shadow-2: var(--schmancy-sys-elevation-2);\n\t--shadow-3: var(--schmancy-sys-elevation-3);\n\t--shadow-4: var(--schmancy-sys-elevation-4);\n\t--shadow-5: var(--schmancy-sys-elevation-5);\n\t--outline-1: var(--schmancy-sys-outline-1);\n\n\t/* Luminous glow elevation — light-based depth for futuristic UI\n\t Use shadow-glow-{1-5} classes. Glow intensifies with level. */\n\t--shadow-glow-1: 0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t--shadow-glow-2: 0 4px 20px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 22%, transparent);\n\t--shadow-glow-3: 0 8px 32px -4px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 28%, transparent);\n\t--shadow-glow-4: 0 12px 44px -4px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 35%, transparent);\n\t--shadow-glow-5: 0 20px 60px -4px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 42%, transparent);\n\n\t/* Frosted-glass overlay shadows — use shadow-overlay (centered/sheet) and shadow-overlay-anchored (popover) */\n\t--shadow-overlay:\n\t\t0 1px 2px color-mix(in srgb, #000 8%, transparent),\n\t\t0 28px 60px -20px color-mix(in srgb, #000 45%, transparent),\n\t\tinset 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-surface-on) 8%, transparent);\n\t--shadow-overlay-anchored:\n\t\t0 1px 2px color-mix(in srgb, #000 8%, transparent),\n\t\t0 12px 28px -12px color-mix(in srgb, #000 35%, transparent),\n\t\tinset 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-surface-on) 8%, transparent);\n\t--font-sans:\n\t\tvar(--schmancy-font-family), ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n\t\t'Segoe UI Symbol', 'Noto Color Emoji';\n\t--font-serif: var(--schmancy-font-family), ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;\n\t--font-mono:\n\t\tvar(--schmancy-font-family), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n\t\t'Courier New', monospace;\n\t--color-black: #000;\n\t--color-white: #fff;\n\t--spacing: 0.25rem;\n\t--breakpoint-sm: 40rem;\n\t--breakpoint-md: 48rem;\n\t--breakpoint-lg: 64rem;\n\t--breakpoint-xl: 80rem;\n\t--breakpoint-2xl: 96rem;\n\t--container-3xs: 16rem;\n\t--container-2xs: 18rem;\n\t--container-xs: 20rem;\n\t--container-sm: 24rem;\n\t--container-md: 28rem;\n\t--container-lg: 32rem;\n\t--container-xl: 36rem;\n\t--container-2xl: 42rem;\n\t--container-3xl: 48rem;\n\t--container-4xl: 56rem;\n\t--container-5xl: 64rem;\n\t--container-6xl: 72rem;\n\t--container-7xl: 80rem;\n\t--text-xs: 0.75rem;\n\t--text-xs--line-height: calc(1 / 0.75);\n\t--text-sm: 0.875rem;\n\t--text-sm--line-height: calc(1.25 / 0.875);\n\t--text-base: 1rem;\n\t--text-base--line-height: calc(1.5 / 1);\n\t--text-lg: 1.125rem;\n\t--text-lg--line-height: calc(1.75 / 1.125);\n\t--text-xl: 1.25rem;\n\t--text-xl--line-height: calc(1.75 / 1.25);\n\t--text-2xl: 1.5rem;\n\t--text-2xl--line-height: calc(2 / 1.5);\n\t--text-3xl: 1.875rem;\n\t--text-3xl--line-height: calc(2.25 / 1.875);\n\t--text-4xl: 2.25rem;\n\t--text-4xl--line-height: calc(2.5 / 2.25);\n\t--text-5xl: 3rem;\n\t--text-5xl--line-height: 1;\n\t--text-6xl: 3.75rem;\n\t--text-6xl--line-height: 1;\n\t--text-7xl: 4.5rem;\n\t--text-7xl--line-height: 1;\n\t--text-8xl: 6rem;\n\t--text-8xl--line-height: 1;\n\t--text-9xl: 8rem;\n\t--text-9xl--line-height: 1;\n\t--font-weight-thin: 100;\n\t--font-weight-extralight: 200;\n\t--font-weight-light: 300;\n\t--font-weight-normal: 400;\n\t--font-weight-medium: 500;\n\t--font-weight-semibold: 600;\n\t--font-weight-bold: 700;\n\t--font-weight-extrabold: 800;\n\t--font-weight-black: 900;\n\t--tracking-tighter: -0.05em;\n\t--tracking-tight: -0.025em;\n\t--tracking-normal: 0em;\n\t--tracking-wide: 0.025em;\n\t--tracking-wider: 0.05em;\n\t--tracking-widest: 0.1em;\n\t--leading-tight: 1.25;\n\t--leading-snug: 1.375;\n\t--leading-normal: 1.5;\n\t--leading-relaxed: 1.625;\n\t--leading-loose: 2;\n\t--radius-xs: 0.125rem;\n\t--radius-sm: 0.25rem;\n\t--radius-md: 0.375rem;\n\t--radius-lg: 0.5rem;\n\t--radius-xl: 0.75rem;\n\t--radius-2xl: 1rem;\n\t--radius-3xl: 1.5rem;\n\t--radius-4xl: 2rem;\n\t--shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\n\t--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n\t--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n\t--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n\t--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n\t--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n\t--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n\t--inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);\n\t--inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);\n\t--inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);\n\t--drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);\n\t--drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);\n\t--drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n\t--drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);\n\t--drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);\n\t--drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);\n\t--blur-xs: 4px;\n\t--blur-sm: 8px;\n\t--blur-md: 12px;\n\t--blur-lg: 16px;\n\t--blur-xl: 24px;\n\t--blur-2xl: 40px;\n\t--blur-3xl: 64px;\n\t--perspective-dramatic: 100px;\n\t--perspective-near: 300px;\n\t--perspective-normal: 500px;\n\t--perspective-midrange: 800px;\n\t--perspective-distant: 1200px;\n\t--aspect-video: 16 / 9;\n\t--ease-in: cubic-bezier(0.4, 0, 1, 1);\n\t--ease-out: cubic-bezier(0, 0, 0.2, 1);\n\t--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n\t--animate-spin: spin 1s linear infinite;\n\t--animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n\t--animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n\t--animate-bounce: bounce 1s infinite;\n\t/* ========================================================================\n\t ANIMATION SYSTEM\n\n\t A comprehensive, reusable animation library organized by category.\n\t All animations use CSS custom properties for easy customization.\n\n\t NAMING CONVENTION:\n\t - Entrance animations: *-in (fade-in, slide-in, pop-in)\n\t - Exit animations: *-out (fade-out, slide-out)\n\t - Looping animations: descriptive name (float, pulse, shimmer)\n\n\t USAGE:\n\t - Use `animate-{name}` class in Tailwind\n\t - Combine with `opacity-0` for entrance animations\n\t - Use `animation-delay` via style attribute for staggered effects\n\t ======================================================================== */\n\n\t/* ------------------------------------------------------------------------\n\t TAILWIND DEFAULT ANIMATIONS\n\t Standard animations from Tailwind CSS\n\t ------------------------------------------------------------------------ */\n\t@keyframes spin {\n\t\tto { transform: rotate(360deg); }\n\t}\n\t@keyframes ping {\n\t\t75%, 100% { transform: scale(2); opacity: 0; }\n\t}\n\t@keyframes pulse {\n\t\t50% { opacity: 0.5; }\n\t}\n\t@keyframes bounce {\n\t\t0%, 100% {\n\t\t\ttransform: translateY(-25%);\n\t\t\tanimation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n\t\t}\n\t\t50% {\n\t\t\ttransform: none;\n\t\t\tanimation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n\t\t}\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t ENTRANCE ANIMATIONS\n\t One-shot animations for elements entering the viewport.\n\t All use `forwards` fill-mode to maintain end state.\n\t ------------------------------------------------------------------------ */\n\n\t/* Fade In - Simple opacity transition */\n\t--animate-fade-in: fade-in 0.5s ease forwards;\n\t@keyframes fade-in {\n\t\tfrom { opacity: 0; }\n\t\tto { opacity: 1; }\n\t}\n\n\t/* Fade In Up - Fade with upward movement (subtle) */\n\t--animate-fade-in-up: fade-in-up 0.5s ease forwards;\n\t@keyframes fade-in-up {\n\t\tfrom { opacity: 0; transform: translateY(20px); }\n\t\tto { opacity: 1; transform: translateY(0); }\n\t}\n\n\t/* Fade In Up Large - Fade with larger upward movement + scale */\n\t--animate-fade-in-up-lg: fade-in-up-lg 0.6s cubic-bezier(0.34, 1.2, 0.64, 1) forwards;\n\t@keyframes fade-in-up-lg {\n\t\tfrom { opacity: 0; transform: translateY(30px) scale(0.95); }\n\t\tto { opacity: 1; transform: translateY(0) scale(1); }\n\t}\n\n\t/* Slide In Left - Enter from left side */\n\t--animate-slide-in-left: slide-in-left 0.5s ease forwards;\n\t@keyframes slide-in-left {\n\t\tfrom { opacity: 0; transform: translateX(-30px); }\n\t\tto { opacity: 1; transform: translateX(0); }\n\t}\n\n\t/* Slide In Right - Enter from right side */\n\t--animate-slide-in-right: slide-in-right 0.5s ease forwards;\n\t@keyframes slide-in-right {\n\t\tfrom { opacity: 0; transform: translateX(30px); }\n\t\tto { opacity: 1; transform: translateX(0); }\n\t}\n\n\t/* Pop In - Scale up with bounce easing */\n\t--animate-pop-in: pop-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n\t@keyframes pop-in {\n\t\tfrom { opacity: 0; transform: scale(0.8); }\n\t\tto { opacity: 1; transform: scale(1); }\n\t}\n\n\t/* Expand In - Subtle scale + translate entrance */\n\t--animate-expand-in: expand-in 0.5s ease forwards;\n\t@keyframes expand-in {\n\t\tfrom { opacity: 0; transform: scale(0.95) translateY(10px); }\n\t\tto { opacity: 1; transform: scale(1) translateY(0); }\n\t}\n\n\t/* Converge In - Dramatic entrance with overshoot */\n\t--animate-converge-in: converge-in 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n\t@keyframes converge-in {\n\t\t0% { opacity: 0; transform: scale(0) translateY(50px); }\n\t\t60% { opacity: 1; transform: scale(1.1) translateY(-10px); }\n\t\t100% { opacity: 1; transform: scale(1) translateY(0); }\n\t}\n\n\t/* Spin In - Rotate + scale entrance */\n\t--animate-spin-in: spin-in 0.6s cubic-bezier(0.34, 1.2, 0.64, 1) forwards;\n\t@keyframes spin-in {\n\t\tfrom { opacity: 0; transform: scale(0) rotate(-180deg); }\n\t\tto { opacity: 1; transform: scale(1) rotate(0deg); }\n\t}\n\n\t/* Scatter In - Scale from 0 to partial opacity (for decorative elements) */\n\t--animate-scatter-in: scatter-in 1s ease forwards;\n\t@keyframes scatter-in {\n\t\tfrom { opacity: 0; transform: scale(0); }\n\t\tto { opacity: 0.2; transform: scale(1); }\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t LOOPING ANIMATIONS - PULSE VARIANTS\n\t Continuous pulsing effects for attention/status indicators.\n\t ------------------------------------------------------------------------ */\n\n\t/* Pulse Opacity - Simple opacity pulse */\n\t--animate-pulse-opacity: pulse-opacity 2s ease-in-out infinite;\n\t@keyframes pulse-opacity {\n\t\t0%, 100% { opacity: 1; }\n\t\t50% { opacity: 0.5; }\n\t}\n\n\t/* Pulse Scale - Scale + opacity pulse (for status dots) */\n\t--animate-pulse-scale: pulse-scale 1.5s ease infinite;\n\t@keyframes pulse-scale {\n\t\t0%, 100% { transform: scale(1); opacity: 1; }\n\t\t50% { transform: scale(1.3); opacity: 0.6; }\n\t}\n\n\t/* Pulse Glow - Scale + dynamic box-shadow (for highlighted elements) */\n\t--animate-pulse-glow: pulse-glow 2s ease infinite;\n\t@keyframes pulse-glow {\n\t\t0%, 100% {\n\t\t\ttransform: scale(1);\n\t\t\tbox-shadow: 0 0 20px var(--schmancy-sys-color-primary-default);\n\t\t}\n\t\t50% {\n\t\t\ttransform: scale(1.05);\n\t\t\tbox-shadow: 0 0 40px var(--schmancy-sys-color-primary-default);\n\t\t}\n\t}\n\n\t/* Pulse Ring - Expanding ring effect (for ripples) */\n\t--animate-pulse-ring: pulse-ring 2s ease-out infinite;\n\t@keyframes pulse-ring {\n\t\t0% { transform: scale(0.8); opacity: 0.6; }\n\t\t100% { transform: scale(2); opacity: 0; }\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t LOOPING ANIMATIONS - FLOAT VARIANTS\n\t Gentle floating/hovering effects for ambient motion.\n\t ------------------------------------------------------------------------ */\n\n\t/* Float - Simple vertical float */\n\t--animate-float: float 3s ease-in-out infinite;\n\t@keyframes float {\n\t\t0%, 100% { transform: translateY(0); }\n\t\t50% { transform: translateY(-8px); }\n\t}\n\n\t/* Float Particle - Vertical float with scale + opacity (for particles) */\n\t--animate-float-particle: float-particle 4s ease-in-out infinite;\n\t@keyframes float-particle {\n\t\t0%, 100% { transform: translateY(0) scale(1); opacity: 0.6; }\n\t\t50% { transform: translateY(-30px) scale(1.2); opacity: 0.3; }\n\t}\n\n\t/* Float Chaos - Multi-axis chaotic movement (for scattered elements) */\n\t--animate-float-chaos: float-chaos 8s ease-in-out infinite;\n\t@keyframes float-chaos {\n\t\t0% { transform: translateY(0) rotate(0deg) scale(1); }\n\t\t25% { transform: translateY(-30px) rotate(15deg) scale(1.1); }\n\t\t50% { transform: translateY(-10px) rotate(-10deg) scale(0.95); }\n\t\t75% { transform: translateY(-40px) rotate(8deg) scale(1.05); }\n\t\t100% { transform: translateY(0) rotate(0deg) scale(1); }\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t LOOPING ANIMATIONS - ROTATION\n\t Continuous rotation effects.\n\t ------------------------------------------------------------------------ */\n\n\t/* Rotate Orbit - Slow continuous rotation (for orbital elements) */\n\t--animate-rotate-orbit: rotate-orbit 20s linear infinite;\n\t@keyframes rotate-orbit {\n\t\tfrom { transform: rotate(0deg); }\n\t\tto { transform: rotate(360deg); }\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t LOOPING ANIMATIONS - MOVEMENT EFFECTS\n\t Horizontal/directional movement for progress/flow indicators.\n\t ------------------------------------------------------------------------ */\n\n\t/* Shimmer - Left-to-right shine effect (use with overflow:hidden) */\n\t--animate-shimmer: shimmer 2s ease-in-out infinite;\n\t@keyframes shimmer {\n\t\t0% { left: -100%; }\n\t\t50%, 100% { left: 100%; }\n\t}\n\n\t/* Scan Vertical - Top-to-bottom scanning line */\n\t--animate-scan-vertical: scan-vertical 2s ease-in-out infinite;\n\t@keyframes scan-vertical {\n\t\t0% { top: 0; opacity: 0; }\n\t\t10% { opacity: 1; }\n\t\t90% { opacity: 1; }\n\t\t100% { top: 100%; opacity: 0; }\n\t}\n\n\t/* Scan Horizontal - Left-to-right scanning */\n\t--animate-scan-horizontal: scan-horizontal 2s ease-in-out infinite;\n\t@keyframes scan-horizontal {\n\t\t0% { left: -100%; }\n\t\t100% { left: 100%; }\n\t}\n\n\t/* Flow - Continuous left-to-right flow (for progress connectors) */\n\t--animate-flow: flow 2s ease-in-out infinite;\n\t@keyframes flow {\n\t\t0% { left: -50%; }\n\t\t100% { left: 150%; }\n\t}\n\n\t/* Line Float - Horizontal line traversal with opacity (for decorative lines) */\n\t--animate-line-float: line-float 4s ease-in-out infinite;\n\t@keyframes line-float {\n\t\t0%, 100% { transform: translateX(-100%) scaleX(0.5); opacity: 0; }\n\t\t50% { transform: translateX(100%) scaleX(1); opacity: 0.3; }\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t KINETIC STATE — Physics-based feedback animations.\n\t UI communicates through motion, not icons.\n\t ------------------------------------------------------------------------ */\n\n\t/* Breathe — gentle living pulse for loading/active states */\n\t--animate-breathe: breathe 2.5s ease-in-out infinite;\n\t@keyframes breathe {\n\t\t0%, 100% { transform: scale(1); opacity: 1; }\n\t\t50% { transform: scale(1.015); opacity: 0.88; }\n\t}\n\n\t/* Glow Pulse — luminous throb for highlighted elements */\n\t--animate-glow-pulse: glow-pulse 2s ease-in-out infinite;\n\t@keyframes glow-pulse {\n\t\t0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--schmancy-sys-color-primary-default) 30%, transparent); }\n\t\t50% { box-shadow: 0 0 24px 4px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent); }\n\t}\n\n\t/* Kinetic Shake — physics-damped error feedback */\n\t--animate-kinetic-shake: kinetic-shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97);\n\t@keyframes kinetic-shake {\n\t\t0%, 100% { transform: translateX(0); }\n\t\t10% { transform: translateX(-6px); }\n\t\t20% { transform: translateX(5px); }\n\t\t30% { transform: translateX(-4px); }\n\t\t40% { transform: translateX(3px); }\n\t\t50% { transform: translateX(-2px); }\n\t\t60% { transform: translateX(1px); }\n\t}\n\n\t/* Scale Tap — spring-physics tap response */\n\t--animate-scale-tap: scale-tap 250ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\t@keyframes scale-tap {\n\t\t0% { transform: scale(1); }\n\t\t40% { transform: scale(0.94); }\n\t\t100% { transform: scale(1); }\n\t}\n\n\t/* Glow In — luminous entrance with depth */\n\t--animate-glow-in: glow-in 0.6s cubic-bezier(0.34, 1.2, 0.64, 1) forwards;\n\t@keyframes glow-in {\n\t\tfrom {\n\t\t\tbox-shadow: 0 0 0 0 transparent;\n\t\t\topacity: 0;\n\t\t\ttransform: scale(0.96);\n\t\t}\n\t\tto {\n\t\t\tbox-shadow: 0 8px 32px -4px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 20%, transparent);\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t}\n\t}\n\n\t/* ------------------------------------------------------------------------\n\t CUSTOM EASING CURVES\n\t Reusable timing functions for consistent animation feel.\n\t ------------------------------------------------------------------------ */\n\t--ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);\n\t--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);\n\t--ease-snap: cubic-bezier(0.34, 1.2, 0.64, 1);\n}\n} /* end @layer schmancy.base */\n","import { CSSResult, LitElement, unsafeCSS } from 'lit'\n\nimport style from './tailwind.css?inline'\nimport { BaseElement, IBaseMixin } from './baseElement'\nimport { Constructor } from './constructor'\n\nexport declare class ITailwindElementMixin {\n\tstyles: (typeof CSSResult)[]\n}\n\nexport const tailwindStyles = unsafeCSS(style)\n\nconst TailwindElementBase = <T extends CSSResult>(componentStyle?: T) => {\n\tclass TailwindMixinClass extends LitElement {\n\t\tstatic styles = [unsafeCSS(componentStyle), tailwindStyles]\n\t}\n\treturn TailwindMixinClass as Constructor<LitElement> /* see \"typing the subclass\" below */\n}\n\nexport const TailwindElement = <T extends CSSResult>(componentStyle?: T) => {\n\tclass TailwindMixinClass extends BaseElement(TailwindElementBase(componentStyle)) {\n\t\tdisconnectedCallback = () => {\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\treturn TailwindMixinClass as Constructor<CustomElementConstructor> &\n\t\tConstructor<ITailwindElementMixin> &\n\t\tConstructor<LitElement> &\n\t\tConstructor<IBaseMixin>\n}\n","// `_`-prefixed identifiers below are an intentional naming convention for\n// module-private infrastructure. `_activeHost` is exported only so the\n// $LitElement mixin can wrap render/lifecycle in `_activeHost.run`; the\n// underscore signals \"not part of the public state API.\"\n/* oxlint-disable no-underscore-dangle */\n\n// Active-host tracker for context-aware state resolution.\n//\n// Polyfills the TC39 `AsyncContext.Variable` propagation primitive using a\n// stack + a one-time `Promise.prototype.then` patch. The stack value carries\n// across `await`, `queueMicrotask`, RxJS subscription callbacks, and any\n// other code path that ultimately routes through `Promise.then`. This is the\n// same capture-and-restore technique zone.js, async-hooks, and the various\n// AsyncContext userland polyfills use.\n//\n// Why we own this:\n// - The TC39 proposal is at stage 2; no official polyfill ships from TC39.\n// - The `async-context@1.0.0` package on npm is unrelated (a 2014 Node\n// callback helper), and the available userland polyfills either depend\n// on zone.js (~50 KB) or are Node-only / hobby quality.\n// - The patch surface is ~30 lines, idempotent, preserves Promise\n// semantics (delegates to the original `then`, so `Symbol.species` and\n// subclassing work unchanged), and decommissions cleanly the day a real\n// polyfill or native AsyncContext lands (drop the file, swap the\n// `_activeHost` export for the standard primitive).\n//\n// Known limitation — native await on a native Promise: V8's await\n// optimization (since 7.x) skips the spec-prescribed\n// `Promise.resolve(x).then(continuation)` step, so userland `then`\n// patches don't intercept the resumption. Class methods that mutate\n// state across an `await` boundary will fall back to the\n// module-scoped global, not the active-host's isolated copy. To\n// preserve the host across awaits, either keep the mutation in the\n// synchronous prelude before the first `await`, or explicitly chain\n// with `.then()` (which still routes through the patched method).\n// A real fix requires either a build-time async-function transform\n// or native AsyncContext.Variable in the runtime.\n//\n// resolveActiveHost() fallback chain:\n// 1. Stack value set by `_activeHost.run(host, fn)` — covers render(),\n// Lit lifecycle methods, and class-method handlers (all wrapped by\n// SchmancyElement's prototype-chain wrap).\n// 2. The closest `<schmancy-context>` whose subtree currently has an\n// in-flight DOM event. The element installs capture-phase listeners\n// that publish itself as the event-host while the synchronous\n// handler chain runs; the slot clears via microtask. Covers\n// template-bound inline arrow handlers attached to descendants.\n// 3. document.activeElement — keyboard handlers in focus.\n// 4. undefined → caller falls back to the module-scoped global instance.\n\n// Singleton across any number of schmancy module copies (source + dist, ESM\n// + CJS, hoisted vs. nested node_modules) via the runtime-global symbol\n// registry. The first copy to load creates the slot; later copies reuse it.\n// Without this, two stacks → mixins push to one, state reads from the other,\n// and active-host context is lost across the boundary.\nconst STACK_KEY = Symbol.for('schmancy.state.activeHost.stack')\ntype StackSlot = { stack: Array<HTMLElement | undefined> }\nconst _g = globalThis as { [STACK_KEY]?: StackSlot }\n_g[STACK_KEY] ??= { stack: [undefined] }\nconst _stack = _g[STACK_KEY].stack\n\n// One-time Promise.prototype.then patch at module init. Each .then() call\n// captures the stack head at chain time; firing the callback restores that\n// captured value for the duration of the callback. The guard property\n// prevents double-patching across HMR / duplicate module loads.\ndeclare global {\n\tinterface Promise<T> {\n\t\t// Marker symbol so we can detect (and skip) re-patching.\n\t\treadonly __schmancyActiveHostPatched?: true\n\t}\n}\n\n// Patching Promise.prototype is the entire mechanism this module exists to\n// provide — the lint rules below intentionally do not apply.\n/* oxlint-disable no-extend-native, unicorn/no-thenable */\nif (typeof Promise !== 'undefined' && !('__schmancyActiveHostPatched' in Promise.prototype)) {\n\tObject.defineProperty(Promise.prototype, '__schmancyActiveHostPatched', {\n\t\tvalue: true,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\twritable: false,\n\t})\n\tconst _origThen = Promise.prototype.then\n\t// Replace with our wrapper. We delegate to the original `then` via\n\t// `_origThen.call(this, …)` so Promise subclassing / Symbol.species behave\n\t// exactly as before — the only added work is the stack push/pop around\n\t// each user callback.\n\tPromise.prototype.then = function schmancyThen<T, R1, R2>(\n\t\tthis: Promise<T>,\n\t\tonfulfilled?: ((value: T) => R1 | PromiseLike<R1>) | null,\n\t\tonrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null,\n\t): Promise<R1 | R2> {\n\t\tconst captured = _stack[_stack.length - 1]\n\t\tconst wrapFulfilled = onfulfilled\n\t\t\t? (v: T): R1 | PromiseLike<R1> => {\n\t\t\t\t\t_stack.push(captured)\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn onfulfilled(v)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\t_stack.pop()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t: onfulfilled\n\t\tconst wrapRejected = onrejected\n\t\t\t? (r: unknown): R2 | PromiseLike<R2> => {\n\t\t\t\t\t_stack.push(captured)\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn onrejected(r)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\t_stack.pop()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t: onrejected\n\t\treturn _origThen.call(this, wrapFulfilled, wrapRejected) as Promise<R1 | R2>\n\t}\n}\n/* oxlint-enable no-extend-native, unicorn/no-thenable */\n\nexport const _activeHost = {\n\t/** Run `fn` with `host` as the active host for the duration of `fn` and\n\t * any awaits / microtasks / Promise chains that descend from it. */\n\trun<R>(host: HTMLElement | undefined, fn: () => R): R {\n\t\t_stack.push(host)\n\t\ttry {\n\t\t\treturn fn()\n\t\t} finally {\n\t\t\t_stack.pop()\n\t\t}\n\t},\n\t/** The current active host, or undefined if no `run()` is on the stack. */\n\tget(): HTMLElement | undefined {\n\t\treturn _stack[_stack.length - 1]\n\t},\n}\n\n// Tier 2 of the resolveActiveHost() fallback chain. A `<schmancy-context>`\n// publishes itself here from a capture-phase event listener attached to\n// itself; the slot clears in the next microtask, after the synchronous\n// event-handler chain has run. `window.event` is unreliable across both\n// engines and time (it can outlive its event — a stale `message` event\n// from postMessage can leak BODY for arbitrary later resolution calls), so\n// we own this slot rather than read the legacy global.\n//\n// Singleton across module copies for the same reason as `_stack` above.\nconst EVENT_HOST_KEY = Symbol.for('schmancy.state.activeHost.eventHost')\ntype EventHostSlot = { host: HTMLElement | undefined; scheduled: boolean }\nconst _eventHostSlot: EventHostSlot =\n\t((globalThis as { [EVENT_HOST_KEY]?: EventHostSlot })[EVENT_HOST_KEY] ??= {\n\t\thost: undefined,\n\t\tscheduled: false,\n\t})\n\n/** Publish `host` as the active event-host. The slot self-clears at the\n * end of the current microtask checkpoint — long enough for the entire\n * synchronous event-handler chain to read it, short enough that no\n * later, unrelated microtask sees a stale value. */\nexport function _publishEventHost(host: HTMLElement): void {\n\t_eventHostSlot.host = host\n\tif (_eventHostSlot.scheduled) return\n\t_eventHostSlot.scheduled = true\n\tqueueMicrotask(() => {\n\t\t_eventHostSlot.scheduled = false\n\t\t_eventHostSlot.host = undefined\n\t})\n}\n\nexport function resolveActiveHost(): HTMLElement | undefined {\n\t// 1. Stack (set by _activeHost.run).\n\tconst fromStack = _activeHost.get()\n\tif (fromStack !== undefined) return fromStack\n\n\t// 2. Closest <schmancy-context> with an in-flight event in its subtree.\n\tif (_eventHostSlot.host !== undefined) return _eventHostSlot.host\n\n\t// 3. document.activeElement — keyboard / focus handlers.\n\tif (typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {\n\t\treturn document.activeElement\n\t}\n\n\t// 4. undefined — caller falls back to module-scoped.\n\treturn undefined\n}\n\n/** Stable context key for a state namespace. `Symbol.for(...)` so the same\n * namespace string yields the same symbol across module boundaries — the\n * ContextProvider on `<schmancy-context>` and the ContextRequestEvent\n * dispatched by a state read must agree on identity. */\nexport function stateContextKey(namespace: string): symbol {\n\treturn Symbol.for(`schmancy.state:${namespace}`)\n}\n","import { LitElement, type CSSResultGroup, type CSSResultOrNative } from 'lit'\nimport { SignalWatcher, type SignalWatcherApi } from '@lit-labs/signals'\nimport { BaseElement, type IBaseMixin } from './baseElement'\nimport { tailwindStyles } from './tailwind.mixin'\nimport type { Constructor } from './constructor'\nimport { _activeHost } from '../src/state/active-host'\n\n// Cast to instance-only Constructor + a narrow static surface for `finalizeStyles`.\n// Avoids exposing LitElement's full static side (which has `protected static\n// shadowRootOptions`); that would conflict with subclasses that declare their own\n// `protected static shadowRootOptions = { ..., delegatesFocus: true }` to widen\n// visibility — same shape TailwindElement uses.\ntype StaticFinalizeStyles = {\n\tfinalizeStyles(styles?: CSSResultGroup): CSSResultOrNative[]\n}\nconst SchmancyElementBase = SignalWatcher(BaseElement(LitElement)) as unknown as\n\tCustomElementConstructor &\n\t\tConstructor<LitElement> &\n\t\tConstructor<IBaseMixin> &\n\t\tConstructor<SignalWatcherApi> &\n\t\tStaticFinalizeStyles\n\n// ---------------------------------------------------------------------------\n// Active-host integration. Two layers:\n//\n// (1) Prototype-chain wrap. The first instance of every concrete subclass\n// triggers a walk that wraps every function-typed descriptor on the\n// chain (up to but not including HTMLElement.prototype) with\n// `_activeHost.run(this, …)`. Catches `render()`, every Lit lifecycle\n// hook, and every user-defined class method (sync or async — the host\n// propagates across `await` via the Promise.then patch in\n// `active-host.ts`). Idempotent: each prototype object is wrapped at\n// most once, regardless of how many subclasses share it.\n//\n// (2) `addEventListener` override. Listeners attached imperatively to\n// the host run inside `_activeHost.run(this, …)`. We keep an\n// `original→wrapped` map so `removeEventListener` finds the wrapped\n// listener.\n//\n// Inline arrow handlers attached via Lit templates (`@click=${() => …}`)\n// are not wrapped at this layer — Lit attaches them to *child* elements,\n// not the host. They resolve correctly via the\n// `window.event.composedPath()` fallback in `resolveActiveHost()`: a\n// `context-request` dispatched from the click target bubbles (composed)\n// up to the enclosing `<schmancy-context>` provider.\n// ---------------------------------------------------------------------------\n\n// Lit's internal protocol methods (e.g. `_$attributeToProperty`) are\n// framework plumbing; wrapping them risks breaking Lit's update scheduling\n// for no semantic gain — the host is already on the stack from the wrap of\n// the public lifecycle methods that call them.\nfunction shouldSkipMethod(key: string): boolean {\n\tif (key === 'constructor') return true\n\tif (key.startsWith('_$')) return true\n\treturn false\n}\n\nconst wrappedProtos = new WeakSet<object>()\n\nfunction wrapPrototypeChain(ctor: { prototype: object }): void {\n\tlet proto: object | null = ctor.prototype\n\twhile (proto && proto !== HTMLElement.prototype) {\n\t\tif (wrappedProtos.has(proto)) break\n\t\twrappedProtos.add(proto)\n\t\tconst descs = Object.getOwnPropertyDescriptors(proto)\n\t\tfor (const [key, desc] of Object.entries(descs)) {\n\t\t\tif (shouldSkipMethod(key)) continue\n\t\t\tif (typeof desc.value !== 'function') continue\n\t\t\tif (!desc.configurable) continue\n\t\t\tconst original = desc.value as (...args: unknown[]) => unknown\n\t\t\tObject.defineProperty(proto, key, {\n\t\t\t\t...desc,\n\t\t\t\tvalue: function wrappedForActiveHost(this: HTMLElement, ...args: unknown[]) {\n\t\t\t\t\treturn _activeHost.run(this, () => original.apply(this, args))\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\tproto = Object.getPrototypeOf(proto) as object | null\n\t}\n}\n\ntype AnyListener = EventListener | EventListenerObject\nconst listenerWrapCache = new WeakMap<AnyListener, EventListener>()\n\nfunction wrapHostListener(host: HTMLElement, listener: AnyListener): EventListener {\n\tconst cached = listenerWrapCache.get(listener)\n\tif (cached) return cached\n\tconst wrapped: EventListener = function wrappedHostListener(this: unknown, evt: Event) {\n\t\t_activeHost.run(host, () => {\n\t\t\tif (typeof listener === 'function') {\n\t\t\t\t;(listener as EventListener).call(this, evt)\n\t\t\t} else {\n\t\t\t\tlistener.handleEvent(evt)\n\t\t\t}\n\t\t})\n\t}\n\tlistenerWrapCache.set(listener, wrapped)\n\treturn wrapped\n}\n\n/**\n * Base class for Schmancy components. A concrete named class — not a mixin\n * factory — so DevTools shows `SchmancyElement` in the prototype chain and\n * `extends SchmancyElement` reads like `extends LitElement` for new\n * contributors.\n *\n * Composes:\n * 1. `LitElement` — Lit base\n * 2. `BaseElement` — `disconnecting` Subject, classMap/styleMap,\n * discovery, `stableId`, `uid`, `locale`\n * 3. `SignalWatcher` — auto-tracks every signal read in `render()`\n *\n * Tailwind styles are injected automatically via `finalizeStyles` — subclasses\n * just declare their own component-local styles in `static styles`:\n *\n * @customElement('my-card')\n * class MyCard extends SchmancyElement {\n * static styles = [css`:host { display: block }`]\n * render() { return html`<slot></slot>` }\n * }\n *\n * Cleanup primitives (both fire on disconnect):\n * - `disconnecting: Subject<void>` — RxJS, used with `takeUntil`\n * - `disconnectedSignal: AbortSignal` — native, used with `fetch`,\n * `addEventListener`, or any AbortSignal-aware API\n *\n * Never wrap with `SignalWatcher` again — it is already part of the base.\n * `SignalWatcher(SchmancyElement)` creates two nested Computeds and panics\n * with \"Detected cycle in computations\" at runtime; the pre-edit lint\n * (`NO_SIGNAL_WATCHER_WRAP`) blocks it as belt-and-suspenders.\n */\nexport class SchmancyElement extends SchmancyElementBase {\n\tprivate abortController = new AbortController()\n\n\t/** AbortSignal that fires when the element disconnects. */\n\treadonly disconnectedSignal: AbortSignal = this.abortController.signal\n\n\tconstructor() {\n\t\tsuper()\n\t\twrapPrototypeChain(this.constructor as { prototype: object })\n\t}\n\n\tstatic override finalizeStyles(\n\t\tstyles?: CSSResultGroup,\n\t): CSSResultOrNative[] {\n\t\treturn [...super.finalizeStyles(styles), tailwindStyles]\n\t}\n\n\toverride addEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject | null,\n\t\toptions?: boolean | AddEventListenerOptions,\n\t): void {\n\t\tif (listener == null) {\n\t\t\tsuper.addEventListener(type, listener, options)\n\t\t\treturn\n\t\t}\n\t\tsuper.addEventListener(type, wrapHostListener(this, listener), options)\n\t}\n\n\toverride removeEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject | null,\n\t\toptions?: boolean | EventListenerOptions,\n\t): void {\n\t\tif (listener == null) {\n\t\t\tsuper.removeEventListener(type, listener, options)\n\t\t\treturn\n\t\t}\n\t\tconst wrapped = listenerWrapCache.get(listener)\n\t\tsuper.removeEventListener(type, wrapped ?? (listener as EventListener), options)\n\t}\n\n\toverride disconnectedCallback() {\n\t\tthis.abortController.abort()\n\t\tsuper.disconnectedCallback()\n\t}\n}\n\n/**\n * Decorator: `@schmancyElement('tag-name')`. The standard way to register\n * a `SchmancyElement` subclass.\n *\n * Drop-in replacement for Lit's `@customElement`. The difference is\n * timing: this decorator wraps the prototype's methods with\n * `_activeHost.run` BEFORE calling `customElements.define`.\n *\n * Why this matters: the HTML spec captures the element's lifecycle\n * callback references (`connectedCallback`, `disconnectedCallback`, etc.)\n * off the prototype at `customElements.define` time, and the browser\n * invokes those cached references for the element's lifecycle — it does\n * NOT re-look-up the prototype each time. SchmancyElement's constructor\n * installs the active-host wrap on first instantiation, which is strictly\n * later than `define`, so the browser ends up calling unwrapped\n * lifecycle callbacks. Reads inside `connectedCallback` then fall through\n * to `document.activeElement`, miss the enclosing `<schmancy-context>`,\n * and resolve to the module-scoped global instead of the isolated copy.\n *\n * Use this decorator for any subclass that:\n * - Reads or writes a state-singleton inside `connectedCallback` or\n * `disconnectedCallback`, AND\n * - May appear inside a `<schmancy-context>` subtree.\n *\n * For elements that never touch state in lifecycle callbacks, plain\n * `@customElement` from `lit/decorators.js` still works — the\n * constructor's wrap covers everything else (render, class methods,\n * event handlers attached via the prototype). The two decorators are\n * interchangeable for those cases.\n */\nexport function schmancyElement(tagName: string) {\n\treturn <T extends CustomElementConstructor>(cls: T): T => {\n\t\twrapPrototypeChain(cls as { prototype: object })\n\t\tcustomElements.define(tagName, cls)\n\t\treturn cls\n\t}\n}\n"],"mappings":"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,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
@@ -1,21 +0,0 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`);require(`./mixins-BoMURWag.cjs`);let t=require(`rxjs`),n=require(`lit/decorators.js`),r=require(`lit`);var i=new t.Subject,a=`FINDING_MORTIES`,o=`HERE_RICKY`,s=new WeakMap,c=class e{get areaSubjects(){let e=s.get(this);return e||(e=new Map,s.set(this,e)),e}constructor(){this.prettyURL=!1,this.mode=`HISTORY`,this.request=new t.ReplaySubject(1),this.current=new Map,this.$current=new t.ReplaySubject(1),this.enableHistoryMode=!0,this.findingMortiesEvent=new CustomEvent(a),this.disposed=!1,this.isProcessingPopstate=!1,this.$current.next(this.current),this.$current.subscribe(e=>{this.disposed||e.forEach((e,t)=>{this.getOrCreateAreaSubject(t).next(e)})}),this.initializeFromBrowserState(),typeof window<`u`&&(this.unloadSubscription=(0,t.fromEvent)(window,`unload`).subscribe(()=>{this.dispose()}))}initializeFromBrowserState(){try{let e=history.state;e&&e.schmancyAreas&&(Object.entries(e.schmancyAreas).forEach(([e,t])=>{this.current.set(e,t)}),this.$current.next(this.current))}catch{}}getOrCreateAreaSubject(e){let n=this.areaSubjects.get(e);if(!n||n.closed){n=new t.ReplaySubject(1),this.areaSubjects.set(e,n);let r=this.current.get(e);r&&n.next({...r,state:r.state||{},params:r.params||{},props:r.props||{}})}return n}on(e,n=!1){if(!e)throw Error(`Area name is required`);let r=this.getOrCreateAreaSubject(e).asObservable().pipe((0,t.distinctUntilChanged)((e,t)=>e.component===t.component&&JSON.stringify(e.state)===JSON.stringify(t.state)&&JSON.stringify(e.params)===JSON.stringify(t.params)&&JSON.stringify(e.props)===JSON.stringify(t.props)),(0,t.shareReplay)(1));return n?r.pipe((0,t.skip)(1)):r}all(e=!1){let n=this.$current.asObservable().pipe((0,t.shareReplay)(1));return e?n.pipe((0,t.skip)(1)):n}getState(e){if(!e)throw Error(`Area name is required`);return this.on(e).pipe((0,t.map)(e=>e.state),(0,t.filter)(e=>e!=null),(0,t.distinctUntilChanged)((e,t)=>JSON.stringify(e)===JSON.stringify(t)),(0,t.map)(e=>e),(0,t.catchError)(e=>t.EMPTY))}params(e){if(!e)throw Error(`Area name is required`);let n={...this.current.get(e)?.params??{}};return typeof window<`u`&&window.location.search&&new URLSearchParams(window.location.search).forEach((e,t)=>{n[t]=e}),this.on(e).pipe((0,t.map)(e=>e.params??{}),(0,t.startWith)(n),(0,t.distinctUntilChanged)((e,t)=>JSON.stringify(e)===JSON.stringify(t)),(0,t.catchError)(e=>t.EMPTY))}param(e,n){if(!e||!n)throw Error(`Area name and key are required`);return this.params(e).pipe((0,t.map)(e=>e[n]),(0,t.filter)(e=>e!==void 0),(0,t.distinctUntilChanged)(),(0,t.map)(e=>e),(0,t.catchError)(e=>t.EMPTY))}props(e){if(!e)throw Error(`Area name is required`);return this.on(e).pipe((0,t.map)(e=>e.props),(0,t.filter)(e=>e!=null),(0,t.distinctUntilChanged)((e,t)=>JSON.stringify(e)===JSON.stringify(t)),(0,t.map)(e=>e),(0,t.catchError)(e=>t.EMPTY))}prop(e,n){if(!e||!n)throw Error(`Area name and key are required`);return this.props(e).pipe((0,t.map)(e=>e[n]),(0,t.filter)(e=>e!==void 0),(0,t.distinctUntilChanged)(),(0,t.map)(e=>e),(0,t.catchError)(e=>t.EMPTY))}find(){return(0,t.zip)([(0,t.fromEvent)(window,o).pipe((0,t.map)(e=>e.detail),(0,t.bufferTime)(0)),(0,t.of)(1).pipe((0,t.tap)(()=>window.dispatchEvent(this.findingMortiesEvent)))]).pipe((0,t.map)(([e])=>e),(0,t.timeout)(1),(0,t.catchError)(()=>t.EMPTY))}push(e){if(!e.area)throw Error(`Area is required for route action`);if(this.isProcessingPopstate)return;let t={...e,state:e.state||{},params:e.params||{},props:e.props||{},_source:`programmatic`};this.enableHistoryMode&&i.next(t),this.request.next(t),this.dispatchAreaEvent(t.area,t)}_updateFromBrowser(e){let t={...e,state:e.state||{},params:e.params||{},props:e.props||{},_source:`browser`};this.isProcessingPopstate=!0,this.request.next(t),this.isProcessingPopstate=!1}updateBrowserHistory(e,t,n,r,i){if(this.enableHistoryMode)try{let a=history.state||{},o=a.schmancyAreas||{},s={component:t.component,area:t.area};t.state&&Object.keys(t.state).length>0&&(s.state=t.state),t.params&&Object.keys(t.params).length>0&&(s.params=t.params),t.props&&Object.keys(t.props).length>0&&(s.props=t.props),o[e]=s;let c={...a,schmancyAreas:o},l=this.createCleanURL(o,r,i);n===`replace`||n===`pop`?history.replaceState(c,``,l):n!==`push`&&n||history.pushState(c,``,l)}catch{}}createCleanURL(e,t,n){let r=`/`;if(n)r=n,r.startsWith(`/`)||(r=`/`+r),r.endsWith(`/`)||(r+=`/`);else{let e=location.pathname,t=e.split(`/`),n=t[t.length-1];n&&(n.includes(`{`)||n.includes(`%7B`))?(t.pop(),r=t.join(`/`)||`/`):r=e,r===`/`||r.endsWith(`/`)||(r+=`/`)}let i=``;if(!0!==t){let n=new URLSearchParams(location.search);Object.values(e).forEach(e=>{e.params&&Object.keys(e.params).length>0&&Object.entries(e.params).forEach(([e,t])=>{t!=null&&n.set(e,String(t))})}),Array.isArray(t)&&t.forEach(e=>n.delete(e)),i=n.toString(),i=i?`?${i}`:``}if(this.prettyURL){let t=e.main;if(t){let e=r===`/`?`/${t.component}`:`${r}${t.component}`,n=new URLSearchParams(i);t.params&&Object.entries(t.params).forEach(([e,t])=>{typeof t!=`string`&&typeof t!=`number`||n.set(e,String(t))});let a=n.toString();return e+(a?`?${a}`:``)}}try{let t={};if(Object.entries(e).forEach(([e,n])=>{let r={component:n.component};n.state&&Object.keys(n.state).length>0&&(r.state=n.state),n.params&&Object.keys(n.params).length>0&&(r.params=n.params),n.props&&Object.keys(n.props).length>0&&(r.props=n.props),t[e]=r}),Object.keys(t).length===0)return`${r===`/`?``:r.replace(/\/$/,``)}${i}`;let n=encodeURIComponent(JSON.stringify(t));return`${r===`/`?``:r.replace(/\/$/,``)}/${n}${i}`}catch{return location.pathname}}restoreFromBrowserState(e){try{if(e&&e.schmancyAreas)return e.schmancyAreas}catch{}return this.parseStateFromURL()}parseStateFromURL(){let e=location.pathname.split(`/`).pop();if(!e)return{};try{let t=JSON.parse(decodeURIComponent(e));if(typeof t==`object`&&t)return t}catch{}return{}}dispatchAreaEvent(e,t){let n=new CustomEvent(`schmancy-area-${e}-changed`,{detail:{area:e,component:t.component,state:t.state,params:t.params,props:t.props,historyStrategy:t.historyStrategy},bubbles:!0,composed:!0});window.dispatchEvent(n)}pop(e){if(!e)throw Error(`Area name is required`);let t=this.areaSubjects.get(e);if(t&&!t.closed&&t.next({component:null,state:{},area:e,params:{},props:{}}),this.request.next({area:e,component:null,state:{},params:{},props:{},historyStrategy:`silent`,_source:`programmatic`}),this.current.delete(e),this.$current.next(this.current),this.enableHistoryMode)try{let t=history.state||{},n={...t.schmancyAreas};delete n[e];let r={...t,schmancyAreas:n},i=this.createCleanURL(n);history.replaceState(r,``,i)}catch{}}clear(){if(this.areaSubjects.forEach(e=>e.complete()),this.areaSubjects.clear(),this.current.clear(),this.$current.next(this.current),this.enableHistoryMode){let e=this.createCleanURL({});history.replaceState({schmancyAreas:{}},``,e)}}dispose(){this.disposed||(this.disposed=!0,this.unloadSubscription&&=(this.unloadSubscription.unsubscribe(),void 0),this.areaSubjects.forEach(e=>e.complete()),this.areaSubjects.clear(),this.request.complete(),this.$current.complete(),i.complete(),this.current.clear(),s.delete(this))}static getInstance(){return e.instance||=new e,e.instance}get state(){try{let e=history.state;if(e&&e.schmancyAreas)return e.schmancyAreas}catch{}return this.parseStateFromURL()}hasArea(e){return this.current.has(e)}getActiveAreas(){return Array.from(this.current.keys())}getRoute(e){return this.current.get(e)}}.getInstance(),l=class extends e.t{constructor(...e){super(...e),this.exact=!1}static{this.styles=[r.css`
2
- :host {
3
- display: none;
4
- }
5
- `]}getConfig(){return{when:this.when,component:this.component,exact:this.exact,guard:this.guard}}render(){return r.html``}};e.u([(0,n.property)({type:String})],l.prototype,`when`,void 0),e.u([(0,n.property)({type:Object})],l.prototype,`component`,void 0),e.u([(0,n.property)({type:Boolean})],l.prototype,`exact`,void 0),e.u([(0,n.property)({type:Object})],l.prototype,`guard`,void 0),l=e.u([(0,n.customElement)(`schmancy-route`)],l);var u=function(e){return e.push=`push`,e.replace=`replace`,e.pop=`pop`,e.silent=`silent`,e}({}),d=class extends e.t{static{this.styles=[r.css`
6
- :host {
7
- position: relative;
8
- display: block;
9
- height: 100%;
10
- width: 100%;
11
- min-height: 0;
12
- min-width: 0;
13
- contain: layout style;
14
- }
15
- ::slotted(:not(schmancy-route)) {
16
- display: block;
17
- box-sizing: border-box;
18
- min-height: 100%;
19
- width: 100%;
20
- }
21
- `]}firstUpdated(){if(!this.name)throw Error(`Area name is required`);(0,t.merge)(c.request.pipe((0,t.filter)(({area:e})=>e===this.name)),(0,t.of)(null).pipe((0,t.map)(()=>{let e=location.pathname,t=e.split(`/`).pop()||``;if(t&&(t.includes(`{`)||t.includes(`%7B`)))try{let e=JSON.parse(decodeURIComponent(t));if(typeof e==`object`&&e&&e[this.name]){let t=e[this.name];return{area:this.name,component:t.component,state:t.state||{},params:t.params||{},props:t.props||{},historyStrategy:u.replace}}}catch{}let n=e.split(`/`).filter(Boolean).find(e=>this.routes?.some(t=>t.when===e));return n?{area:this.name,component:n,state:{},params:{},historyStrategy:u.silent}:this.default?{area:this.name,component:this.default,state:{},params:{},historyStrategy:u.silent}:null})),(0,t.fromEvent)(window,`popstate`).pipe((0,t.map)(()=>{if(history.state?.schmancyAreas?.[this.name]){let e=history.state.schmancyAreas[this.name];return{area:this.name,component:e.component,state:e.state||{},params:e.params||{},props:e.props||{},historyStrategy:u.pop}}let e=location.pathname,t=e.split(`/`).pop()||``;if(t&&(t.includes(`{`)||t.includes(`%7B`)))try{let e=JSON.parse(decodeURIComponent(t));if(typeof e==`object`&&e&&e[this.name]){let t=e[this.name];return{area:this.name,component:t.component,state:t.state||{},params:t.params||{},props:t.props||{},historyStrategy:u.replace}}}catch{}let n=e.split(`/`).filter(Boolean).find(e=>this.routes?.some(t=>t.when===e));return n?{area:this.name,component:n,state:{},params:{},historyStrategy:u.silent}:this.default?{area:this.name,component:this.default,state:{},params:{},historyStrategy:u.silent}:null}))).pipe((0,t.filter)(e=>e!==null),(0,t.switchMap)(e=>(0,t.of)(e).pipe((0,t.switchMap)(e=>{let n,r=e.component;return typeof r==`string`&&this.routes&&(n=this.routes.find(e=>e.when===r),n&&(r=n.component)),!n&&r instanceof HTMLElement&&this.routes&&(n=this.routes.find(e=>e.when===r.tagName.toLowerCase())),!n&&typeof r==`function`&&`preload`in r?(0,t.from)(r().then(t=>({...e,component:t.default,matchedRoute:this.routes?.find(e=>e.when===(customElements.getName(t.default)??``))??void 0}))):(0,t.of)({...e,component:r,matchedRoute:n})}),(0,t.switchMap)(e=>e.matchedRoute?.guard?e.matchedRoute.guard.pipe((0,t.switchMap)(n=>n?(0,t.of)(e):(e.matchedRoute?.dispatchEvent(new CustomEvent(`redirect`,{detail:{blockedRoute:e.matchedRoute?.when??`unknown`,area:this.name,params:e.params||{},state:e.state||{}},bubbles:!0,composed:!0})),t.EMPTY))):(0,t.of)(e)),(0,t.switchMap)(e=>typeof e.component==`function`&&`preload`in e.component?(0,t.from)(e.component().then(t=>({...e,component:t.default}))):(0,t.of)(e)),(0,t.map)(e=>{let t=e.component,n=t&&t!==``?typeof t==`string`?t:t instanceof HTMLElement?t.tagName.toLowerCase():typeof t==`function`?t.name||`CustomElement`:`null`:`null`;return{...e,key:`${n}${JSON.stringify(e.params)}${JSON.stringify(e.state)}${JSON.stringify(e.props)}`}}),(0,t.catchError)(e=>t.EMPTY))),(0,t.distinctUntilChanged)((e,t)=>e.key===t.key),(0,t.map)(e=>{let t=e.component,n=null;if(typeof t==`string`&&t!==``)try{n=document.createElement(t)}catch{}else if(t instanceof HTMLElement)n=t;else if(typeof t==`function`)try{n=new t}catch{}return n&&(e.params&&Object.assign(n,e.params),e.props&&Object.assign(n,e.props),e.state&&Object.assign(n,{state:e.state})),{...e,element:n}}),(0,t.tap)(e=>{let t=Array.from(this.children).find(e=>!(e instanceof l)),{element:n}=e;if(!n)return void t?.remove();let r=e.animationDuration??150;r===0?(t?.remove(),this.appendChild(n),this.scrollTop=0):t?(t.style.willChange=`opacity`,n.style.willChange=`opacity`,t.style.contentVisibility=`hidden`,t.animate([{opacity:1},{opacity:0}],{duration:r,easing:`ease-out`}).finished.then(()=>{if(this.isConnected)return t.remove(),this.appendChild(n),this.scrollTop=0,n.animate([{opacity:0},{opacity:1}],{duration:r,easing:`ease-in`}).finished}).then(()=>n.style.willChange=`auto`)):(this.appendChild(n),this.scrollTop=0,n.animate([{opacity:0},{opacity:1}],{duration:r>100?Math.max(100,.66*r):r,easing:`ease-in`}).finished.then(()=>n.style.willChange=`auto`));let i={component:n.tagName.toLowerCase(),state:e.state||{},area:this.name,params:e.params||{},props:e.props||{}};c.current.set(this.name,i),c.$current.next(c.current),c.enableHistoryMode&&c.updateBrowserHistory(this.name,i,e.historyStrategy??u.push,e.clearQueryParams,e.path)}),(0,t.takeUntil)(this.disconnecting)).subscribe()}disconnectedCallback(){super.disconnectedCallback(),c.pop(this.name)}render(){return r.html`<slot></slot>`}};function f(e){return btoa(e)}function p(e){return atob(e)}function m(e,t){if(e===t)return!0;if(typeof e!=`function`||typeof t!=`function`)return!1;if(e.name&&t.name&&e.name===t.name)return!0;let n=e.observedAttributes,r=t.observedAttributes;if(n&&r&&Array.isArray(n)&&Array.isArray(r))return n.length===r.length&&n.every((e,t)=>e===r[t]);try{let n=e.prototype,r=t.prototype;if(Object.getPrototypeOf(n)===Object.getPrototypeOf(r)){let e=Object.getOwnPropertyNames(n).toSorted(),t=Object.getOwnPropertyNames(r).toSorted();return e.length===t.length&&e.every((e,n)=>e===t[n])}}catch{}return!1}function h(e){return e.toLowerCase().replace(/[^a-z0-9]/g,``)}function g(e){if(typeof e==`string`)return e.toLowerCase();if(e instanceof HTMLElement)return e.tagName.toLowerCase();if(typeof e==`function`){let t=e.name;if(t)return t.replace(/([A-Z])/g,`-$1`).toLowerCase().replace(/^-/,``)}return null}function _(e,t){let n={...e};for(let e in t)if(t.hasOwnProperty(e)){let r=t[e],i=n[e];v(r)&&v(i)?n[e]=_(i,r):n[e]=r}return n}function v(e){return typeof e==`object`&&!!e&&e.constructor===Object&&Object.prototype.toString.call(e)===`[object Object]`}function y(e,t){let n=null;return function(...r){let i=this;n!==null&&clearTimeout(n),n=setTimeout(()=>{e.apply(i,r),n=null},t)}}function b(e){try{let t=JSON.stringify(e);return encodeURIComponent(t)}catch{return``}}function x(e){if(!e)return{};try{let t=JSON.parse(decodeURIComponent(e));if(v(t))return t}catch{}return{}}function S(e,t){if(e.area!==t.area||typeof e.component!=typeof t.component)return!1;if(typeof e.component==`string`&&typeof t.component==`string`){if(h(e.component)!==h(t.component))return!1}else if(typeof e.component==`function`&&typeof t.component==`function`){if(!m(e.component,t.component))return!1}else if(e.component!==t.component)return!1;return JSON.stringify(e.state||{})===JSON.stringify(t.state||{})&&JSON.stringify(e.params||{})===JSON.stringify(t.params||{})}function C(e,t){return e.area===t.area&&e.component===t.component&&JSON.stringify(e.state||{})===JSON.stringify(t.state||{})&&JSON.stringify(e.params||{})===JSON.stringify(t.params||{})}function w(e){let t=g(e.component)||`unknown`,n=T(JSON.stringify(e.state||{})),r=T(JSON.stringify(e.params||{}));return`${e.area}:${t}:${n}:${r}`}function T(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return Math.abs(t).toString(36)}function E(e,t=[`password`,`token`,`secret`,`apiKey`]){let n={};for(let r in e)if(e.hasOwnProperty(r)&&!t.includes(r)){let i=e[r];v(i)?n[r]=E(i,t):Array.isArray(i)?n[r]=i.map(e=>v(e)?E(e,t):e):n[r]=i}return n}function D(e){let t={},n;return n=e instanceof URLSearchParams?e:typeof e==`string`?new URL(e,window.location.origin).searchParams:new URLSearchParams(window.location.search),n.forEach((e,n)=>{t[n]=e}),t}function O(e){let t=new URLSearchParams;for(let n in e)if(e.hasOwnProperty(n)){let r=e[n];r!=null&&r!==``&&t.set(n,String(r))}let n=t.toString();return n?`?${n}`:``}e.u([(0,n.property)()],d.prototype,`name`,void 0),e.u([(0,n.property)()],d.prototype,`default`,void 0),e.u([(0,n.queryAssignedElements)({selector:`schmancy-route`,flatten:!0})],d.prototype,`routes`,void 0),d=e.u([(0,n.customElement)(`schmancy-area`)],d),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return l}});
@@ -1 +0,0 @@
1
- {"version":3,"file":"area-CaEI33G0.cjs","names":[],"sources":["../src/area/area.service.ts","../src/area/route.component.ts","../src/area/router.types.ts","../src/area/area.component.ts","../src/area/ecrypt.ts","../src/area/utils.ts"],"sourcesContent":["import {\n\tbufferTime,\n\tcatchError,\n\tdistinctUntilChanged,\n\tEMPTY,\n\tfilter,\n\tfromEvent,\n\tmap,\n\tObservable,\n\tof,\n\tReplaySubject,\n\tshareReplay,\n\tskip,\n\tstartWith,\n\tSubject,\n\tSubscription,\n\ttap,\n\ttimeout,\n\tzip\n} from 'rxjs'\nimport { SchmancyTeleportation } from '../teleport'\nimport { ActiveRoute, AreaSubscription, RouteAction } from './router.types'\n\nexport const routerHistory = new Subject<RouteAction>()\n\nexport const FINDING_MORTIES = 'FINDING_MORTIES'\nexport const HERE_RICKY = 'HERE_RICKY'\nexport type HERE_RICKY_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\nexport type FINDING_MORTIES_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\n// WeakMap for better memory management of area subjects\nconst areaSubjectsCache = new WeakMap<AreaService, Map<string, ReplaySubject<ActiveRoute>>>()\n\n// Track navigation source to prevent history conflicts\ntype NavigationSource = 'programmatic' | 'browser' | 'initial'\n\nclass AreaService implements AreaSubscription {\n\tprivate static instance: AreaService\n\tpublic prettyURL = false\n\tpublic mode: 'SILENT' | 'HISTORY' = 'HISTORY'\n\tpublic request = new ReplaySubject<RouteAction>(1)\n\tpublic current = new Map<string, ActiveRoute>()\n\tpublic $current = new ReplaySubject<Map<string, ActiveRoute>>(1)\n\t\n\t// Create a dictionary of ReplaySubjects for area-specific subscriptions\n\tprivate get areaSubjects(): Map<string, ReplaySubject<ActiveRoute>> {\n\t\tlet subjects = areaSubjectsCache.get(this)\n\t\tif (!subjects) {\n\t\t\tsubjects = new Map()\n\t\t\tareaSubjectsCache.set(this, subjects)\n\t\t}\n\t\treturn subjects\n\t}\n\t\n\tpublic enableHistoryMode = true\n\tprivate findingMortiesEvent = new CustomEvent<FINDING_MORTIES_EVENT['detail']>(FINDING_MORTIES)\n\tprivate disposed = false\n\tpublic isProcessingPopstate = false\n\tprivate unloadSubscription?: Subscription\n\n\tconstructor() {\n\t\tthis.$current.next(this.current)\n\t\t\n\t\t// Subscribe to current changes to update area-specific subjects\n\t\tthis.$current.subscribe(currentAreas => {\n\t\t\tif (this.disposed) return\n\t\t\t\n\t\t\t// For each area in the current map\n\t\t\tcurrentAreas.forEach((route, areaName) => {\n\t\t\t\t// Get or create a subject for this area\n\t\t\t\tconst areaSubject = this.getOrCreateAreaSubject(areaName)\n\t\t\t\t// Emit the updated route to area-specific subscribers\n\t\t\t\tareaSubject.next(route)\n\t\t\t})\n\t\t})\n\n\t\t// Initialize from browser state if available\n\t\tthis.initializeFromBrowserState()\n\n\t\t// Setup unload subscription using RxJS\n\t\tif (typeof window !== 'undefined') {\n\t\t\tthis.unloadSubscription = fromEvent(window, 'unload').subscribe(() => {\n\t\t\t\tthis.dispose()\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Initialize router state from browser history state\n\t */\n\tprivate initializeFromBrowserState() {\n\t\ttry {\n\t\t\tconst browserState = history.state\n\t\t\tif (browserState && browserState.schmancyAreas) {\n\t\t\t\tObject.entries(browserState.schmancyAreas).forEach(([areaName, route]) => {\n\t\t\t\t\tthis.current.set(areaName, route as ActiveRoute)\n\t\t\t\t})\n\t\t\t\tthis.$current.next(this.current)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to initialize from browser state:', error)\n\t\t}\n\t}\n\n\t/**\n\t * Get or create a ReplaySubject for a specific area with proper cleanup\n\t */\n\tprivate getOrCreateAreaSubject(areaName: string): ReplaySubject<ActiveRoute> {\n\t\tlet subject = this.areaSubjects.get(areaName)\n\t\t\n\t\tif (!subject || subject.closed) {\n\t\t\tsubject = new ReplaySubject<ActiveRoute>(1)\n\t\t\tthis.areaSubjects.set(areaName, subject)\n\t\t\t\n\t\t\t// If the area already exists in current, emit it immediately\n\t\t\tconst currentRoute = this.current.get(areaName)\n\t\t\tif (currentRoute) {\n\t\t\t\tsubject.next({\n\t\t\t\t\t...currentRoute,\n\t\t\t\t\t// Ensure state, params and props are initialized if undefined\n\t\t\t\t\tstate: currentRoute.state || {},\n\t\t\t\t\tparams: currentRoute.params || {},\n\t\t\t\t\tprops: currentRoute.props || {}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn subject\n\t}\n\n\t/**\n\t * Subscribe to a specific area with caching\n\t */\n\ton(areaName: string, skipCurrent = false): Observable<ActiveRoute> {\n\t\tif (!areaName) {\n\t\t\tthrow new Error('Area name is required')\n\t\t}\n\n\t\tconst areaSubject = this.getOrCreateAreaSubject(areaName)\n\t\tconst observable = areaSubject.asObservable().pipe(\n\t\t\t// Add distinct to prevent duplicate emissions - includes state, params, and props\n\t\t\tdistinctUntilChanged((a, b) =>\n\t\t\t\ta.component === b.component &&\n\t\t\t\tJSON.stringify(a.state) === JSON.stringify(b.state) &&\n\t\t\t\tJSON.stringify(a.params) === JSON.stringify(b.params) &&\n\t\t\t\tJSON.stringify(a.props) === JSON.stringify(b.props)\n\t\t\t),\n\t\t\t// Share the subscription\n\t\t\tshareReplay(1)\n\t\t)\n\n\t\treturn skipCurrent ? observable.pipe(skip(1)) : observable\n\t}\n\t\n\t/**\n\t * Subscribe to all areas\n\t */\n\tall(skipCurrent = false): Observable<Map<string, ActiveRoute>> {\n\t\tconst observable = this.$current.asObservable().pipe(\n\t\t\tshareReplay(1)\n\t\t)\n\t\treturn skipCurrent ? observable.pipe(skip(1)) : observable\n\t}\n\t\n\t/**\n\t * Get state from an area with type safety\n\t */\n\tgetState<T = unknown>(areaName: string): Observable<T> {\n\t\tif (!areaName) {\n\t\t\tthrow new Error('Area name is required')\n\t\t}\n\t\t\n\t\treturn this.on(areaName).pipe(\n\t\t\tmap(route => route.state),\n\t\t\tfilter((state): state is NonNullable<Record<string, unknown>> => \n\t\t\t\tstate !== undefined && state !== null\n\t\t\t),\n\t\t\tdistinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n\t\t\tmap(state => state as T),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(`Error getting state for area \"${areaName}\":`, err)\n\t\t\t\treturn EMPTY\n\t\t\t})\n\t\t)\n\t}\n\t\n\t/**\n\t * Get params from an area with type safety\n\t * Emits current value immediately on subscription via startWith\n\t * URL query params are MERGED with route params (URL takes precedence for redirects like _rp_oid)\n\t */\n\tparams<T extends Record<string, unknown> = Record<string, unknown>>(areaName: string): Observable<T> {\n\t\tif (!areaName) {\n\t\t\tthrow new Error('Area name is required')\n\t\t}\n\n\t\tconst routeParams = (this.current.get(areaName)?.params ?? {}) as Record<string, unknown>\n\n\t\t// ALWAYS merge URL query params - they take precedence (handles external OAuth-style redirects)\n\t\tlet currentParams = { ...routeParams }\n\t\tif (typeof window !== 'undefined' && window.location.search) {\n\t\t\tconst urlParams = new URLSearchParams(window.location.search)\n\t\t\turlParams.forEach((value, key) => {\n\t\t\t\tcurrentParams[key] = value\n\t\t\t})\n\t\t}\n\n\t\treturn this.on(areaName).pipe(\n\t\t\tmap(route => (route.params ?? {}) as T),\n\t\t\tstartWith(currentParams as T),\n\t\t\tdistinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(`Error getting params for area \"${areaName}\":`, err)\n\t\t\t\treturn EMPTY\n\t\t\t})\n\t\t)\n\t}\n\t\n\t/**\n\t * Get a specific param from an area with null safety\n\t */\n\tparam<T = unknown>(areaName: string, key: string): Observable<T> {\n\t\tif (!areaName || !key) {\n\t\t\tthrow new Error('Area name and key are required')\n\t\t}\n\t\t\n\t\treturn this.params<Record<string, unknown>>(areaName).pipe(\n\t\t\tmap(params => params[key]),\n\t\t\tfilter((value): value is NonNullable<unknown> => value !== undefined),\n\t\t\tdistinctUntilChanged(),\n\t\t\tmap(value => value as T),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(`Error getting param \"${key}\" for area \"${areaName}\":`, err)\n\t\t\t\treturn EMPTY\n\t\t\t})\n\t\t)\n\t}\n\t\n\t/**\n\t * Get props from an area with type safety\n\t */\n\tprops<T extends Record<string, unknown> = Record<string, unknown>>(areaName: string): Observable<T> {\n\t\tif (!areaName) {\n\t\t\tthrow new Error('Area name is required')\n\t\t}\n\t\t\n\t\treturn this.on(areaName).pipe(\n\t\t\tmap(route => route.props),\n\t\t\tfilter((props): props is NonNullable<Record<string, unknown>> => \n\t\t\t\tprops !== undefined && props !== null\n\t\t\t),\n\t\t\tdistinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n\t\t\tmap(props => props as T),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(`Error getting props for area \"${areaName}\":`, err)\n\t\t\t\treturn EMPTY\n\t\t\t})\n\t\t)\n\t}\n\t\n\t/**\n\t * Get a specific prop from an area with null safety\n\t */\n\tprop<T = unknown>(areaName: string, key: string): Observable<T> {\n\t\tif (!areaName || !key) {\n\t\t\tthrow new Error('Area name and key are required')\n\t\t}\n\t\t\n\t\treturn this.props<Record<string, unknown>>(areaName).pipe(\n\t\t\tmap(props => props[key]),\n\t\t\tfilter((value): value is NonNullable<unknown> => value !== undefined),\n\t\t\tdistinctUntilChanged(),\n\t\t\tmap(value => value as T),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(`Error getting prop \"${key}\" for area \"${areaName}\":`, err)\n\t\t\t\treturn EMPTY\n\t\t\t})\n\t\t)\n\t}\n\n\t/**\n\t * Find teleportation components\n\t */\n\tfind() {\n\t\treturn zip([\n\t\t\tfromEvent<HERE_RICKY_EVENT>(window, HERE_RICKY).pipe(\n\t\t\t\tmap(e => e.detail),\n\t\t\t\tbufferTime(0),\n\t\t\t),\n\t\t\tof(1).pipe(tap(() => window.dispatchEvent(this.findingMortiesEvent))),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(1),\n\t\t\tcatchError(() => EMPTY)\n\t\t)\n\t}\n\n\t/**\n\t * Push a new route action with validation\n\t */\n\tpush(r: RouteAction) {\n\t\tif (!r.area) {\n\t\t\tthrow new Error('Area is required for route action')\n\t\t}\n\t\t\n\t\t// Prevent processing during popstate handling\n\t\tif (this.isProcessingPopstate) {\n\t\t\treturn\n\t\t}\n\t\t\n\t\t// Ensure state, params and props are initialized\n\t\tconst routeAction: RouteAction = {\n\t\t\t...r,\n\t\t\tstate: r.state || {},\n\t\t\tparams: r.params || {},\n\t\t\tprops: r.props || {},\n\t\t\t_source: 'programmatic' as NavigationSource\n\t\t}\n\t\t\n\t\t// Add to history if enabled\n\t\tif (this.enableHistoryMode) {\n\t\t\trouterHistory.next(routeAction)\n\t\t}\n\t\t\n\t\tthis.request.next(routeAction)\n\t\t// Emit an area-specific event for those who want to listen directly to DOM events\n\t\tthis.dispatchAreaEvent(routeAction.area, routeAction)\n\t}\n\n\t/**\n\t * Internal method to update route from browser navigation\n\t * This should only be called by area components during popstate handling\n\t */\n\t_updateFromBrowser(routeAction: RouteAction) {\n\t\tconst enhancedRoute: RouteAction = {\n\t\t\t...routeAction,\n\t\t\tstate: routeAction.state || {},\n\t\t\tparams: routeAction.params || {},\n\t\t\tprops: routeAction.props || {},\n\t\t\t_source: 'browser' as NavigationSource\n\t\t}\n\t\t\n\t\tthis.isProcessingPopstate = true\n\t\tthis.request.next(enhancedRoute)\n\t\tthis.isProcessingPopstate = false\n\t}\n\n\t/**\n\t * Update browser history state (called by area components)\n\t */\n\tupdateBrowserHistory(areaName: string, route: ActiveRoute, historyStrategy?: string, clearQueryParams?: string[] | boolean | null, customPath?: string) {\n\t\tif (!this.enableHistoryMode) return\n\n\t\ttry {\n\t\t\t// Get current browser state or create new one\n\t\t\tconst currentState = history.state || {}\n\t\t\tconst schmancyAreas = currentState.schmancyAreas || {}\n\n\t\t\t// Update the specific area - only include non-empty state/params/props\n\t\t\tconst areaData: any = {\n\t\t\t\tcomponent: route.component,\n\t\t\t\tarea: route.area\n\t\t\t}\n\n\t\t\t// Only include state if it has content\n\t\t\tif (route.state && Object.keys(route.state).length > 0) {\n\t\t\t\tareaData.state = route.state\n\t\t\t}\n\n\t\t\t// Only include params if it has content\n\t\t\tif (route.params && Object.keys(route.params).length > 0) {\n\t\t\t\tareaData.params = route.params\n\t\t\t}\n\n\t\t\t// Only include props if it has content\n\t\t\tif (route.props && Object.keys(route.props).length > 0) {\n\t\t\t\tareaData.props = route.props\n\t\t\t}\n\n\t\t\tschmancyAreas[areaName] = areaData\n\n\t\t\tconst newState = {\n\t\t\t\t...currentState,\n\t\t\t\tschmancyAreas\n\t\t\t}\n\n\t\t\t// Create clean URL with optional custom path\n\t\t\tconst url = this.createCleanURL(schmancyAreas, clearQueryParams, customPath)\n\n\t\t\t// Update browser history\n\t\t\tif (historyStrategy === 'replace' || historyStrategy === 'pop') {\n\t\t\t\thistory.replaceState(newState, '', url)\n\t\t\t} else if (historyStrategy === 'push' || !historyStrategy) {\n\t\t\t\thistory.pushState(newState, '', url)\n\t\t\t}\n\t\t\t// 'silent' strategy doesn't update browser history\n\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to update browser history:', error)\n\t\t}\n\t}\n\n\t/**\n\t * Create a clean URL from area states\n\t */\n\tprivate createCleanURL(areas: Record<string, ActiveRoute>, clearQueryParams?: string[] | boolean | null, customPath?: string): string {\n\t\tlet basePath = '/'\n\n\t\t// If custom path is provided, use it directly (completely replaces the path)\n\t\tif (customPath) {\n\t\t\tbasePath = customPath\n\t\t\t// Ensure it starts with /\n\t\t\tif (!basePath.startsWith('/')) {\n\t\t\t\tbasePath = '/' + basePath\n\t\t\t}\n\t\t\t// Ensure base path ends with / for appending encoded state\n\t\t\tif (!basePath.endsWith('/')) {\n\t\t\t\tbasePath += '/'\n\t\t\t}\n\t\t} else {\n\t\t\t// Get the current base path (everything except the last segment which might be encoded state)\n\t\t\tconst currentPath = location.pathname\n\t\t\tconst pathSegments = currentPath.split('/')\n\n\t\t\t// Check if the last segment is encoded state (contains { or %7B)\n\t\t\tconst lastSegment = pathSegments[pathSegments.length - 1]\n\t\t\tif (lastSegment && (lastSegment.includes('{') || lastSegment.includes('%7B'))) {\n\t\t\t\t// Remove the encoded state segment to get the base path\n\t\t\t\tpathSegments.pop()\n\t\t\t\tbasePath = pathSegments.join('/') || '/'\n\t\t\t} else {\n\t\t\t\t// Keep the current path as base path\n\t\t\t\tbasePath = currentPath\n\t\t\t}\n\n\t\t\t// Ensure base path ends properly\n\t\t\tif (basePath !== '/' && !basePath.endsWith('/')) {\n\t\t\t\tbasePath += '/'\n\t\t\t}\n\t\t}\n\n\t\t// Handle query parameters\n\t\tlet queryString = ''\n\n\t\tif (clearQueryParams !== true) {\n\t\t\t// Get current query params\n\t\t\tconst urlParams = new URLSearchParams(location.search)\n\n\t\t\t// Add params from all areas to query string\n\t\t\tObject.values(areas).forEach(route => {\n\t\t\t\tif (route.params && Object.keys(route.params).length > 0) {\n\t\t\t\t\tObject.entries(route.params).forEach(([key, value]) => {\n\t\t\t\t\t\tif (value !== null && value !== undefined) {\n\t\t\t\t\t\t\turlParams.set(key, String(value))\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// Clear specific params if provided\n\t\t\tif (Array.isArray(clearQueryParams)) {\n\t\t\t\tclearQueryParams.forEach(param => urlParams.delete(param))\n\t\t\t}\n\n\t\t\t// Convert back to string\n\t\t\tqueryString = urlParams.toString()\n\t\t\tqueryString = queryString ? `?${queryString}` : ''\n\t\t}\n\t\t// If clearQueryParams === true, queryString remains empty (all params cleared)\n\n\t\tif (this.prettyURL) {\n\t\t\t// Create pretty URLs - customize this based on your routing needs\n\t\t\tconst mainArea = areas.main\n\t\t\tif (mainArea) {\n\t\t\t\tlet path = basePath === '/' ? `/${mainArea.component}` : `${basePath}${mainArea.component}`\n\n\t\t\t\t// Add simple params to URL\n\t\t\t\tconst searchParams = new URLSearchParams(queryString)\n\t\t\t\tif (mainArea.params) {\n\t\t\t\t\tObject.entries(mainArea.params).forEach(([key, value]) => {\n\t\t\t\t\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\t\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst query = searchParams.toString()\n\t\t\t\treturn path + (query ? `?${query}` : '')\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to encoded state in URL (original behavior)\n\t\ttry {\n\t\t\t// Clean up empty objects before encoding\n\t\t\ttype CleanRoute = Omit<ActiveRoute, 'area'>\n\t\t\tconst cleanedAreas: Record<string, CleanRoute> = {}\n\t\t\tObject.entries(areas).forEach(([areaName, route]) => {\n\t\t\t\tconst cleanRoute: CleanRoute = { component: route.component }\n\n\t\t\t\t// Only include state if it has content\n\t\t\t\tif (route.state && Object.keys(route.state).length > 0) {\n\t\t\t\t\tcleanRoute.state = route.state\n\t\t\t\t}\n\n\t\t\t\t// Only include params if it has content\n\t\t\t\tif (route.params && Object.keys(route.params).length > 0) {\n\t\t\t\t\tcleanRoute.params = route.params\n\t\t\t\t}\n\n\t\t\t\t// Only include props if it has content\n\t\t\t\tif (route.props && Object.keys(route.props).length > 0) {\n\t\t\t\t\tcleanRoute.props = route.props\n\t\t\t\t}\n\n\t\t\t\tcleanedAreas[areaName] = cleanRoute\n\t\t\t})\n\n\t\t\t// If cleanedAreas is empty, preserve the base path\n\t\t\tif (Object.keys(cleanedAreas).length === 0) {\n\t\t\t\tconst cleanBasePath = basePath === '/' ? '' : basePath.replace(/\\/$/, '')\n\t\t\t\treturn `${cleanBasePath}${queryString}`\n\t\t\t}\n\n\t\t\tconst encoded = encodeURIComponent(JSON.stringify(cleanedAreas))\n\t\t\tconst cleanBasePath = basePath === '/' ? '' : basePath.replace(/\\/$/, '')\n\t\t\treturn `${cleanBasePath}/${encoded}${queryString}`\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to encode URL state:', error)\n\t\t\treturn location.pathname\n\t\t}\n\t}\n\n\t/**\n\t * Restore state from browser history state\n\t */\n\trestoreFromBrowserState(browserState: any): Record<string, ActiveRoute> {\n\t\ttry {\n\t\t\tif (browserState && browserState.schmancyAreas) {\n\t\t\t\treturn browserState.schmancyAreas\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to restore from browser state:', error)\n\t\t}\n\t\t\n\t\t// Fallback to URL parsing (original behavior)\n\t\treturn this.parseStateFromURL()\n\t}\n\n\t/**\n\t * Parse state from URL (fallback method)\n\t */\n\tprivate parseStateFromURL(): Record<string, ActiveRoute> {\n\t\tconst pathname = location.pathname.split('/').pop()\n\t\tif (!pathname) return {}\n\t\t\n\t\ttry {\n\t\t\tconst decoded = decodeURIComponent(pathname)\n\t\t\tconst parsed = JSON.parse(decoded)\n\t\t\t\n\t\t\tif (typeof parsed === 'object' && parsed !== null) {\n\t\t\t\treturn parsed\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore parse errors\n\t\t}\n\t\t\n\t\treturn {}\n\t}\n\t\n\t/**\n\t * Dispatch a DOM event for a specific area change\n\t */\n\tprivate dispatchAreaEvent(areaName: string, routeAction: RouteAction) {\n\t\tconst eventName = `schmancy-area-${areaName}-changed`\n\t\tconst event = new CustomEvent(eventName, { \n\t\t\tdetail: { \n\t\t\t\tarea: areaName,\n\t\t\t\tcomponent: routeAction.component,\n\t\t\t\tstate: routeAction.state,\n\t\t\t\tparams: routeAction.params,\n\t\t\t\tprops: routeAction.props,\n\t\t\t\thistoryStrategy: routeAction.historyStrategy\n\t\t\t},\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t})\n\t\twindow.dispatchEvent(event)\n\t}\n\n\t/**\n\t * Remove an area from the current state\n\t */\n\tpop(name: string) {\n\t\tif (!name) {\n\t\t\tthrow new Error('Area name is required')\n\t\t}\n\n\t\t// Before removing from current map, emit a clearing signal to the area's subject\n\t\t// This notifies the area component to clear itself\n\t\tconst areaSubject = this.areaSubjects.get(name)\n\t\tif (areaSubject && !areaSubject.closed) {\n\t\t\t// Send a route with null component to signal clearing\n\t\t\tareaSubject.next({\n\t\t\t\tcomponent: null as any,\n\t\t\t\tstate: {},\n\t\t\t\tarea: name,\n\t\t\t\tparams: {},\n\t\t\t\tprops: {}\n\t\t\t})\n\t\t}\n\n\t\t// Send a clearing signal through the request pipeline\n\t\t// This ensures the area component receives the signal to clear\n\t\tthis.request.next({\n\t\t\tarea: name,\n\t\t\tcomponent: null as any,\n\t\t\tstate: {},\n\t\t\tparams: {},\n\t\t\tprops: {},\n\t\t\thistoryStrategy: 'silent' as any,\n\t\t\t_source: 'programmatic' as NavigationSource\n\t\t})\n\n\t\t// Remove from current map\n\t\tthis.current.delete(name)\n\t\tthis.$current.next(this.current)\n\n\t\t// Update browser history\n\t\tif (this.enableHistoryMode) {\n\t\t\ttry {\n\t\t\t\tconst currentState = history.state || {}\n\t\t\t\tconst schmancyAreas = { ...currentState.schmancyAreas }\n\t\t\t\tdelete schmancyAreas[name]\n\n\t\t\t\tconst newState = {\n\t\t\t\t\t...currentState,\n\t\t\t\t\tschmancyAreas\n\t\t\t\t}\n\n\t\t\t\tconst url = this.createCleanURL(schmancyAreas)\n\t\t\t\thistory.replaceState(newState, '', url)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to update history after pop:', error)\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Clear all areas\n\t */\n\tclear() {\n\t\t// Complete all area subjects\n\t\tthis.areaSubjects.forEach(subject => subject.complete())\n\t\tthis.areaSubjects.clear()\n\n\t\t// Clear current state\n\t\tthis.current.clear()\n\t\tthis.$current.next(this.current)\n\n\t\t// Update URL\n\t\tif (this.enableHistoryMode) {\n\t\t\tconst url = this.createCleanURL({})\n\t\t\thistory.replaceState({ schmancyAreas: {} }, '', url)\n\t\t}\n\t}\n\t\n\t/**\n\t * Dispose of the service and clean up resources\n\t */\n\tdispose() {\n\t\tif (this.disposed) return\n\n\t\tthis.disposed = true\n\n\t\t// Unsubscribe from unload event\n\t\tif (this.unloadSubscription) {\n\t\t\tthis.unloadSubscription.unsubscribe()\n\t\t\tthis.unloadSubscription = undefined\n\t\t}\n\n\t\t// Complete all subjects\n\t\tthis.areaSubjects.forEach(subject => subject.complete())\n\t\tthis.areaSubjects.clear()\n\n\t\tthis.request.complete()\n\t\tthis.$current.complete()\n\t\trouterHistory.complete()\n\n\t\t// Clear references\n\t\tthis.current.clear()\n\t\tareaSubjectsCache.delete(this)\n\t}\n\t\n\t/**\n\t * Get singleton instance\n\t */\n\tstatic getInstance() {\n\t\tif (!AreaService.instance) {\n\t\t\tAreaService.instance = new AreaService()\n\t\t}\n\t\treturn AreaService.instance\n\t}\n\n\t/**\n\t * Get current state from URL (deprecated - use browser state instead)\n\t */\n\tget state(): Record<string, unknown> {\n\t\t// Try browser state first\n\t\ttry {\n\t\t\tconst browserState = history.state\n\t\t\tif (browserState && browserState.schmancyAreas) {\n\t\t\t\treturn browserState.schmancyAreas\n\t\t\t}\n\t\t} catch {\n\t\t\t// Fallback to URL parsing\n\t\t}\n\t\t\n\t\t// Fallback to URL parsing (original behavior)\n\t\treturn this.parseStateFromURL()\n\t}\n\t\n\t/**\n\t * Check if an area exists in current state\n\t */\n\thasArea(areaName: string): boolean {\n\t\treturn this.current.has(areaName)\n\t}\n\t\n\t/**\n\t * Get all active area names\n\t */\n\tgetActiveAreas(): string[] {\n\t\treturn Array.from(this.current.keys())\n\t}\n\t\n\t/**\n\t * Get route for a specific area synchronously\n\t */\n\tgetRoute(areaName: string): ActiveRoute | undefined {\n\t\treturn this.current.get(areaName)\n\t}\n}\n\n/**\n * Area router singleton. Drives named `<schmancy-area>` outlets in the DOM\n * — imperative push / pop, URL-synced, state-restoring. Pair with\n * `lazy(() => import('./view'))` for code-split routes.\n *\n * @service\n * @summary Imperative outlet-based router for `<schmancy-area>` elements.\n * @method push({ area, component, params?, state? }) - Navigate an area to a component.\n * @method pop(areaName) - Pop the top entry off an area's stack.\n * @method current$(areaName) - Observable of the active route state for an area.\n */\nexport const area = AreaService.getInstance()\nexport default area","import { SchmancyElement } from '@mixins/index';\nimport { css, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { Observable } from 'rxjs';\nimport { LazyComponent } from './lazy';\n\nexport type ObservableGuardResult = Observable<boolean>;\n\n// Component types that can be passed to routes\nexport type RouteComponent =\n | string // Tag name\n | CustomElementConstructor // Constructor function\n | HTMLElement // Existing element\n | LazyComponent<CustomElementConstructor>\n\nexport interface RouteConfig {\n when: string;\n component: RouteComponent;\n exact?: boolean;\n guard?: ObservableGuardResult;\n}\n\nexport type SchmancyRouteRedirectEvent = CustomEvent<{\n blockedRoute: string;\n area: string;\n params: Record<string, string>;\n state: Record<string, unknown>;\n redirectTarget?: unknown;\n}>;\n\n/**\n * A marker component that holds route configuration.\n * This component doesn't render anything - it's used by schmancy-area\n * to configure routing via slot change detection.\n *\n * @fires {SchmancyRouteRedirectEvent} redirect - Fired by the parent schmancy-area\n * on this element when the route's guard emits false. Listen with `@redirect`.\n *\n * @example\n * ```html\n * <schmancy-area>\n * <schmancy-route\n * when=\"users\"\n * .component=${UserComponent}\n * exact\n * ></schmancy-route>\n * </schmancy-area>\n * ```\n */\n@customElement('schmancy-route')\nexport class SchmancyRoute extends SchmancyElement {\n\tstatic styles = [css`\n :host {\n display: none;\n }\n`]\n\n @property({ type: String })\n when!: string;\n\n @property({ type: Object })\n component!: RouteComponent;\n\n @property({ type: Boolean })\n exact?: boolean = false;\n\n @property({ type: Object })\n guard?:ObservableGuardResult ;\n\n /**\n * Returns the route configuration object\n */\n getConfig(): RouteConfig {\n return {\n when: this.when,\n component: this.component,\n exact: this.exact,\n guard: this.guard\n };\n }\n\n render() {\n // This is a marker component - no visual output\n return html``;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-route': SchmancyRoute;\n }\n}","import { LazyComponent } from './lazy'\n\n/**\n * Component type accepted by area router, drawer, and sheet services\n */\nexport type ComponentType = CustomElementConstructor | string | HTMLElement | LazyComponent<any>\n\nexport type RouteAction = {\n\tcomponent: ComponentType\n\tarea: string\n\tstate?: Record<string, unknown>\n\tparams?: Record<string, unknown>\n\tprops?: Record<string, unknown> // Alias for params\n\thistoryStrategy?: THistoryStrategy\n\tclearQueryParams?: string[] | boolean | null\n\tanimationDuration?: number // Animation duration in milliseconds (0 = instant/no animation, default = 150ms)\n\tpath?: string // Override the URL path (e.g., '/order-tracking') - completely replaces the base path\n\t_source?: 'programmatic' | 'browser' | 'initial' // Internal use only\n}\n\nexport type ActiveRoute = {\n\tcomponent: string\n\tarea: string\n\tstate?: Record<string, unknown>\n\tparams?: Record<string, unknown>\n\tprops?: Record<string, unknown>\n}\n\n/**\n * Interface for subscribing to area changes\n */\nexport interface AreaSubscription {\n\t/**\n\t * Subscribe to a specific area\n\t * @param areaName Name of the area to subscribe to\n\t * @param skipCurrent Whether to skip the current value\n\t * @returns Observable of the active route for the specified area\n\t */\n\ton(areaName: string, skipCurrent?: boolean): import('rxjs').Observable<ActiveRoute>\n\t\n\t/**\n\t * Subscribe to all areas\n\t * @param skipCurrent Whether to skip the current value\n\t * @returns Observable of all active routes\n\t */\n\tall(skipCurrent?: boolean): import('rxjs').Observable<Map<string, ActiveRoute>>\n\t\n\t/**\n\t * Get state from an area\n\t * @param areaName Name of the area to subscribe to\n\t * @returns Observable of the area's state\n\t */\n\tgetState<T = unknown>(areaName: string): import('rxjs').Observable<T>\n\t\n\t/**\n\t * Get params from an area\n\t * @param areaName Name of the area to subscribe to\n\t * @returns Observable of the area's params\n\t */\n\tparams<T extends Record<string, unknown> = Record<string, unknown>>(areaName: string): import('rxjs').Observable<T>\n\t\n\t/**\n\t * Get a specific param from an area\n\t * @param areaName Name of the area to subscribe to\n\t * @param key Key of the param to select\n\t * @returns Observable of the param value\n\t */\n\tparam<T = unknown>(areaName: string, key: string): import('rxjs').Observable<T>\n\t\n\t/**\n\t * Get props from an area\n\t * @param areaName Name of the area to subscribe to\n\t * @returns Observable of the area's props\n\t */\n\tprops<T extends Record<string, unknown> = Record<string, unknown>>(areaName: string): import('rxjs').Observable<T>\n\t\n\t/**\n\t * Get a specific prop from an area\n\t * @param areaName Name of the area to subscribe to\n\t * @param key Key of the prop to select\n\t * @returns Observable of the prop value\n\t */\n\tprop<T = unknown>(areaName: string, key: string): import('rxjs').Observable<T>\n}\n\nexport type THistoryStrategy = 'push' | 'replace' | 'pop' | 'silent'\n\nexport enum HISTORY_STRATEGY {\n\tpush = 'push',\n\treplace = 'replace',\n\tpop = 'pop',\n\tsilent = 'silent',\n}\n\n/**\n * Browser history state structure used by Schmancy Area\n */\nexport interface SchmancyHistoryState {\n\tschmancyAreas: Record<string, ActiveRoute>\n\t[key: string]: any // Allow other apps to store additional state\n}","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport {\n\tEMPTY,\n\tcatchError,\n\tdistinctUntilChanged,\n\tfilter,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tof,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs'\nimport { area } from './area.service'\nimport { RouteComponent, SchmancyRoute } from './route.component'\nimport { ActiveRoute, HISTORY_STRATEGY, RouteAction } from './router.types'\n\n@customElement('schmancy-area')\nexport class SchmancyArea extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tmin-height: 0;\n\t\tmin-width: 0;\n\t\tcontain: layout style;\n\t}\n\t::slotted(:not(schmancy-route)) {\n\t\tdisplay: block;\n\t\tbox-sizing: border-box;\n\t\tmin-height: 100%;\n\t\twidth: 100%;\n\t}\n`]\n\n\t@property() name!: string\n\n\t@property() default!: RouteComponent\n\n\t@queryAssignedElements({ selector: 'schmancy-route', flatten: true })\n\tprivate routes!: SchmancyRoute[]\n\n\tprotected firstUpdated(): void {\n\t\tif (!this.name) throw new Error('Area name is required')\n\n\t\tmerge(\n\t\t\t// Programmatic navigation\n\t\t\tarea.request.pipe(\n\t\t\t\tfilter(({ area }) => area === this.name),\n\t\t\t),\n\n\t\t\t// Initial URL parse\n\t\t\tof(null).pipe(\n\t\t\t\tmap(() => {\n\t\t\t\t\tconst path = location.pathname\n\t\t\t\t\tconst lastSegment = path.split('/').pop() || ''\n\t\t\t\t\tif (lastSegment && (lastSegment.includes('{') || lastSegment.includes('%7B'))) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst parsed = JSON.parse(decodeURIComponent(lastSegment))\n\t\t\t\t\t\t\tif (typeof parsed === 'object' && parsed !== null && parsed[this.name]) {\n\t\t\t\t\t\t\t\tconst r = parsed[this.name]\n\t\t\t\t\t\t\t\treturn { area: this.name, component: r.component, state: r.state || {}, params: r.params || {}, props: r.props || {}, historyStrategy: HISTORY_STRATEGY.replace } as RouteAction\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\t\t\t\t\tconst matchingSegment = path.split('/').filter(Boolean).find(seg => this.routes?.some(r => r.when === seg))\n\t\t\t\t\tif (matchingSegment) {\n\t\t\t\t\t\treturn { area: this.name, component: matchingSegment, state: {}, params: {}, historyStrategy: HISTORY_STRATEGY.silent } as RouteAction\n\t\t\t\t\t}\n\t\t\t\t\treturn this.default\n\t\t\t\t\t\t? { area: this.name, component: this.default, state: {}, params: {}, historyStrategy: HISTORY_STRATEGY.silent } as RouteAction\n\t\t\t\t\t\t: null\n\t\t\t\t}),\n\t\t\t),\n\n\t\t\t// Browser back/forward\n\t\t\tfromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\tmap(() => {\n\t\t\t\t\tif (history.state?.schmancyAreas?.[this.name]) {\n\t\t\t\t\t\tconst s = history.state.schmancyAreas[this.name]\n\t\t\t\t\t\treturn { area: this.name, component: s.component, state: s.state || {}, params: s.params || {}, props: s.props || {}, historyStrategy: HISTORY_STRATEGY.pop } as RouteAction\n\t\t\t\t\t}\n\t\t\t\t\tconst path = location.pathname\n\t\t\t\t\tconst lastSegment = path.split('/').pop() || ''\n\t\t\t\t\tif (lastSegment && (lastSegment.includes('{') || lastSegment.includes('%7B'))) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst parsed = JSON.parse(decodeURIComponent(lastSegment))\n\t\t\t\t\t\t\tif (typeof parsed === 'object' && parsed !== null && parsed[this.name]) {\n\t\t\t\t\t\t\t\tconst r = parsed[this.name]\n\t\t\t\t\t\t\t\treturn { area: this.name, component: r.component, state: r.state || {}, params: r.params || {}, props: r.props || {}, historyStrategy: HISTORY_STRATEGY.replace } as RouteAction\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\t\t\t\t\tconst matchingSegment = path.split('/').filter(Boolean).find(seg => this.routes?.some(r => r.when === seg))\n\t\t\t\t\tif (matchingSegment) {\n\t\t\t\t\t\treturn { area: this.name, component: matchingSegment, state: {}, params: {}, historyStrategy: HISTORY_STRATEGY.silent } as RouteAction\n\t\t\t\t\t}\n\t\t\t\t\treturn this.default\n\t\t\t\t\t\t? { area: this.name, component: this.default, state: {}, params: {}, historyStrategy: HISTORY_STRATEGY.silent } as RouteAction\n\t\t\t\t\t\t: null\n\t\t\t\t}),\n\t\t\t),\n\t\t).pipe(\n\t\t\tfilter((r): r is RouteAction => r !== null),\n\n\t\t\t// Per-navigation error isolation — one bad nav skips, outer stream keeps flowing\n\t\t\tswitchMap(action => of(action).pipe(\n\t\t\t\t// Step 1: resolve component + find matched route\n\t\t\t\tswitchMap(action => {\n\t\t\t\t\tlet component: RouteComponent | null = action.component\n\t\t\t\t\tlet matchedRoute: SchmancyRoute | undefined\n\n\t\t\t\t\tif (typeof component === 'string' && this.routes) {\n\t\t\t\t\t\tmatchedRoute = this.routes.find(r => r.when === component)\n\t\t\t\t\t\tif (matchedRoute) component = matchedRoute.component\n\t\t\t\t\t}\n\t\t\t\t\tif (!matchedRoute && component instanceof HTMLElement && this.routes) {\n\t\t\t\t\t\tmatchedRoute = this.routes.find(r => r.when === component.tagName.toLowerCase())\n\t\t\t\t\t}\n\t\t\t\t\tif (!matchedRoute && typeof component === 'function' && 'preload' in component) {\n\t\t\t\t\t\treturn from(\n\t\t\t\t\t\t\t(component as () => Promise<{ default: CustomElementConstructor }>)().then(m => ({\n\t\t\t\t\t\t\t\t...action,\n\t\t\t\t\t\t\t\tcomponent: m.default as RouteComponent,\n\t\t\t\t\t\t\t\tmatchedRoute: this.routes?.find(r => r.when === (customElements.getName(m.default) ?? '')) ?? undefined,\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn of({ ...action, component, matchedRoute })\n\t\t\t\t}),\n\n\t\t\t\t// Step 2: guard check\n\t\t\t\tswitchMap(carry => {\n\t\t\t\t\tif (!carry.matchedRoute?.guard) return of(carry)\n\t\t\t\t\treturn carry.matchedRoute.guard.pipe(\n\t\t\t\t\t\tswitchMap(allowed => {\n\t\t\t\t\t\t\tif (allowed) return of(carry)\n\t\t\t\t\t\t\tcarry.matchedRoute?.dispatchEvent(new CustomEvent('redirect', {\n\t\t\t\t\t\t\t\tdetail: { blockedRoute: carry.matchedRoute?.when ?? 'unknown', area: this.name, params: carry.params || {}, state: carry.state || {} },\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\treturn EMPTY\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\n\t\t\t\t// Step 3: load lazy component (after guard, for perf)\n\t\t\t\tswitchMap(carry => {\n\t\t\t\t\tif (!(typeof carry.component === 'function' && 'preload' in carry.component)) return of(carry)\n\t\t\t\t\treturn from(\n\t\t\t\t\t\t(carry.component as () => Promise<{ default: CustomElementConstructor }>)()\n\t\t\t\t\t\t\t.then(m => ({ ...carry, component: m.default as RouteComponent }))\n\t\t\t\t\t)\n\t\t\t\t}),\n\n\t\t\t\t// Step 4: dedup key\n\t\t\t\tmap(carry => {\n\t\t\t\t\tconst c = carry.component\n\t\t\t\t\tconst id =\n\t\t\t\t\t\t!c || c === '' ? 'null'\n\t\t\t\t\t\t: typeof c === 'string' ? c\n\t\t\t\t\t\t: c instanceof HTMLElement ? c.tagName.toLowerCase()\n\t\t\t\t\t\t: typeof c === 'function' ? c.name || 'CustomElement'\n\t\t\t\t\t\t: 'null'\n\t\t\t\t\treturn { ...carry, key: `${id}${JSON.stringify(carry.params)}${JSON.stringify(carry.state)}${JSON.stringify(carry.props)}` }\n\t\t\t\t}),\n\n\t\t\t\tcatchError(err => {\n\t\t\t\t\tconsole.error(`[${this.name}] Navigation error:`, err)\n\t\t\t\t\treturn EMPTY\n\t\t\t\t}),\n\t\t\t)),\n\n\t\t\tdistinctUntilChanged((a, b) => a.key === b.key),\n\n\t\t\t// Step 5: instantiate element\n\t\t\tmap(carry => {\n\t\t\t\tconst c = carry.component\n\t\t\t\tlet element: HTMLElement | null = null\n\t\t\t\tif (typeof c === 'string' && c !== '') {\n\t\t\t\t\ttry { element = document.createElement(c) } catch { console.error(`[${this.name}] Failed to create element:`, c) }\n\t\t\t\t} else if (c instanceof HTMLElement) {\n\t\t\t\t\telement = c\n\t\t\t\t} else if (typeof c === 'function') {\n\t\t\t\t\ttry { element = new (c as CustomElementConstructor)() } catch (e) { console.error(`[${this.name}] Failed to instantiate:`, e) }\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tif (carry.params) Object.assign(element, carry.params)\n\t\t\t\t\tif (carry.props) Object.assign(element, carry.props)\n\t\t\t\t\tif (carry.state) Object.assign(element, { state: carry.state })\n\t\t\t\t}\n\t\t\t\treturn { ...carry, element }\n\t\t\t}),\n\n\t\t\t// Step 6: swap DOM, write area state, update history\n\t\t\ttap(carry => {\n\t\t\t\tconst old = Array.from(this.children).find(c => !(c instanceof SchmancyRoute)) as HTMLElement | undefined\n\t\t\t\tconst { element } = carry\n\n\t\t\t\tif (!element) { old?.remove(); return }\n\n\t\t\t\tconst duration = carry.animationDuration ?? 150\n\n\t\t\t\tif (duration === 0) {\n\t\t\t\t\told?.remove()\n\t\t\t\t\tthis.appendChild(element)\n\t\t\t\t\tthis.scrollTop = 0\n\t\t\t\t} else if (old) {\n\t\t\t\t\told.style.willChange = 'opacity'\n\t\t\t\t\telement.style.willChange = 'opacity'\n\t\t\t\t\told.style.contentVisibility = 'hidden'\n\t\t\t\t\told.animate([{ opacity: 1 }, { opacity: 0 }], { duration, easing: 'ease-out' }).finished\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (!this.isConnected) return\n\t\t\t\t\t\t\told.remove()\n\t\t\t\t\t\t\tthis.appendChild(element)\n\t\t\t\t\t\t\tthis.scrollTop = 0\n\t\t\t\t\t\t\treturn element.animate([{ opacity: 0 }, { opacity: 1 }], { duration, easing: 'ease-in' }).finished\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => (element.style.willChange = 'auto'))\n\t\t\t\t} else {\n\t\t\t\t\tthis.appendChild(element)\n\t\t\t\t\tthis.scrollTop = 0\n\t\t\t\t\telement.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\t\t\tduration: duration > 100 ? Math.max(100, duration * 0.66) : duration,\n\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t}).finished.then(() => (element.style.willChange = 'auto'))\n\t\t\t\t}\n\n\t\t\t\tconst activeRoute: ActiveRoute = {\n\t\t\t\t\tcomponent: element.tagName.toLowerCase(),\n\t\t\t\t\tstate: carry.state || {},\n\t\t\t\t\tarea: this.name,\n\t\t\t\t\tparams: carry.params || {},\n\t\t\t\t\tprops: carry.props || {},\n\t\t\t\t}\n\t\t\t\tarea.current.set(this.name, activeRoute)\n\t\t\t\tarea.$current.next(area.current)\n\n\t\t\t\tif (area.enableHistoryMode) {\n\t\t\t\t\tarea.updateBrowserHistory(\n\t\t\t\t\t\tthis.name,\n\t\t\t\t\t\tactiveRoute,\n\t\t\t\t\t\tcarry.historyStrategy ?? HISTORY_STRATEGY.push,\n\t\t\t\t\t\tcarry.clearQueryParams,\n\t\t\t\t\t\tcarry.path,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}),\n\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tarea.pop(this.name)\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-area': SchmancyArea\n\t}\n}\n","export function encodeData(data: string): string {\n\treturn btoa(data)\n}\n\nexport function decodeData(encodedData: string): string {\n\treturn atob(encodedData)\n}\n","import { RouteComponent } from './route.component'\nimport { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function,\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).toSorted()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).toSorted()\n\n\t\t\treturn keys1.length === keys2.length && keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName.toLowerCase().replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: RouteComponent): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T {\n\tconst output = { ...target }\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn (\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tobj.constructor === Object &&\n\t\tObject.prototype.toString.call(obj) === '[object Object]'\n\t)\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\t// oxlint-disable-next-line typescript/no-this-alias\n\t\tconst context = this\n\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn (\n\t\ta.area === b.area &&\n\t\ta.component === b.component &&\n\t\tJSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\tJSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n\t)\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = (hash << 5) - hash + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey'],\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => (isObject(item) ? sanitizeRouteState(item, keysToRemove) : item))\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\n\tlet searchParams: URLSearchParams\n\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}\n"],"mappings":"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,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}