@mhmo91/schmancy 0.9.28 → 0.10.2

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 (1049) hide show
  1. package/custom-elements.json +1005 -2215
  2. package/dist/active-host-CcIa2tmW.cjs +1 -0
  3. package/dist/active-host-CcIa2tmW.cjs.map +1 -0
  4. package/dist/active-host-CvNYoprt.js +57 -0
  5. package/dist/active-host-CvNYoprt.js.map +1 -0
  6. package/dist/agent/{flow-CvG1fLW5.js.map → flow-CaPi2G8y.js.map} +1 -1
  7. package/dist/agent/{rolldown-runtime-BIIoCavz.js → rolldown-runtime-DsMetpgY.js} +2 -9
  8. package/dist/agent/schmancy.agent.js +12678 -7791
  9. package/dist/agent/schmancy.agent.js.map +1 -1
  10. package/dist/agent/schmancy.manifest.json +265 -1453
  11. package/dist/agent/{vendor-highlight-Dow87ZL_.js → vendor-highlight-CHJZQQB7.js} +85 -90
  12. package/dist/agent/{vendor-highlight-Dow87ZL_.js.map → vendor-highlight-CHJZQQB7.js.map} +1 -1
  13. package/dist/agent/{vendor-jsqr-Bl4iAtKC.js → vendor-jsqr-r7GNh4P3.js} +1 -1
  14. package/dist/agent/{vendor-jsqr-Bl4iAtKC.js.map → vendor-jsqr-r7GNh4P3.js.map} +1 -1
  15. package/dist/agent/{vendor-material-color-DcL7ZPxx.js.map → vendor-material-color-Be96dpGE.js.map} +1 -1
  16. package/dist/{animation-hXFClrIn.js.map → animation-BK-8BwY8.js.map} +1 -1
  17. package/dist/{animation-CQRdLgzX.cjs.map → animation-CO_Csq84.cjs.map} +1 -1
  18. package/dist/{area-BGBCMC79.js → area-DHVANBbr.js} +20 -15
  19. package/dist/area-DHVANBbr.js.map +1 -0
  20. package/dist/area-ZupIezvU.cjs +12 -0
  21. package/dist/area-ZupIezvU.cjs.map +1 -0
  22. package/dist/area.cjs +1 -1
  23. package/dist/area.js +2 -2
  24. package/dist/{audio-Dvr-RBzE.cjs → audio-CluX8Qpq.cjs} +1 -1
  25. package/dist/{audio-Dvr-RBzE.cjs.map → audio-CluX8Qpq.cjs.map} +1 -1
  26. package/dist/{audio-ql6nvY0y.js → audio-DcXphulJ.js} +1 -1
  27. package/dist/{audio-ql6nvY0y.js.map → audio-DcXphulJ.js.map} +1 -1
  28. package/dist/audio.cjs +1 -1
  29. package/dist/audio.js +2 -2
  30. package/dist/autocomplete-Bn525CTp.cjs +115 -0
  31. package/dist/autocomplete-Bn525CTp.cjs.map +1 -0
  32. package/dist/{autocomplete-C2P0Soht.js → autocomplete-pHvsyfbH.js} +29 -26
  33. package/dist/autocomplete-pHvsyfbH.js.map +1 -0
  34. package/dist/autocomplete.cjs +1 -1
  35. package/dist/autocomplete.js +1 -1
  36. package/dist/avatar.cjs +7 -0
  37. package/dist/avatar.cjs.map +1 -0
  38. package/dist/avatar.js +87 -0
  39. package/dist/avatar.js.map +1 -0
  40. package/dist/badge.cjs +1 -1
  41. package/dist/badge.js +1 -1
  42. package/dist/boat-IyEtsNI4.cjs +80 -0
  43. package/dist/boat-IyEtsNI4.cjs.map +1 -0
  44. package/dist/{boat-DXZ0k7oa.js → boat-_Yv3M6YM.js} +43 -54
  45. package/dist/boat-_Yv3M6YM.js.map +1 -0
  46. package/dist/boat.cjs +1 -1
  47. package/dist/boat.js +1 -1
  48. package/dist/breadcrumb.cjs +4 -4
  49. package/dist/breadcrumb.cjs.map +1 -1
  50. package/dist/breadcrumb.js +16 -11
  51. package/dist/breadcrumb.js.map +1 -1
  52. package/dist/{busy-DGYhpTnO.cjs → busy-CjM39APN.cjs} +4 -4
  53. package/dist/busy-CjM39APN.cjs.map +1 -0
  54. package/dist/{busy-iRjq6Nvd.js → busy-Ck2IXJ4r.js} +14 -9
  55. package/dist/busy-Ck2IXJ4r.js.map +1 -0
  56. package/dist/busy.cjs +1 -1
  57. package/dist/busy.js +1 -1
  58. package/dist/button.cjs +24 -24
  59. package/dist/button.cjs.map +1 -1
  60. package/dist/button.js +42 -37
  61. package/dist/button.js.map +1 -1
  62. package/dist/{card-DjYnCckw.cjs → card-DIxDuuth.cjs} +6 -6
  63. package/dist/card-DIxDuuth.cjs.map +1 -0
  64. package/dist/{card-wUTjx0EC.js → card-DUWZmMHc.js} +41 -30
  65. package/dist/card-DUWZmMHc.js.map +1 -0
  66. package/dist/card.cjs +1 -1
  67. package/dist/card.js +1 -1
  68. package/dist/charts.cjs +5 -5
  69. package/dist/charts.cjs.map +1 -1
  70. package/dist/charts.js +21 -16
  71. package/dist/charts.js.map +1 -1
  72. package/dist/checkbox-CGdFXuWQ.cjs +39 -0
  73. package/dist/checkbox-CGdFXuWQ.cjs.map +1 -0
  74. package/dist/{checkbox-VBSenxgb.js → checkbox-DPS1mWG-.js} +86 -82
  75. package/dist/checkbox-DPS1mWG-.js.map +1 -0
  76. package/dist/checkbox.cjs +1 -1
  77. package/dist/checkbox.js +1 -1
  78. package/dist/{chips-BDS9lkPa.js → chips-BnnXQSA-.js} +146 -136
  79. package/dist/chips-BnnXQSA-.js.map +1 -0
  80. package/dist/{chips-D6ptH5re.cjs → chips-UoFbwmlG.cjs} +19 -19
  81. package/dist/chips-UoFbwmlG.cjs.map +1 -0
  82. package/dist/chips.cjs +1 -1
  83. package/dist/chips.js +2 -2
  84. package/dist/{code-highlight-BzRmBZzz.cjs → code-highlight-CMilN0B8.cjs} +15 -15
  85. package/dist/code-highlight-CMilN0B8.cjs.map +1 -0
  86. package/dist/{code-highlight-Bi91XHJN.js → code-highlight-kFUJ1Eet.js} +37 -40
  87. package/dist/code-highlight-kFUJ1Eet.js.map +1 -0
  88. package/dist/code-highlight.cjs +1 -1
  89. package/dist/code-highlight.js +1 -1
  90. package/dist/connectivity.cjs +2 -2
  91. package/dist/connectivity.cjs.map +1 -1
  92. package/dist/connectivity.js +10 -7
  93. package/dist/connectivity.js.map +1 -1
  94. package/dist/content-drawer.cjs +1 -1
  95. package/dist/content-drawer.js +2 -2
  96. package/dist/context-Bdu1xt0W.js +3 -0
  97. package/dist/{context-BerzpUhI.js.map → context-Bdu1xt0W.js.map} +1 -1
  98. package/dist/context-daN5G6HS.cjs +1 -0
  99. package/dist/{context-C6dHUHhi.cjs.map → context-daN5G6HS.cjs.map} +1 -1
  100. package/dist/{cursor-glow-BydlDInj.js → cursor-glow-Ah7VXSj7.js} +1 -1
  101. package/dist/{cursor-glow-BydlDInj.js.map → cursor-glow-Ah7VXSj7.js.map} +1 -1
  102. package/dist/{cursor-glow-Duw9jHmh.cjs → cursor-glow-Bulq-38P.cjs} +1 -1
  103. package/dist/{cursor-glow-Duw9jHmh.cjs.map → cursor-glow-Bulq-38P.cjs.map} +1 -1
  104. package/dist/date-range-BIyrzTRZ.cjs +131 -0
  105. package/dist/date-range-BIyrzTRZ.cjs.map +1 -0
  106. package/dist/{date-range-ClTMg1AB.js → date-range-DOstCIg8.js} +16 -17
  107. package/dist/date-range-DOstCIg8.js.map +1 -0
  108. package/dist/date-range-inline-4P7zqeVe.cjs +43 -0
  109. package/dist/{date-range-inline-B9Dp2z6C.cjs.map → date-range-inline-4P7zqeVe.cjs.map} +1 -1
  110. package/dist/{date-range-inline-CpKG6qt2.js → date-range-inline-BVycTWLb.js} +5 -5
  111. package/dist/{date-range-inline-CpKG6qt2.js.map → date-range-inline-BVycTWLb.js.map} +1 -1
  112. package/dist/date-range-inline.cjs +1 -1
  113. package/dist/date-range-inline.js +1 -1
  114. package/dist/date-range.cjs +1 -1
  115. package/dist/date-range.js +1 -1
  116. package/dist/delay.cjs +9 -1
  117. package/dist/delay.cjs.map +1 -0
  118. package/dist/delay.js +77 -2
  119. package/dist/delay.js.map +1 -0
  120. package/dist/{details-Cz9ok9si.cjs → details-BJBbZOO6.cjs} +9 -9
  121. package/dist/details-BJBbZOO6.cjs.map +1 -0
  122. package/dist/{details-CPjlqQD4.js → details-DPc5GxPa.js} +19 -18
  123. package/dist/details-DPc5GxPa.js.map +1 -0
  124. package/dist/details.cjs +1 -1
  125. package/dist/details.js +1 -1
  126. package/dist/{dialog-service-DH-tjPuE.js → dialog-service-DI9PPy4H.js} +2 -2
  127. package/dist/dialog-service-DI9PPy4H.js.map +1 -0
  128. package/dist/{dialog-service-CzDO08Gy.cjs → dialog-service-DJd5L0f5.cjs} +1 -1
  129. package/dist/dialog-service-DJd5L0f5.cjs.map +1 -0
  130. package/dist/dialog.cjs +2 -2
  131. package/dist/dialog.cjs.map +1 -1
  132. package/dist/dialog.js +13 -14
  133. package/dist/dialog.js.map +1 -1
  134. package/dist/directives.cjs +2 -11
  135. package/dist/directives.cjs.map +1 -1
  136. package/dist/directives.js +141 -227
  137. package/dist/directives.js.map +1 -1
  138. package/dist/discovery.cjs +1 -1
  139. package/dist/discovery.cjs.map +1 -1
  140. package/dist/discovery.js +1 -1
  141. package/dist/discovery.js.map +1 -1
  142. package/dist/{divider-ghgyw5CU.js → divider-BvJsmSPH.js} +11 -9
  143. package/dist/divider-BvJsmSPH.js.map +1 -0
  144. package/dist/{divider-CILo3_vi.cjs → divider-DPT3XnG5.cjs} +3 -3
  145. package/dist/divider-DPT3XnG5.cjs.map +1 -0
  146. package/dist/divider.cjs +1 -1
  147. package/dist/divider.js +1 -1
  148. package/dist/dropdown.cjs +4 -4
  149. package/dist/dropdown.cjs.map +1 -1
  150. package/dist/dropdown.js +29 -28
  151. package/dist/dropdown.js.map +1 -1
  152. package/dist/{expand-CbjBr_Ds.js → expand-BMzocdtj.js} +24 -20
  153. package/dist/expand-BMzocdtj.js.map +1 -0
  154. package/dist/expand-CTqBWVXo.cjs +141 -0
  155. package/dist/expand-CTqBWVXo.cjs.map +1 -0
  156. package/dist/expand.cjs +1 -1
  157. package/dist/expand.js +1 -1
  158. package/dist/{extra-DK9MQtPJ.js → extra-BeHlUhzv.js} +19 -14
  159. package/dist/extra-BeHlUhzv.js.map +1 -0
  160. package/dist/{extra-BZeZOMBI.cjs → extra-h_cuxRII.cjs} +6 -6
  161. package/dist/extra-h_cuxRII.cjs.map +1 -0
  162. package/dist/extra.cjs +1 -1
  163. package/dist/extra.js +1 -1
  164. package/dist/{float-BfCvGeY9.js → float-CTc1xxqH.js} +2 -2
  165. package/dist/{float-BfCvGeY9.js.map → float-CTc1xxqH.js.map} +1 -1
  166. package/dist/float-CwVBs11k.cjs +1 -0
  167. package/dist/{float-CuZ8LOgB.cjs.map → float-CwVBs11k.cjs.map} +1 -1
  168. package/dist/float.cjs +1 -1
  169. package/dist/float.js +1 -1
  170. package/dist/{form-rCZqoAoK.js → form-BtwOBMZ9.js} +1 -1
  171. package/dist/form-BtwOBMZ9.js.map +1 -0
  172. package/dist/{form-wI58M85H.cjs → form-CSJp687X.cjs} +1 -1
  173. package/dist/form-CSJp687X.cjs.map +1 -0
  174. package/dist/form.cjs +1 -1
  175. package/dist/form.js +1 -1
  176. package/dist/handover/agent-runtime-followups.md +1 -1
  177. package/dist/handover/agent-runtime-v1.md +3 -3
  178. package/dist/handover/claude-design-brief.md +19 -54
  179. package/dist/handover/claude-design-setup.md +57 -0
  180. package/dist/{hashContent-B2IntJQf.js.map → hashContent-1ARKIsx9.js.map} +1 -1
  181. package/dist/{hashContent-CahnEuut.cjs.map → hashContent-Bp5S6T4U.cjs.map} +1 -1
  182. package/dist/{icons-Drq4kKy2.js → icons-BbCVrcas.js} +27 -24
  183. package/dist/icons-BbCVrcas.js.map +1 -0
  184. package/dist/icons-qEQW4pjM.cjs +52 -0
  185. package/dist/icons-qEQW4pjM.cjs.map +1 -0
  186. package/dist/icons.cjs +1 -1
  187. package/dist/icons.js +1 -1
  188. package/dist/{iframe-BmyHW8km.js → iframe-BJfDIEJf.js} +17 -11
  189. package/dist/iframe-BJfDIEJf.js.map +1 -0
  190. package/dist/iframe-D6HTruav.cjs +24 -0
  191. package/dist/iframe-D6HTruav.cjs.map +1 -0
  192. package/dist/iframe.cjs +1 -1
  193. package/dist/iframe.js +1 -1
  194. package/dist/index.cjs +1 -1
  195. package/dist/index.js +77 -77
  196. package/dist/{input-Bc3bVISm.js → input-LTK3cctF.js} +34 -34
  197. package/dist/input-LTK3cctF.js.map +1 -0
  198. package/dist/input-U26axtcs.cjs +51 -0
  199. package/dist/input-U26axtcs.cjs.map +1 -0
  200. package/dist/{input-chip-DN-cwf11.cjs → input-chip-CADXt0X5.cjs} +2 -2
  201. package/dist/input-chip-CADXt0X5.cjs.map +1 -0
  202. package/dist/{input-chip-BQrjpjaQ.js → input-chip-Ch-aCs3c.js} +7 -4
  203. package/dist/input-chip-Ch-aCs3c.js.map +1 -0
  204. package/dist/input.cjs +1 -1
  205. package/dist/input.js +1 -1
  206. package/dist/json.cjs +1 -1
  207. package/dist/json.cjs.map +1 -1
  208. package/dist/json.js +7 -5
  209. package/dist/json.js.map +1 -1
  210. package/dist/kbd.cjs +2 -2
  211. package/dist/kbd.cjs.map +1 -1
  212. package/dist/kbd.js +9 -7
  213. package/dist/kbd.js.map +1 -1
  214. package/dist/{layout-fjM1DWlF.js → layout-C4xmnU4n.js} +1 -1
  215. package/dist/{layout-fjM1DWlF.js.map → layout-C4xmnU4n.js.map} +1 -1
  216. package/dist/{layout-CTfRXQoz.cjs → layout-Dmh6fxh0.cjs} +1 -1
  217. package/dist/{layout-CTfRXQoz.cjs.map → layout-Dmh6fxh0.cjs.map} +1 -1
  218. package/dist/layout.cjs +1 -1
  219. package/dist/layout.js +2 -3
  220. package/dist/{lazy-D6R5N5v4.js.map → lazy-B0ia54tT.js.map} +1 -1
  221. package/dist/{lazy-BDNnH_r7.cjs.map → lazy-Dq9mRRjT.cjs.map} +1 -1
  222. package/dist/lightbox-DbYUSfVl.cjs +202 -0
  223. package/dist/lightbox-DbYUSfVl.cjs.map +1 -0
  224. package/dist/{lightbox-CY52Z_ig.js → lightbox-DqG2z3Cn.js} +13 -12
  225. package/dist/lightbox-DqG2z3Cn.js.map +1 -0
  226. package/dist/lightbox.cjs +1 -1
  227. package/dist/lightbox.js +1 -1
  228. package/dist/list-CLX4sSAw.cjs +40 -0
  229. package/dist/list-CLX4sSAw.cjs.map +1 -0
  230. package/dist/{list-D7wUxu1C.js → list-D6-_E5ZD.js} +26 -21
  231. package/dist/list-D6-_E5ZD.js.map +1 -0
  232. package/dist/list.cjs +1 -1
  233. package/dist/list.js +1 -1
  234. package/dist/{magnetic-CVXEkYTA.cjs → magnetic-BH0TsofV.cjs} +1 -1
  235. package/dist/{magnetic-CVXEkYTA.cjs.map → magnetic-BH0TsofV.cjs.map} +1 -1
  236. package/dist/{magnetic-BhXebqF3.js → magnetic-BZGFxAWG.js} +2 -2
  237. package/dist/{magnetic-BhXebqF3.js.map → magnetic-BZGFxAWG.js.map} +1 -1
  238. package/dist/{mailbox-DLiBGJhY.cjs → mailbox-Ct6iYe-4.cjs} +64 -66
  239. package/dist/mailbox-Ct6iYe-4.cjs.map +1 -0
  240. package/dist/{mailbox--EN-JhjV.js → mailbox-DsPII8HR.js} +137 -126
  241. package/dist/mailbox-DsPII8HR.js.map +1 -0
  242. package/dist/mailbox.cjs +1 -1
  243. package/dist/mailbox.js +1 -1
  244. package/dist/{map-B0S_q3ma.js → map-Dhy3ta9v.js} +11 -9
  245. package/dist/map-Dhy3ta9v.js.map +1 -0
  246. package/dist/map-WXeVkx2K.cjs +80 -0
  247. package/dist/map-WXeVkx2K.cjs.map +1 -0
  248. package/dist/map.cjs +1 -1
  249. package/dist/map.js +1 -1
  250. package/dist/{menu-COeFpb6n.js → menu-Bhd3EapX.js} +15 -10
  251. package/dist/menu-Bhd3EapX.js.map +1 -0
  252. package/dist/{menu-3edZGQ1x.cjs → menu-Cg2aaDjs.cjs} +5 -5
  253. package/dist/menu-Cg2aaDjs.cjs.map +1 -0
  254. package/dist/menu.cjs +1 -1
  255. package/dist/menu.js +1 -1
  256. package/dist/mixins-CcIWET41.js +627 -0
  257. package/dist/mixins-CcIWET41.js.map +1 -0
  258. package/dist/mixins-De3xfjrm.cjs +298 -0
  259. package/dist/mixins-De3xfjrm.cjs.map +1 -0
  260. package/dist/mixins.cjs +1 -1
  261. package/dist/mixins.js +2 -87
  262. package/dist/nav-drawer.cjs +1 -1
  263. package/dist/nav-drawer.js +2 -2
  264. package/dist/navigation-bar.cjs +1 -1
  265. package/dist/navigation-bar.js +1 -1
  266. package/dist/navigation-rail.cjs +3 -3
  267. package/dist/navigation-rail.cjs.map +1 -1
  268. package/dist/navigation-rail.js +15 -16
  269. package/dist/navigation-rail.js.map +1 -1
  270. package/dist/{notification-CC-TFN5v.js → notification-CVLqQ8c_.js} +40 -38
  271. package/dist/notification-CVLqQ8c_.js.map +1 -0
  272. package/dist/notification-D_PQjBSf.cjs +23 -0
  273. package/dist/notification-D_PQjBSf.cjs.map +1 -0
  274. package/dist/notification.cjs +1 -1
  275. package/dist/notification.js +1 -1
  276. package/dist/option-DDU_goh1.cjs +43 -0
  277. package/dist/option-DDU_goh1.cjs.map +1 -0
  278. package/dist/{option-BwAF4nAw.js → option-rm4HebVs.js} +9 -7
  279. package/dist/option-rm4HebVs.js.map +1 -0
  280. package/dist/option.cjs +1 -1
  281. package/dist/option.js +1 -1
  282. package/dist/{overlay-stack-7bs4ZNnh.cjs → overlay-stack-BprhAE9a.cjs} +1 -1
  283. package/dist/{overlay-stack-7bs4ZNnh.cjs.map → overlay-stack-BprhAE9a.cjs.map} +1 -1
  284. package/dist/{overlay-stack-DXPYHPhk.js → overlay-stack-CAQno0CK.js} +1 -1
  285. package/dist/{overlay-stack-DXPYHPhk.js.map → overlay-stack-CAQno0CK.js.map} +1 -1
  286. package/dist/overlay.cjs +43 -45
  287. package/dist/overlay.cjs.map +1 -1
  288. package/dist/overlay.js +684 -268
  289. package/dist/overlay.js.map +1 -1
  290. package/dist/page.cjs +3 -3
  291. package/dist/page.cjs.map +1 -1
  292. package/dist/page.js +15 -13
  293. package/dist/page.js.map +1 -1
  294. package/dist/{components-DZgJWHdZ.js → payment-card-form-C0dHYZIv.js} +21 -22
  295. package/dist/{components-DZgJWHdZ.js.map → payment-card-form-C0dHYZIv.js.map} +1 -1
  296. package/dist/payment-card-form-DNvmZxs4.cjs +73 -0
  297. package/dist/{components-DkmEgyAc.cjs.map → payment-card-form-DNvmZxs4.cjs.map} +1 -1
  298. package/dist/payment-card-form.cjs +1 -0
  299. package/dist/payment-card-form.js +2 -0
  300. package/dist/{progress-Bk_Q1Shy.js → progress-BRerM5Bn.js} +16 -13
  301. package/dist/progress-BRerM5Bn.js.map +1 -0
  302. package/dist/{progress-Yz6EMNSu.cjs → progress-U3LQkpM2.cjs} +3 -3
  303. package/dist/progress-U3LQkpM2.cjs.map +1 -0
  304. package/dist/progress.cjs +1 -1
  305. package/dist/progress.js +1 -1
  306. package/dist/qr-scanner.cjs +5 -5
  307. package/dist/qr-scanner.cjs.map +1 -1
  308. package/dist/qr-scanner.js +14 -15
  309. package/dist/qr-scanner.js.map +1 -1
  310. package/dist/{radio-group-BcdcjLNC.js → radio-group-BZ2WoOXJ.js} +14 -12
  311. package/dist/radio-group-BZ2WoOXJ.js.map +1 -0
  312. package/dist/radio-group-D7mm-yvJ.cjs +40 -0
  313. package/dist/radio-group-D7mm-yvJ.cjs.map +1 -0
  314. package/dist/radio-group.cjs +1 -1
  315. package/dist/radio-group.js +1 -1
  316. package/dist/range.cjs +2 -2
  317. package/dist/range.cjs.map +1 -1
  318. package/dist/range.js +9 -7
  319. package/dist/range.js.map +1 -1
  320. package/dist/{reduced-motion-BZTLqAyl.js.map → reduced-motion-D-L12p7G.js.map} +1 -1
  321. package/dist/{reduced-motion-9RjNnhIg.cjs.map → reduced-motion-Ds-HjMzn.cjs.map} +1 -1
  322. package/dist/{rxjs-utils-DJbZRjp3.cjs.map → rxjs-utils-Csnks202.cjs.map} +1 -1
  323. package/dist/{rxjs-utils-CKTnEKUH.js.map → rxjs-utils-d-ivVN84.js.map} +1 -1
  324. package/dist/rxjs-utils.cjs +1 -1
  325. package/dist/rxjs-utils.js +1 -1
  326. package/dist/scroll-DJTjNIT_.cjs +26 -0
  327. package/dist/scroll-DJTjNIT_.cjs.map +1 -0
  328. package/dist/{scroll-DXQv0ejL.js → scroll-qL-HkMdP.js} +9 -7
  329. package/dist/scroll-qL-HkMdP.js.map +1 -0
  330. package/dist/search-BLCRsxIC.cjs +1 -0
  331. package/dist/{search-CwMav5QB.cjs.map → search-BLCRsxIC.cjs.map} +1 -1
  332. package/dist/{search-CvUZRLF1.js → search-BTz7-Rev.js} +1 -1
  333. package/dist/{search-CvUZRLF1.js.map → search-BTz7-Rev.js.map} +1 -1
  334. package/dist/{select-BV4lK2zy.cjs → select-BvA7v-gL.cjs} +6 -6
  335. package/dist/select-BvA7v-gL.cjs.map +1 -0
  336. package/dist/{select-DKyGWDsG.js → select-CnPXUeSf.js} +23 -20
  337. package/dist/select-CnPXUeSf.js.map +1 -0
  338. package/dist/select.cjs +1 -1
  339. package/dist/select.js +1 -1
  340. package/dist/{sheet-C3TLKItO.js → sheet-BRL07BB4.js} +22 -20
  341. package/dist/sheet-BRL07BB4.js.map +1 -0
  342. package/dist/sheet-BYQJAHQn.cjs +35 -0
  343. package/dist/sheet-BYQJAHQn.cjs.map +1 -0
  344. package/dist/sheet.cjs +1 -1
  345. package/dist/sheet.js +2 -2
  346. package/dist/sheet.service-B25bsrYG.cjs +1 -0
  347. package/dist/{sheet.service-RcDBwHmv.cjs.map → sheet.service-B25bsrYG.cjs.map} +1 -1
  348. package/dist/{sheet.service-Dlv20Zfc.js → sheet.service-SPQ8oLCi.js} +3 -3
  349. package/dist/{sheet.service-Dlv20Zfc.js.map → sheet.service-SPQ8oLCi.js.map} +1 -1
  350. package/dist/skeleton.cjs +2 -2
  351. package/dist/skeleton.cjs.map +1 -1
  352. package/dist/skeleton.js +9 -7
  353. package/dist/skeleton.js.map +1 -1
  354. package/dist/skills/INDEX.md +1 -1
  355. package/dist/skills/SKILL.md +17 -5
  356. package/dist/skills/mixins.md +78 -20
  357. package/dist/skills/schmancy/INDEX.md +1 -1
  358. package/dist/skills/schmancy/SKILL.md +17 -5
  359. package/dist/skills/schmancy/mixins.md +78 -20
  360. package/dist/skills/schmancy/state.md +501 -0
  361. package/dist/skills/schmancy/theme.md +15 -0
  362. package/dist/skills/schmancy/timeline-tile.md +95 -0
  363. package/dist/skills/state.md +501 -0
  364. package/dist/skills/theme.md +15 -0
  365. package/dist/skills/timeline-tile.md +95 -0
  366. package/dist/slider.cjs +5 -5
  367. package/dist/slider.cjs.map +1 -1
  368. package/dist/slider.js +18 -13
  369. package/dist/slider.js.map +1 -1
  370. package/dist/sound.service-BGs6m0Cm.cjs +1 -0
  371. package/dist/sound.service-BGs6m0Cm.cjs.map +1 -0
  372. package/dist/{sound.service-DWZe6swU.js → sound.service-kKfsN0m-.js} +3 -3
  373. package/dist/sound.service-kKfsN0m-.js.map +1 -0
  374. package/dist/splash-screen-BDt4PInk.cjs +41 -0
  375. package/dist/splash-screen-BDt4PInk.cjs.map +1 -0
  376. package/dist/{splash-screen-DbI5RgBf.js → splash-screen-C8JCqX5L.js} +12 -9
  377. package/dist/splash-screen-C8JCqX5L.js.map +1 -0
  378. package/dist/splash-screen.cjs +1 -1
  379. package/dist/splash-screen.js +1 -1
  380. package/dist/src-CpRNClhg.cjs +263 -0
  381. package/dist/src-CpRNClhg.cjs.map +1 -0
  382. package/dist/{src-00DfxCJq.js → src-CqdnWGgr.js} +299 -351
  383. package/dist/src-CqdnWGgr.js.map +1 -0
  384. package/dist/state-BusMG6sM.js +868 -0
  385. package/dist/state-BusMG6sM.js.map +1 -0
  386. package/dist/state-DNdCPITt.cjs +1 -0
  387. package/dist/state-DNdCPITt.cjs.map +1 -0
  388. package/dist/state.cjs +1 -0
  389. package/dist/state.js +3 -0
  390. package/dist/steps.cjs +10 -10
  391. package/dist/steps.cjs.map +1 -1
  392. package/dist/steps.js +29 -24
  393. package/dist/steps.js.map +1 -1
  394. package/dist/surface-C8jQy8Ym.js +24 -0
  395. package/dist/surface-C8jQy8Ym.js.map +1 -0
  396. package/dist/surface-Du2Y4vXd.cjs +7 -0
  397. package/dist/surface-Du2Y4vXd.cjs.map +1 -0
  398. package/dist/surface.cjs +1 -1
  399. package/dist/surface.js +1 -1
  400. package/dist/switch.cjs +2 -2
  401. package/dist/switch.cjs.map +1 -1
  402. package/dist/switch.js +7 -5
  403. package/dist/switch.js.map +1 -1
  404. package/dist/table.cjs +72 -1
  405. package/dist/table.cjs.map +1 -0
  406. package/dist/table.js +174 -2
  407. package/dist/table.js.map +1 -0
  408. package/dist/tabs-0RfeCa00.cjs +31 -0
  409. package/dist/tabs-0RfeCa00.cjs.map +1 -0
  410. package/dist/{tabs-Ce55RbwF.js → tabs-Cyahh9Q6.js} +22 -22
  411. package/dist/tabs-Cyahh9Q6.js.map +1 -0
  412. package/dist/tabs.cjs +1 -1
  413. package/dist/tabs.js +1 -1
  414. package/dist/teleport.cjs +1 -1
  415. package/dist/teleport.js +2 -2
  416. package/dist/{textarea-DjN1D9u0.js → textarea-CXCcTVnf.js} +30 -28
  417. package/dist/textarea-CXCcTVnf.js.map +1 -0
  418. package/dist/textarea-jqRrLxmo.cjs +39 -0
  419. package/dist/textarea-jqRrLxmo.cjs.map +1 -0
  420. package/dist/textarea.cjs +1 -1
  421. package/dist/textarea.js +1 -1
  422. package/dist/{theme-pbxlt72h.js → theme-2KZW2Rfs.js} +45 -41
  423. package/dist/{theme-pbxlt72h.js.map → theme-2KZW2Rfs.js.map} +1 -1
  424. package/dist/theme-Hjz9sCN-.cjs +181 -0
  425. package/dist/{theme-B-IJ2r7Q.cjs.map → theme-Hjz9sCN-.cjs.map} +1 -1
  426. package/dist/{theme-button-CEMeAUOL.js → theme-button-9uF1eoHz.js} +3 -4
  427. package/dist/theme-button-9uF1eoHz.js.map +1 -0
  428. package/dist/theme-button-C7QIbke1.cjs +8 -0
  429. package/dist/theme-button-C7QIbke1.cjs.map +1 -0
  430. package/dist/theme-button.cjs +1 -1
  431. package/dist/theme-button.js +1 -1
  432. package/dist/theme.cjs +1 -1
  433. package/dist/{theme.events-NuihzD_p.js.map → theme.events-Cv7N4Toe.js.map} +1 -1
  434. package/dist/{theme.events-DakXxZeP.cjs.map → theme.events-DM4H5F2d.cjs.map} +1 -1
  435. package/dist/{theme.interface-DTwkuAKJ.cjs.map → theme.interface-D9l33b-M.cjs.map} +1 -1
  436. package/dist/{theme.interface-Buged9Cg.js.map → theme.interface-DnVNre4O.js.map} +1 -1
  437. package/dist/theme.js +5 -5
  438. package/dist/theme.service-BrUbGoeQ.cjs +1 -0
  439. package/dist/theme.service-BrUbGoeQ.cjs.map +1 -0
  440. package/dist/{theme.service-cOfPrtfe.js → theme.service-CmbOGMA8.js} +4 -4
  441. package/dist/theme.service-CmbOGMA8.js.map +1 -0
  442. package/dist/timeline.cjs +277 -0
  443. package/dist/timeline.cjs.map +1 -0
  444. package/dist/timeline.js +326 -0
  445. package/dist/timeline.js.map +1 -0
  446. package/dist/tree.cjs +2 -2
  447. package/dist/tree.cjs.map +1 -1
  448. package/dist/tree.js +15 -13
  449. package/dist/tree.js.map +1 -1
  450. package/dist/typewriter.cjs +10 -123
  451. package/dist/typewriter.cjs.map +1 -1
  452. package/dist/typewriter.js +90 -212
  453. package/dist/typewriter.js.map +1 -1
  454. package/dist/typography.cjs +3 -3
  455. package/dist/typography.cjs.map +1 -1
  456. package/dist/typography.js +18 -112
  457. package/dist/typography.js.map +1 -1
  458. package/dist/utils-Cr-YO4Np.cjs +1 -0
  459. package/dist/utils-Cr-YO4Np.cjs.map +1 -0
  460. package/dist/{utils-Bp2jhyZc.js → utils-hp-DnFf5.js} +16 -6
  461. package/dist/utils-hp-DnFf5.js.map +1 -0
  462. package/dist/utils.cjs +1 -1
  463. package/dist/utils.js +4 -5
  464. package/dist/visually-hidden.cjs +2 -2
  465. package/dist/visually-hidden.cjs.map +1 -1
  466. package/dist/visually-hidden.js +7 -5
  467. package/dist/visually-hidden.js.map +1 -1
  468. package/dist/{window-CrjZdf7Y.js → window-C7yY9yp5.js} +28 -30
  469. package/dist/window-C7yY9yp5.js.map +1 -0
  470. package/dist/window-DtUOWiAj.cjs +59 -0
  471. package/dist/window-DtUOWiAj.cjs.map +1 -0
  472. package/dist/window.cjs +1 -1
  473. package/dist/window.js +1 -1
  474. package/package.json +15 -4
  475. package/plugins/vite-plugin-schmancy-auto-import.ts +143 -0
  476. package/plugins/vite-plugin-schmancy-manifest.ts +438 -0
  477. package/skills/schmancy/INDEX.md +1 -1
  478. package/skills/schmancy/SKILL.md +17 -5
  479. package/skills/schmancy/mixins.md +78 -20
  480. package/skills/schmancy/state.md +501 -0
  481. package/skills/schmancy/theme.md +15 -0
  482. package/skills/schmancy/timeline-tile.md +95 -0
  483. package/src/agent/agent-bundle.test.ts +71 -54
  484. package/src/agent/agent-entry.ts +5 -21
  485. package/src/agent/helpers.ts +159 -0
  486. package/src/agent/schmancy-skill.ts +71 -0
  487. package/src/agent/virtual-manifest.d.ts +1 -12
  488. package/src/area/area.component.ts +7 -19
  489. package/src/area/area.service.test.ts +4 -5
  490. package/src/area/area.service.ts +4 -3
  491. package/src/area/route.component.ts +17 -4
  492. package/src/area/utils.ts +3 -2
  493. package/src/audio/emotional-sounds.ts +0 -2
  494. package/src/audio/sound.service.ts +7 -13
  495. package/src/autocomplete/autocomplete.ts +18 -21
  496. package/src/{avatar.ts → avatar/avatar.ts} +2 -2
  497. package/src/avatar/index.ts +1 -0
  498. package/src/badge/badge.ts +4 -3
  499. package/src/boat/boat.ts +28 -36
  500. package/src/breadcrumb/breadcrumb.ts +11 -19
  501. package/src/busy/busy.ts +4 -3
  502. package/src/busy/spinner.ts +4 -3
  503. package/src/button/button.ts +6 -11
  504. package/src/button/icon-button.ts +8 -12
  505. package/src/card/actions.ts +4 -12
  506. package/src/card/card.ts +5 -23
  507. package/src/card/content.ts +4 -12
  508. package/src/card/media.ts +4 -9
  509. package/src/charts/area-chart.ts +7 -4
  510. package/src/charts/pills.ts +6 -4
  511. package/src/checkbox/checkbox.test.ts +2 -2
  512. package/src/checkbox/checkbox.ts +3 -9
  513. package/src/chips/assist-chip.ts +6 -14
  514. package/src/chips/chips.ts +7 -21
  515. package/src/chips/filter-chip.ts +4 -3
  516. package/src/chips/input-chip.ts +10 -9
  517. package/src/chips/suggestion-chip.ts +10 -12
  518. package/src/code-highlight/code-highlight.ts +28 -59
  519. package/src/code-highlight/code-preview.ts +11 -9
  520. package/src/connectivity/connectivity-status.ts +4 -3
  521. package/src/content-drawer/drawer.ts +5 -3
  522. package/src/content-drawer/main.ts +5 -3
  523. package/src/content-drawer/sheet.ts +6 -4
  524. package/src/date-range/date-range-dialog.ts +2 -2
  525. package/src/date-range/date-range.ts +3 -2
  526. package/src/delay/delay.ts +2 -2
  527. package/src/details/details.ts +4 -17
  528. package/src/dialog/dialog-service.ts +2 -0
  529. package/src/dialog/dialog.component.ts +9 -9
  530. package/src/directives/drag.ts +1 -9
  531. package/src/directives/index.ts +0 -1
  532. package/src/discovery/discovery.service.ts +1 -1
  533. package/src/divider/divider.ts +5 -14
  534. package/src/dropdown/dropdown-component.ts +5 -16
  535. package/src/dropdown/dropdown-content.ts +7 -14
  536. package/src/expand/expand-root.component.ts +5 -15
  537. package/src/expand/expand.component.ts +4 -17
  538. package/src/extra/countries/countries.ts +5 -13
  539. package/src/extra/timezone/timezone.ts +7 -12
  540. package/src/form/form.test.ts +2 -2
  541. package/src/form/form.ts +2 -9
  542. package/src/icons/icon.ts +4 -3
  543. package/src/iframe/iframe.ts +13 -4
  544. package/src/index.ts +3 -3
  545. package/src/input/input.ts +6 -13
  546. package/src/json/json.ts +4 -3
  547. package/src/kbd/kbd.ts +4 -3
  548. package/src/layout/index.ts +1 -5
  549. package/src/layout/scroll/scroll.ts +5 -8
  550. package/src/lightbox/flip-directive.ts +1 -1
  551. package/src/lightbox/lightbox.ts +5 -14
  552. package/src/list/list-item.ts +4 -13
  553. package/src/list/list.ts +12 -10
  554. package/src/mailbox/email-editor.ts +17 -11
  555. package/src/mailbox/email-layout-selector.ts +2 -2
  556. package/src/mailbox/email-recipients.ts +13 -8
  557. package/src/mailbox/email-template-picker.ts +6 -5
  558. package/src/mailbox/email-viewer.ts +5 -3
  559. package/src/mailbox/mailbox.ts +6 -5
  560. package/src/map/map.ts +8 -6
  561. package/src/menu/menu-item.ts +5 -16
  562. package/src/menu/menu.ts +27 -13
  563. package/src/nav-drawer/appbar.ts +4 -14
  564. package/src/nav-drawer/content.ts +5 -14
  565. package/src/nav-drawer/drawer.ts +5 -18
  566. package/src/nav-drawer/navbar.ts +3 -17
  567. package/src/navigation-bar/navigation-bar-item.ts +8 -6
  568. package/src/navigation-bar/navigation-bar.ts +19 -19
  569. package/src/navigation-rail/navigation-rail-item.ts +9 -5
  570. package/src/navigation-rail/navigation-rail.ts +10 -14
  571. package/src/notification/notification-service.ts +0 -2
  572. package/src/notification/notification.ts +6 -3
  573. package/src/option/option.ts +4 -3
  574. package/src/overlay/overlay.animations.ts +183 -37
  575. package/src/overlay/overlay.component.ts +397 -190
  576. package/src/overlay/overlay.confirm-body.ts +21 -7
  577. package/src/overlay/overlay.gestures.ts +72 -36
  578. package/src/overlay/overlay.layout.ts +103 -1
  579. package/src/overlay/overlay.positioning.ts +301 -0
  580. package/src/overlay/overlay.service.ts +81 -3
  581. package/src/overlay/overlay.stack.ts +8 -10
  582. package/src/overlay/overlay.types.ts +83 -5
  583. package/src/page/page.ts +16 -11
  584. package/src/payment-card-form/index.ts +1 -0
  585. package/src/{components/form-elements → payment-card-form}/payment-card-form.ts +23 -23
  586. package/src/progress/progress.ts +5 -3
  587. package/src/qr-scanner/qr-scanner.ts +7 -30
  588. package/src/radio-group/radio-button.ts +3 -13
  589. package/src/radio-group/radio-group.ts +5 -22
  590. package/src/range/range.ts +4 -3
  591. package/src/rxjs-utils/waitForElements.ts +1 -1
  592. package/src/rxjs-utils/waitForElementsAll.ts +1 -1
  593. package/src/select/select.ts +10 -18
  594. package/src/sheet/hook.ts +1 -1
  595. package/src/sheet/sheet.ts +5 -20
  596. package/src/skeleton/skeleton.ts +4 -3
  597. package/src/slider/slide.ts +5 -3
  598. package/src/slider/slider.ts +5 -3
  599. package/src/splash-screen/splash-screen.ts +5 -3
  600. package/src/state/CLAUDE.md +161 -0
  601. package/src/state/MIGRATION.md +258 -0
  602. package/src/state/SCOPING.md +134 -0
  603. package/src/state/active-host.ts +190 -0
  604. package/src/state/index.ts +877 -0
  605. package/src/state/persist.ts +208 -0
  606. package/src/state/schmancy-context.ts +130 -0
  607. package/src/state/state.test-d.ts +227 -0
  608. package/src/state/state.test.ts +868 -0
  609. package/src/steps/schmancy-step.ts +5 -3
  610. package/src/steps/schmancy-steps-container.ts +5 -3
  611. package/src/surface/surface.ts +14 -9
  612. package/src/switch/switch.test.ts +2 -2
  613. package/src/switch/switch.ts +8 -10
  614. package/src/table/row.ts +7 -4
  615. package/src/table/table.ts +17 -14
  616. package/src/tabs/index.ts +0 -2
  617. package/src/tabs/tab.ts +2 -2
  618. package/src/tabs/tabs-group.ts +7 -4
  619. package/src/teleport/teleport.component.ts +5 -3
  620. package/src/textarea/textarea.ts +6 -12
  621. package/src/theme/theme-audio-player.ts +7 -5
  622. package/src/theme/theme-controller.ts +2 -2
  623. package/src/theme/theme.component.ts +22 -15
  624. package/src/theme/theme.service.ts +6 -7
  625. package/src/theme/theme.style.css +1 -0
  626. package/src/theme-button/theme-button.ts +2 -2
  627. package/src/timeline/index.ts +1 -0
  628. package/src/timeline/timeline-tile.ts +431 -0
  629. package/src/tree/tree.ts +4 -16
  630. package/src/typewriter/index.ts +1 -1
  631. package/src/typography/typography.ts +5 -98
  632. package/src/utils/intersection.ts +5 -1
  633. package/src/utils/overlay-stack.ts +1 -1
  634. package/src/utils/search.ts +2 -2
  635. package/src/visually-hidden/visually-hidden.ts +4 -3
  636. package/src/window/window-position.ts +3 -6
  637. package/src/window/window.ts +9 -7
  638. package/types/mixins/SchmancyElement.d.ts +49 -0
  639. package/types/mixins/formField.mixin.d.ts +4 -2
  640. package/types/mixins/index.d.ts +1 -0
  641. package/types/mixins/litElement.mixin.d.ts +11 -0
  642. package/types/src/agent/agent-entry.d.ts +2 -19
  643. package/types/src/agent/helpers.d.ts +0 -27
  644. package/types/src/agent/schmancy-skill.d.ts +3 -5
  645. package/types/src/area/area.component.d.ts +3 -17
  646. package/types/src/area/route.component.d.ts +14 -4
  647. package/types/src/audio/emotional-sounds.d.ts +0 -1
  648. package/types/src/audio/sound.service.d.ts +1 -1
  649. package/types/src/autocomplete/autocomplete.d.ts +4 -15
  650. package/types/src/{avatar.d.ts → avatar/avatar.d.ts} +2 -3
  651. package/types/src/avatar/index.d.ts +1 -0
  652. package/types/src/badge/badge.d.ts +3 -3
  653. package/types/src/boat/boat.d.ts +3 -2
  654. package/types/src/breadcrumb/breadcrumb.d.ts +9 -19
  655. package/types/src/busy/busy.d.ts +3 -3
  656. package/types/src/busy/spinner.d.ts +3 -3
  657. package/types/src/button/button.d.ts +4 -10
  658. package/types/src/button/icon-button.d.ts +5 -11
  659. package/types/src/card/actions.d.ts +3 -12
  660. package/types/src/card/card.d.ts +4 -24
  661. package/types/src/card/content.d.ts +3 -12
  662. package/types/src/card/media.d.ts +3 -9
  663. package/types/src/charts/area-chart.d.ts +3 -3
  664. package/types/src/charts/pills.d.ts +3 -3
  665. package/types/src/checkbox/checkbox.d.ts +3 -10
  666. package/types/src/chips/assist-chip.d.ts +5 -15
  667. package/types/src/chips/chips.d.ts +3 -17
  668. package/types/src/chips/filter-chip.d.ts +3 -3
  669. package/types/src/chips/input-chip.d.ts +9 -10
  670. package/types/src/chips/suggestion-chip.d.ts +9 -13
  671. package/types/src/code-highlight/code-highlight.d.ts +4 -11
  672. package/types/src/code-highlight/code-preview.d.ts +3 -3
  673. package/types/src/connectivity/connectivity-status.d.ts +3 -3
  674. package/types/src/content-drawer/drawer.d.ts +4 -4
  675. package/types/src/content-drawer/main.d.ts +3 -3
  676. package/types/src/content-drawer/sheet.d.ts +4 -4
  677. package/types/src/date-range/date-range-dialog.d.ts +2 -3
  678. package/types/src/date-range/date-range.d.ts +2 -3
  679. package/types/src/delay/delay.d.ts +2 -3
  680. package/types/src/details/details.d.ts +3 -14
  681. package/types/src/dialog/dialog.component.d.ts +9 -9
  682. package/types/src/directives/drag.d.ts +1 -3
  683. package/types/src/directives/index.d.ts +0 -1
  684. package/types/src/divider/divider.d.ts +3 -14
  685. package/types/src/dropdown/dropdown-component.d.ts +4 -17
  686. package/types/src/dropdown/dropdown-content.d.ts +6 -14
  687. package/types/src/expand/expand-root.component.d.ts +4 -14
  688. package/types/src/expand/expand.component.d.ts +3 -17
  689. package/types/src/extra/countries/countries.d.ts +3 -13
  690. package/types/src/extra/timezone/timezone.d.ts +4 -11
  691. package/types/src/form/form.d.ts +2 -9
  692. package/types/src/icons/icon.d.ts +3 -3
  693. package/types/src/iframe/iframe.d.ts +5 -3
  694. package/types/src/index.d.ts +3 -3
  695. package/types/src/input/input.d.ts +4 -11
  696. package/types/src/json/json.d.ts +3 -3
  697. package/types/src/kbd/kbd.d.ts +3 -3
  698. package/types/src/layout/index.d.ts +0 -4
  699. package/types/src/layout/scroll/scroll.d.ts +4 -8
  700. package/types/src/lightbox/lightbox.d.ts +3 -14
  701. package/types/src/list/list-item.d.ts +3 -13
  702. package/types/src/list/list.d.ts +11 -10
  703. package/types/src/mailbox/email-editor.d.ts +3 -3
  704. package/types/src/mailbox/email-layout-selector.d.ts +2 -3
  705. package/types/src/mailbox/email-recipients.d.ts +7 -3
  706. package/types/src/mailbox/email-template-picker.d.ts +4 -4
  707. package/types/src/mailbox/email-viewer.d.ts +3 -3
  708. package/types/src/mailbox/mailbox.d.ts +4 -4
  709. package/types/src/map/map.d.ts +4 -3
  710. package/types/src/menu/menu-item.d.ts +3 -16
  711. package/types/src/menu/menu.d.ts +25 -13
  712. package/types/src/nav-drawer/appbar.d.ts +3 -14
  713. package/types/src/nav-drawer/content.d.ts +3 -14
  714. package/types/src/nav-drawer/drawer.d.ts +3 -18
  715. package/types/src/nav-drawer/navbar.d.ts +3 -18
  716. package/types/src/navigation-bar/navigation-bar-item.d.ts +7 -6
  717. package/types/src/navigation-bar/navigation-bar.d.ts +13 -7
  718. package/types/src/navigation-rail/navigation-rail-item.d.ts +9 -6
  719. package/types/src/navigation-rail/navigation-rail.d.ts +10 -15
  720. package/types/src/notification/notification-service.d.ts +0 -1
  721. package/types/src/notification/notification.d.ts +3 -3
  722. package/types/src/option/option.d.ts +3 -3
  723. package/types/src/overlay/overlay.animations.d.ts +54 -6
  724. package/types/src/overlay/overlay.component.d.ts +39 -15
  725. package/types/src/overlay/overlay.confirm-body.d.ts +4 -4
  726. package/types/src/overlay/overlay.gestures.d.ts +26 -17
  727. package/types/src/overlay/overlay.layout.d.ts +27 -1
  728. package/types/src/overlay/overlay.positioning.d.ts +87 -0
  729. package/types/src/overlay/overlay.stack.d.ts +0 -2
  730. package/types/src/overlay/overlay.types.d.ts +59 -5
  731. package/types/src/page/page.d.ts +14 -11
  732. package/types/src/{components/form-elements → payment-card-form}/payment-card-form.d.ts +2 -3
  733. package/types/src/progress/progress.d.ts +3 -3
  734. package/types/src/qr-scanner/qr-scanner.d.ts +3 -3
  735. package/types/src/radio-group/radio-button.d.ts +3 -12
  736. package/types/src/radio-group/radio-group.d.ts +4 -20
  737. package/types/src/range/range.d.ts +3 -3
  738. package/types/src/rxjs-utils/waitForElements.d.ts +1 -1
  739. package/types/src/rxjs-utils/waitForElementsAll.d.ts +1 -1
  740. package/types/src/select/select.d.ts +4 -15
  741. package/types/src/sheet/sheet.d.ts +3 -20
  742. package/types/src/skeleton/skeleton.d.ts +3 -3
  743. package/types/src/slider/slide.d.ts +3 -2
  744. package/types/src/slider/slider.d.ts +3 -3
  745. package/types/src/splash-screen/splash-screen.d.ts +3 -3
  746. package/types/src/state/active-host.d.ts +23 -0
  747. package/types/src/state/index.d.ts +145 -0
  748. package/types/src/state/persist.d.ts +14 -0
  749. package/types/src/state/schmancy-context.d.ts +32 -0
  750. package/types/src/state/state.test-d.d.ts +131 -0
  751. package/types/src/state/state.test.d.ts +1 -0
  752. package/types/src/steps/schmancy-step.d.ts +3 -3
  753. package/types/src/steps/schmancy-steps-container.d.ts +3 -3
  754. package/types/src/surface/surface.d.ts +13 -5
  755. package/types/src/switch/switch.d.ts +7 -11
  756. package/types/src/table/row.d.ts +2 -3
  757. package/types/src/table/table.d.ts +4 -11
  758. package/types/src/tabs/index.d.ts +0 -2
  759. package/types/src/tabs/tab.d.ts +2 -3
  760. package/types/src/tabs/tabs-group.d.ts +3 -3
  761. package/types/src/teleport/teleport.component.d.ts +3 -3
  762. package/types/src/textarea/textarea.d.ts +5 -12
  763. package/types/src/theme/theme-audio-player.d.ts +3 -3
  764. package/types/src/theme/theme-controller.d.ts +2 -2
  765. package/types/src/theme/theme.component.d.ts +18 -13
  766. package/types/src/theme-button/theme-button.d.ts +2 -3
  767. package/types/src/timeline/index.d.ts +1 -0
  768. package/types/src/timeline/timeline-tile.d.ts +44 -0
  769. package/types/src/tree/tree.d.ts +3 -16
  770. package/types/src/typewriter/index.d.ts +1 -1
  771. package/types/src/typography/typography.d.ts +3 -36
  772. package/types/src/visually-hidden/visually-hidden.d.ts +3 -3
  773. package/types/src/window/window.d.ts +3 -3
  774. package/dist/agent/index.es-Dymj8REP.js +0 -489
  775. package/dist/agent/index.es-Dymj8REP.js.map +0 -1
  776. package/dist/area-BGBCMC79.js.map +0 -1
  777. package/dist/area-D7l9KR2N.cjs +0 -12
  778. package/dist/area-D7l9KR2N.cjs.map +0 -1
  779. package/dist/autocomplete-BPD5uraA.cjs +0 -115
  780. package/dist/autocomplete-BPD5uraA.cjs.map +0 -1
  781. package/dist/autocomplete-C2P0Soht.js.map +0 -1
  782. package/dist/boat-BkIO-0No.cjs +0 -80
  783. package/dist/boat-BkIO-0No.cjs.map +0 -1
  784. package/dist/boat-DXZ0k7oa.js.map +0 -1
  785. package/dist/busy-DGYhpTnO.cjs.map +0 -1
  786. package/dist/busy-iRjq6Nvd.js.map +0 -1
  787. package/dist/card-DjYnCckw.cjs.map +0 -1
  788. package/dist/card-wUTjx0EC.js.map +0 -1
  789. package/dist/checkbox-CiYEtw9F.cjs +0 -39
  790. package/dist/checkbox-CiYEtw9F.cjs.map +0 -1
  791. package/dist/checkbox-VBSenxgb.js.map +0 -1
  792. package/dist/chips-BDS9lkPa.js.map +0 -1
  793. package/dist/chips-D6ptH5re.cjs.map +0 -1
  794. package/dist/code-highlight-Bi91XHJN.js.map +0 -1
  795. package/dist/code-highlight-BzRmBZzz.cjs.map +0 -1
  796. package/dist/components-DkmEgyAc.cjs +0 -73
  797. package/dist/components.cjs +0 -1
  798. package/dist/components.js +0 -2
  799. package/dist/context-BerzpUhI.js +0 -3
  800. package/dist/context-C6dHUHhi.cjs +0 -1
  801. package/dist/date-range-BmFxTXiU.cjs +0 -131
  802. package/dist/date-range-BmFxTXiU.cjs.map +0 -1
  803. package/dist/date-range-ClTMg1AB.js.map +0 -1
  804. package/dist/date-range-inline-B9Dp2z6C.cjs +0 -43
  805. package/dist/delay-BHODnTg-.cjs +0 -9
  806. package/dist/delay-BHODnTg-.cjs.map +0 -1
  807. package/dist/delay-Dlk0A3he.js +0 -347
  808. package/dist/delay-Dlk0A3he.js.map +0 -1
  809. package/dist/details-CPjlqQD4.js.map +0 -1
  810. package/dist/details-Cz9ok9si.cjs.map +0 -1
  811. package/dist/dialog-service-CzDO08Gy.cjs.map +0 -1
  812. package/dist/dialog-service-DH-tjPuE.js.map +0 -1
  813. package/dist/divider-CILo3_vi.cjs.map +0 -1
  814. package/dist/divider-ghgyw5CU.js.map +0 -1
  815. package/dist/expand-CbjBr_Ds.js.map +0 -1
  816. package/dist/expand-r3OrSoDk.cjs +0 -141
  817. package/dist/expand-r3OrSoDk.cjs.map +0 -1
  818. package/dist/extra-BZeZOMBI.cjs.map +0 -1
  819. package/dist/extra-DK9MQtPJ.js.map +0 -1
  820. package/dist/float-CuZ8LOgB.cjs +0 -1
  821. package/dist/flow-BPDtbhLe.js +0 -386
  822. package/dist/flow-BPDtbhLe.js.map +0 -1
  823. package/dist/flow-Dn9AZktE.cjs +0 -1
  824. package/dist/flow-Dn9AZktE.cjs.map +0 -1
  825. package/dist/form-rCZqoAoK.js.map +0 -1
  826. package/dist/form-wI58M85H.cjs.map +0 -1
  827. package/dist/handover/agent-runtime-v2-loopback.md +0 -71
  828. package/dist/handover/claude-design-v2-paste.md +0 -42
  829. package/dist/icons-Drq4kKy2.js.map +0 -1
  830. package/dist/icons-DtdhaZdc.cjs +0 -52
  831. package/dist/icons-DtdhaZdc.cjs.map +0 -1
  832. package/dist/iframe-BkwwWIbQ.cjs +0 -24
  833. package/dist/iframe-BkwwWIbQ.cjs.map +0 -1
  834. package/dist/iframe-BmyHW8km.js.map +0 -1
  835. package/dist/index.es-BgmFX1JM.cjs +0 -1
  836. package/dist/index.es-BgmFX1JM.cjs.map +0 -1
  837. package/dist/index.es-CLyb_o3Y.js +0 -489
  838. package/dist/index.es-CLyb_o3Y.js.map +0 -1
  839. package/dist/input-BGNZlfL8.cjs +0 -51
  840. package/dist/input-BGNZlfL8.cjs.map +0 -1
  841. package/dist/input-Bc3bVISm.js.map +0 -1
  842. package/dist/input-chip-BQrjpjaQ.js.map +0 -1
  843. package/dist/input-chip-DN-cwf11.cjs.map +0 -1
  844. package/dist/intersection-BrXp4YTO.js +0 -12
  845. package/dist/intersection-BrXp4YTO.js.map +0 -1
  846. package/dist/intersection-DqBqnpgh.cjs +0 -1
  847. package/dist/intersection-DqBqnpgh.cjs.map +0 -1
  848. package/dist/layout-7eyMBmZk.cjs +0 -17
  849. package/dist/layout-7eyMBmZk.cjs.map +0 -1
  850. package/dist/layout-Ox6nJkzC.js +0 -268
  851. package/dist/layout-Ox6nJkzC.js.map +0 -1
  852. package/dist/lightbox-CY52Z_ig.js.map +0 -1
  853. package/dist/lightbox-H8Uq3AXy.cjs +0 -202
  854. package/dist/lightbox-H8Uq3AXy.cjs.map +0 -1
  855. package/dist/list-BGjVo6zb.cjs +0 -40
  856. package/dist/list-BGjVo6zb.cjs.map +0 -1
  857. package/dist/list-D7wUxu1C.js.map +0 -1
  858. package/dist/litElement.mixin-CszkJuNl.js +0 -12
  859. package/dist/litElement.mixin-CszkJuNl.js.map +0 -1
  860. package/dist/litElement.mixin-qh5-IIUq.cjs +0 -1
  861. package/dist/litElement.mixin-qh5-IIUq.cjs.map +0 -1
  862. package/dist/mailbox--EN-JhjV.js.map +0 -1
  863. package/dist/mailbox-DLiBGJhY.cjs.map +0 -1
  864. package/dist/map-B0S_q3ma.js.map +0 -1
  865. package/dist/map-EDQN0I6e.cjs +0 -80
  866. package/dist/map-EDQN0I6e.cjs.map +0 -1
  867. package/dist/menu-3edZGQ1x.cjs.map +0 -1
  868. package/dist/menu-COeFpb6n.js.map +0 -1
  869. package/dist/metric.cjs +0 -69
  870. package/dist/metric.cjs.map +0 -1
  871. package/dist/metric.js +0 -93
  872. package/dist/metric.js.map +0 -1
  873. package/dist/mixins.cjs.map +0 -1
  874. package/dist/mixins.js.map +0 -1
  875. package/dist/notification-CC-TFN5v.js.map +0 -1
  876. package/dist/notification-P4c-kFdH.cjs +0 -23
  877. package/dist/notification-P4c-kFdH.cjs.map +0 -1
  878. package/dist/option-BwAF4nAw.js.map +0 -1
  879. package/dist/option-Cu0ertuF.cjs +0 -43
  880. package/dist/option-Cu0ertuF.cjs.map +0 -1
  881. package/dist/progress-Bk_Q1Shy.js.map +0 -1
  882. package/dist/progress-Yz6EMNSu.cjs.map +0 -1
  883. package/dist/provide-CYgj58u_.cjs +0 -1
  884. package/dist/provide-CYgj58u_.cjs.map +0 -1
  885. package/dist/provide-ydIskwf2.js +0 -107
  886. package/dist/provide-ydIskwf2.js.map +0 -1
  887. package/dist/radio-group-BcdcjLNC.js.map +0 -1
  888. package/dist/radio-group-BpBz5tRA.cjs +0 -40
  889. package/dist/radio-group-BpBz5tRA.cjs.map +0 -1
  890. package/dist/scroll-DXQv0ejL.js.map +0 -1
  891. package/dist/scroll-DbZMTv0K.cjs +0 -26
  892. package/dist/scroll-DbZMTv0K.cjs.map +0 -1
  893. package/dist/search-CwMav5QB.cjs +0 -1
  894. package/dist/select-BV4lK2zy.cjs.map +0 -1
  895. package/dist/select-DKyGWDsG.js.map +0 -1
  896. package/dist/sheet-BAI_jH1t.cjs +0 -35
  897. package/dist/sheet-BAI_jH1t.cjs.map +0 -1
  898. package/dist/sheet-C3TLKItO.js.map +0 -1
  899. package/dist/sheet.service-RcDBwHmv.cjs +0 -1
  900. package/dist/skills/schmancy/store.md +0 -126
  901. package/dist/skills/store.md +0 -126
  902. package/dist/sound.service-BEN6Xjy_.cjs +0 -1
  903. package/dist/sound.service-BEN6Xjy_.cjs.map +0 -1
  904. package/dist/sound.service-DWZe6swU.js.map +0 -1
  905. package/dist/splash-screen-DbI5RgBf.js.map +0 -1
  906. package/dist/splash-screen-DoHRTHi8.cjs +0 -41
  907. package/dist/splash-screen-DoHRTHi8.cjs.map +0 -1
  908. package/dist/src-00DfxCJq.js.map +0 -1
  909. package/dist/src-C_JjQovE.cjs +0 -269
  910. package/dist/src-C_JjQovE.cjs.map +0 -1
  911. package/dist/store-CjFHCSDb.cjs +0 -1
  912. package/dist/store-CjFHCSDb.cjs.map +0 -1
  913. package/dist/store-CjzZDQt8.js +0 -1654
  914. package/dist/store-CjzZDQt8.js.map +0 -1
  915. package/dist/store.cjs +0 -1
  916. package/dist/store.js +0 -2
  917. package/dist/surface-D-GWBcsh.cjs +0 -7
  918. package/dist/surface-D-GWBcsh.cjs.map +0 -1
  919. package/dist/surface-D23JtxYP.js +0 -22
  920. package/dist/surface-D23JtxYP.js.map +0 -1
  921. package/dist/surface.mixin-DqMwoddO.js +0 -320
  922. package/dist/surface.mixin-DqMwoddO.js.map +0 -1
  923. package/dist/surface.mixin-DxOi-xo0.cjs +0 -297
  924. package/dist/surface.mixin-DxOi-xo0.cjs.map +0 -1
  925. package/dist/table-C7b73kdg.cjs +0 -63
  926. package/dist/table-C7b73kdg.cjs.map +0 -1
  927. package/dist/table-CTrhV9-k.js +0 -631
  928. package/dist/table-CTrhV9-k.js.map +0 -1
  929. package/dist/tabs-Ce55RbwF.js.map +0 -1
  930. package/dist/tabs-DAzB8O7w.cjs +0 -31
  931. package/dist/tabs-DAzB8O7w.cjs.map +0 -1
  932. package/dist/tailwind.mixin-DRI1oTYQ.cjs +0 -2
  933. package/dist/tailwind.mixin-DRI1oTYQ.cjs.map +0 -1
  934. package/dist/tailwind.mixin-mdQR3BEO.js +0 -219
  935. package/dist/tailwind.mixin-mdQR3BEO.js.map +0 -1
  936. package/dist/textarea-DjN1D9u0.js.map +0 -1
  937. package/dist/textarea-PuHxBvJA.cjs +0 -39
  938. package/dist/textarea-PuHxBvJA.cjs.map +0 -1
  939. package/dist/theme-B-IJ2r7Q.cjs +0 -181
  940. package/dist/theme-button-BSbYmS4p.cjs +0 -8
  941. package/dist/theme-button-BSbYmS4p.cjs.map +0 -1
  942. package/dist/theme-button-CEMeAUOL.js.map +0 -1
  943. package/dist/theme.service-DxJPUGlu.cjs +0 -1
  944. package/dist/theme.service-DxJPUGlu.cjs.map +0 -1
  945. package/dist/theme.service-cOfPrtfe.js.map +0 -1
  946. package/dist/tslib.es6-Cnt75pb6.cjs +0 -1
  947. package/dist/tslib.es6-Cnt75pb6.cjs.map +0 -1
  948. package/dist/tslib.es6-DMzzJKHV.js +0 -7
  949. package/dist/tslib.es6-DMzzJKHV.js.map +0 -1
  950. package/dist/utils-Bp2jhyZc.js.map +0 -1
  951. package/dist/utils-CBPQvxNW.cjs +0 -1
  952. package/dist/utils-CBPQvxNW.cjs.map +0 -1
  953. package/dist/window-CrjZdf7Y.js.map +0 -1
  954. package/dist/window-DTUARSrU.cjs +0 -59
  955. package/dist/window-DTUARSrU.cjs.map +0 -1
  956. package/skills/schmancy/store.md +0 -126
  957. package/src/components/form-elements/index.ts +0 -1
  958. package/src/components/index.ts +0 -1
  959. package/src/layout/flex/flex.scss +0 -4
  960. package/src/layout/flex/flex.ts +0 -74
  961. package/src/layout/flex/index.ts +0 -1
  962. package/src/layout/grid/.readme +0 -79
  963. package/src/layout/grid/grid.scss +0 -5
  964. package/src/layout/grid/grid.ts +0 -121
  965. package/src/layout/grid/index.ts +0 -1
  966. package/src/layout/layout.ts +0 -122
  967. package/src/layout/v2/flex.ts +0 -243
  968. package/src/layout/v2/index.ts +0 -1
  969. package/src/metric/index.ts +0 -1
  970. package/src/metric/metric.ts +0 -127
  971. package/src/store/context-array.ts +0 -358
  972. package/src/store/context-collection.ts +0 -218
  973. package/src/store/context-create.ts +0 -284
  974. package/src/store/context-object.ts +0 -298
  975. package/src/store/filter-directive.ts +0 -614
  976. package/src/store/index.ts +0 -10
  977. package/src/store/selector-hook.ts +0 -259
  978. package/src/store/selectors.ts +0 -289
  979. package/src/store/storage-manager.ts +0 -269
  980. package/src/store/store.class.ts +0 -239
  981. package/src/store/types.ts +0 -327
  982. package/src/tabs/tabs-compatibility.ts +0 -20
  983. package/src/typewriter/typewriter.ts +0 -410
  984. package/types/src/agent/index.d.ts +0 -1
  985. package/types/src/area/route.test.d.ts +0 -20
  986. package/types/src/button/button.test.d.ts +0 -1
  987. package/types/src/chips/chip.d.ts +0 -3
  988. package/types/src/components/index.d.ts +0 -1
  989. package/types/src/content-drawer/$sheet.d.ts +0 -14
  990. package/types/src/dialog/dailog.d.ts +0 -116
  991. package/types/src/dialog/dialog-content.d.ts +0 -17
  992. package/types/src/directives/guard.d.ts +0 -1
  993. package/types/src/directives/visibility.d.ts +0 -11
  994. package/types/src/form/form-v2.d.ts +0 -22
  995. package/types/src/input/input-v2.d.ts +0 -250
  996. package/types/src/layout/flex/flex.d.ts +0 -26
  997. package/types/src/layout/flex/index.d.ts +0 -1
  998. package/types/src/layout/grid/grid.d.ts +0 -39
  999. package/types/src/layout/grid/index.d.ts +0 -1
  1000. package/types/src/layout/layout.d.ts +0 -59
  1001. package/types/src/layout/v2/flex.d.ts +0 -65
  1002. package/types/src/layout/v2/grid.d.ts +0 -51
  1003. package/types/src/layout/v2/index.d.ts +0 -1
  1004. package/types/src/lightbox/flip.directive.d.ts +0 -22
  1005. package/types/src/metric/index.d.ts +0 -1
  1006. package/types/src/metric/metric.d.ts +0 -39
  1007. package/types/src/notification/outlet.d.ts +0 -10
  1008. package/types/src/sheet/header.d.ts +0 -10
  1009. package/types/src/store/context-array.d.ts +0 -83
  1010. package/types/src/store/context-collection.d.ts +0 -74
  1011. package/types/src/store/context-create.d.ts +0 -43
  1012. package/types/src/store/context-object.d.ts +0 -46
  1013. package/types/src/store/filter-directive.d.ts +0 -116
  1014. package/types/src/store/immer-integration.d.ts +0 -54
  1015. package/types/src/store/index.d.ts +0 -10
  1016. package/types/src/store/selector-hook.d.ts +0 -46
  1017. package/types/src/store/selectors.d.ts +0 -90
  1018. package/types/src/store/storage-manager.d.ts +0 -48
  1019. package/types/src/store/store.class.d.ts +0 -73
  1020. package/types/src/store/types.d.ts +0 -241
  1021. package/types/src/tabs/tabs-compatibility.d.ts +0 -13
  1022. package/types/src/theme/theme.elevation.d.ts +0 -131
  1023. package/types/src/theme/theme.motion.d.ts +0 -198
  1024. package/types/src/theme/theme.shape.d.ts +0 -144
  1025. package/types/src/theme/theme.state.d.ts +0 -546
  1026. package/types/src/theme/theme.typography.d.ts +0 -74
  1027. package/types/src/tooltip/tooltip.d.ts +0 -33
  1028. package/types/src/typewriter/typewriter.d.ts +0 -94
  1029. /package/dist/agent/{flow-CvG1fLW5.js → flow-CaPi2G8y.js} +0 -0
  1030. /package/dist/agent/{vendor-material-color-DcL7ZPxx.js → vendor-material-color-Be96dpGE.js} +0 -0
  1031. /package/dist/{animation-hXFClrIn.js → animation-BK-8BwY8.js} +0 -0
  1032. /package/dist/{animation-CQRdLgzX.cjs → animation-CO_Csq84.cjs} +0 -0
  1033. /package/dist/{decorate-D_utPUsC.js → decorate-23nYs4Le.js} +0 -0
  1034. /package/dist/{decorate-F9CuyeHg.cjs → decorate-DpFmy0nm.cjs} +0 -0
  1035. /package/dist/{hashContent-B2IntJQf.js → hashContent-1ARKIsx9.js} +0 -0
  1036. /package/dist/{hashContent-CahnEuut.cjs → hashContent-Bp5S6T4U.cjs} +0 -0
  1037. /package/dist/{lazy-D6R5N5v4.js → lazy-B0ia54tT.js} +0 -0
  1038. /package/dist/{lazy-BDNnH_r7.cjs → lazy-Dq9mRRjT.cjs} +0 -0
  1039. /package/dist/{reduced-motion-BZTLqAyl.js → reduced-motion-D-L12p7G.js} +0 -0
  1040. /package/dist/{reduced-motion-9RjNnhIg.cjs → reduced-motion-Ds-HjMzn.cjs} +0 -0
  1041. /package/dist/{rxjs-utils-DJbZRjp3.cjs → rxjs-utils-Csnks202.cjs} +0 -0
  1042. /package/dist/{rxjs-utils-CKTnEKUH.js → rxjs-utils-d-ivVN84.js} +0 -0
  1043. /package/dist/{theme.events-NuihzD_p.js → theme.events-Cv7N4Toe.js} +0 -0
  1044. /package/dist/{theme.events-DakXxZeP.cjs → theme.events-DM4H5F2d.cjs} +0 -0
  1045. /package/dist/{theme.interface-DTwkuAKJ.cjs → theme.interface-D9l33b-M.cjs} +0 -0
  1046. /package/dist/{theme.interface-Buged9Cg.js → theme.interface-DnVNre4O.js} +0 -0
  1047. /package/src/{directives/typewriter.ts → typewriter/typewriter.directive.ts} +0 -0
  1048. /package/types/src/{components/form-elements → payment-card-form}/index.d.ts +0 -0
  1049. /package/types/src/{directives/typewriter.d.ts → typewriter/typewriter.directive.d.ts} +0 -0
