@mhmo91/schmancy 0.10.36 → 0.10.38

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 (572) hide show
  1. package/custom-elements.json +54 -31
  2. package/dist/SchmancyElement-BNnyBOwk.js +286 -0
  3. package/dist/{SchmancyElement-C3CpdNsi.js.map → SchmancyElement-BNnyBOwk.js.map} +1 -1
  4. package/dist/SchmancyElement-C41uPa6l.cjs +2 -0
  5. package/dist/{SchmancyElement-BBzRWB1w.cjs.map → SchmancyElement-C41uPa6l.cjs.map} +1 -1
  6. package/dist/agent/schmancy.agent.js +2432 -2361
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +4 -22
  9. package/dist/area-2FrTZI_T.cjs +21 -0
  10. package/dist/area-2FrTZI_T.cjs.map +1 -0
  11. package/dist/{area-BA96mwFY.js → area-KVDzhT4s.js} +4 -4
  12. package/dist/area-KVDzhT4s.js.map +1 -0
  13. package/dist/area.cjs +1 -1
  14. package/dist/area.js +2 -2
  15. package/dist/{audio-D52h1jAT.js → audio-D3gnp15Y.js} +1 -1
  16. package/dist/{audio-D52h1jAT.js.map → audio-D3gnp15Y.js.map} +1 -1
  17. package/dist/{audio-B_jT9Xr7.cjs → audio-EaD0Ggfh.cjs} +1 -1
  18. package/dist/{audio-B_jT9Xr7.cjs.map → audio-EaD0Ggfh.cjs.map} +1 -1
  19. package/dist/audio.cjs +1 -1
  20. package/dist/audio.js +2 -2
  21. package/dist/autocomplete-DMmxsvUe.cjs +115 -0
  22. package/dist/autocomplete-DMmxsvUe.cjs.map +1 -0
  23. package/dist/{autocomplete-CI4QJXAN.js → autocomplete-DWiEqlQf.js} +96 -96
  24. package/dist/autocomplete-DWiEqlQf.js.map +1 -0
  25. package/dist/autocomplete.cjs +1 -1
  26. package/dist/autocomplete.js +1 -1
  27. package/dist/avatar.cjs +1 -1
  28. package/dist/avatar.js +3 -3
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +1 -1
  31. package/dist/{boat-_N1x5U_3.js → boat-DmyG7y1V.js} +4 -4
  32. package/dist/{boat-_N1x5U_3.js.map → boat-DmyG7y1V.js.map} +1 -1
  33. package/dist/{boat-I4B1UNMc.cjs → boat-dB1_qLm0.cjs} +1 -1
  34. package/dist/{boat-I4B1UNMc.cjs.map → boat-dB1_qLm0.cjs.map} +1 -1
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/breadcrumb.cjs +3 -3
  38. package/dist/breadcrumb.cjs.map +1 -1
  39. package/dist/breadcrumb.js +4 -4
  40. package/dist/breadcrumb.js.map +1 -1
  41. package/dist/{busy-BIUonyPk.cjs → busy-Cj_PV7oC.cjs} +1 -1
  42. package/dist/{busy-BIUonyPk.cjs.map → busy-Cj_PV7oC.cjs.map} +1 -1
  43. package/dist/{busy-CCB3qKnh.js → busy-enYCTssB.js} +2 -2
  44. package/dist/{busy-CCB3qKnh.js.map → busy-enYCTssB.js.map} +1 -1
  45. package/dist/busy.cjs +1 -1
  46. package/dist/busy.js +1 -1
  47. package/dist/{button-C89bPnHt.js → button-BQSOVnHn.js} +10 -9
  48. package/dist/button-BQSOVnHn.js.map +1 -0
  49. package/dist/button-WRmXlNyw.cjs +62 -0
  50. package/dist/button-WRmXlNyw.cjs.map +1 -0
  51. package/dist/button.cjs +6 -6
  52. package/dist/button.cjs.map +1 -1
  53. package/dist/button.js +17 -16
  54. package/dist/button.js.map +1 -1
  55. package/dist/{card-CFsCgJKZ.js → card-BHTz1GwB.js} +16 -16
  56. package/dist/card-BHTz1GwB.js.map +1 -0
  57. package/dist/{card-BO93_oxQ.cjs → card-ThG_ZaQE.cjs} +3 -3
  58. package/dist/card-ThG_ZaQE.cjs.map +1 -0
  59. package/dist/card.cjs +1 -1
  60. package/dist/card.js +1 -1
  61. package/dist/{checkbox-CFUBUFtW.cjs → checkbox-C4zeib84.cjs} +2 -2
  62. package/dist/{checkbox-CFUBUFtW.cjs.map → checkbox-C4zeib84.cjs.map} +1 -1
  63. package/dist/{checkbox-Bh7q0djq.js → checkbox-Ce0DlAdW.js} +6 -6
  64. package/dist/{checkbox-Bh7q0djq.js.map → checkbox-Ce0DlAdW.js.map} +1 -1
  65. package/dist/checkbox.cjs +1 -1
  66. package/dist/checkbox.js +1 -1
  67. package/dist/{chips-BfzpsyV1.cjs → chips-B1jui8Pe.cjs} +3 -3
  68. package/dist/chips-B1jui8Pe.cjs.map +1 -0
  69. package/dist/{chips-6YaoRmeG.js → chips-DAy6v93f.js} +20 -19
  70. package/dist/chips-DAy6v93f.js.map +1 -0
  71. package/dist/chips.cjs +1 -1
  72. package/dist/chips.js +2 -2
  73. package/dist/connectivity.cjs +1 -1
  74. package/dist/connectivity.js +3 -3
  75. package/dist/content-drawer.cjs +1 -1
  76. package/dist/content-drawer.js +1 -1
  77. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  78. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  79. package/dist/{date-range-N-A249O9.cjs → date-range-BUaPgbTZ.cjs} +2 -2
  80. package/dist/date-range-BUaPgbTZ.cjs.map +1 -0
  81. package/dist/{date-range-CEo_Kjqw.js → date-range-NTpoA1in.js} +4 -4
  82. package/dist/date-range-NTpoA1in.js.map +1 -0
  83. package/dist/{date-range-inline-DFopysWF.cjs → date-range-inline-D0I6k84h.cjs} +1 -1
  84. package/dist/{date-range-inline-DFopysWF.cjs.map → date-range-inline-D0I6k84h.cjs.map} +1 -1
  85. package/dist/{date-range-inline-BwialV9j.js → date-range-inline-DjRdMZ1z.js} +2 -2
  86. package/dist/{date-range-inline-BwialV9j.js.map → date-range-inline-DjRdMZ1z.js.map} +1 -1
  87. package/dist/date-range-inline.cjs +1 -1
  88. package/dist/date-range-inline.js +1 -1
  89. package/dist/date-range.cjs +1 -1
  90. package/dist/date-range.js +1 -1
  91. package/dist/delay.cjs +1 -1
  92. package/dist/delay.js +2 -2
  93. package/dist/{details-GtpfI2hA.js → details-CY49XVfp.js} +43 -35
  94. package/dist/details-CY49XVfp.js.map +1 -0
  95. package/dist/details-DQNj2oaU.cjs +164 -0
  96. package/dist/details-DQNj2oaU.cjs.map +1 -0
  97. package/dist/details.cjs +1 -1
  98. package/dist/details.js +1 -1
  99. package/dist/{directives-CvYGSW_a.cjs → directives-Bb0S1DKZ.cjs} +4 -4
  100. package/dist/directives-Bb0S1DKZ.cjs.map +1 -0
  101. package/dist/{directives-C2dXgpCY.js → directives-Bfm1lkoy.js} +30 -23
  102. package/dist/directives-Bfm1lkoy.js.map +1 -0
  103. package/dist/directives.cjs +1 -1
  104. package/dist/directives.js +2 -2
  105. package/dist/{divider-D0pGX2VB.js → divider-BeyX_C0A.js} +2 -2
  106. package/dist/{divider-D0pGX2VB.js.map → divider-BeyX_C0A.js.map} +1 -1
  107. package/dist/{divider-rNsWCvMi.cjs → divider-Ck2C1sKl.cjs} +1 -1
  108. package/dist/{divider-rNsWCvMi.cjs.map → divider-Ck2C1sKl.cjs.map} +1 -1
  109. package/dist/divider.cjs +1 -1
  110. package/dist/divider.js +1 -1
  111. package/dist/dropdown.cjs +1 -1
  112. package/dist/dropdown.js +2 -2
  113. package/dist/{expand-FcKAzJta.js → expand-BYsSEtp6.js} +53 -53
  114. package/dist/expand-BYsSEtp6.js.map +1 -0
  115. package/dist/expand-CUF163mg.cjs +141 -0
  116. package/dist/expand-CUF163mg.cjs.map +1 -0
  117. package/dist/expand.cjs +1 -1
  118. package/dist/expand.js +1 -1
  119. package/dist/fab.cjs +1 -1
  120. package/dist/fab.js +2 -2
  121. package/dist/{float-CQ1WEp3M.js → float-Cgllk_H9.js} +2 -2
  122. package/dist/{float-CQ1WEp3M.js.map → float-Cgllk_H9.js.map} +1 -1
  123. package/dist/{float-CDjgxWyy.cjs → float-OvqX0nqG.cjs} +1 -1
  124. package/dist/{float-CDjgxWyy.cjs.map → float-OvqX0nqG.cjs.map} +1 -1
  125. package/dist/float.cjs +1 -1
  126. package/dist/float.js +1 -1
  127. package/dist/form-4GKROq2P.cjs +27 -0
  128. package/dist/form-4GKROq2P.cjs.map +1 -0
  129. package/dist/{form-H24puioV.js → form-DxaV_Ose.js} +39 -39
  130. package/dist/form-DxaV_Ose.js.map +1 -0
  131. package/dist/form.cjs +3 -3
  132. package/dist/form.cjs.map +1 -1
  133. package/dist/form.js +34 -34
  134. package/dist/form.js.map +1 -1
  135. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  136. package/dist/gravity-sVK3zGBF.js.map +1 -1
  137. package/dist/handover/agent-runtime-followups.md +1 -1
  138. package/dist/handover/agent-runtime-v1.md +3 -3
  139. package/dist/{icons-DBxfN91B.js → icons-CJ2mXcBi.js} +9 -9
  140. package/dist/icons-CJ2mXcBi.js.map +1 -0
  141. package/dist/icons-sZ-LybA9.cjs +24 -0
  142. package/dist/icons-sZ-LybA9.cjs.map +1 -0
  143. package/dist/icons.cjs +1 -1
  144. package/dist/icons.js +1 -1
  145. package/dist/{iframe-BDVElN8z.js → iframe-DWvN5nGB.js} +11 -11
  146. package/dist/iframe-DWvN5nGB.js.map +1 -0
  147. package/dist/{iframe-CG-z9qev.cjs → iframe-DpCv-QH2.cjs} +7 -7
  148. package/dist/iframe-DpCv-QH2.cjs.map +1 -0
  149. package/dist/iframe.cjs +1 -1
  150. package/dist/iframe.js +1 -1
  151. package/dist/index.cjs +1 -1
  152. package/dist/index.js +37 -37
  153. package/dist/{input-Bt_o4sYo.js → input-BCCHz6tB.js} +7 -7
  154. package/dist/input-BCCHz6tB.js.map +1 -0
  155. package/dist/{input-B14Nn6xD.cjs → input-Z-3N5JMv.cjs} +2 -2
  156. package/dist/input-Z-3N5JMv.cjs.map +1 -0
  157. package/dist/{input-chip-DEqO0DXc.js → input-chip-BOrcKH-H.js} +2 -2
  158. package/dist/{input-chip-DEqO0DXc.js.map → input-chip-BOrcKH-H.js.map} +1 -1
  159. package/dist/{input-chip-ugYu9Fn9.cjs → input-chip-ChAgRCXZ.cjs} +1 -1
  160. package/dist/{input-chip-ugYu9Fn9.cjs.map → input-chip-ChAgRCXZ.cjs.map} +1 -1
  161. package/dist/input.cjs +1 -1
  162. package/dist/input.js +1 -1
  163. package/dist/json.cjs +1 -1
  164. package/dist/json.js +3 -3
  165. package/dist/kbd.cjs +1 -1
  166. package/dist/kbd.js +2 -2
  167. package/dist/{layout-BJ_43VrH.js → layout-CFiG3lNT.js} +1 -1
  168. package/dist/{layout-BJ_43VrH.js.map → layout-CFiG3lNT.js.map} +1 -1
  169. package/dist/{layout-DF9ZaQ-b.cjs → layout-DZ4dpLh9.cjs} +1 -1
  170. package/dist/{layout-DF9ZaQ-b.cjs.map → layout-DZ4dpLh9.cjs.map} +1 -1
  171. package/dist/layout.cjs +1 -1
  172. package/dist/layout.js +2 -2
  173. package/dist/lazy-BaAiIUru.js +19 -0
  174. package/dist/lazy-BaAiIUru.js.map +1 -0
  175. package/dist/lazy-C-7a4FAe.cjs +1 -0
  176. package/dist/lazy-C-7a4FAe.cjs.map +1 -0
  177. package/dist/{lightbox-ZmuoBBFT.js → lightbox-B7Y4Nij_.js} +2 -2
  178. package/dist/lightbox-B7Y4Nij_.js.map +1 -0
  179. package/dist/{lightbox-B47Zoqv-.cjs → lightbox-Dpwsn8Qr.cjs} +1 -1
  180. package/dist/lightbox-Dpwsn8Qr.cjs.map +1 -0
  181. package/dist/lightbox.cjs +1 -1
  182. package/dist/lightbox.js +1 -1
  183. package/dist/{list-CaSWrlG2.cjs → list-BhM-6dAi.cjs} +1 -1
  184. package/dist/{list-CaSWrlG2.cjs.map → list-BhM-6dAi.cjs.map} +1 -1
  185. package/dist/{list-C47xzld_.js → list-C5WVoIfJ.js} +2 -2
  186. package/dist/{list-C47xzld_.js.map → list-C5WVoIfJ.js.map} +1 -1
  187. package/dist/list.cjs +1 -1
  188. package/dist/list.js +1 -1
  189. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  190. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  191. package/dist/{menu-8RObM6Ie.js → menu-CBAAJoHu.js} +3 -3
  192. package/dist/{menu-8RObM6Ie.js.map → menu-CBAAJoHu.js.map} +1 -1
  193. package/dist/{menu-Jpsy85SX.cjs → menu-DFQjJk3H.cjs} +1 -1
  194. package/dist/{menu-Jpsy85SX.cjs.map → menu-DFQjJk3H.cjs.map} +1 -1
  195. package/dist/menu.cjs +1 -1
  196. package/dist/menu.js +1 -1
  197. package/dist/{mixins-DTzfFVyv.js → mixins-DGBI7YPO.js} +11 -11
  198. package/dist/mixins-DGBI7YPO.js.map +1 -0
  199. package/dist/{mixins-DPdzC9ZH.cjs → mixins-fIpzhVMd.cjs} +1 -1
  200. package/dist/mixins-fIpzhVMd.cjs.map +1 -0
  201. package/dist/mixins.cjs +1 -1
  202. package/dist/mixins.js +2 -2
  203. package/dist/nav-drawer.cjs +1 -1
  204. package/dist/nav-drawer.js +1 -1
  205. package/dist/navigation-bar.cjs +1 -1
  206. package/dist/navigation-bar.js +1 -1
  207. package/dist/navigation-rail.cjs +3 -3
  208. package/dist/navigation-rail.cjs.map +1 -1
  209. package/dist/navigation-rail.js +11 -10
  210. package/dist/navigation-rail.js.map +1 -1
  211. package/dist/notification-B6yDL91t.cjs +24 -0
  212. package/dist/notification-B6yDL91t.cjs.map +1 -0
  213. package/dist/{notification-Ccktcj9H.js → notification-BB9OBRCr.js} +22 -22
  214. package/dist/notification-BB9OBRCr.js.map +1 -0
  215. package/dist/notification.cjs +1 -1
  216. package/dist/notification.js +1 -1
  217. package/dist/{option-CkMxwBqU.js → option-B21ImL0k.js} +2 -2
  218. package/dist/{option-CkMxwBqU.js.map → option-B21ImL0k.js.map} +1 -1
  219. package/dist/{option-0aNiVB3Q.cjs → option-CJQM5I9q.cjs} +1 -1
  220. package/dist/{option-0aNiVB3Q.cjs.map → option-CJQM5I9q.cjs.map} +1 -1
  221. package/dist/option.cjs +1 -1
  222. package/dist/option.js +1 -1
  223. package/dist/{overlay-H3Wt_dgQ.js → overlay-CWsihJ-E.js} +75 -67
  224. package/dist/overlay-CWsihJ-E.js.map +1 -0
  225. package/dist/overlay-DkIX9Ig3.cjs +58 -0
  226. package/dist/overlay-DkIX9Ig3.cjs.map +1 -0
  227. package/dist/overlay.cjs +1 -1
  228. package/dist/{overlay.confirm-body-Dxn_wNm3.js → overlay.confirm-body-CPqqPNks.js} +10 -10
  229. package/dist/overlay.confirm-body-CPqqPNks.js.map +1 -0
  230. package/dist/{overlay.confirm-body-CR9xaqOE.cjs → overlay.confirm-body-DwTfiNlV.cjs} +3 -3
  231. package/dist/overlay.confirm-body-DwTfiNlV.cjs.map +1 -0
  232. package/dist/overlay.js +4 -4
  233. package/dist/overlay.service-DU1nqh6A.cjs +1 -0
  234. package/dist/{overlay.service-DEj3rfRr.cjs.map → overlay.service-DU1nqh6A.cjs.map} +1 -1
  235. package/dist/{overlay.service-C46kOtUi.js → overlay.service-KTgBxjFb.js} +4 -4
  236. package/dist/{overlay.service-C46kOtUi.js.map → overlay.service-KTgBxjFb.js.map} +1 -1
  237. package/dist/{progress-zs18GR6C.cjs → progress-B-Qg44XY.cjs} +1 -1
  238. package/dist/{progress-zs18GR6C.cjs.map → progress-B-Qg44XY.cjs.map} +1 -1
  239. package/dist/{progress-BK7gSq8j.js → progress-CUSS1sNz.js} +2 -2
  240. package/dist/{progress-BK7gSq8j.js.map → progress-CUSS1sNz.js.map} +1 -1
  241. package/dist/progress.cjs +1 -1
  242. package/dist/progress.js +1 -1
  243. package/dist/{radio-group-1HCpzRUB.js → radio-group-AHLvrN8O.js} +7 -7
  244. package/dist/radio-group-AHLvrN8O.js.map +1 -0
  245. package/dist/{radio-group-DbYlyPc-.cjs → radio-group-BEtvCSS1.cjs} +2 -2
  246. package/dist/radio-group-BEtvCSS1.cjs.map +1 -0
  247. package/dist/radio-group.cjs +1 -1
  248. package/dist/radio-group.js +1 -1
  249. package/dist/range.cjs +1 -1
  250. package/dist/range.js +2 -2
  251. package/dist/select-BWpV2iv-.cjs +56 -0
  252. package/dist/select-BWpV2iv-.cjs.map +1 -0
  253. package/dist/{select-CEyhNtZ2.js → select-Cawz88lG.js} +46 -46
  254. package/dist/select-Cawz88lG.js.map +1 -0
  255. package/dist/select.cjs +1 -1
  256. package/dist/select.js +1 -1
  257. package/dist/skeleton.cjs +1 -1
  258. package/dist/skeleton.js +2 -2
  259. package/dist/skills/SKILL.md +17 -11
  260. package/dist/skills/overlay.md +14 -7
  261. package/dist/skills/schmancy/SKILL.md +17 -11
  262. package/dist/skills/schmancy/overlay.md +14 -7
  263. package/dist/skills/schmancy/steps.md +68 -34
  264. package/dist/skills/steps.md +68 -34
  265. package/dist/slider.cjs +1 -1
  266. package/dist/slider.js +2 -2
  267. package/dist/{sound.service-DO4SmUUT.js → sound.service-CK-5zob-.js} +4 -3
  268. package/dist/sound.service-CK-5zob-.js.map +1 -0
  269. package/dist/{sound.service-G_8GV_6L.cjs → sound.service-D2GGaBXc.cjs} +1 -1
  270. package/dist/sound.service-D2GGaBXc.cjs.map +1 -0
  271. package/dist/{splash-screen-B1mM4_xz.js → splash-screen-BUEtjHXC.js} +13 -13
  272. package/dist/splash-screen-BUEtjHXC.js.map +1 -0
  273. package/dist/{splash-screen-cbz4bxjB.cjs → splash-screen-DqPuipox.cjs} +6 -6
  274. package/dist/splash-screen-DqPuipox.cjs.map +1 -0
  275. package/dist/splash-screen.cjs +1 -1
  276. package/dist/splash-screen.js +1 -1
  277. package/dist/{src-tncsWsTY.js → src-CIqAj3Eh.js} +45 -45
  278. package/dist/src-CIqAj3Eh.js.map +1 -0
  279. package/dist/{src-czeiuT1m.cjs → src-CYqBQTyt.cjs} +6 -6
  280. package/dist/src-CYqBQTyt.cjs.map +1 -0
  281. package/dist/{state-Cx0aoL5e.cjs → state-BxDNox-2.cjs} +1 -1
  282. package/dist/{state-Cx0aoL5e.cjs.map → state-BxDNox-2.cjs.map} +1 -1
  283. package/dist/{state-DJDp3N7J.js → state-CnZCDMT0.js} +9 -9
  284. package/dist/{state-DJDp3N7J.js.map → state-CnZCDMT0.js.map} +1 -1
  285. package/dist/state.cjs +1 -1
  286. package/dist/state.js +2 -2
  287. package/dist/steps.cjs +35 -19
  288. package/dist/steps.cjs.map +1 -1
  289. package/dist/steps.js +96 -73
  290. package/dist/steps.js.map +1 -1
  291. package/dist/{surface-CYBl8_a3.js → surface-BMdG3dKQ.js} +2 -2
  292. package/dist/{surface-CYBl8_a3.js.map → surface-BMdG3dKQ.js.map} +1 -1
  293. package/dist/{surface-C3cxTcJD.cjs → surface-CWwYD_z2.cjs} +1 -1
  294. package/dist/{surface-C3cxTcJD.cjs.map → surface-CWwYD_z2.cjs.map} +1 -1
  295. package/dist/surface.cjs +1 -1
  296. package/dist/surface.js +1 -1
  297. package/dist/switch.cjs +4 -4
  298. package/dist/switch.cjs.map +1 -1
  299. package/dist/switch.js +11 -11
  300. package/dist/switch.js.map +1 -1
  301. package/dist/table.cjs +1 -1
  302. package/dist/table.js +2 -2
  303. package/dist/{tabs-DHy93Q3N.js → tabs-CDQYDc6v.js} +2 -2
  304. package/dist/{tabs-DHy93Q3N.js.map → tabs-CDQYDc6v.js.map} +1 -1
  305. package/dist/{tabs-ORQ_Zd43.cjs → tabs-CbD9E1gd.cjs} +1 -1
  306. package/dist/{tabs-ORQ_Zd43.cjs.map → tabs-CbD9E1gd.cjs.map} +1 -1
  307. package/dist/tabs.cjs +1 -1
  308. package/dist/tabs.js +1 -1
  309. package/dist/teleport.cjs +1 -1
  310. package/dist/teleport.js +1 -1
  311. package/dist/textarea-Brgi-vD2.cjs +43 -0
  312. package/dist/textarea-Brgi-vD2.cjs.map +1 -0
  313. package/dist/{textarea-DHIMt-ly.js → textarea-MPyrMi-S.js} +4 -4
  314. package/dist/textarea-MPyrMi-S.js.map +1 -0
  315. package/dist/textarea.cjs +1 -1
  316. package/dist/textarea.js +1 -1
  317. package/dist/{theme-CJpjkqHr.cjs → theme-BMbXoqi0.cjs} +1 -1
  318. package/dist/{theme-CJpjkqHr.cjs.map → theme-BMbXoqi0.cjs.map} +1 -1
  319. package/dist/{theme-CgI9PRco.js → theme-DZu-xmVp.js} +5 -5
  320. package/dist/{theme-CgI9PRco.js.map → theme-DZu-xmVp.js.map} +1 -1
  321. package/dist/{theme-button--FuBkuVr.cjs → theme-button-B0OLb-43.cjs} +1 -1
  322. package/dist/{theme-button--FuBkuVr.cjs.map → theme-button-B0OLb-43.cjs.map} +1 -1
  323. package/dist/{theme-button-D-FXb3oO.js → theme-button-D_qGvEYs.js} +2 -2
  324. package/dist/{theme-button-D-FXb3oO.js.map → theme-button-D_qGvEYs.js.map} +1 -1
  325. package/dist/theme-button.cjs +1 -1
  326. package/dist/theme-button.js +1 -1
  327. package/dist/theme.cjs +1 -1
  328. package/dist/theme.js +3 -3
  329. package/dist/{theme.service-BfTK1Wtl.js → theme.service-7VkM-hVf.js} +15 -11
  330. package/dist/theme.service-7VkM-hVf.js.map +1 -0
  331. package/dist/theme.service-B15FdjOS.cjs +1 -0
  332. package/dist/theme.service-B15FdjOS.cjs.map +1 -0
  333. package/dist/tree.cjs +4 -4
  334. package/dist/tree.cjs.map +1 -1
  335. package/dist/tree.js +8 -8
  336. package/dist/tree.js.map +1 -1
  337. package/dist/{typography-CxA3sx9B.cjs → typography-D4Fo1UGh.cjs} +3 -3
  338. package/dist/{typography-CxA3sx9B.cjs.map → typography-D4Fo1UGh.cjs.map} +1 -1
  339. package/dist/{typography-BEGLfHwz.js → typography-SZhjb_4R.js} +9 -9
  340. package/dist/{typography-BEGLfHwz.js.map → typography-SZhjb_4R.js.map} +1 -1
  341. package/dist/typography.cjs +1 -1
  342. package/dist/typography.js +1 -1
  343. package/dist/visually-hidden.cjs +1 -1
  344. package/dist/visually-hidden.js +2 -2
  345. package/dist/{window-B_n4P9az.js → window-BDVyrBnk.js} +101 -100
  346. package/dist/window-BDVyrBnk.js.map +1 -0
  347. package/dist/window-BbBYjm7R.cjs +59 -0
  348. package/dist/window-BbBYjm7R.cjs.map +1 -0
  349. package/dist/window.cjs +1 -1
  350. package/dist/window.js +1 -1
  351. package/package.json +1 -1
  352. package/skills/schmancy/SKILL.md +17 -11
  353. package/skills/schmancy/overlay.md +14 -7
  354. package/skills/schmancy/steps.md +68 -34
  355. package/src/area/area.component.ts +1 -1
  356. package/src/area/area.service.test.ts +2 -2
  357. package/src/area/area.service.ts +1 -1
  358. package/src/area/lazy.ts +87 -83
  359. package/src/audio/sound.service.ts +3 -3
  360. package/src/breadcrumb/breadcrumb.ts +2 -2
  361. package/src/button/button.ts +11 -11
  362. package/src/button/icon-button.ts +18 -18
  363. package/src/card/card.ts +16 -16
  364. package/src/content-drawer/drawer.ts +6 -6
  365. package/src/details/details.ts +55 -55
  366. package/src/directives/ai-badge.ts +2 -1
  367. package/src/directives/animate-text.ts +2 -1
  368. package/src/directives/art/art.directive.ts +2 -1
  369. package/src/directives/battery.ts +2 -1
  370. package/src/directives/confirm-click.ts +5 -3
  371. package/src/directives/cursor-glow.ts +2 -1
  372. package/src/directives/cycle-text.ts +2 -1
  373. package/src/directives/depth-of-field.ts +2 -1
  374. package/src/directives/drag.ts +4 -2
  375. package/src/directives/fyi.ts +2 -1
  376. package/src/directives/gravity.ts +2 -1
  377. package/src/directives/hummingbird.ts +2 -1
  378. package/src/directives/intersect.ts +3 -2
  379. package/src/directives/liquid.ts +2 -1
  380. package/src/directives/living-border.ts +2 -1
  381. package/src/directives/long-press.ts +2 -1
  382. package/src/directives/magnetic.ts +2 -1
  383. package/src/directives/missed-punch.ts +2 -1
  384. package/src/directives/nebula.ts +6 -5
  385. package/src/directives/overflow-within.ts +2 -1
  386. package/src/directives/reveal.ts +193 -118
  387. package/src/directives/urgent.ts +2 -1
  388. package/src/directives/working-snake.ts +2 -1
  389. package/src/expand/expand-root.component.ts +27 -27
  390. package/src/expand/expand.component.ts +48 -48
  391. package/src/form/fields/autocomplete/autocomplete.ts +154 -154
  392. package/src/form/fields/checkbox/checkbox.ts +4 -4
  393. package/src/form/fields/chips/chips.ts +2 -2
  394. package/src/form/fields/chips/filter-chip.ts +15 -15
  395. package/src/form/fields/date-range/date-range.ts +2 -2
  396. package/src/form/fields/input/input.ts +12 -12
  397. package/src/form/fields/radio-group/radio-button.ts +2 -2
  398. package/src/form/fields/radio-group/radio-group.ts +3 -3
  399. package/src/form/fields/select/select.ts +56 -56
  400. package/src/form/fields/switch/switch.ts +10 -10
  401. package/src/form/fields/textarea/textarea.ts +2 -2
  402. package/src/form/form-summary.ts +33 -33
  403. package/src/form/form.ts +45 -45
  404. package/src/icons/icon.ts +10 -8
  405. package/src/iframe/iframe.ts +11 -11
  406. package/src/lightbox/flip-directive.ts +2 -1
  407. package/src/lightbox/lightbox.directive.ts +2 -1
  408. package/src/nav-drawer/navbar.ts +3 -3
  409. package/src/navigation-rail/navigation-rail.ts +10 -10
  410. package/src/notification/notification.ts +22 -22
  411. package/src/overlay/overlay.component.ts +106 -83
  412. package/src/overlay/overlay.confirm-body.ts +4 -4
  413. package/src/overlay/overlay.service.ts +3 -3
  414. package/src/overlay/overlay.types.ts +4 -2
  415. package/src/splash-screen/splash-screen.ts +11 -11
  416. package/src/state/index.ts +12 -12
  417. package/src/state/schmancy-context.ts +9 -9
  418. package/src/steps/index.ts +1 -1
  419. package/src/steps/schmancy-step.ts +91 -65
  420. package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
  421. package/src/steps/steps.context.ts +5 -4
  422. package/src/steps/steps.test.ts +120 -0
  423. package/src/teleport/teleport.component.ts +2 -2
  424. package/src/theme/theme.service.ts +17 -17
  425. package/src/tree/tree.ts +7 -7
  426. package/src/typography/typography.ts +7 -7
  427. package/src/window/window-manager.ts +20 -20
  428. package/src/window/window.ts +100 -100
  429. package/types/mixins/SchmancyElement.d.ts +3 -2
  430. package/types/mixins/formField.mixin.d.ts +1 -1
  431. package/types/src/area/area.service.d.ts +1 -1
  432. package/types/src/area/lazy.d.ts +0 -6
  433. package/types/src/audio/sound.service.d.ts +1 -2
  434. package/types/src/breadcrumb/breadcrumb.d.ts +1 -1
  435. package/types/src/button/button.d.ts +3 -3
  436. package/types/src/button/icon-button.d.ts +6 -7
  437. package/types/src/card/card.d.ts +5 -5
  438. package/types/src/content-drawer/drawer.d.ts +1 -1
  439. package/types/src/details/details.d.ts +2 -21
  440. package/types/src/directives/ai-badge.d.ts +2 -2
  441. package/types/src/directives/animate-text.d.ts +2 -2
  442. package/types/src/directives/art/art.directive.d.ts +2 -2
  443. package/types/src/directives/battery.d.ts +2 -2
  444. package/types/src/directives/confirm-click.d.ts +2 -2
  445. package/types/src/directives/cursor-glow.d.ts +2 -2
  446. package/types/src/directives/cycle-text.d.ts +2 -2
  447. package/types/src/directives/depth-of-field.d.ts +2 -2
  448. package/types/src/directives/drag.d.ts +4 -4
  449. package/types/src/directives/fyi.d.ts +2 -2
  450. package/types/src/directives/gravity.d.ts +2 -2
  451. package/types/src/directives/hummingbird.d.ts +2 -2
  452. package/types/src/directives/intersect.d.ts +2 -2
  453. package/types/src/directives/liquid.d.ts +2 -2
  454. package/types/src/directives/living-border.d.ts +2 -2
  455. package/types/src/directives/long-press.d.ts +2 -2
  456. package/types/src/directives/magnetic.d.ts +2 -2
  457. package/types/src/directives/missed-punch.d.ts +2 -2
  458. package/types/src/directives/nebula.d.ts +2 -2
  459. package/types/src/directives/overflow-within.d.ts +2 -2
  460. package/types/src/directives/reveal.d.ts +17 -7
  461. package/types/src/directives/urgent.d.ts +2 -2
  462. package/types/src/directives/working-snake.d.ts +2 -2
  463. package/types/src/expand/expand-root.component.d.ts +8 -8
  464. package/types/src/expand/expand.component.d.ts +11 -11
  465. package/types/src/form/fields/autocomplete/autocomplete.d.ts +29 -29
  466. package/types/src/form/fields/checkbox/checkbox.d.ts +1 -1
  467. package/types/src/form/fields/chips/chips.d.ts +1 -1
  468. package/types/src/form/fields/chips/filter-chip.d.ts +1 -2
  469. package/types/src/form/fields/input/input.d.ts +3 -3
  470. package/types/src/form/fields/radio-group/radio-button.d.ts +1 -1
  471. package/types/src/form/fields/radio-group/radio-group.d.ts +1 -1
  472. package/types/src/form/fields/select/select.d.ts +8 -8
  473. package/types/src/form/fields/switch/switch.d.ts +3 -3
  474. package/types/src/form/fields/textarea/textarea.d.ts +1 -1
  475. package/types/src/form/form-summary.d.ts +7 -7
  476. package/types/src/form/form.d.ts +11 -11
  477. package/types/src/icons/icon.d.ts +2 -2
  478. package/types/src/iframe/iframe.d.ts +3 -3
  479. package/types/src/lightbox/flip-directive.d.ts +2 -2
  480. package/types/src/lightbox/lightbox.directive.d.ts +2 -2
  481. package/types/src/nav-drawer/navbar.d.ts +1 -1
  482. package/types/src/navigation-rail/navigation-rail.d.ts +2 -2
  483. package/types/src/notification/notification.d.ts +8 -8
  484. package/types/src/overlay/overlay.component.d.ts +16 -16
  485. package/types/src/overlay/overlay.confirm-body.d.ts +1 -1
  486. package/types/src/overlay/overlay.types.d.ts +4 -2
  487. package/types/src/splash-screen/splash-screen.d.ts +2 -2
  488. package/types/src/state/index.d.ts +1 -1
  489. package/types/src/state/schmancy-context.d.ts +3 -3
  490. package/types/src/steps/index.d.ts +1 -1
  491. package/types/src/steps/schmancy-step.d.ts +8 -23
  492. package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
  493. package/types/src/steps/steps.context.d.ts +2 -1
  494. package/types/src/steps/steps.test.d.ts +2 -0
  495. package/types/src/teleport/teleport.component.d.ts +1 -1
  496. package/types/src/theme/theme.service.d.ts +1 -4
  497. package/types/src/tree/tree.d.ts +3 -3
  498. package/types/src/typography/typography.d.ts +1 -1
  499. package/types/src/window/window-manager.d.ts +2 -2
  500. package/types/src/window/window.d.ts +20 -20
  501. package/dist/SchmancyElement-BBzRWB1w.cjs +0 -2
  502. package/dist/SchmancyElement-C3CpdNsi.js +0 -284
  503. package/dist/area-BA96mwFY.js.map +0 -1
  504. package/dist/area-DtyQDdOF.cjs +0 -21
  505. package/dist/area-DtyQDdOF.cjs.map +0 -1
  506. package/dist/autocomplete-Bts5Jwwr.cjs +0 -115
  507. package/dist/autocomplete-Bts5Jwwr.cjs.map +0 -1
  508. package/dist/autocomplete-CI4QJXAN.js.map +0 -1
  509. package/dist/button-C89bPnHt.js.map +0 -1
  510. package/dist/button-CkwQH-g3.cjs +0 -62
  511. package/dist/button-CkwQH-g3.cjs.map +0 -1
  512. package/dist/card-BO93_oxQ.cjs.map +0 -1
  513. package/dist/card-CFsCgJKZ.js.map +0 -1
  514. package/dist/chips-6YaoRmeG.js.map +0 -1
  515. package/dist/chips-BfzpsyV1.cjs.map +0 -1
  516. package/dist/date-range-CEo_Kjqw.js.map +0 -1
  517. package/dist/date-range-N-A249O9.cjs.map +0 -1
  518. package/dist/details-BLRPV8sY.cjs +0 -164
  519. package/dist/details-BLRPV8sY.cjs.map +0 -1
  520. package/dist/details-GtpfI2hA.js.map +0 -1
  521. package/dist/directives-C2dXgpCY.js.map +0 -1
  522. package/dist/directives-CvYGSW_a.cjs.map +0 -1
  523. package/dist/expand-FcKAzJta.js.map +0 -1
  524. package/dist/expand-tffQHGbZ.cjs +0 -141
  525. package/dist/expand-tffQHGbZ.cjs.map +0 -1
  526. package/dist/form-H24puioV.js.map +0 -1
  527. package/dist/form-VYhbbir3.cjs +0 -27
  528. package/dist/form-VYhbbir3.cjs.map +0 -1
  529. package/dist/icons-B_a1HStW.cjs +0 -24
  530. package/dist/icons-B_a1HStW.cjs.map +0 -1
  531. package/dist/icons-DBxfN91B.js.map +0 -1
  532. package/dist/iframe-BDVElN8z.js.map +0 -1
  533. package/dist/iframe-CG-z9qev.cjs.map +0 -1
  534. package/dist/input-B14Nn6xD.cjs.map +0 -1
  535. package/dist/input-Bt_o4sYo.js.map +0 -1
  536. package/dist/lazy-CayEFyC3.cjs +0 -1
  537. package/dist/lazy-CayEFyC3.cjs.map +0 -1
  538. package/dist/lazy-D-bO2r4m.js +0 -13
  539. package/dist/lazy-D-bO2r4m.js.map +0 -1
  540. package/dist/lightbox-B47Zoqv-.cjs.map +0 -1
  541. package/dist/lightbox-ZmuoBBFT.js.map +0 -1
  542. package/dist/mixins-DPdzC9ZH.cjs.map +0 -1
  543. package/dist/mixins-DTzfFVyv.js.map +0 -1
  544. package/dist/notification-Ccktcj9H.js.map +0 -1
  545. package/dist/notification-DSkB-sn0.cjs +0 -24
  546. package/dist/notification-DSkB-sn0.cjs.map +0 -1
  547. package/dist/overlay-BS-ta-zq.cjs +0 -58
  548. package/dist/overlay-BS-ta-zq.cjs.map +0 -1
  549. package/dist/overlay-H3Wt_dgQ.js.map +0 -1
  550. package/dist/overlay.confirm-body-CR9xaqOE.cjs.map +0 -1
  551. package/dist/overlay.confirm-body-Dxn_wNm3.js.map +0 -1
  552. package/dist/overlay.service-DEj3rfRr.cjs +0 -1
  553. package/dist/radio-group-1HCpzRUB.js.map +0 -1
  554. package/dist/radio-group-DbYlyPc-.cjs.map +0 -1
  555. package/dist/select-B-SSmUDe.cjs +0 -56
  556. package/dist/select-B-SSmUDe.cjs.map +0 -1
  557. package/dist/select-CEyhNtZ2.js.map +0 -1
  558. package/dist/sound.service-DO4SmUUT.js.map +0 -1
  559. package/dist/sound.service-G_8GV_6L.cjs.map +0 -1
  560. package/dist/splash-screen-B1mM4_xz.js.map +0 -1
  561. package/dist/splash-screen-cbz4bxjB.cjs.map +0 -1
  562. package/dist/src-czeiuT1m.cjs.map +0 -1
  563. package/dist/src-tncsWsTY.js.map +0 -1
  564. package/dist/textarea-CEUaDURR.cjs +0 -43
  565. package/dist/textarea-CEUaDURR.cjs.map +0 -1
  566. package/dist/textarea-DHIMt-ly.js.map +0 -1
  567. package/dist/theme.service-BfTK1Wtl.js.map +0 -1
  568. package/dist/theme.service-Dg7LO0Qz.cjs +0 -1
  569. package/dist/theme.service-Dg7LO0Qz.cjs.map +0 -1
  570. package/dist/window-B_n4P9az.js.map +0 -1
  571. package/dist/window-Vl1u1-EG.cjs +0 -59
  572. package/dist/window-Vl1u1-EG.cjs.map +0 -1
