@mhmo91/schmancy 0.10.37 → 0.10.39

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 (558) hide show
  1. package/custom-elements.json +39 -0
  2. package/dist/{SchmancyElement-CDT2q1lA.js → SchmancyElement-BNnyBOwk.js} +9 -7
  3. package/dist/{SchmancyElement-CDT2q1lA.js.map → SchmancyElement-BNnyBOwk.js.map} +1 -1
  4. package/dist/{SchmancyElement-BHfQg3Tj.cjs → SchmancyElement-C41uPa6l.cjs} +2 -2
  5. package/dist/{SchmancyElement-BHfQg3Tj.cjs.map → SchmancyElement-C41uPa6l.cjs.map} +1 -1
  6. package/dist/agent/schmancy.agent.js +2334 -2297
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/area-2FrTZI_T.cjs +21 -0
  9. package/dist/area-2FrTZI_T.cjs.map +1 -0
  10. package/dist/{area-KtULlxuA.js → area-KVDzhT4s.js} +4 -4
  11. package/dist/area-KVDzhT4s.js.map +1 -0
  12. package/dist/area.cjs +1 -1
  13. package/dist/area.js +2 -2
  14. package/dist/{audio-zIJVTo_V.js → audio-D3gnp15Y.js} +1 -1
  15. package/dist/{audio-zIJVTo_V.js.map → audio-D3gnp15Y.js.map} +1 -1
  16. package/dist/{audio-CUMAv9D_.cjs → audio-EaD0Ggfh.cjs} +1 -1
  17. package/dist/{audio-CUMAv9D_.cjs.map → audio-EaD0Ggfh.cjs.map} +1 -1
  18. package/dist/audio.cjs +1 -1
  19. package/dist/audio.js +2 -2
  20. package/dist/autocomplete-DMmxsvUe.cjs +115 -0
  21. package/dist/autocomplete-DMmxsvUe.cjs.map +1 -0
  22. package/dist/{autocomplete-DIScyo8Q.js → autocomplete-DWiEqlQf.js} +96 -96
  23. package/dist/autocomplete-DWiEqlQf.js.map +1 -0
  24. package/dist/autocomplete.cjs +1 -1
  25. package/dist/autocomplete.js +1 -1
  26. package/dist/avatar.cjs +1 -1
  27. package/dist/avatar.js +3 -3
  28. package/dist/badge.cjs +1 -1
  29. package/dist/badge.js +1 -1
  30. package/dist/{boat-OBZ77exO.cjs → boat-DsFJNfPH.cjs} +1 -1
  31. package/dist/{boat-OBZ77exO.cjs.map → boat-DsFJNfPH.cjs.map} +1 -1
  32. package/dist/{boat-BHPqSqJd.js → boat-fqodYt2n.js} +4 -4
  33. package/dist/{boat-BHPqSqJd.js.map → boat-fqodYt2n.js.map} +1 -1
  34. package/dist/boat.cjs +1 -1
  35. package/dist/boat.js +1 -1
  36. package/dist/breadcrumb.cjs +3 -3
  37. package/dist/breadcrumb.cjs.map +1 -1
  38. package/dist/breadcrumb.js +4 -4
  39. package/dist/breadcrumb.js.map +1 -1
  40. package/dist/{busy-BJNsKSCM.cjs → busy-Cj_PV7oC.cjs} +1 -1
  41. package/dist/{busy-BJNsKSCM.cjs.map → busy-Cj_PV7oC.cjs.map} +1 -1
  42. package/dist/{busy-Dut78y4L.js → busy-enYCTssB.js} +2 -2
  43. package/dist/{busy-Dut78y4L.js.map → busy-enYCTssB.js.map} +1 -1
  44. package/dist/busy.cjs +1 -1
  45. package/dist/busy.js +1 -1
  46. package/dist/button-B9RfBt-n.cjs +63 -0
  47. package/dist/button-B9RfBt-n.cjs.map +1 -0
  48. package/dist/{button-kcpPQavY.js → button-D6LJC-HC.js} +11 -9
  49. package/dist/button-D6LJC-HC.js.map +1 -0
  50. package/dist/button.cjs +7 -6
  51. package/dist/button.cjs.map +1 -1
  52. package/dist/button.js +18 -16
  53. package/dist/button.js.map +1 -1
  54. package/dist/{card-DxSKxCid.js → card-BHTz1GwB.js} +16 -16
  55. package/dist/card-BHTz1GwB.js.map +1 -0
  56. package/dist/{card-BLxPLqdQ.cjs → card-ThG_ZaQE.cjs} +3 -3
  57. package/dist/card-ThG_ZaQE.cjs.map +1 -0
  58. package/dist/card.cjs +1 -1
  59. package/dist/card.js +1 -1
  60. package/dist/{checkbox-BCLkhp5G.cjs → checkbox-C4zeib84.cjs} +2 -2
  61. package/dist/{checkbox-BCLkhp5G.cjs.map → checkbox-C4zeib84.cjs.map} +1 -1
  62. package/dist/{checkbox-B1wiM3Dv.js → checkbox-Ce0DlAdW.js} +6 -6
  63. package/dist/{checkbox-B1wiM3Dv.js.map → checkbox-Ce0DlAdW.js.map} +1 -1
  64. package/dist/checkbox.cjs +1 -1
  65. package/dist/checkbox.js +1 -1
  66. package/dist/{chips-vWmwqQed.js → chips-BoZSpSh_.js} +21 -19
  67. package/dist/chips-BoZSpSh_.js.map +1 -0
  68. package/dist/{chips-C9dS1WKn.cjs → chips-wfJ7YtWv.cjs} +4 -3
  69. package/dist/chips-wfJ7YtWv.cjs.map +1 -0
  70. package/dist/chips.cjs +1 -1
  71. package/dist/chips.js +2 -2
  72. package/dist/connectivity.cjs +1 -1
  73. package/dist/connectivity.js +3 -3
  74. package/dist/content-drawer.cjs +1 -1
  75. package/dist/content-drawer.js +1 -1
  76. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  77. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  78. package/dist/{date-range-BV6HuvLw.cjs → date-range-BHSzlwSL.cjs} +2 -2
  79. package/dist/date-range-BHSzlwSL.cjs.map +1 -0
  80. package/dist/{date-range-D3ge1b4c.js → date-range-DJrdpzev.js} +4 -4
  81. package/dist/date-range-DJrdpzev.js.map +1 -0
  82. package/dist/{date-range-inline-DpYgdLRv.cjs → date-range-inline-D0I6k84h.cjs} +1 -1
  83. package/dist/{date-range-inline-DpYgdLRv.cjs.map → date-range-inline-D0I6k84h.cjs.map} +1 -1
  84. package/dist/{date-range-inline-DuWQaWps.js → date-range-inline-DjRdMZ1z.js} +2 -2
  85. package/dist/{date-range-inline-DuWQaWps.js.map → date-range-inline-DjRdMZ1z.js.map} +1 -1
  86. package/dist/date-range-inline.cjs +1 -1
  87. package/dist/date-range-inline.js +1 -1
  88. package/dist/date-range.cjs +1 -1
  89. package/dist/date-range.js +1 -1
  90. package/dist/delay.cjs +1 -1
  91. package/dist/delay.js +2 -2
  92. package/dist/{details-C-GZaq3j.js → details-CY49XVfp.js} +43 -35
  93. package/dist/details-CY49XVfp.js.map +1 -0
  94. package/dist/details-DQNj2oaU.cjs +164 -0
  95. package/dist/details-DQNj2oaU.cjs.map +1 -0
  96. package/dist/details.cjs +1 -1
  97. package/dist/details.js +1 -1
  98. package/dist/{directives-D_l1E5H6.cjs → directives-Bb0S1DKZ.cjs} +3 -3
  99. package/dist/directives-Bb0S1DKZ.cjs.map +1 -0
  100. package/dist/{directives-DyS51FUh.js → directives-Bfm1lkoy.js} +6 -8
  101. package/dist/directives-Bfm1lkoy.js.map +1 -0
  102. package/dist/directives.cjs +1 -1
  103. package/dist/directives.js +2 -2
  104. package/dist/{divider-nQffE0AD.js → divider-BeyX_C0A.js} +2 -2
  105. package/dist/{divider-nQffE0AD.js.map → divider-BeyX_C0A.js.map} +1 -1
  106. package/dist/{divider-CBnAmHMZ.cjs → divider-Ck2C1sKl.cjs} +1 -1
  107. package/dist/{divider-CBnAmHMZ.cjs.map → divider-Ck2C1sKl.cjs.map} +1 -1
  108. package/dist/divider.cjs +1 -1
  109. package/dist/divider.js +1 -1
  110. package/dist/dropdown.cjs +1 -1
  111. package/dist/dropdown.js +2 -2
  112. package/dist/{expand-DvTb-UPR.js → expand-BYsSEtp6.js} +53 -53
  113. package/dist/expand-BYsSEtp6.js.map +1 -0
  114. package/dist/expand-CUF163mg.cjs +141 -0
  115. package/dist/expand-CUF163mg.cjs.map +1 -0
  116. package/dist/expand.cjs +1 -1
  117. package/dist/expand.js +1 -1
  118. package/dist/fab.cjs +2 -1
  119. package/dist/fab.cjs.map +1 -1
  120. package/dist/fab.js +3 -2
  121. package/dist/fab.js.map +1 -1
  122. package/dist/{float-C-Ko0Le3.js → float-Cgllk_H9.js} +2 -2
  123. package/dist/{float-C-Ko0Le3.js.map → float-Cgllk_H9.js.map} +1 -1
  124. package/dist/{float-C17xgMT1.cjs → float-OvqX0nqG.cjs} +1 -1
  125. package/dist/{float-C17xgMT1.cjs.map → float-OvqX0nqG.cjs.map} +1 -1
  126. package/dist/float.cjs +1 -1
  127. package/dist/float.js +1 -1
  128. package/dist/form-4GKROq2P.cjs +27 -0
  129. package/dist/form-4GKROq2P.cjs.map +1 -0
  130. package/dist/{form-DA0hUu2h.js → form-DxaV_Ose.js} +39 -39
  131. package/dist/form-DxaV_Ose.js.map +1 -0
  132. package/dist/form.cjs +3 -3
  133. package/dist/form.cjs.map +1 -1
  134. package/dist/form.js +34 -34
  135. package/dist/form.js.map +1 -1
  136. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  137. package/dist/gravity-sVK3zGBF.js.map +1 -1
  138. package/dist/handover/agent-runtime-followups.md +1 -1
  139. package/dist/handover/agent-runtime-v1.md +3 -3
  140. package/dist/{icons-C6UfxmHZ.js → icons-CJ2mXcBi.js} +9 -9
  141. package/dist/icons-CJ2mXcBi.js.map +1 -0
  142. package/dist/icons-sZ-LybA9.cjs +24 -0
  143. package/dist/icons-sZ-LybA9.cjs.map +1 -0
  144. package/dist/icons.cjs +1 -1
  145. package/dist/icons.js +1 -1
  146. package/dist/{iframe-BTjZfYyh.js → iframe-DWvN5nGB.js} +11 -11
  147. package/dist/iframe-DWvN5nGB.js.map +1 -0
  148. package/dist/{iframe-wuYT2xFz.cjs → iframe-DpCv-QH2.cjs} +7 -7
  149. package/dist/iframe-DpCv-QH2.cjs.map +1 -0
  150. package/dist/iframe.cjs +1 -1
  151. package/dist/iframe.js +1 -1
  152. package/dist/index.cjs +1 -1
  153. package/dist/index.js +35 -35
  154. package/dist/{input-B_4g2ulO.js → input-BCCHz6tB.js} +7 -7
  155. package/dist/input-BCCHz6tB.js.map +1 -0
  156. package/dist/{input-BrDiIT60.cjs → input-Z-3N5JMv.cjs} +2 -2
  157. package/dist/input-Z-3N5JMv.cjs.map +1 -0
  158. package/dist/{input-chip-BlWhOruv.js → input-chip-BOrcKH-H.js} +2 -2
  159. package/dist/{input-chip-BlWhOruv.js.map → input-chip-BOrcKH-H.js.map} +1 -1
  160. package/dist/{input-chip-B-XWh4aE.cjs → input-chip-ChAgRCXZ.cjs} +1 -1
  161. package/dist/{input-chip-B-XWh4aE.cjs.map → input-chip-ChAgRCXZ.cjs.map} +1 -1
  162. package/dist/input.cjs +1 -1
  163. package/dist/input.js +1 -1
  164. package/dist/json.cjs +1 -1
  165. package/dist/json.js +3 -3
  166. package/dist/kbd.cjs +1 -1
  167. package/dist/kbd.js +2 -2
  168. package/dist/{layout-Dxit9enO.js → layout-CFiG3lNT.js} +1 -1
  169. package/dist/{layout-Dxit9enO.js.map → layout-CFiG3lNT.js.map} +1 -1
  170. package/dist/{layout-BhyIcEVu.cjs → layout-DZ4dpLh9.cjs} +1 -1
  171. package/dist/{layout-BhyIcEVu.cjs.map → layout-DZ4dpLh9.cjs.map} +1 -1
  172. package/dist/layout.cjs +1 -1
  173. package/dist/layout.js +2 -2
  174. package/dist/lazy-BaAiIUru.js +19 -0
  175. package/dist/lazy-BaAiIUru.js.map +1 -0
  176. package/dist/lazy-C-7a4FAe.cjs +1 -0
  177. package/dist/lazy-C-7a4FAe.cjs.map +1 -0
  178. package/dist/{lightbox-D85XAAuC.js → lightbox-B7Y4Nij_.js} +2 -2
  179. package/dist/lightbox-B7Y4Nij_.js.map +1 -0
  180. package/dist/{lightbox-CVBogswK.cjs → lightbox-Dpwsn8Qr.cjs} +1 -1
  181. package/dist/lightbox-Dpwsn8Qr.cjs.map +1 -0
  182. package/dist/lightbox.cjs +1 -1
  183. package/dist/lightbox.js +1 -1
  184. package/dist/{list-nVjLskgx.cjs → list-BhM-6dAi.cjs} +1 -1
  185. package/dist/{list-nVjLskgx.cjs.map → list-BhM-6dAi.cjs.map} +1 -1
  186. package/dist/{list-DOF_yVn5.js → list-C5WVoIfJ.js} +2 -2
  187. package/dist/{list-DOF_yVn5.js.map → list-C5WVoIfJ.js.map} +1 -1
  188. package/dist/list.cjs +1 -1
  189. package/dist/list.js +1 -1
  190. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  191. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  192. package/dist/{menu-QrAK5Uu9.js → menu-Dvi_tQgH.js} +3 -3
  193. package/dist/{menu-QrAK5Uu9.js.map → menu-Dvi_tQgH.js.map} +1 -1
  194. package/dist/{menu-DqmNjLgY.cjs → menu-GZARYp6I.cjs} +1 -1
  195. package/dist/{menu-DqmNjLgY.cjs.map → menu-GZARYp6I.cjs.map} +1 -1
  196. package/dist/menu.cjs +1 -1
  197. package/dist/menu.js +1 -1
  198. package/dist/{mixins-De1zjyhy.js → mixins-DGBI7YPO.js} +11 -11
  199. package/dist/mixins-DGBI7YPO.js.map +1 -0
  200. package/dist/{mixins-DxHpyMHA.cjs → mixins-fIpzhVMd.cjs} +1 -1
  201. package/dist/mixins-fIpzhVMd.cjs.map +1 -0
  202. package/dist/mixins.cjs +1 -1
  203. package/dist/mixins.js +2 -2
  204. package/dist/nav-drawer.cjs +1 -1
  205. package/dist/nav-drawer.js +1 -1
  206. package/dist/navigation-bar.cjs +1 -1
  207. package/dist/navigation-bar.js +1 -1
  208. package/dist/navigation-rail.cjs +3 -3
  209. package/dist/navigation-rail.cjs.map +1 -1
  210. package/dist/navigation-rail.js +11 -10
  211. package/dist/navigation-rail.js.map +1 -1
  212. package/dist/notification-B6yDL91t.cjs +24 -0
  213. package/dist/notification-B6yDL91t.cjs.map +1 -0
  214. package/dist/{notification-BtAK7NK8.js → notification-BB9OBRCr.js} +22 -22
  215. package/dist/notification-BB9OBRCr.js.map +1 -0
  216. package/dist/notification.cjs +1 -1
  217. package/dist/notification.js +1 -1
  218. package/dist/{option-DHwA0miA.js → option-B21ImL0k.js} +2 -2
  219. package/dist/{option-DHwA0miA.js.map → option-B21ImL0k.js.map} +1 -1
  220. package/dist/{option-DnSPa8ro.cjs → option-CJQM5I9q.cjs} +1 -1
  221. package/dist/{option-DnSPa8ro.cjs.map → option-CJQM5I9q.cjs.map} +1 -1
  222. package/dist/option.cjs +1 -1
  223. package/dist/option.js +1 -1
  224. package/dist/{overlay-Del1sBEB.js → overlay-DwJWVyk2.js} +75 -67
  225. package/dist/overlay-DwJWVyk2.js.map +1 -0
  226. package/dist/overlay-N0trD-4u.cjs +58 -0
  227. package/dist/overlay-N0trD-4u.cjs.map +1 -0
  228. package/dist/overlay.cjs +1 -1
  229. package/dist/{overlay.confirm-body-BV9umTAl.cjs → overlay.confirm-body-CtXIi421.cjs} +3 -3
  230. package/dist/overlay.confirm-body-CtXIi421.cjs.map +1 -0
  231. package/dist/{overlay.confirm-body-DSONXUzl.js → overlay.confirm-body-DwzKhXxM.js} +10 -10
  232. package/dist/overlay.confirm-body-DwzKhXxM.js.map +1 -0
  233. package/dist/overlay.js +4 -4
  234. package/dist/{overlay.service-BTp5Oq7f.js → overlay.service-BDLi0p5M.js} +4 -4
  235. package/dist/{overlay.service-BTp5Oq7f.js.map → overlay.service-BDLi0p5M.js.map} +1 -1
  236. package/dist/overlay.service-Dbu5uP9E.cjs +1 -0
  237. package/dist/{overlay.service-XLlrsSdA.cjs.map → overlay.service-Dbu5uP9E.cjs.map} +1 -1
  238. package/dist/{progress-DUbTL9g9.cjs → progress-B-Qg44XY.cjs} +1 -1
  239. package/dist/{progress-DUbTL9g9.cjs.map → progress-B-Qg44XY.cjs.map} +1 -1
  240. package/dist/{progress-DYA83CFU.js → progress-CUSS1sNz.js} +2 -2
  241. package/dist/{progress-DYA83CFU.js.map → progress-CUSS1sNz.js.map} +1 -1
  242. package/dist/progress.cjs +1 -1
  243. package/dist/progress.js +1 -1
  244. package/dist/{radio-group-DxX0iJBo.js → radio-group-AHLvrN8O.js} +7 -7
  245. package/dist/radio-group-AHLvrN8O.js.map +1 -0
  246. package/dist/{radio-group-B-ORNtvR.cjs → radio-group-BEtvCSS1.cjs} +2 -2
  247. package/dist/radio-group-BEtvCSS1.cjs.map +1 -0
  248. package/dist/radio-group.cjs +1 -1
  249. package/dist/radio-group.js +1 -1
  250. package/dist/range.cjs +1 -1
  251. package/dist/range.js +2 -2
  252. package/dist/select-BWpV2iv-.cjs +56 -0
  253. package/dist/select-BWpV2iv-.cjs.map +1 -0
  254. package/dist/{select-C7gkA-ab.js → select-Cawz88lG.js} +46 -46
  255. package/dist/select-Cawz88lG.js.map +1 -0
  256. package/dist/select.cjs +1 -1
  257. package/dist/select.js +1 -1
  258. package/dist/skeleton.cjs +1 -1
  259. package/dist/skeleton.js +2 -2
  260. package/dist/skills/SKILL.md +9 -0
  261. package/dist/skills/overlay.md +14 -7
  262. package/dist/skills/schmancy/SKILL.md +9 -0
  263. package/dist/skills/schmancy/overlay.md +14 -7
  264. package/dist/slider.cjs +1 -1
  265. package/dist/slider.js +2 -2
  266. package/dist/{sound.service-O0232os6.js → sound.service-CK-5zob-.js} +4 -3
  267. package/dist/sound.service-CK-5zob-.js.map +1 -0
  268. package/dist/{sound.service-C7FDY_yD.cjs → sound.service-D2GGaBXc.cjs} +1 -1
  269. package/dist/sound.service-D2GGaBXc.cjs.map +1 -0
  270. package/dist/{splash-screen-jfE47xl0.js → splash-screen-BUEtjHXC.js} +13 -13
  271. package/dist/splash-screen-BUEtjHXC.js.map +1 -0
  272. package/dist/{splash-screen-DIS4odDr.cjs → splash-screen-DqPuipox.cjs} +6 -6
  273. package/dist/splash-screen-DqPuipox.cjs.map +1 -0
  274. package/dist/splash-screen.cjs +1 -1
  275. package/dist/splash-screen.js +1 -1
  276. package/dist/{src-BP3h-9d9.js → src-8VJ7eluk.js} +46 -45
  277. package/dist/src-8VJ7eluk.js.map +1 -0
  278. package/dist/{src-Um_pzb-U.cjs → src-GJA8uSAS.cjs} +7 -6
  279. package/dist/src-GJA8uSAS.cjs.map +1 -0
  280. package/dist/{state-Bj0M9a6T.cjs → state-BxDNox-2.cjs} +1 -1
  281. package/dist/{state-Bj0M9a6T.cjs.map → state-BxDNox-2.cjs.map} +1 -1
  282. package/dist/{state-DscWQpoM.js → state-CnZCDMT0.js} +9 -9
  283. package/dist/{state-DscWQpoM.js.map → state-CnZCDMT0.js.map} +1 -1
  284. package/dist/state.cjs +1 -1
  285. package/dist/state.js +2 -2
  286. package/dist/steps.cjs +1 -1
  287. package/dist/steps.js +2 -2
  288. package/dist/{surface-B4Wn4SOO.js → surface-BMdG3dKQ.js} +2 -2
  289. package/dist/{surface-B4Wn4SOO.js.map → surface-BMdG3dKQ.js.map} +1 -1
  290. package/dist/{surface-DRq6cVW6.cjs → surface-CWwYD_z2.cjs} +1 -1
  291. package/dist/{surface-DRq6cVW6.cjs.map → surface-CWwYD_z2.cjs.map} +1 -1
  292. package/dist/surface.cjs +1 -1
  293. package/dist/surface.js +1 -1
  294. package/dist/switch.cjs +4 -4
  295. package/dist/switch.cjs.map +1 -1
  296. package/dist/switch.js +11 -11
  297. package/dist/switch.js.map +1 -1
  298. package/dist/table.cjs +1 -1
  299. package/dist/table.js +2 -2
  300. package/dist/{tabs-CnQPo-XS.js → tabs-CDQYDc6v.js} +2 -2
  301. package/dist/{tabs-CnQPo-XS.js.map → tabs-CDQYDc6v.js.map} +1 -1
  302. package/dist/{tabs-Ca_fbHPW.cjs → tabs-CbD9E1gd.cjs} +1 -1
  303. package/dist/{tabs-Ca_fbHPW.cjs.map → tabs-CbD9E1gd.cjs.map} +1 -1
  304. package/dist/tabs.cjs +1 -1
  305. package/dist/tabs.js +1 -1
  306. package/dist/teleport.cjs +1 -1
  307. package/dist/teleport.js +1 -1
  308. package/dist/textarea-Brgi-vD2.cjs +43 -0
  309. package/dist/textarea-Brgi-vD2.cjs.map +1 -0
  310. package/dist/{textarea-BvqENhTW.js → textarea-MPyrMi-S.js} +4 -4
  311. package/dist/textarea-MPyrMi-S.js.map +1 -0
  312. package/dist/textarea.cjs +1 -1
  313. package/dist/textarea.js +1 -1
  314. package/dist/{theme-BSwJ2YZo.cjs → theme-BMbXoqi0.cjs} +1 -1
  315. package/dist/{theme-BSwJ2YZo.cjs.map → theme-BMbXoqi0.cjs.map} +1 -1
  316. package/dist/{theme-BV0EzHQ1.js → theme-DZu-xmVp.js} +5 -5
  317. package/dist/{theme-BV0EzHQ1.js.map → theme-DZu-xmVp.js.map} +1 -1
  318. package/dist/{theme-button-C6fpUzPM.cjs → theme-button-B0OLb-43.cjs} +1 -1
  319. package/dist/{theme-button-C6fpUzPM.cjs.map → theme-button-B0OLb-43.cjs.map} +1 -1
  320. package/dist/{theme-button-O_xNCgI7.js → theme-button-D_qGvEYs.js} +2 -2
  321. package/dist/{theme-button-O_xNCgI7.js.map → theme-button-D_qGvEYs.js.map} +1 -1
  322. package/dist/theme-button.cjs +1 -1
  323. package/dist/theme-button.js +1 -1
  324. package/dist/theme.cjs +1 -1
  325. package/dist/theme.js +3 -3
  326. package/dist/{theme.service-DwLhhOmP.js → theme.service-7VkM-hVf.js} +15 -11
  327. package/dist/theme.service-7VkM-hVf.js.map +1 -0
  328. package/dist/theme.service-B15FdjOS.cjs +1 -0
  329. package/dist/theme.service-B15FdjOS.cjs.map +1 -0
  330. package/dist/tree.cjs +4 -4
  331. package/dist/tree.cjs.map +1 -1
  332. package/dist/tree.js +8 -8
  333. package/dist/tree.js.map +1 -1
  334. package/dist/{typography-opFYuUYS.cjs → typography-D4Fo1UGh.cjs} +3 -3
  335. package/dist/{typography-opFYuUYS.cjs.map → typography-D4Fo1UGh.cjs.map} +1 -1
  336. package/dist/{typography-Dtdooaic.js → typography-SZhjb_4R.js} +9 -9
  337. package/dist/{typography-Dtdooaic.js.map → typography-SZhjb_4R.js.map} +1 -1
  338. package/dist/typography.cjs +1 -1
  339. package/dist/typography.js +1 -1
  340. package/dist/visually-hidden.cjs +1 -1
  341. package/dist/visually-hidden.js +2 -2
  342. package/dist/{window-ConcHirJ.js → window-BDVyrBnk.js} +101 -100
  343. package/dist/window-BDVyrBnk.js.map +1 -0
  344. package/dist/window-BbBYjm7R.cjs +59 -0
  345. package/dist/window-BbBYjm7R.cjs.map +1 -0
  346. package/dist/window.cjs +1 -1
  347. package/dist/window.js +1 -1
  348. package/package.json +1 -1
  349. package/skills/schmancy/SKILL.md +9 -0
  350. package/skills/schmancy/overlay.md +14 -7
  351. package/src/area/area.component.ts +1 -1
  352. package/src/area/area.service.test.ts +2 -2
  353. package/src/area/area.service.ts +1 -1
  354. package/src/area/lazy.ts +87 -83
  355. package/src/audio/sound.service.ts +3 -3
  356. package/src/badge/badge.ts +1 -0
  357. package/src/breadcrumb/breadcrumb.ts +2 -2
  358. package/src/button/button.ts +12 -11
  359. package/src/button/icon-button.ts +19 -18
  360. package/src/card/card.ts +16 -16
  361. package/src/content-drawer/drawer.ts +6 -6
  362. package/src/details/details.ts +55 -55
  363. package/src/directives/ai-badge.ts +2 -1
  364. package/src/directives/animate-text.ts +2 -1
  365. package/src/directives/art/art.directive.ts +2 -1
  366. package/src/directives/battery.ts +2 -1
  367. package/src/directives/confirm-click.ts +5 -3
  368. package/src/directives/cursor-glow.ts +2 -1
  369. package/src/directives/cycle-text.ts +2 -1
  370. package/src/directives/depth-of-field.ts +2 -1
  371. package/src/directives/drag.ts +4 -2
  372. package/src/directives/fyi.ts +2 -1
  373. package/src/directives/gravity.ts +2 -1
  374. package/src/directives/hummingbird.ts +2 -1
  375. package/src/directives/intersect.ts +3 -2
  376. package/src/directives/liquid.ts +2 -1
  377. package/src/directives/living-border.ts +2 -1
  378. package/src/directives/long-press.ts +2 -1
  379. package/src/directives/magnetic.ts +2 -1
  380. package/src/directives/missed-punch.ts +2 -1
  381. package/src/directives/nebula.ts +6 -5
  382. package/src/directives/overflow-within.ts +2 -1
  383. package/src/directives/reveal.ts +2 -1
  384. package/src/directives/urgent.ts +2 -1
  385. package/src/directives/working-snake.ts +2 -1
  386. package/src/expand/expand-root.component.ts +27 -27
  387. package/src/expand/expand.component.ts +48 -48
  388. package/src/fab/fab.ts +1 -0
  389. package/src/form/fields/autocomplete/autocomplete.ts +154 -154
  390. package/src/form/fields/checkbox/checkbox.ts +4 -4
  391. package/src/form/fields/chips/chips.ts +2 -2
  392. package/src/form/fields/chips/filter-chip.ts +16 -15
  393. package/src/form/fields/date-range/date-range.ts +2 -2
  394. package/src/form/fields/input/input.ts +12 -12
  395. package/src/form/fields/radio-group/radio-button.ts +2 -2
  396. package/src/form/fields/radio-group/radio-group.ts +3 -3
  397. package/src/form/fields/select/select.ts +56 -56
  398. package/src/form/fields/switch/switch.ts +10 -10
  399. package/src/form/fields/textarea/textarea.ts +2 -2
  400. package/src/form/form-summary.ts +33 -33
  401. package/src/form/form.ts +45 -45
  402. package/src/icons/icon.ts +10 -8
  403. package/src/iframe/iframe.ts +11 -11
  404. package/src/lightbox/flip-directive.ts +2 -1
  405. package/src/lightbox/lightbox.directive.ts +2 -1
  406. package/src/nav-drawer/navbar.ts +3 -3
  407. package/src/navigation-rail/navigation-rail.ts +10 -10
  408. package/src/notification/notification.ts +22 -22
  409. package/src/overlay/overlay.component.ts +106 -83
  410. package/src/overlay/overlay.confirm-body.ts +4 -4
  411. package/src/overlay/overlay.service.ts +3 -3
  412. package/src/overlay/overlay.types.ts +4 -2
  413. package/src/splash-screen/splash-screen.ts +11 -11
  414. package/src/state/index.ts +12 -12
  415. package/src/state/schmancy-context.ts +9 -9
  416. package/src/teleport/teleport.component.ts +2 -2
  417. package/src/theme/theme.service.ts +17 -17
  418. package/src/tree/tree.ts +7 -7
  419. package/src/typography/typography.ts +7 -7
  420. package/src/window/window-manager.ts +20 -20
  421. package/src/window/window.ts +100 -100
  422. package/types/mixins/SchmancyElement.d.ts +3 -2
  423. package/types/mixins/formField.mixin.d.ts +1 -1
  424. package/types/src/area/area.service.d.ts +1 -1
  425. package/types/src/area/lazy.d.ts +0 -6
  426. package/types/src/audio/sound.service.d.ts +1 -2
  427. package/types/src/breadcrumb/breadcrumb.d.ts +1 -1
  428. package/types/src/button/button.d.ts +3 -3
  429. package/types/src/button/icon-button.d.ts +6 -7
  430. package/types/src/card/card.d.ts +5 -5
  431. package/types/src/content-drawer/drawer.d.ts +1 -1
  432. package/types/src/details/details.d.ts +2 -21
  433. package/types/src/directives/ai-badge.d.ts +2 -2
  434. package/types/src/directives/animate-text.d.ts +2 -2
  435. package/types/src/directives/art/art.directive.d.ts +2 -2
  436. package/types/src/directives/battery.d.ts +2 -2
  437. package/types/src/directives/confirm-click.d.ts +2 -2
  438. package/types/src/directives/cursor-glow.d.ts +2 -2
  439. package/types/src/directives/cycle-text.d.ts +2 -2
  440. package/types/src/directives/depth-of-field.d.ts +2 -2
  441. package/types/src/directives/drag.d.ts +4 -4
  442. package/types/src/directives/fyi.d.ts +2 -2
  443. package/types/src/directives/gravity.d.ts +2 -2
  444. package/types/src/directives/hummingbird.d.ts +2 -2
  445. package/types/src/directives/intersect.d.ts +2 -2
  446. package/types/src/directives/liquid.d.ts +2 -2
  447. package/types/src/directives/living-border.d.ts +2 -2
  448. package/types/src/directives/long-press.d.ts +2 -2
  449. package/types/src/directives/magnetic.d.ts +2 -2
  450. package/types/src/directives/missed-punch.d.ts +2 -2
  451. package/types/src/directives/nebula.d.ts +2 -2
  452. package/types/src/directives/overflow-within.d.ts +2 -2
  453. package/types/src/directives/reveal.d.ts +2 -2
  454. package/types/src/directives/urgent.d.ts +2 -2
  455. package/types/src/directives/working-snake.d.ts +2 -2
  456. package/types/src/expand/expand-root.component.d.ts +8 -8
  457. package/types/src/expand/expand.component.d.ts +11 -11
  458. package/types/src/form/fields/autocomplete/autocomplete.d.ts +29 -29
  459. package/types/src/form/fields/checkbox/checkbox.d.ts +1 -1
  460. package/types/src/form/fields/chips/chips.d.ts +1 -1
  461. package/types/src/form/fields/chips/filter-chip.d.ts +1 -2
  462. package/types/src/form/fields/input/input.d.ts +3 -3
  463. package/types/src/form/fields/radio-group/radio-button.d.ts +1 -1
  464. package/types/src/form/fields/radio-group/radio-group.d.ts +1 -1
  465. package/types/src/form/fields/select/select.d.ts +8 -8
  466. package/types/src/form/fields/switch/switch.d.ts +3 -3
  467. package/types/src/form/fields/textarea/textarea.d.ts +1 -1
  468. package/types/src/form/form-summary.d.ts +7 -7
  469. package/types/src/form/form.d.ts +11 -11
  470. package/types/src/icons/icon.d.ts +2 -2
  471. package/types/src/iframe/iframe.d.ts +3 -3
  472. package/types/src/lightbox/flip-directive.d.ts +2 -2
  473. package/types/src/lightbox/lightbox.directive.d.ts +2 -2
  474. package/types/src/nav-drawer/navbar.d.ts +1 -1
  475. package/types/src/navigation-rail/navigation-rail.d.ts +2 -2
  476. package/types/src/notification/notification.d.ts +8 -8
  477. package/types/src/overlay/overlay.component.d.ts +16 -16
  478. package/types/src/overlay/overlay.confirm-body.d.ts +1 -1
  479. package/types/src/overlay/overlay.types.d.ts +4 -2
  480. package/types/src/splash-screen/splash-screen.d.ts +2 -2
  481. package/types/src/state/index.d.ts +1 -1
  482. package/types/src/state/schmancy-context.d.ts +3 -3
  483. package/types/src/teleport/teleport.component.d.ts +1 -1
  484. package/types/src/theme/theme.service.d.ts +1 -4
  485. package/types/src/tree/tree.d.ts +3 -3
  486. package/types/src/typography/typography.d.ts +1 -1
  487. package/types/src/window/window-manager.d.ts +2 -2
  488. package/types/src/window/window.d.ts +20 -20
  489. package/dist/area-KtULlxuA.js.map +0 -1
  490. package/dist/area-fdKhYB6T.cjs +0 -21
  491. package/dist/area-fdKhYB6T.cjs.map +0 -1
  492. package/dist/autocomplete-DEZk6wBD.cjs +0 -115
  493. package/dist/autocomplete-DEZk6wBD.cjs.map +0 -1
  494. package/dist/autocomplete-DIScyo8Q.js.map +0 -1
  495. package/dist/button-DzlHLjWO.cjs +0 -62
  496. package/dist/button-DzlHLjWO.cjs.map +0 -1
  497. package/dist/button-kcpPQavY.js.map +0 -1
  498. package/dist/card-BLxPLqdQ.cjs.map +0 -1
  499. package/dist/card-DxSKxCid.js.map +0 -1
  500. package/dist/chips-C9dS1WKn.cjs.map +0 -1
  501. package/dist/chips-vWmwqQed.js.map +0 -1
  502. package/dist/date-range-BV6HuvLw.cjs.map +0 -1
  503. package/dist/date-range-D3ge1b4c.js.map +0 -1
  504. package/dist/details-C-GZaq3j.js.map +0 -1
  505. package/dist/details-Dp5rLIWk.cjs +0 -164
  506. package/dist/details-Dp5rLIWk.cjs.map +0 -1
  507. package/dist/directives-D_l1E5H6.cjs.map +0 -1
  508. package/dist/directives-DyS51FUh.js.map +0 -1
  509. package/dist/expand-DvTb-UPR.js.map +0 -1
  510. package/dist/expand-mlP_3XWz.cjs +0 -141
  511. package/dist/expand-mlP_3XWz.cjs.map +0 -1
  512. package/dist/form-CwPHcQYB.cjs +0 -27
  513. package/dist/form-CwPHcQYB.cjs.map +0 -1
  514. package/dist/form-DA0hUu2h.js.map +0 -1
  515. package/dist/icons-C6UfxmHZ.js.map +0 -1
  516. package/dist/icons-CW3-oMSb.cjs +0 -24
  517. package/dist/icons-CW3-oMSb.cjs.map +0 -1
  518. package/dist/iframe-BTjZfYyh.js.map +0 -1
  519. package/dist/iframe-wuYT2xFz.cjs.map +0 -1
  520. package/dist/input-B_4g2ulO.js.map +0 -1
  521. package/dist/input-BrDiIT60.cjs.map +0 -1
  522. package/dist/lazy-CayEFyC3.cjs +0 -1
  523. package/dist/lazy-CayEFyC3.cjs.map +0 -1
  524. package/dist/lazy-D-bO2r4m.js +0 -13
  525. package/dist/lazy-D-bO2r4m.js.map +0 -1
  526. package/dist/lightbox-CVBogswK.cjs.map +0 -1
  527. package/dist/lightbox-D85XAAuC.js.map +0 -1
  528. package/dist/mixins-De1zjyhy.js.map +0 -1
  529. package/dist/mixins-DxHpyMHA.cjs.map +0 -1
  530. package/dist/notification-BtAK7NK8.js.map +0 -1
  531. package/dist/notification-DYzbUb5C.cjs +0 -24
  532. package/dist/notification-DYzbUb5C.cjs.map +0 -1
  533. package/dist/overlay-BVkqZmoS.cjs +0 -58
  534. package/dist/overlay-BVkqZmoS.cjs.map +0 -1
  535. package/dist/overlay-Del1sBEB.js.map +0 -1
  536. package/dist/overlay.confirm-body-BV9umTAl.cjs.map +0 -1
  537. package/dist/overlay.confirm-body-DSONXUzl.js.map +0 -1
  538. package/dist/overlay.service-XLlrsSdA.cjs +0 -1
  539. package/dist/radio-group-B-ORNtvR.cjs.map +0 -1
  540. package/dist/radio-group-DxX0iJBo.js.map +0 -1
  541. package/dist/select-B9uj_u-s.cjs +0 -56
  542. package/dist/select-B9uj_u-s.cjs.map +0 -1
  543. package/dist/select-C7gkA-ab.js.map +0 -1
  544. package/dist/sound.service-C7FDY_yD.cjs.map +0 -1
  545. package/dist/sound.service-O0232os6.js.map +0 -1
  546. package/dist/splash-screen-DIS4odDr.cjs.map +0 -1
  547. package/dist/splash-screen-jfE47xl0.js.map +0 -1
  548. package/dist/src-BP3h-9d9.js.map +0 -1
  549. package/dist/src-Um_pzb-U.cjs.map +0 -1
  550. package/dist/textarea-BvqENhTW.js.map +0 -1
  551. package/dist/textarea-qr7oL8oU.cjs +0 -43
  552. package/dist/textarea-qr7oL8oU.cjs.map +0 -1
  553. package/dist/theme.service-DwLhhOmP.js.map +0 -1
  554. package/dist/theme.service-kn9MC025.cjs +0 -1
  555. package/dist/theme.service-kn9MC025.cjs.map +0 -1
  556. package/dist/window-BSAemI9J.cjs +0 -59
  557. package/dist/window-BSAemI9J.cjs.map +0 -1
  558. package/dist/window-ConcHirJ.js.map +0 -1