@@ -0,0 +1,258 @@
1
+ # Migrating from `createContext` to `state()`
2
+
3
+ Cheatsheet for moving call sites off the v1 `createContext` /
4
+ `@select` / `createCompoundSelector` / `selectItem` family to
5
+ `@mhmo91/schmancy/state`.
6
+
7
+ The v1 surface has been deleted from `@mhmo91/schmancy`. There is no
8
+ parallel API; every consumer needs to switch.
9
+
10
+ ## Imports
11
+
12
+ ```ts
13
+ // Before
14
+ import { createContext, select, selectItem, createCompoundSelector } from '@mhmo91/schmancy'
15
+
16
+ // After
17
+ import { state, computed, observe, bindState, stateFromObservable } from '@mhmo91/schmancy/state'
18
+ ```
19
+
20
+ ## Defining a state
21
+
22
+ | v1 | v2 |
23
+ |---|---|
24
+ | `createContext<T>(initial, 'memory', 'foo')` | `state<T>('feature/foo').memory(initial)` |
25
+ | `createContext<T>(initial, 'session', 'foo')` | `state<T>('feature/foo').session(initial)` |
26
+ | `createContext<T>(initial, 'local', 'foo')` | `state<T>('feature/foo').local(initial)` |
27
+ | `createContext<T>(initial, 'indexeddb', 'foo')` | `state<T>('feature/foo').idb(initial)` |
28
+
29
+ The string namespace replaces the v1 third-argument storage key. It
30
+ must contain a `/` (compile-time enforced via the
31
+ `${string}/${string}` template literal). Storage is keyed off the
32
+ namespace string.
33
+
34
+ If your file already declares the initial value in a typed const, drop
35
+ the type arg:
36
+
37
+ ```ts
38
+ const initial: CartState = { items: [], total: 0 }
39
+ const cart = state('hannah/cart').session(initial) // T inferred from `initial`
40
+ ```
41
+
42
+ ## Reading
43
+
44
+ | v1 | v2 |
45
+ |---|---|
46
+ | `cart.value` | `cart.value` (unchanged) |
47
+ | `cart.$.subscribe(...)` | `cart.$.subscribe(...)` (unchanged) |
48
+ | `cart.ready` (boolean) | `cart.loaded` (boolean) + `await cart.ready` (Promise<void>) |
49
+
50
+ `cart.ready` is now a Promise that resolves when initial load completes
51
+ (success or fallback). `cart.loaded` is the boolean runtime flag. Use
52
+ whichever fits the call site.
53
+
54
+ ## Writing
55
+
56
+ | v1 | v2 |
57
+ |---|---|
58
+ | `cart.set({ total: 12 })` | `cart.set({ total: 12 })` (unchanged) |
59
+ | `cart.set({ items: [] }, false)` | `cart.set({ items: [] }, false)` (unchanged) |
60
+ | `cart.replace(next)` | `cart.replace(next)` (unchanged) |
61
+ | `cart.delete('total')` | `cart.delete('total')` (unchanged) |
62
+ | Manual `replace({ ...current, ...patch })` cascade | `cart.update(d => { … })` — immer recipe, single notification |
63
+
64
+ For `Map<K, V>` shapes:
65
+
66
+ | v1 | v2 |
67
+ |---|---|
68
+ | `docs.set('id', doc)` | `docs.set('id', doc)` (unchanged — MapAPI dispatch) |
69
+
70
+ For `Set<U>`:
71
+
72
+ | v1 | v2 |
73
+ |---|---|
74
+ | Manual `replace(new Set([...current, item]))` | `sel.add('item')` |
75
+ | Manual replace-without-item | `sel.delete('item')` (returns boolean) |
76
+ | | `sel.toggle('item')` (new) |
77
+
78
+ For arrays:
79
+
80
+ | v1 | v2 |
81
+ |---|---|
82
+ | `array.push(...items)` | `array.push(...items)` (unchanged) |
83
+ | Manual `replace(current.filter(...))` | `array.update(d => d.splice(...))` (immer) |
84
+
85
+ For nullable references and primitives:
86
+
87
+ | v1 | v2 |
88
+ |---|---|
89
+ | `editing.set({ id: 'x' })` then `editing.set(null)` | Same (ScalarAPI accepts the union directly) |
90
+
91
+ ## Subscribing in a component
92
+
93
+ The v1 `@select` decorator is gone. Three options in v2, in order of
94
+ preference:
95
+
96
+ ### (1) Default — direct read in render (zero ceremony)
97
+
98
+ `$LitElement()` composes `SignalWatcher`, so signal reads in `render()`
99
+ auto-track. Just import the state and use it inline:
100
+
101
+ ```ts
102
+ @customElement('cart-view')
103
+ class CartView extends $LitElement() {
104
+ render() { return html`Items: ${cart.value.items.length}` }
105
+ }
106
+ ```
107
+
108
+ No decorator, no field, no binding code. The imported `cart` singleton
109
+ IS the binding.
110
+
111
+ ### (2) `@observe(source)` — when you need a class field
112
+
113
+ ```ts
114
+ class CartView extends $LitElement() {
115
+ @observe(cart) cart!: CartState
116
+
117
+ onClick() {
118
+ console.log(this.cart) // event handler needs `this.cart`
119
+ }
120
+
121
+ render() {
122
+ return html`Items: ${this.cart.items.length}`
123
+ }
124
+ }
125
+ ```
126
+
127
+ Reads return the latest value. Caller writes are dropped with a dev
128
+ warning. Same decorator shape as `@property` — works under the existing
129
+ tsconfig.
130
+
131
+ ### (3) `bindState(host, source)` — for hosts that aren't `$LitElement`
132
+
133
+ ```ts
134
+ class CustomHost extends LitElement {
135
+ cart = bindState(this, cart)
136
+ render() { return html`Items: ${this.cart.value.items.length}` }
137
+ }
138
+ ```
139
+
140
+ ## Compound selectors → `computed`
141
+
142
+ ```ts
143
+ // Before
144
+ const cartItemCount = createCompoundSelector(
145
+ [cartContext],
146
+ [cart => cart.items.length],
147
+ count => count,
148
+ )
149
+
150
+ // After
151
+ import { computed } from '@mhmo91/schmancy/state'
152
+ const cartItemCount = computed(() => cart.value.items.length)
153
+ ```
154
+
155
+ Cross-state composition just works:
156
+
157
+ ```ts
158
+ const orderTotal = computed(() => cart.value.subtotal + tip.value.amount)
159
+ ```
160
+
161
+ Reading any `state.value` inside `computed(fn)` auto-tracks. No
162
+ explicit dependency array.
163
+
164
+ ## Side effects → `effect`
165
+
166
+ ```ts
167
+ import { effect } from '@mhmo91/schmancy/state'
168
+
169
+ const stop = effect(() => {
170
+ document.title = `${cart.value.items.length} items`
171
+ })
172
+
173
+ // later, when no longer needed:
174
+ stop[Symbol.dispose]()
175
+ ```
176
+
177
+ Eager run + microtask-coalesced re-runs. Returns a `Disposable`.
178
+
179
+ ## Observable bridges
180
+
181
+ ```ts
182
+ // Before
183
+ const userPresence$ = new BehaviorSubject({ online: false, since: 0 })
184
+ // (read with .value, subscribe with .$, no persistence story)
185
+
186
+ // After
187
+ import { stateFromObservable } from '@mhmo91/schmancy/state'
188
+
189
+ const userPresence = stateFromObservable(
190
+ presence$, // Observable<PresenceState>
191
+ 'app/presence',
192
+ { online: false, since: 0 },
193
+ )
194
+ // userPresence has .value, .$, all variant API methods, lifecycle.
195
+ ```
196
+
197
+ ## Lifecycle / disposal
198
+
199
+ ```ts
200
+ // Module scope — same as v1
201
+ export const cart = state('hannah/cart').session(initial)
202
+
203
+ // Test scope — using
204
+ it('cart updates total on add', () => {
205
+ using cart = state('test/cart').memory(initial)
206
+ cart.update(d => { d.items.push(item) })
207
+ expect(cart.value.total).toBe(item.price)
208
+ }) // [Symbol.dispose] runs here, even on assertion failure
209
+
210
+ // IDB-backed in tests — await using flushes pending writes
211
+ it('persists across reloads', async () => {
212
+ await using cart = state('test/cart').idb(initial)
213
+ // ...
214
+ })
215
+
216
+ // Imperative cleanup (samwa back-compat alias)
217
+ cart.destroy()
218
+ ```
219
+
220
+ ## Things that went away
221
+
222
+ - **`createCompoundSelector`** — use `computed()`.
223
+ - **`@select` and `@selectItem` decorators** — use direct render reads
224
+ via `$LitElement` (default), `@observe` (field-level), or `bindState`
225
+ (non-Lit hosts).
226
+ - **`IStore` / `ICollectionStore` / `IArrayStore` interfaces** — no
227
+ longer needed. The variant write API dispatch is type-level.
228
+ - **`error$` per-store Subject** — errors flow through console + the
229
+ `StateStorageError` thrown from `save()` for IDB write failures.
230
+ - **Tree-scoped `<state-provider>`** — replaced by
231
+ `<schmancy-context provides={[…]}>`. Same intent (per-subtree
232
+ isolation of a state), different API: in v1 the provider was a
233
+ primitive; in v2 the state surface stays unchanged and the
234
+ `<schmancy-context>` element is what scopes a subtree. Consumer
235
+ code (`cart.value`, `cart.set(...)`) is identical inside and
236
+ outside the element. See `SCOPING.md` for the details.
237
+
238
+ ## Footguns
239
+
240
+ - **Don't use `using` at module scope.** It disposes on module GC,
241
+ which is roughly never until the tab closes. Plain `const` for
242
+ module singletons, `using` for test/function scope only.
243
+ - **Namespaces always contain `/`.** `state('cart')` is a TypeError;
244
+ use `state('feature/cart')`.
245
+ - **Don't `state.signal.set(...)` directly.** Go through the variant
246
+ API so write-coalescing and persistence stay coherent.
247
+ - **Inline literals without a typed const narrow T.**
248
+ `state('app/x').memory({ items: [], total: 0 })` infers
249
+ `{ items: never[]; total: number }`. Either use a typed const first
250
+ or pass the type arg: `state<CartState>('app/x').memory({...})`.
251
+
252
+ ## Pointers
253
+
254
+ - Skill / API reference: `packages/schmancy/skills/schmancy/state.md`
255
+ - Agent brief: `packages/schmancy/src/state/CLAUDE.md`
256
+ - Tree-scoping reference: `packages/schmancy/src/state/SCOPING.md`
257
+ - Original plan: `~/.claude/plans/indexed-twirling-stroustrup.md`
258
+ - Scoping plan: `~/.claude/plans/federated-petting-penguin.md`
@@ -0,0 +1,134 @@
1
+ # Scoping a state per subtree — `<schmancy-context provides>`
2
+
3
+ The `state()` factory returns a module-scoped singleton. `cart` is the
4
+ same instance everywhere it is imported. That is the right default —
5
+ "the cart" is a single thing.
6
+
7
+ When you need *more than one* of something at the same time — two
8
+ side-by-side checkout flows, a comparison view of two records, an
9
+ embedded preview that shouldn't trample the parent's draft —
10
+ `<schmancy-context>` scopes a state to a subtree.
11
+
12
+ ```ts
13
+ import { state } from '@mhmo91/schmancy/state'
14
+
15
+ const cart = state<CartState>('hannah/cart').session({ items: [], total: 0 })
16
+
17
+ class App extends $LitElement() {
18
+ render() {
19
+ return html`
20
+ <schmancy-context .provides=${[cart]}>
21
+ <cart-view></cart-view> <!-- isolated copy of cart -->
22
+ </schmancy-context>
23
+ <cart-summary></cart-summary> <!-- module-scoped global cart -->
24
+ `
25
+ }
26
+ }
27
+ ```
28
+
29
+ Inside `<schmancy-context>`, every read and write of `cart` resolves to
30
+ a per-element isolated copy. Outside, it stays the global. **Consumer
31
+ code does not change.** `cart.value`, `cart.set(...)`,
32
+ `cart.update(d => …)` — same calls, tree-aware result.
33
+
34
+ ## Resolution rules
35
+
36
+ - Inside `<schmancy-context provides={[cart]}>` → reads/writes go to
37
+ that element's isolated copy.
38
+ - Inside two nested `<schmancy-context provides={[cart]}>` → the
39
+ **closest** provider wins.
40
+ - Inside a `<schmancy-context>` whose `provides` does **not** include
41
+ `cart` → falls through to the module-scoped global.
42
+ - Outside any `<schmancy-context>` → module-scoped global.
43
+
44
+ ## What's covered
45
+
46
+ The scoping primitive is supposed to "just work" for the call paths a
47
+ component naturally writes. It handles:
48
+
49
+ | Code path | Mechanism |
50
+ |---|---|
51
+ | `render()` | `SchmancyElement` prototype-wrap pushes the host onto the active-host stack for the duration of `render()`. |
52
+ | Lit lifecycle (`connectedCallback`, `update`, `updated`, `firstUpdated`, `willUpdate`) | Same prototype-wrap. |
53
+ | Class methods called from event handlers (sync) | Same prototype-wrap. |
54
+ | `await` continuations inside class methods | A `Promise.prototype.then` patch in `state/active-host.ts` propagates the host across each `.then` boundary. |
55
+ | `addEventListener(type, fn)` on the host | Wrapped at the `SchmancyElement` layer; `removeEventListener` re-finds the wrapped listener via a `WeakMap`. |
56
+ | Inline arrow handlers attached via Lit templates (`@click=${() => …}`) | Resolved through the `window.event.composedPath()` fallback in `resolveActiveHost()`. |
57
+
58
+ Pure async callbacks with no DOM origin — a websocket `onmessage`
59
+ unrelated to any user gesture, a `setInterval` body running on its own
60
+ schedule — fall through to the module-scoped global. That is the
61
+ correct semantic: those callbacks have no tree position to resolve to.
62
+
63
+ ## Lifecycle
64
+
65
+ - The isolated copy is created when `<schmancy-context>` connects, and
66
+ is **seeded with the current global value** at that moment. The
67
+ subtree starts from "what the rest of the app sees right now," then
68
+ diverges.
69
+ - It is destroyed when `<schmancy-context>` disconnects. Pending
70
+ microtask-coalesced writes flush; the storage adapter's `close()`
71
+ runs.
72
+ - The isolated copy uses **memory** storage regardless of the global's
73
+ backend. It shares lifetime with the element, not with
74
+ `localStorage` / `sessionStorage` / IndexedDB. The global continues
75
+ to persist on whichever backend it was created with.
76
+
77
+ ## Multiple states per element
78
+
79
+ ```ts
80
+ <schmancy-context .provides=${[cart, menu, draft]}>
81
+ <wizard></wizard>
82
+ </schmancy-context>
83
+ ```
84
+
85
+ Each is isolated independently. States not listed in `provides`
86
+ fall through to the global from inside the element — useful when only
87
+ some namespaces need scoping in a particular subtree.
88
+
89
+ ## Two pitfalls
90
+
91
+ ### Don't cache `state.signal` or `state.$` across tree boundaries
92
+
93
+ Every read goes through context resolution. The signal (and Observable)
94
+ returned by the getter is the *currently resolved* instance. Stash a
95
+ reference to `cart.signal` and the host later moves into a different
96
+ `<schmancy-context>` subtree, and your reference lags.
97
+
98
+ ```ts
99
+ // ✗ Don't
100
+ const sig = cart.signal
101
+ class Foo extends $LitElement() {
102
+ render() { return html`${sig.get().n}` } // never re-resolves
103
+ }
104
+
105
+ // ✓ Do
106
+ class Foo extends $LitElement() {
107
+ render() { return html`${cart.value.n}` } // resolves fresh each render
108
+ }
109
+ ```
110
+
111
+ ### Don't expect persistence per subtree
112
+
113
+ Isolated copies are memory-backed. If your scoping use case requires
114
+ persisting per-subtree state across reloads, that is a different design
115
+ — derive a fresh `state()` per logical scope (with a unique namespace)
116
+ and use the persistent backend on that.
117
+
118
+ ## Implementation primer (for contributors)
119
+
120
+ - `state/active-host.ts` — `_activeHost` Variable (stack) +
121
+ one-time `Promise.prototype.then` patch + 4-tier `resolveActiveHost`
122
+ fallback. ~120 lines. Hand-rolled because no official, supported
123
+ TC39 AsyncContext.Variable polyfill exists today; the patch
124
+ decommissions cleanly when one ships.
125
+ - `state/schmancy-context.ts` — the element. One `ContextProvider`
126
+ (`@lit/context`) per state in `provides`. Destroys on disconnect.
127
+ - `state/index.ts` — every read (`value` / `signal` / `$`) and every
128
+ write on a global instance routes through `resolveContextual`,
129
+ which dispatches a `context-request` event from the active host and
130
+ caches the result per-host-per-namespace in a `WeakMap`. Isolated
131
+ copies are direct-access (skip resolveContextual, no recursion).
132
+ - `mixins/SchmancyElement.ts` — prototype-chain wrap at first
133
+ construction (cached in a `WeakSet` of prototypes); `addEventListener`
134
+ / `removeEventListener` overrides; wrapped listener cache.
@@ -0,0 +1,190 @@
1
+ // `_`-prefixed identifiers below are an intentional naming convention for
2
+ // module-private infrastructure. `_activeHost` is exported only so the
3
+ // $LitElement mixin can wrap render/lifecycle in `_activeHost.run`; the
4
+ // underscore signals "not part of the public state API."
5
+ /* oxlint-disable no-underscore-dangle */
6
+
7
+ // Active-host tracker for context-aware state resolution.
8
+ //
9
+ // Polyfills the TC39 `AsyncContext.Variable` propagation primitive using a
10
+ // stack + a one-time `Promise.prototype.then` patch. The stack value carries
11
+ // across `await`, `queueMicrotask`, RxJS subscription callbacks, and any
12
+ // other code path that ultimately routes through `Promise.then`. This is the
13
+ // same capture-and-restore technique zone.js, async-hooks, and the various
14
+ // AsyncContext userland polyfills use.
15
+ //
16
+ // Why we own this:
17
+ // - The TC39 proposal is at stage 2; no official polyfill ships from TC39.
18
+ // - The `async-context@1.0.0` package on npm is unrelated (a 2014 Node
19
+ // callback helper), and the available userland polyfills either depend
20
+ // on zone.js (~50 KB) or are Node-only / hobby quality.
21
+ // - The patch surface is ~30 lines, idempotent, preserves Promise
22
+ // semantics (delegates to the original `then`, so `Symbol.species` and
23
+ // subclassing work unchanged), and decommissions cleanly the day a real
24
+ // polyfill or native AsyncContext lands (drop the file, swap the
25
+ // `_activeHost` export for the standard primitive).
26
+ //
27
+ // Known limitation — native await on a native Promise: V8's await
28
+ // optimization (since 7.x) skips the spec-prescribed
29
+ // `Promise.resolve(x).then(continuation)` step, so userland `then`
30
+ // patches don't intercept the resumption. Class methods that mutate
31
+ // state across an `await` boundary will fall back to the
32
+ // module-scoped global, not the active-host's isolated copy. To
33
+ // preserve the host across awaits, either keep the mutation in the
34
+ // synchronous prelude before the first `await`, or explicitly chain
35
+ // with `.then()` (which still routes through the patched method).
36
+ // A real fix requires either a build-time async-function transform
37
+ // or native AsyncContext.Variable in the runtime.
38
+ //
39
+ // resolveActiveHost() fallback chain:
40
+ // 1. Stack value set by `_activeHost.run(host, fn)` — covers render(),
41
+ // Lit lifecycle methods, and class-method handlers (all wrapped by
42
+ // SchmancyElement's prototype-chain wrap).
43
+ // 2. The closest `<schmancy-context>` whose subtree currently has an
44
+ // in-flight DOM event. The element installs capture-phase listeners
45
+ // that publish itself as the event-host while the synchronous
46
+ // handler chain runs; the slot clears via microtask. Covers
47
+ // template-bound inline arrow handlers attached to descendants.
48
+ // 3. document.activeElement — keyboard handlers in focus.
49
+ // 4. undefined → caller falls back to the module-scoped global instance.
50
+
51
+ // Singleton across any number of schmancy module copies (source + dist, ESM
52
+ // + CJS, hoisted vs. nested node_modules) via the runtime-global symbol
53
+ // registry. The first copy to load creates the slot; later copies reuse it.
54
+ // Without this, two stacks → mixins push to one, state reads from the other,
55
+ // and active-host context is lost across the boundary.
56
+ const STACK_KEY = Symbol.for('schmancy.state.activeHost.stack')
57
+ type StackSlot = { stack: Array<HTMLElement | undefined> }
58
+ const _g = globalThis as { [STACK_KEY]?: StackSlot }
59
+ _g[STACK_KEY] ??= { stack: [undefined] }
60
+ const _stack = _g[STACK_KEY].stack
61
+
62
+ // One-time Promise.prototype.then patch at module init. Each .then() call
63
+ // captures the stack head at chain time; firing the callback restores that
64
+ // captured value for the duration of the callback. The guard property
65
+ // prevents double-patching across HMR / duplicate module loads.
66
+ declare global {
67
+ interface Promise<T> {
68
+ // Marker symbol so we can detect (and skip) re-patching.
69
+ readonly __schmancyActiveHostPatched?: true
70
+ }
71
+ }
72
+
73
+ // Patching Promise.prototype is the entire mechanism this module exists to
74
+ // provide — the lint rules below intentionally do not apply.
75
+ /* oxlint-disable no-extend-native, unicorn/no-thenable */
76
+ if (typeof Promise !== 'undefined' && !('__schmancyActiveHostPatched' in Promise.prototype)) {
77
+ Object.defineProperty(Promise.prototype, '__schmancyActiveHostPatched', {
78
+ value: true,
79
+ configurable: false,
80
+ enumerable: false,
81
+ writable: false,
82
+ })
83
+ const _origThen = Promise.prototype.then
84
+ // Replace with our wrapper. We delegate to the original `then` via
85
+ // `_origThen.call(this, …)` so Promise subclassing / Symbol.species behave
86
+ // exactly as before — the only added work is the stack push/pop around
87
+ // each user callback.
88
+ Promise.prototype.then = function schmancyThen<T, R1, R2>(
89
+ this: Promise<T>,
90
+ onfulfilled?: ((value: T) => R1 | PromiseLike<R1>) | null,
91
+ onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null,
92
+ ): Promise<R1 | R2> {
93
+ const captured = _stack[_stack.length - 1]
94
+ const wrapFulfilled = onfulfilled
95
+ ? (v: T): R1 | PromiseLike<R1> => {
96
+ _stack.push(captured)
97
+ try {
98
+ return onfulfilled(v)
99
+ } finally {
100
+ _stack.pop()
101
+ }
102
+ }
103
+ : onfulfilled
104
+ const wrapRejected = onrejected
105
+ ? (r: unknown): R2 | PromiseLike<R2> => {
106
+ _stack.push(captured)
107
+ try {
108
+ return onrejected(r)
109
+ } finally {
110
+ _stack.pop()
111
+ }
112
+ }
113
+ : onrejected
114
+ return _origThen.call(this, wrapFulfilled, wrapRejected) as Promise<R1 | R2>
115
+ }
116
+ }
117
+ /* oxlint-enable no-extend-native, unicorn/no-thenable */
118
+
119
+ export const _activeHost = {
120
+ /** Run `fn` with `host` as the active host for the duration of `fn` and
121
+ * any awaits / microtasks / Promise chains that descend from it. */
122
+ run<R>(host: HTMLElement | undefined, fn: () => R): R {
123
+ _stack.push(host)
124
+ try {
125
+ return fn()
126
+ } finally {
127
+ _stack.pop()
128
+ }
129
+ },
130
+ /** The current active host, or undefined if no `run()` is on the stack. */
131
+ get(): HTMLElement | undefined {
132
+ return _stack[_stack.length - 1]
133
+ },
134
+ }
135
+
136
+ // Tier 2 of the resolveActiveHost() fallback chain. A `<schmancy-context>`
137
+ // publishes itself here from a capture-phase event listener attached to
138
+ // itself; the slot clears in the next microtask, after the synchronous
139
+ // event-handler chain has run. `window.event` is unreliable across both
140
+ // engines and time (it can outlive its event — a stale `message` event
141
+ // from postMessage can leak BODY for arbitrary later resolution calls), so
142
+ // we own this slot rather than read the legacy global.
143
+ //
144
+ // Singleton across module copies for the same reason as `_stack` above.
145
+ const EVENT_HOST_KEY = Symbol.for('schmancy.state.activeHost.eventHost')
146
+ type EventHostSlot = { host: HTMLElement | undefined; scheduled: boolean }
147
+ const _eventHostSlot: EventHostSlot =
148
+ ((globalThis as { [EVENT_HOST_KEY]?: EventHostSlot })[EVENT_HOST_KEY] ??= {
149
+ host: undefined,
150
+ scheduled: false,
151
+ })
152
+
153
+ /** Publish `host` as the active event-host. The slot self-clears at the
154
+ * end of the current microtask checkpoint — long enough for the entire
155
+ * synchronous event-handler chain to read it, short enough that no
156
+ * later, unrelated microtask sees a stale value. */
157
+ export function _publishEventHost(host: HTMLElement): void {
158
+ _eventHostSlot.host = host
159
+ if (_eventHostSlot.scheduled) return
160
+ _eventHostSlot.scheduled = true
161
+ queueMicrotask(() => {
162
+ _eventHostSlot.scheduled = false
163
+ _eventHostSlot.host = undefined
164
+ })
165
+ }
166
+
167
+ export function resolveActiveHost(): HTMLElement | undefined {
168
+ // 1. Stack (set by _activeHost.run).
169
+ const fromStack = _activeHost.get()
170
+ if (fromStack !== undefined) return fromStack
171
+
172
+ // 2. Closest <schmancy-context> with an in-flight event in its subtree.
173
+ if (_eventHostSlot.host !== undefined) return _eventHostSlot.host
174
+
175
+ // 3. document.activeElement — keyboard / focus handlers.
176
+ if (typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {
177
+ return document.activeElement
178
+ }
179
+
180
+ // 4. undefined — caller falls back to module-scoped.
181
+ return undefined
182
+ }
183
+
184
+ /** Stable context key for a state namespace. `Symbol.for(...)` so the same
185
+ * namespace string yields the same symbol across module boundaries — the
186
+ * ContextProvider on `<schmancy-context>` and the ContextRequestEvent
187
+ * dispatched by a state read must agree on identity. */
188
+ export function stateContextKey(namespace: string): symbol {
189
+ return Symbol.for(`schmancy.state:${namespace}`)
190
+ }