@@ -77,13 +77,13 @@ export default class SchmancySplashScreen extends SchmancyElement {
77
77
  */
78
78
  @property({ type: Boolean, attribute: 'initially-hidden' }) initiallyHidden = false
79
79
 
80
- @state() private _visible = true
80
+ @state() private visible = true
81
81
 
82
82
  connectedCallback() {
83
83
  super.connectedCallback()
84
84
 
85
85
  if (this.initiallyHidden) {
86
- this._visible = false
86
+ this.visible = false
87
87
  return
88
88
  }
89
89
 
@@ -93,7 +93,7 @@ export default class SchmancySplashScreen extends SchmancyElement {
93
93
  zip(readySignal$, minTimer$)
94
94
  .pipe(
95
95
  take(1),
96
- tap(() => this._dismiss()),
96
+ tap(() => this.dismiss()),
97
97
  takeUntil(this.disconnecting),
98
98
  )
99
99
  .subscribe()
@@ -111,11 +111,11 @@ export default class SchmancySplashScreen extends SchmancyElement {
111
111
  * Force the splash to show again (e.g. between route transitions).
112
112
  */
113
113
  public show(): void {
114
- this._visible = true
114
+ this.visible = true
115
115
  }
116
116
 
117
- private _dismiss(): void {
118
- this._visible = false
117
+ private dismiss(): void {
118
+ this.visible = false
119
119
  this.dispatchEvent(
120
120
  new CustomEvent<void>('schmancy-splash-done', {
121
121
  bubbles: true,
@@ -128,10 +128,10 @@ export default class SchmancySplashScreen extends SchmancyElement {
128
128
  return html`
129
129
  <div
130
130
  class="splash-layer"
131
- aria-hidden=${!this._visible}
131
+ aria-hidden=${!this.visible}
132
132
  style=${styleMap({
133
- opacity: this._visible ? '1' : '0',
134
- pointerEvents: this._visible ? 'auto' : 'none',
133
+ opacity: this.visible ? '1' : '0',
134
+ pointerEvents: this.visible ? 'auto' : 'none',
135
135
  })}
136
136
  >
137
137
  <slot name="splash"></slot>
@@ -139,8 +139,8 @@ export default class SchmancySplashScreen extends SchmancyElement {
139
139
  <div
140
140
  class="content-layer"
141
141
  style=${styleMap({
142
- opacity: this._visible ? '0' : '1',
143
- pointerEvents: this._visible ? 'none' : 'auto',
142
+ opacity: this.visible ? '0' : '1',
143
+ pointerEvents: this.visible ? 'none' : 'auto',
144
144
  })}
145
145
  >
146
146
  <slot></slot>
@@ -155,7 +155,7 @@ export interface BaseAPI<NS extends string, T, S extends StorageBackend> {
155
155
  * current value. Exposed on the type so a state can be passed to
156
156
  * `<schmancy-context provides={[…]}>` without casts. Not for end-user
157
157
  * code — the leading underscore signals "internal API". */
158
- _isolatedInstance(): { destroy(): void } & Record<string | symbol, unknown>
158
+ isolatedInstance(): { destroy(): void } & Record<string | symbol, unknown>
159
159
  }
160
160
 
161
161
  export interface SyncState<NS extends string, T, S extends SyncStorage>
@@ -219,12 +219,12 @@ function detectKind(value: unknown): RuntimeKind {
219
219
  // who arrived first.
220
220
  const CLAIMED_KEY = Symbol.for('schmancy.state.claimed')
221
221
  const INSTANCES_KEY = Symbol.for('schmancy.state.instances')
222
- const __claimedSlot = (globalThis as { [CLAIMED_KEY]?: Set<string> })
223
- __claimedSlot[CLAIMED_KEY] ??= new Set<string>()
224
- const claimed = __claimedSlot[CLAIMED_KEY]!
225
- const __instancesSlot = (globalThis as { [INSTANCES_KEY]?: Map<string, unknown> })
226
- __instancesSlot[INSTANCES_KEY] ??= new Map<string, unknown>()
227
- const instances = __instancesSlot[INSTANCES_KEY]!
222
+ const claimedSlot = (globalThis as { [CLAIMED_KEY]?: Set<string> })
223
+ claimedSlot[CLAIMED_KEY] ??= new Set<string>()
224
+ const claimed = claimedSlot[CLAIMED_KEY]!
225
+ const instancesSlot = (globalThis as { [INSTANCES_KEY]?: Map<string, unknown> })
226
+ instancesSlot[INSTANCES_KEY] ??= new Map<string, unknown>()
227
+ const instances = instancesSlot[INSTANCES_KEY]!
228
228
 
229
229
  // ---------------------------------------------------------------------------
230
230
  // Context resolution.
@@ -245,11 +245,11 @@ const instances = __instancesSlot[INSTANCES_KEY]!
245
245
  // cache keys are DOM elements (process-global), but the cache itself must
246
246
  // also be shared.
247
247
  const CACHE_KEY = Symbol.for('schmancy.state.hostResolverCache')
248
- const __cacheSlot = (globalThis as {
248
+ const cacheSlot = (globalThis as {
249
249
  [CACHE_KEY]?: WeakMap<HTMLElement, Map<string, unknown>>
250
250
  })
251
- __cacheSlot[CACHE_KEY] ??= new WeakMap<HTMLElement, Map<string, unknown>>()
252
- const hostResolverCache = __cacheSlot[CACHE_KEY]!
251
+ cacheSlot[CACHE_KEY] ??= new WeakMap<HTMLElement, Map<string, unknown>>()
252
+ const hostResolverCache = cacheSlot[CACHE_KEY]!
253
253
 
254
254
  function resolveContextual(namespace: string, fallback: unknown): unknown {
255
255
  const host = resolveActiveHost()
@@ -436,7 +436,7 @@ interface CreateInstanceOptions {
436
436
  * it does NOT claim the namespace in `claimed`, it does NOT route reads
437
437
  * or writes through `resolveContextual` (so it can serve as the
438
438
  * resolution target without recursion), and it does NOT expose
439
- * `_isolatedInstance` (you only isolate the global). */
439
+ * `isolatedInstance` (you only isolate the global). */
440
440
  isolated?: boolean
441
441
  }
442
442
 
@@ -578,7 +578,7 @@ function createInstance(args: CreateInstanceArgs, options: CreateInstanceOptions
578
578
 
579
579
  // Hook used by `<schmancy-context>` to mint a per-context copy seeded
580
580
  // with the current value. Internal: not part of the public State<> type.
581
- instance._isolatedInstance = (): unknown =>
581
+ instance.isolatedInstance = (): unknown =>
582
582
  createInstance(
583
583
  { namespace, initial: signal.get(), storage: 'memory' },
584
584
  { isolated: true },
@@ -51,7 +51,7 @@ export interface StateTemplate {
51
51
  * per-context copy seeded with the current value, sharing nothing with the
52
52
  * global instance. The returned object exposes `destroy()` so the context
53
53
  * element can flush + close on disconnect. */
54
- _isolatedInstance(): { destroy(): void } & Record<string | symbol, unknown>;
54
+ isolatedInstance(): { destroy(): void } & Record<string | symbol, unknown>;
55
55
  }
56
56
 
57
57
  export class SchmancyContext extends SchmancyElement {
@@ -63,12 +63,12 @@ export class SchmancyContext extends SchmancyElement {
63
63
 
64
64
  // Per-mount records. Keep both the provider (so we can release it on
65
65
  // disconnect) and the isolated instance (so we can destroy it).
66
- private _scoped: Array<{
66
+ private scoped: Array<{
67
67
  isolated: { destroy(): void };
68
68
  provider: ContextProvider<Context<unknown, unknown>>;
69
69
  }> = [];
70
70
 
71
- private _publishEventTargetAsHost = (e: Event): void => {
71
+ private publishEventTargetAsHost = (e: Event): void => {
72
72
  // Publish the deepest event target (across shadow boundaries) rather
73
73
  // than `this`. The downstream `ContextRequestEvent` will be dispatched
74
74
  // from this host and must bubble up through `<schmancy-context>` to
@@ -87,28 +87,28 @@ export class SchmancyContext extends SchmancyElement {
87
87
  override connectedCallback(): void {
88
88
  super.connectedCallback();
89
89
  for (const tmpl of this.provides) {
90
- const isolated = tmpl._isolatedInstance();
90
+ const isolated = tmpl.isolatedInstance();
91
91
  const ctx = createContext<unknown>(stateContextKey(tmpl.namespace));
92
92
  // ContextProvider auto-wires via the host's ReactiveControllerHost
93
93
  // interface (LitElement satisfies it). It listens for
94
94
  // `context-request` events and responds with `isolated` for any
95
95
  // requester whose `event.context === ctx`.
96
96
  const provider = new ContextProvider(this, { context: ctx, initialValue: isolated });
97
- this._scoped.push({ isolated, provider });
97
+ this.scoped.push({ isolated, provider });
98
98
  }
99
99
  for (const type of EVENT_TYPES) {
100
- this.addEventListener(type, this._publishEventTargetAsHost, { capture: true });
100
+ this.addEventListener(type, this.publishEventTargetAsHost, { capture: true });
101
101
  }
102
102
  }
103
103
 
104
104
  override disconnectedCallback(): void {
105
105
  for (const type of EVENT_TYPES) {
106
- this.removeEventListener(type, this._publishEventTargetAsHost, { capture: true });
106
+ this.removeEventListener(type, this.publishEventTargetAsHost, { capture: true });
107
107
  }
108
- for (const entry of this._scoped) {
108
+ for (const entry of this.scoped) {
109
109
  entry.isolated.destroy();
110
110
  }
111
- this._scoped = [];
111
+ this.scoped = [];
112
112
  super.disconnectedCallback();
113
113
  }
114
114
 
@@ -1,3 +1,3 @@
1
1
  export * from './schmancy-step';
2
- export * from './schmancy-steps-container';
2
+ export * from './schmancy-steps';
3
3
  export * from './steps.context';
@@ -1,17 +1,16 @@
1
1
  import { consume } from '@lit/context'
2
+ import { SchmancyElement } from '@mixins/index'
2
3
  import { css, html } from 'lit'
3
- import { customElement, property, state } from 'lit/decorators.js'
4
+ import { customElement, property, queryAssignedNodes, state } from 'lit/decorators.js'
4
5
  import { when } from 'lit/directives/when.js'
5
- import { Subscription } from 'rxjs'
6
- import { stepsContext, StepsController } from './steps.context'
7
- import { SchmancyElement } from '@mixins/index'
6
+ import { takeUntil } from 'rxjs/operators'
7
+ import { StepsController, stepsContext } from './steps.context'
8
8
 
9
9
  @customElement('schmancy-step')
10
10
  export class SchmancyStep extends SchmancyElement {
11
11
  static styles = [css`
12
12
  :host {
13
- display: grid;
14
- /* Base display is just grid, flex properties will be applied dynamically */
13
+ display: block;
15
14
  transition: all 0.2s ease-in-out;
16
15
  }
17
16
  `]
@@ -23,18 +22,11 @@ export class SchmancyStep extends SchmancyElement {
23
22
  */
24
23
  @property({ type: Number }) position = 1
25
24
 
26
- @property({ type: String }) title = ''
25
+ @property({ type: String }) label = ''
27
26
  @property({ type: String }) description = ''
28
27
 
29
- // NEW: Allow a step to be explicitly marked as complete.
30
28
  @property({ type: Boolean, reflect: true }) completed = false
31
29
 
32
- /**
33
- * NEW: Lock API to disable users from going back.
34
- * When set to true, clicking on a previous (completed) step is ignored.
35
- */
36
- @property({ type: Boolean }) lockBack = false
37
-
38
30
  /**
39
31
  * Consume the shared StepsController from context.
40
32
  */
@@ -47,80 +39,71 @@ export class SchmancyStep extends SchmancyElement {
47
39
  @state()
48
40
  private currentStep = 1
49
41
 
50
- /**
51
- * Keep a reference to our subscription so we can unsubscribe cleanly.
52
- */
53
- private subscription?: Subscription
42
+ @state()
43
+ private hasContent = false
44
+
45
+ @queryAssignedNodes({ flatten: true })
46
+ private assignedNodes!: Node[]
54
47
 
55
48
  connectedCallback() {
56
49
  super.connectedCallback()
50
+ this.steps.currentStep$
51
+ .pipe(takeUntil(this.disconnecting))
52
+ .subscribe(step => {
53
+ this.currentStep = step
54
+ this.updateFlexProperties()
55
+ })
57
56
  }
58
57
 
59
58
  firstUpdated() {
60
- // Subscribe to updates from the container's StepsController.
61
- // Context is guaranteed to be available after first render
62
- this.subscription = this.steps.currentStep$.subscribe(step => {
63
- this.currentStep = step
64
- // When the current step changes, update the flex properties
65
- this.updateFlexProperties()
66
- })
67
- // Initial update of flex properties
68
59
  this.updateFlexProperties()
69
60
  }
70
61
 
71
- disconnectedCallback(): void {
72
- this.subscription?.unsubscribe()
73
- super.disconnectedCallback()
62
+ private onSlotChange() {
63
+ this.hasContent = this.assignedNodes.some(
64
+ n => n.nodeType === Node.ELEMENT_NODE || (n.nodeType === Node.TEXT_NODE && n.textContent?.trim() !== ''),
65
+ )
66
+ this.updateFlexProperties()
74
67
  }
75
68
 
76
- /**
77
- * Update the host element's flex properties based on active state
78
- */
79
69
  private updateFlexProperties() {
80
70
  const isActive = this.position === this.currentStep
81
-
82
- if (isActive) {
83
- // Apply flex-grow when active
84
- this.style.flex = '1 1 auto'
85
- } else {
86
- // Make it shrink when not active
87
- this.style.flex = '0 0 auto'
88
- }
71
+ this.style.flex = isActive && this.hasContent ? '1 1 auto' : '0 0 auto'
89
72
  }
90
73
 
91
- /**
92
- * Compute visual status for styling purposes. Note that if a step is explicitly
93
- * marked as completed, it always appears as complete even if it's active.
94
- */
95
74
  get status(): 'complete' | 'current' | 'upcoming' {
96
75
  if (this.completed || this.position < this.currentStep) return 'complete'
97
76
  if (this.position === this.currentStep) return 'current'
98
77
  return 'upcoming'
99
78
  }
100
79
 
101
- /**
102
- * Click handler to allow navigation between completed (or active) steps.
103
- * With lockBack enabled, clicking on a previous step is ignored.
104
- */
105
- private _onStepClick(_e: Event) {
106
- // If lockBack is enabled and the user attempts to go back, do nothing.
107
- if (this.lockBack && this.position < this.currentStep) {
108
- return
109
- }
80
+ private onStepClick() {
81
+ if (this.steps.lockBack && this.position < this.currentStep) return
110
82
  if (this.status !== 'upcoming') {
111
83
  this.steps.setStep(this.position)
112
84
  }
113
85
  }
114
86
 
87
+ private onStepKeydown(e: KeyboardEvent) {
88
+ if (e.key === 'Enter' || e.key === ' ') {
89
+ e.preventDefault()
90
+ this.onStepClick()
91
+ }
92
+ }
93
+
115
94
  render() {
116
- // Determine if the step is currently active.
117
95
  const isActive = this.position === this.currentStep
118
-
119
- // Use computed status for visual styling.
120
96
  const isComplete = this.status === 'complete'
121
97
  const isUpcoming = this.status === 'upcoming'
98
+ const navigable = !isUpcoming && !(this.steps.lockBack && this.position < this.currentStep)
122
99
 
123
- // Enhanced styling classes with better visual hierarchy
100
+ if (this.hasContent) {
101
+ return this.renderContentRow(isActive, isComplete, isUpcoming, navigable)
102
+ }
103
+ return this.renderRailRow(isActive, isComplete, isUpcoming, navigable)
104
+ }
105
+
106
+ private renderContentRow(isActive: boolean, isComplete: boolean, isUpcoming: boolean, navigable: boolean) {
124
107
  const connectorClasses = {
125
108
  'bg-tertiary-default': isComplete,
126
109
  'bg-outlineVariant': !isComplete,
@@ -139,22 +122,19 @@ export class SchmancyStep extends SchmancyElement {
139
122
  'text-surface-onVariant': isUpcoming,
140
123
  }
141
124
 
142
- // If the step is clickable (active or complete), add a pointer cursor.
143
- const clickableClass = isActive || isComplete ? 'cursor-pointer' : ''
125
+ const clickableClass = navigable ? 'cursor-pointer' : ''
144
126
 
145
127
  return html`
146
128
  <li class="relative">
147
- <!-- Connector line - responsive positioning -->
148
129
  <div
149
130
  class="absolute top-8 left-3 sm:left-4 -ml-px w-0.5 transition-colors duration-200 ${this.classMap(connectorClasses)}"
150
131
  style="height: calc(100% + var(--steps-gap, 0px))"
151
132
  aria-hidden="true"
152
133
  ></div>
153
134
 
154
- <!-- Step Button/Label - adjusted padding for mobile -->
155
135
  <button
156
136
  type="button"
157
- @click=${this._onStepClick}
137
+ @click=${this.onStepClick}
158
138
  class="relative flex items-center group transition-all duration-200 hover:scale-[1.02] ${clickableClass} ${isActive ? 'bg-primary-container/20 -mx-1 sm:-mx-2 px-1 sm:px-2 py-2 sm:py-3 rounded-lg' : 'py-1 sm:py-2'}"
159
139
  >
160
140
  <span class="flex items-center h-10 sm:h-12">
@@ -181,7 +161,7 @@ export class SchmancyStep extends SchmancyElement {
181
161
 
182
162
  <span class="flex flex-col items-start justify-center min-w-0 ml-3 sm:ml-6">
183
163
  <schmancy-typography type="title" token="md">
184
- <span class="transition-colors duration-200 ${this.classMap(textClasses)}">${this.title}</span>
164
+ <span class="transition-colors duration-200 ${this.classMap(textClasses)}">${this.label}</span>
185
165
  </schmancy-typography>
186
166
  ${when(
187
167
  this.description,
@@ -194,18 +174,64 @@ export class SchmancyStep extends SchmancyElement {
194
174
  </span>
195
175
  </button>
196
176
 
197
- <!-- Render step content if the step is active - responsive spacing -->
198
177
  ${when(
199
178
  isActive,
200
179
  () => html`
201
180
  <div class="ml-6 sm:ml-10 mt-3 sm:mt-4 pb-6 sm:pb-8 transition-all duration-300 ease-out">
202
- <slot></slot>
181
+ <slot @slotchange=${this.onSlotChange}></slot>
203
182
  </div>
204
183
  `,
205
184
  )}
185
+ ${when(!isActive, () => html`<slot @slotchange=${this.onSlotChange} style="display:none"></slot>`)}
206
186
  </li>
207
187
  `
208
188
  }
189
+
190
+ private renderRailRow(isActive: boolean, isComplete: boolean, _isUpcoming: boolean, navigable: boolean) {
191
+ const isLast = !this.nextElementSibling?.matches('schmancy-step')
192
+ const labelClass = isActive
193
+ ? 'text-primary-default'
194
+ : isComplete
195
+ ? 'text-surface-on'
196
+ : 'text-surface-on-variant'
197
+
198
+ const dotClass = [
199
+ 'relative z-10 w-3 h-3 rounded-full shrink-0 transition-colors duration-300',
200
+ isComplete || isActive ? 'bg-primary-default' : 'bg-outline',
201
+ isActive ? 'ring-2 ring-offset-2 ring-offset-surface-containerLow ring-primary-default' : '',
202
+ ].join(' ')
203
+
204
+ return html`
205
+ <div
206
+ class="relative flex items-center gap-4 rounded-lg -mx-2 px-2 py-3 transition-colors duration-200 ${
207
+ navigable
208
+ ? 'cursor-pointer hover:bg-primary-default/8 focus-visible:ring-2 focus-visible:ring-primary-default'
209
+ : ''
210
+ }"
211
+ role=${navigable ? 'button' : 'presentation'}
212
+ tabindex=${navigable ? '0' : '-1'}
213
+ aria-current=${isActive ? 'step' : 'false'}
214
+ aria-label=${navigable ? `Go back to ${this.label}` : this.label}
215
+ @click=${this.onStepClick}
216
+ @keydown=${this.onStepKeydown}
217
+ >
218
+ ${when(
219
+ !isLast,
220
+ () => html`
221
+ <div
222
+ class="absolute left-3.5 top-1/2 w-px h-full transition-colors duration-300 ${
223
+ isComplete ? 'bg-primary-default' : 'bg-outline'
224
+ }"
225
+ aria-hidden="true"
226
+ ></div>
227
+ `,
228
+ )}
229
+ <div class=${dotClass} aria-hidden="true"></div>
230
+ <schmancy-typography type="label" token="lg" class=${labelClass}>${this.label}</schmancy-typography>
231
+ </div>
232
+ <slot @slotchange=${this.onSlotChange} style="display:none"></slot>
233
+ `
234
+ }
209
235
  }
210
236
 
211
237
  declare global {
@@ -12,12 +12,11 @@ import { StepsController, stepsContext } from './steps.context'
12
12
  */
13
13
  export type SchmancyStepsChangeEvent = CustomEvent<{ value: number }>
14
14
 
15
- @customElement('schmancy-steps-container')
16
- export class SchmancyStepsContainer extends SchmancyElement {
15
+ @customElement('schmancy-steps')
16
+ export class SchmancySteps extends SchmancyElement {
17
17
  static styles = [css`
18
18
  :host {
19
19
  display: block;
20
- overflow: auto;
21
20
  }
22
21
  `]
23
22
 
@@ -27,23 +26,27 @@ export class SchmancyStepsContainer extends SchmancyElement {
27
26
  stepsController = this.controller
28
27
 
29
28
  @property({ type: Number, reflect: true })
30
- set currentStep(value: number) {
29
+ set value(v: number) {
31
30
  const oldValue = this.controller.currentStep
32
- if (oldValue !== value) {
33
- this.controller.setStep(value)
31
+ if (oldValue !== v) {
32
+ this.controller.setStep(v)
34
33
  }
35
34
  }
36
35
 
37
- get currentStep(): number {
36
+ get value(): number {
38
37
  return this.controller.currentStep
39
38
  }
40
39
 
41
40
  /**
42
- * Gap between steps. Maps to Tailwind gap classes.
43
- * @default 4
41
+ * Block back-navigation for the whole stepper.
44
42
  */
45
- @property({ type: Number, reflect: true })
46
- gap: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 = 4
43
+ @property({ type: Boolean, reflect: true })
44
+ set lockBack(v: boolean) {
45
+ this.controller.lockBack = v
46
+ }
47
+ get lockBack(): boolean {
48
+ return this.controller.lockBack
49
+ }
47
50
 
48
51
  connectedCallback() {
49
52
  super.connectedCallback()
@@ -54,8 +57,6 @@ export class SchmancyStepsContainer extends SchmancyElement {
54
57
  distinctUntilChanged(),
55
58
  tap(step => {
56
59
  this.requestUpdate()
57
- // Use dispatchScopedEvent with bubbles: false to prevent collision
58
- // with 'change' events bubbling up from inputs inside steps
59
60
  this.dispatchScopedEvent('change', { value: step }, { bubbles: false })
60
61
  }),
61
62
  takeUntil(this.disconnecting),
@@ -64,39 +65,18 @@ export class SchmancyStepsContainer extends SchmancyElement {
64
65
  }
65
66
 
66
67
  /**
67
- * Handle change events - stop propagation of bubbled events from children.
68
- * This prevents form inputs inside steps from triggering the parent's @change handler.
68
+ * Handle change events stop propagation of bubbled events from children.
69
69
  */
70
70
  private handleChange = (e: Event) => {
71
- // Only stop propagation if the event is NOT from this component
72
- // (i.e., it's bubbling up from a child element like an input)
73
71
  if (e.target !== this) {
74
72
  e.stopPropagation()
75
73
  }
76
74
  }
77
75
 
78
76
  render() {
79
- const gapClass = `gap-${this.gap}`
80
- const gapRem =
81
- {
82
- 0: '0',
83
- 1: '0.25rem',
84
- 2: '0.5rem',
85
- 3: '0.75rem',
86
- 4: '1rem',
87
- 5: '1.25rem',
88
- 6: '1.5rem',
89
- 8: '2rem',
90
- 10: '2.5rem',
91
- 12: '3rem',
92
- 16: '4rem',
93
- 20: '5rem',
94
- 24: '6rem',
95
- }[this.gap] || '1rem'
96
-
97
77
  return html`
98
- <nav class="flex h-full w-full" aria-label="Progress" @change=${this.handleChange}>
99
- <ol class="flex flex-col flex-1 ${gapClass}" role="list" style="--steps-gap: ${gapRem}">
78
+ <nav aria-label="Progress" @change=${this.handleChange}>
79
+ <ol role="list" style="display:contents">
100
80
  <slot></slot>
101
81
  </ol>
102
82
  </nav>
@@ -106,6 +86,6 @@ export class SchmancyStepsContainer extends SchmancyElement {
106
86
 
107
87
  declare global {
108
88
  interface HTMLElementTagNameMap {
109
- 'schmancy-steps-container': SchmancyStepsContainer
89
+ 'schmancy-steps': SchmancySteps
110
90
  }
111
91
  }
@@ -2,18 +2,19 @@ import { createContext } from '@lit/context'
2
2
  import { BehaviorSubject } from 'rxjs'
3
3
 
4
4
  export class StepsController {
5
- private _currentStep = new BehaviorSubject(1)
5
+ private stepSubject = new BehaviorSubject(1)
6
+ lockBack = false
6
7
 
7
8
  get currentStep$() {
8
- return this._currentStep.asObservable()
9
+ return this.stepSubject.asObservable()
9
10
  }
10
11
 
11
12
  get currentStep() {
12
- return this._currentStep.value
13
+ return this.stepSubject.value
13
14
  }
14
15
 
15
16
  setStep(step: number) {
16
- this._currentStep.next(step)
17
+ this.stepSubject.next(step)
17
18
  }
18
19
  }
19
20