@@ -101,13 +101,13 @@ export class SchmancyNavigationRail extends SchmancyElement {
101
101
  */
102
102
  @property({ type: String })
103
103
  get activeValue() {
104
- return this._activeValue
104
+ return this.#activeValue
105
105
  }
106
106
  set activeValue(value: string) {
107
- this._activeValue = value
107
+ this.#activeValue = value
108
108
  this.updateActiveByValue(value)
109
109
  }
110
- private _activeValue = ''
110
+ #activeValue = ''
111
111
 
112
112
  /**
113
113
  * When to show labels for navigation items
@@ -164,7 +164,7 @@ export class SchmancyNavigationRail extends SchmancyElement {
164
164
  * When empty, the nav falls back to the M3 default: `flex flex-col gap-3`.
165
165
  */
166
166
  @state()
167
- private _hostLayoutClasses = ''
167
+ private hostLayoutClasses = ''
168
168
 
169
169
  // Queries
170
170
 
@@ -217,7 +217,7 @@ export class SchmancyNavigationRail extends SchmancyElement {
217
217
  return () => mo.disconnect()
218
218
  }).pipe(
219
219
  distinctUntilChanged(),
220
- tap(layoutClasses => { this._hostLayoutClasses = layoutClasses }),
220
+ tap(layoutClasses => { this.hostLayoutClasses = layoutClasses }),
221
221
  takeUntil(this.disconnecting),
222
222
  ).subscribe()
223
223
 
@@ -257,7 +257,7 @@ export class SchmancyNavigationRail extends SchmancyElement {
257
257
 
258
258
  // Update activeValue when index changes
259
259
  if (isActive) {
260
- this._activeValue = item.value || item.label || ''
260
+ this.#activeValue = item.value || item.label || ''
261
261
  }
262
262
  })
263
263
  }
@@ -409,7 +409,7 @@ export class SchmancyNavigationRail extends SchmancyElement {
409
409
  protected render() {
410
410
  // Host-level classes for the navigation rail (width, visibility, z-index).
411
411
  // Layout utilities the author placed on the host are NOT included here —
412
- // they are forwarded to the inner <nav> via _hostLayoutClasses instead.
412
+ // they are forwarded to the inner <nav> via hostLayoutClasses instead.
413
413
  const hostClasses = this.classMap({
414
414
  // Layout & Structure - Fixed width to prevent layout shift
415
415
  'flex flex-col': true,
@@ -468,9 +468,9 @@ export class SchmancyNavigationRail extends SchmancyElement {
468
468
  // after re-slotting through <schmancy-scroll>. Layout utilities forwarded from the
469
469
  // host land here so that `grid gap-2` (or any other layout) actually shapes items.
470
470
  // When the host carries no layout classes, default to M3 flex-column + alignment.
471
- const hasHostLayout = this._hostLayoutClasses.length > 0
471
+ const hasHostLayout = this.hostLayoutClasses.length > 0
472
472
  const itemsContainerClasses = hasHostLayout
473
- ? this._hostLayoutClasses
473
+ ? this.hostLayoutClasses
474
474
  : this.classMap({
475
475
  'flex flex-col gap-3': true,
476
476
  'justify-start': this.alignment === 'top',
@@ -519,7 +519,7 @@ export class SchmancyNavigationRail extends SchmancyElement {
519
519
  const itemIndex = this.navigationItems.findIndex(item => item.value === value || item.label === value)
520
520
  if (itemIndex >= 0) {
521
521
  this.activeIndex = itemIndex
522
- this._activeValue = value
522
+ this.#activeValue = value
523
523
  }
524
524
  }
525
525
  })
@@ -26,10 +26,10 @@ export default class SchmancyNotification extends SchmancyElement {
26
26
  // startPosition retained for API compatibility — not used in entrance animation
27
27
  @property({ type: Object }) startPosition: { x: number; y: number } = { x: 0, y: 0 }
28
28
 
29
- @state() private _visible = true
30
- @state() private _progress = 100
31
- @state() private _hovered = false
32
- @state() private _closing = false
29
+ @state() private visible = true
30
+ @state() private progress = 100
31
+ @state() private hovered = false
32
+ @state() private closing = false
33
33
 
34
34
  private paused$ = new BehaviorSubject<boolean>(false)
35
35
  private startTime = 0
@@ -56,7 +56,7 @@ export default class SchmancyNotification extends SchmancyElement {
56
56
  }
57
57
 
58
58
  if (this.playSound) {
59
- this._playSound()
59
+ this.#playSound()
60
60
  }
61
61
  }
62
62
 
@@ -113,7 +113,7 @@ export default class SchmancyNotification extends SchmancyElement {
113
113
  switchMap(() =>
114
114
  this.paused$.pipe(
115
115
  map(paused => {
116
- if (paused) return this._progress
116
+ if (paused) return this.progress
117
117
  const elapsed = this.elapsedBeforePause + (Date.now() - this.startTime)
118
118
  const remaining = Math.max(0, this.duration - elapsed)
119
119
  return (remaining / this.duration) * 100
@@ -122,14 +122,14 @@ export default class SchmancyNotification extends SchmancyElement {
122
122
  ),
123
123
  distinctUntilChanged(),
124
124
  tap(progress => {
125
- this._progress = progress
125
+ this.progress = progress
126
126
  }),
127
127
  takeUntil(this.disconnecting),
128
128
  )
129
129
  .subscribe()
130
130
  }
131
131
 
132
- private _playSound() {
132
+ #playSound() {
133
133
  this.dispatchEvent(
134
134
  new CustomEvent('playsound', {
135
135
  detail: { type: this.type },
@@ -139,20 +139,20 @@ export default class SchmancyNotification extends SchmancyElement {
139
139
  )
140
140
  }
141
141
 
142
- private _handleMouseEnter() {
143
- this._hovered = true
142
+ private handleMouseEnter() {
143
+ this.hovered = true
144
144
  this.paused$.next(true)
145
145
  }
146
146
 
147
- private _handleMouseLeave() {
148
- this._hovered = false
147
+ private handleMouseLeave() {
148
+ this.hovered = false
149
149
  this.paused$.next(false)
150
150
  }
151
151
 
152
152
  public async close() {
153
- if (this._closing) return
154
- this._closing = true
155
- this._visible = false
153
+ if (this.closing) return
154
+ this.closing = true
155
+ this.visible = false
156
156
 
157
157
  await this.animate(
158
158
  [
@@ -175,7 +175,7 @@ export default class SchmancyNotification extends SchmancyElement {
175
175
  )
176
176
  }
177
177
 
178
- private _getTypeLabel(): string {
178
+ private getTypeLabel(): string {
179
179
  switch (this.type) {
180
180
  case 'success':
181
181
  return 'SUCCESS'
@@ -189,26 +189,26 @@ export default class SchmancyNotification extends SchmancyElement {
189
189
  }
190
190
 
191
191
  render() {
192
- if (!this._visible && this._closing) return html``
192
+ if (!this.visible && this.closing) return html``
193
193
 
194
194
  return html`
195
195
  <div
196
- class="notification ${this.type} ${this._closing ? 'closing' : ''} ${this._hovered ? 'hovered' : ''}"
196
+ class="notification ${this.type} ${this.closing ? 'closing' : ''} ${this.hovered ? 'hovered' : ''}"
197
197
  role="alert"
198
- @mouseenter=${this._handleMouseEnter}
199
- @mouseleave=${this._handleMouseLeave}
198
+ @mouseenter=${this.handleMouseEnter}
199
+ @mouseleave=${this.handleMouseLeave}
200
200
  >
201
201
  ${this.showProgress || this.duration > 0
202
202
  ? html`<schmancy-progress
203
203
  class="progress"
204
204
  size="xs"
205
- .value=${this._progress}
205
+ .value=${this.progress}
206
206
  ?indeterminate=${this.showProgress && this.duration === 0}
207
207
  ></schmancy-progress>`
208
208
  : ''}
209
209
  <div class="accent-rail"></div>
210
210
  <div class="content">
211
- <span class="type-tag">${this._getTypeLabel()}</span>
211
+ <span class="type-tag">${this.getTypeLabel()}</span>
212
212
  ${this.title ? html`<div class="title">${this.title}</div>` : ''}
213
213
  <div class="message">${this.message}</div>
214
214
  </div>
@@ -118,29 +118,30 @@ export class SchmancyOverlay extends SchmancyElement {
118
118
  @property({ type: Boolean, reflect: true }) modal = true
119
119
  @property({ type: String, reflect: true }) tier: OverlayTier = 'modal'
120
120
 
121
- @state() private _active = false
122
- @state() private _full = false
121
+ @state() private active = false
122
+ @state() private full = false
123
123
 
124
- @query('.backdrop') private _backdrop?: HTMLDivElement
125
- @query('.surface') private _surface!: HTMLElement
126
- @query('.shell') private _shell?: HTMLElement
124
+ @query('.backdrop') private backdrop?: HTMLDivElement
125
+ @query('.surface') private surface!: HTMLElement
126
+ @query('.shell') private shell?: HTMLElement
127
127
 
128
128
  /** Close trigger for the service; emits the reason + detail payload. */
129
- private readonly _closed$ = new Subject<{ reason: CloseReason; result?: unknown }>()
130
-
131
- private _mounted = false
132
- private _closing = false
133
- private _resolvedAnchor?: ResolvedAnchor
134
- private _rawAnchor?: Anchor
135
- private _anchorOriginAnchor?: Anchor
136
- private _positionerTeardown?: () => void
137
- private _lastFocusedElement: HTMLElement | null = null
138
- private _inertedSiblings: HTMLElement[] = []
139
- private _lastReResolveAt = 0
129
+ readonly #closed$ = new Subject<{ reason: CloseReason; result?: unknown }>()
130
+
131
+ private mounted = false
132
+ private closing = false
133
+ private resolvedAnchor?: ResolvedAnchor
134
+ private rawAnchor?: Anchor
135
+ private anchorOriginAnchor?: Anchor
136
+ private positionerTeardown?: () => void
137
+ private factoryEffectDispose?: () => void
138
+ private lastFocusedElement: HTMLElement | null = null
139
+ private inertedSiblings: HTMLElement[] = []
140
+ private lastReResolveAt = 0
140
141
 
141
142
  /** Service subscribes to this to know when the overlay dismissed. */
142
143
  get closed$(): import('rxjs').Observable<{ reason: CloseReason; result?: unknown }> {
143
- return this._closed$.asObservable()
144
+ return this.#closed$.asObservable()
144
145
  }
145
146
 
146
147
  /**
@@ -149,23 +150,34 @@ export class SchmancyOverlay extends SchmancyElement {
149
150
  * animation completes.
150
151
  */
151
152
  async open(content: Content, options: ShowOptions): Promise<void> {
152
- if (this._mounted) throw new Error('schmancy-overlay: open() called twice on the same element')
153
- this._mounted = true
153
+ if (this.mounted) throw new Error('schmancy-overlay: open() called twice on the same element')
154
+ this.mounted = true
154
155
 
155
156
  this.dismissable = options.dismissable !== false
156
- this._full = options.full ?? false
157
- this._rawAnchor = options.anchor
158
- this._anchorOriginAnchor = options.anchor
159
- this._resolvedAnchor = resolveAnchorRef(options.anchor)
157
+ this.full = options.full ?? false
158
+ this.rawAnchor = options.anchor
159
+ this.anchorOriginAnchor = options.anchor
160
+ this.resolvedAnchor = resolveAnchorRef(options.anchor)
160
161
 
161
162
  // Ensure the shell is rendered so the mount point exists.
162
- this._active = true
163
+ this.active = true
163
164
  this.setAttribute('active', '')
164
165
  await this.updateComplete
165
166
 
166
167
  const mount = this.renderRoot.querySelector(`#${MOUNT_POINT_ID}`) as HTMLElement | null
167
168
  if (!mount) throw new Error('schmancy-overlay: mount point missing')
168
- await mountContent(content, mount, options.props)
169
+ if (isTemplateFactory(content)) {
170
+ // Factory content is reactive: re-run litRender whenever a signal the
171
+ // factory reads changes. The overlay IS a SignalWatcher (SchmancyElement),
172
+ // so its own effect loop owns tracking + scheduling + teardown. Content
173
+ // stays in the light-DOM mount point — no shadow boundary, every event /
174
+ // focus / ResizeObserver contract preserved.
175
+ this.factoryEffectDispose = this.updateEffect(() => litRender(content(), mount), {
176
+ manualDispose: true,
177
+ })
178
+ } else {
179
+ await mountContent(content, mount, options.props)
180
+ }
169
181
 
170
182
  // Caller-forced layout (`as`) wins; otherwise resolver decides from anchor.
171
183
  this.layout = options.as ?? resolveLayout({ anchor: options.anchor })
@@ -178,8 +190,8 @@ export class SchmancyOverlay extends SchmancyElement {
178
190
  // ladder. `modal: true` on an anchored layout stays modal.
179
191
  this.tier = this.modal
180
192
  ? 'modal'
181
- : this._resolvedAnchor
182
- ? pickPositioner(this._resolvedAnchor)
193
+ : this.resolvedAnchor
194
+ ? pickPositioner(this.resolvedAnchor)
183
195
  : 'modal'
184
196
 
185
197
  await this.updateComplete
@@ -187,41 +199,41 @@ export class SchmancyOverlay extends SchmancyElement {
187
199
  // Apply tier-specific positioning. For 'modal' the CSS data-layout
188
200
  // attribute + :host styles already place the surface; nothing to do.
189
201
  // For anchored tiers we delegate to the positioning module.
190
- if (this.tier === 'css-anchor' && this._resolvedAnchor?.el && this.shadowRoot) {
191
- this._positionerTeardown = positionCSSAnchor(this._surface, this._resolvedAnchor, this.shadowRoot, {
202
+ if (this.tier === 'css-anchor' && this.resolvedAnchor?.el && this.shadowRoot) {
203
+ this.positionerTeardown = positionCSSAnchor(this.surface, this.resolvedAnchor, this.shadowRoot, {
192
204
  id: `ov-${Math.random().toString(36).slice(2, 10)}`,
193
205
  placement: options.preferredPlacement ?? 'bottom-start',
194
206
  })
195
207
  // Pair with Popover API to get native top-layer + light-dismiss.
196
- const popoverCleanup = positionPopoverAPI(this._surface)
197
- const cssAnchorTeardown = this._positionerTeardown
198
- this._positionerTeardown = () => {
208
+ const popoverCleanup = positionPopoverAPI(this.surface)
209
+ const cssAnchorTeardown = this.positionerTeardown
210
+ this.positionerTeardown = () => {
199
211
  popoverCleanup()
200
212
  cssAnchorTeardown?.()
201
213
  }
202
- } else if (this.tier === 'popover-fui' && this._resolvedAnchor) {
203
- const popoverCleanup = positionPopoverAPI(this._surface)
204
- const floatSub = positionFloatingUI(this._surface, this._resolvedAnchor, {
214
+ } else if (this.tier === 'popover-fui' && this.resolvedAnchor) {
215
+ const popoverCleanup = positionPopoverAPI(this.surface)
216
+ const floatSub = positionFloatingUI(this.surface, this.resolvedAnchor, {
205
217
  placement: options.preferredPlacement ?? 'bottom-start',
206
218
  offsetPx: 8,
207
219
  track: options.track !== false,
208
220
  })
209
221
  .pipe(takeUntil(this.disconnecting))
210
222
  .subscribe()
211
- this._positionerTeardown = () => {
223
+ this.positionerTeardown = () => {
212
224
  popoverCleanup()
213
225
  floatSub.unsubscribe()
214
226
  }
215
- } else if (this.tier === 'fui-only' && this._resolvedAnchor) {
216
- const floatSub = positionFloatingUI(this._surface, this._resolvedAnchor, {
227
+ } else if (this.tier === 'fui-only' && this.resolvedAnchor) {
228
+ const floatSub = positionFloatingUI(this.surface, this.resolvedAnchor, {
217
229
  placement: options.preferredPlacement ?? 'bottom-start',
218
230
  offsetPx: 8,
219
231
  track: options.track !== false,
220
232
  })
221
233
  .pipe(takeUntil(this.disconnecting))
222
234
  .subscribe()
223
- this._positionerTeardown = () => floatSub.unsubscribe()
224
- } else if (this.tier === 'modal' && this._shell) {
235
+ this.positionerTeardown = () => floatSub.unsubscribe()
236
+ } else if (this.tier === 'modal' && this.shell) {
225
237
  // Promote the whole modal shell (scrim + surface) into the native
226
238
  // top layer — the same domain anchored tiers already use. The top
227
239
  // layer paints strictly in show() order, so a sheet opened from
@@ -229,7 +241,7 @@ export class SchmancyOverlay extends SchmancyElement {
229
241
  // (and recedes behind anything opened after it). Degrade silently
230
242
  // to the legacy z-index host on browsers without the Popover API.
231
243
  try {
232
- this._positionerTeardown = positionPopoverAPI(this._shell)
244
+ this.positionerTeardown = positionPopoverAPI(this.shell)
233
245
  } catch {
234
246
  // no Popover API support — keep the host z-index:10000 path.
235
247
  }
@@ -253,39 +265,47 @@ export class SchmancyOverlay extends SchmancyElement {
253
265
 
254
266
  /** Play exit animations then dismiss. */
255
267
  async close(reason: CloseReason, result?: unknown): Promise<void> {
256
- if (this._closing || !this._mounted) return
257
- this._closing = true
268
+ if (this.closing || !this.mounted) return
269
+ this.closing = true
258
270
  try {
259
271
  await this.playAnimations('out')
260
272
  } catch {
261
273
  // animation cancelled mid-flight — not an error.
262
274
  }
263
275
  this.releaseFocusTrap()
264
- if (this._positionerTeardown) {
276
+ if (this.factoryEffectDispose) {
265
277
  try {
266
- this._positionerTeardown()
278
+ this.factoryEffectDispose()
267
279
  } catch {
268
280
  // cleanup shouldn't throw; ignore anything that does.
269
281
  }
270
- this._positionerTeardown = undefined
282
+ this.factoryEffectDispose = undefined
271
283
  }
272
- this._active = false
284
+ if (this.positionerTeardown) {
285
+ try {
286
+ this.positionerTeardown()
287
+ } catch {
288
+ // cleanup shouldn't throw; ignore anything that does.
289
+ }
290
+ this.positionerTeardown = undefined
291
+ }
292
+ this.active = false
273
293
  this.removeAttribute('active')
274
- this._closed$.next({ reason, result })
275
- this._closed$.complete()
294
+ this.#closed$.next({ reason, result })
295
+ this.#closed$.complete()
276
296
  }
277
297
 
278
298
  /* ---------------- render ------------------------------------------- */
279
299
 
280
300
  protected render(): TemplateResult {
281
- if (!this._active) return html``
301
+ if (!this.active) return html``
282
302
  const baseClasses =
283
303
  'surface fixed pointer-events-auto ' +
284
304
  'bg-surface-container/85 text-surface-on backdrop-blur-md ' +
285
305
  'border border-surface-on/8'
286
306
  const layoutClasses =
287
307
  this.layout === 'sheet'
288
- ? this._full
308
+ ? this.full
289
309
  ? 'left-0 right-0 bottom-0 w-full h-[90dvh] rounded-t-[28px] shadow-overlay flex flex-col overflow-hidden'
290
310
  : 'left-0 right-0 bottom-0 w-full max-h-[90dvh] rounded-t-[28px] shadow-overlay overflow-auto'
291
311
  : 'max-w-[min(480px,calc(100vw-2rem))] max-h-[90dvh] rounded-3xl shadow-overlay-anchored overflow-auto'
@@ -304,7 +324,7 @@ export class SchmancyOverlay extends SchmancyElement {
304
324
  aria-modal=${this.modal ? 'true' : 'false'}
305
325
  tabindex="-1"
306
326
  >
307
- <div id=${MOUNT_POINT_ID} class=${this.layout === 'sheet' && this._full ? 'flex-1 min-h-0 overflow-hidden' : ''}></div>
327
+ <div id=${MOUNT_POINT_ID} class=${this.layout === 'sheet' && this.full ? 'flex-1 min-h-0 overflow-hidden' : ''}></div>
308
328
  </section>
309
329
  </div>
310
330
  `
@@ -317,13 +337,13 @@ export class SchmancyOverlay extends SchmancyElement {
317
337
  /* ---------------- anchor-origin bloom ------------------------------ */
318
338
 
319
339
  private setAnchorOriginVars(): void {
320
- const surface = this._surface
340
+ const surface = this.surface
321
341
  if (!surface) return
322
342
  const rect = surface.getBoundingClientRect()
323
343
  const vars =
324
- this.layout === 'sheet' && !this._anchorOriginAnchor
344
+ this.layout === 'sheet' && !this.anchorOriginAnchor
325
345
  ? { '--schmancy-overlay-origin-x': '50%', '--schmancy-overlay-origin-y': '100%' }
326
- : anchorOriginVars(this._anchorOriginAnchor, rect)
346
+ : anchorOriginVars(this.anchorOriginAnchor, rect)
327
347
  for (const [k, v] of Object.entries(vars)) {
328
348
  surface.style.setProperty(k, v)
329
349
  }
@@ -333,35 +353,35 @@ export class SchmancyOverlay extends SchmancyElement {
333
353
 
334
354
  private wireFocusTrap(): void {
335
355
  if (!this.modal) return
336
- this._lastFocusedElement = (document.activeElement as HTMLElement) ?? null
356
+ this.lastFocusedElement = (document.activeElement as HTMLElement) ?? null
337
357
  const parent = this.parentElement
338
358
  if (parent) {
339
- this._inertedSiblings = []
359
+ this.inertedSiblings = []
340
360
  for (const child of Array.from(parent.children)) {
341
361
  if (child !== this && child instanceof HTMLElement && !child.inert) {
342
362
  child.inert = true
343
- this._inertedSiblings.push(child)
363
+ this.inertedSiblings.push(child)
344
364
  }
345
365
  }
346
366
  }
347
367
  // Focus the surface or the first [autofocus] child.
348
368
  queueMicrotask(() => {
349
- const auto = this._surface?.querySelector<HTMLElement>('[autofocus]')
350
- ;(auto ?? this._surface)?.focus()
369
+ const auto = this.surface?.querySelector<HTMLElement>('[autofocus]')
370
+ ;(auto ?? this.surface)?.focus()
351
371
  })
352
372
  }
353
373
 
354
374
  private releaseFocusTrap(): void {
355
- for (const el of this._inertedSiblings) {
375
+ for (const el of this.inertedSiblings) {
356
376
  el.inert = false
357
377
  }
358
- this._inertedSiblings = []
378
+ this.inertedSiblings = []
359
379
  try {
360
- this._lastFocusedElement?.focus?.()
380
+ this.lastFocusedElement?.focus?.()
361
381
  } catch {
362
382
  // trigger may be detached now; no-op.
363
383
  }
364
- this._lastFocusedElement = null
384
+ this.lastFocusedElement = null
365
385
  }
366
386
 
367
387
  /* ---------------- close triggers ----------------------------------- */
@@ -423,8 +443,8 @@ export class SchmancyOverlay extends SchmancyElement {
423
443
  filter((e) => {
424
444
  if (!this.dismissable) return false
425
445
  const path = e.composedPath()
426
- if (this._surface && path.includes(this._surface)) return false
427
- if (this._resolvedAnchor?.el && path.includes(this._resolvedAnchor.el)) return false
446
+ if (this.surface && path.includes(this.surface)) return false
447
+ if (this.resolvedAnchor?.el && path.includes(this.resolvedAnchor.el)) return false
428
448
  // Suppress dismiss when the click lands inside any overlay that sits
429
449
  // ABOVE this one in the stack (nested overlays sibling-appended to
430
450
  // body). Read the stack fresh per pointerdown — it mutates as overlays
@@ -450,7 +470,7 @@ export class SchmancyOverlay extends SchmancyElement {
450
470
  // DRAG_START_TOP_PX in overlay.gestures). Escape + backdrop click
451
471
  // cover the other dismiss paths via the modal-tier listeners above.
452
472
  const swipe$ = this.layout === 'sheet' && this.dismissable
453
- ? swipeToDismiss$({ surface: this._surface, until$: merge(until, this._closed$) }).pipe(
473
+ ? swipeToDismiss$({ surface: this.surface, until$: merge(until, this.#closed$) }).pipe(
454
474
  take(1),
455
475
  map(() => ({ reason: 'swipe' as CloseReason })),
456
476
  )
@@ -490,25 +510,25 @@ export class SchmancyOverlay extends SchmancyElement {
490
510
  filter((v): v is { w: number; h: number } => v !== null),
491
511
  distinctUntilChanged((a, b) => a.w === b.w && a.h === b.h),
492
512
  debounceTime(80),
493
- takeUntil(merge(this.disconnecting, this._closed$)),
513
+ takeUntil(merge(this.disconnecting, this.#closed$)),
494
514
  )
495
- .subscribe((size) => this.maybeReResolve(size))
515
+ .subscribe(() => this.maybeReResolve())
496
516
  }
497
517
 
498
- private async maybeReResolve(_size: { w: number; h: number }): Promise<void> {
499
- if (this._closing) return
500
- const next = resolveLayout({ anchor: this._rawAnchor })
518
+ private async maybeReResolve(): Promise<void> {
519
+ if (this.closing) return
520
+ const next = resolveLayout({ anchor: this.rawAnchor })
501
521
  if (next === this.layout) return
502
522
  // Cooldown: prevent churn-driven bouncing.
503
523
  const now = performance.now()
504
- if (now - this._lastReResolveAt < RE_RESOLVE_COOLDOWN_MS) return
524
+ if (now - this.lastReResolveAt < RE_RESOLVE_COOLDOWN_MS) return
505
525
  // Upward-only ratchet: centered → sheet on content-grow is OK,
506
526
  // sheet → centered on content-shrink is ignored.
507
527
  if (!isUpwardTransition(this.layout, next)) return
508
528
 
509
529
  // FLIP: capture `before` rect, apply new layout, capture `after`,
510
530
  // animate the inverse transform.
511
- const surface = this._surface
531
+ const surface = this.surface
512
532
  const before = surface.getBoundingClientRect()
513
533
  this.layout = next
514
534
  await this.updateComplete
@@ -519,19 +539,19 @@ export class SchmancyOverlay extends SchmancyElement {
519
539
  } catch {
520
540
  // cancelled — not an error.
521
541
  }
522
- this._lastReResolveAt = performance.now()
542
+ this.lastReResolveAt = performance.now()
523
543
  }
524
544
 
525
545
  /* ---------------- animations --------------------------------------- */
526
546
 
527
547
  private async playAnimations(direction: 'in' | 'out'): Promise<void> {
528
- const surface = this._surface
548
+ const surface = this.surface
529
549
  if (!surface) return
530
550
  const spec = surfaceAnimation(this.layout, direction)
531
551
  const tasks: Promise<unknown>[] = [
532
552
  surface.animate(spec.keyframes, spec.options).finished.catch(() => undefined),
533
553
  ]
534
- const backdrop = this._backdrop
554
+ const backdrop = this.backdrop
535
555
  if (this.modal && backdrop) {
536
556
  tasks.push(
537
557
  backdrop
@@ -561,11 +581,6 @@ async function mountContent(
561
581
  host: HTMLElement,
562
582
  props?: Record<string, unknown>,
563
583
  ): Promise<HTMLElement> {
564
- // TemplateFactory — call at mount time so closed-over variables are read lazily.
565
- if (isTemplateFactory(content)) {
566
- return mountContent(content(), host, props)
567
- }
568
-
569
584
  // TemplateResult — render via lit's `render`.
570
585
  if (isTemplateResult(content)) {
571
586
  litRender(content, host)
@@ -580,11 +595,19 @@ async function mountContent(
580
595
  }
581
596
 
582
597
  // LazyComponent — await the module, recurse with the default export.
598
+ // Must precede the TemplateFactory check: a lazy loader is an arrow
599
+ // function with no `prototype`, so isTemplateFactory would match it
600
+ // first and call it as a factory.
583
601
  if (isLazy(content)) {
584
602
  const mod = await content()
585
603
  return mountContent(mod.default, host, props)
586
604
  }
587
605
 
606
+ // TemplateFactory — call at mount time so closed-over variables are read lazily.
607
+ if (isTemplateFactory(content)) {
608
+ return mountContent(content(), host, props)
609
+ }
610
+
588
611
  // Class constructor.
589
612
  if (typeof content === 'function') {
590
613
  const Ctor = content as unknown as { new (): HTMLElement }
@@ -614,7 +637,7 @@ function isTemplateResult(x: unknown): x is TemplateResult {
614
637
  }
615
638
 
616
639
  function isLazy(x: unknown): x is LazyComponent {
617
- return typeof x === 'function' && ('preload' in (x as object) || '_promise' in (x as object))
640
+ return typeof x === 'function' && 'preload' in (x as object)
618
641
  }
619
642
 
620
643
  function isUpwardTransition(from: OverlayLayout, to: OverlayLayout): boolean {
@@ -60,11 +60,11 @@ export class SchmancyOverlayPromptBody extends SchmancyElement {
60
60
  @property({ type: String }) pattern?: string
61
61
  @property({ type: Boolean }) required = false
62
62
 
63
- @query('schmancy-input') private _schmancyInput?: SchmancyInput
63
+ @query('schmancy-input') private schmancyInput?: SchmancyInput
64
64
 
65
65
  override firstUpdated(): void {
66
66
  if (this.mode === 'prompt') {
67
- this._schmancyInput?.focus()
67
+ this.schmancyInput?.focus()
68
68
  }
69
69
  }
70
70
 
@@ -84,8 +84,8 @@ export class SchmancyOverlayPromptBody extends SchmancyElement {
84
84
 
85
85
  private handleConfirm = (): void => {
86
86
  if (this.mode === 'prompt') {
87
- if (this._schmancyInput && !this._schmancyInput.reportValidity()) return
88
- this.dismiss(this._schmancyInput?.value ?? '')
87
+ if (this.schmancyInput && !this.schmancyInput.reportValidity()) return
88
+ this.dismiss(this.schmancyInput?.value ?? '')
89
89
  } else {
90
90
  this.dismiss(true)
91
91
  }
@@ -176,10 +176,10 @@ export function show<T = void>(
176
176
 
177
177
  const strategy: THistoryStrategy = resolvedOptions.historyStrategy ?? 'push'
178
178
  if (strategy === 'push') {
179
- history.pushState({ __schmancyOverlayId: id }, '', location.href)
179
+ history.pushState({ schmancyOverlayId: id }, '', location.href)
180
180
  state.historyPushed = true
181
181
  } else if (strategy === 'replace') {
182
- history.replaceState({ __schmancyOverlayId: id }, '', location.href)
182
+ history.replaceState({ schmancyOverlayId: id }, '', location.href)
183
183
  }
184
184
  }),
185
185
  )
@@ -214,7 +214,7 @@ export function show<T = void>(
214
214
  if (
215
215
  state.historyPushed &&
216
216
  !state.settled &&
217
- history.state?.__schmancyOverlayId === id
217
+ history.state?.schmancyOverlayId === id
218
218
  ) {
219
219
  history.back()
220
220
  }
@@ -3,8 +3,10 @@ import type { Observable } from 'rxjs'
3
3
  import type { ComponentType, THistoryStrategy } from '../area/router.types'
4
4
 
5
5
  /**
6
- * Sync factory that returns a TemplateResult. Called at mount time so closed-over
7
- * variables are evaluated lazilyno snapshot staleness.
6
+ * Sync factory returning a TemplateResult. Invoked at mount and re-invoked
7
+ * whenever a signal read inside it changes the factory's reactivity matches
8
+ * a component's render(). Prefer it over the eager html`` form whenever the
9
+ * template reads reactive state.
8
10
  */
9
11
  export type TemplateFactory = () => TemplateResult
10
12