@mhmo91/schmancy 0.9.28 → 0.10.1

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 (1042) hide show
  1. package/custom-elements.json +1010 -2240
  2. package/dist/active-host-0of-L858.cjs +1 -0
  3. package/dist/active-host-0of-L858.cjs.map +1 -0
  4. package/dist/active-host-D-a1X-nq.js +57 -0
  5. package/dist/active-host-D-a1X-nq.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 +12652 -7787
  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-C_J4qxKO.js} +20 -15
  19. package/dist/area-C_J4qxKO.js.map +1 -0
  20. package/dist/area-ISC8Mdkh.cjs +12 -0
  21. package/dist/area-ISC8Mdkh.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-DZN8HsSS.cjs} +1 -1
  25. package/dist/{audio-Dvr-RBzE.cjs.map → audio-DZN8HsSS.cjs.map} +1 -1
  26. package/dist/{audio-ql6nvY0y.js → audio-Tmre4WyL.js} +1 -1
  27. package/dist/{audio-ql6nvY0y.js.map → audio-Tmre4WyL.js.map} +1 -1
  28. package/dist/audio.cjs +1 -1
  29. package/dist/audio.js +2 -2
  30. package/dist/autocomplete-BDF85W0J.cjs +115 -0
  31. package/dist/autocomplete-BDF85W0J.cjs.map +1 -0
  32. package/dist/{autocomplete-C2P0Soht.js → autocomplete-CM8VqW9S.js} +29 -26
  33. package/dist/autocomplete-CM8VqW9S.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-CpXe-Qto.cjs +80 -0
  43. package/dist/boat-CpXe-Qto.cjs.map +1 -0
  44. package/dist/{boat-DXZ0k7oa.js → boat-DxYNK4xT.js} +43 -54
  45. package/dist/boat-DxYNK4xT.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-iRjq6Nvd.js → busy-CP-gRfAP.js} +14 -9
  53. package/dist/busy-CP-gRfAP.js.map +1 -0
  54. package/dist/{busy-DGYhpTnO.cjs → busy-Dma4gtnz.cjs} +4 -4
  55. package/dist/busy-Dma4gtnz.cjs.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-wUTjx0EC.js → card-Bv--HeGO.js} +41 -30
  63. package/dist/card-Bv--HeGO.js.map +1 -0
  64. package/dist/{card-DjYnCckw.cjs → card-ClroODSK.cjs} +6 -6
  65. package/dist/card-ClroODSK.cjs.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-VBSenxgb.js → checkbox-1gQOOcja.js} +86 -82
  73. package/dist/checkbox-1gQOOcja.js.map +1 -0
  74. package/dist/checkbox-DvTZXN1Y.cjs +39 -0
  75. package/dist/checkbox-DvTZXN1Y.cjs.map +1 -0
  76. package/dist/checkbox.cjs +1 -1
  77. package/dist/checkbox.js +1 -1
  78. package/dist/{chips-D6ptH5re.cjs → chips-Bw7FNDpX.cjs} +19 -19
  79. package/dist/chips-Bw7FNDpX.cjs.map +1 -0
  80. package/dist/{chips-BDS9lkPa.js → chips-wkfKzf_e.js} +146 -136
  81. package/dist/chips-wkfKzf_e.js.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-CJzuds4c.cjs} +15 -15
  85. package/dist/code-highlight-CJzuds4c.cjs.map +1 -0
  86. package/dist/{code-highlight-Bi91XHJN.js → code-highlight-CcdCFMrn.js} +37 -40
  87. package/dist/code-highlight-CcdCFMrn.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-ClTMg1AB.js → date-range-BDHz_Olm.js} +16 -17
  105. package/dist/date-range-BDHz_Olm.js.map +1 -0
  106. package/dist/date-range-BsPW60vp.cjs +131 -0
  107. package/dist/date-range-BsPW60vp.cjs.map +1 -0
  108. package/dist/{date-range-inline-CpKG6qt2.js → date-range-inline-1NmZE_Xr.js} +5 -5
  109. package/dist/{date-range-inline-CpKG6qt2.js.map → date-range-inline-1NmZE_Xr.js.map} +1 -1
  110. package/dist/date-range-inline-BsjNNGFR.cjs +43 -0
  111. package/dist/{date-range-inline-B9Dp2z6C.cjs.map → date-range-inline-BsjNNGFR.cjs.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-CPjlqQD4.js → details-BEp2s2ca.js} +19 -18
  121. package/dist/details-BEp2s2ca.js.map +1 -0
  122. package/dist/{details-Cz9ok9si.cjs → details-BtUNqzn8.cjs} +9 -9
  123. package/dist/details-BtUNqzn8.cjs.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-CILo3_vi.cjs → divider-CpNT11Iy.cjs} +3 -3
  143. package/dist/divider-CpNT11Iy.cjs.map +1 -0
  144. package/dist/{divider-ghgyw5CU.js → divider-VxpjZ8hk.js} +11 -9
  145. package/dist/divider-VxpjZ8hk.js.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-05azMpho.cjs +141 -0
  153. package/dist/expand-05azMpho.cjs.map +1 -0
  154. package/dist/{expand-CbjBr_Ds.js → expand-CRUl3-mN.js} +24 -20
  155. package/dist/expand-CRUl3-mN.js.map +1 -0
  156. package/dist/expand.cjs +1 -1
  157. package/dist/expand.js +1 -1
  158. package/dist/{extra-BZeZOMBI.cjs → extra-CyERULfm.cjs} +6 -6
  159. package/dist/extra-CyERULfm.cjs.map +1 -0
  160. package/dist/{extra-DK9MQtPJ.js → extra-aNV1fO6W.js} +19 -14
  161. package/dist/extra-aNV1fO6W.js.map +1 -0
  162. package/dist/extra.cjs +1 -1
  163. package/dist/extra.js +1 -1
  164. package/dist/float-DRET9mVZ.cjs +1 -0
  165. package/dist/{float-CuZ8LOgB.cjs.map → float-DRET9mVZ.cjs.map} +1 -1
  166. package/dist/{float-BfCvGeY9.js → float-N3qhNET_.js} +2 -2
  167. package/dist/{float-BfCvGeY9.js.map → float-N3qhNET_.js.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-BBJqwT_B.js} +27 -24
  183. package/dist/icons-BBJqwT_B.js.map +1 -0
  184. package/dist/icons-CNixJ6kL.cjs +52 -0
  185. package/dist/icons-CNixJ6kL.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-DoN_toqE.js} +17 -11
  189. package/dist/iframe-DoN_toqE.js.map +1 -0
  190. package/dist/iframe-g-4DjAD7.cjs +24 -0
  191. package/dist/iframe-g-4DjAD7.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-ClnkMJgh.js} +30 -30
  197. package/dist/input-ClnkMJgh.js.map +1 -0
  198. package/dist/{input-BGNZlfL8.cjs → input-CwFslLcF.cjs} +14 -14
  199. package/dist/input-CwFslLcF.cjs.map +1 -0
  200. package/dist/{input-chip-DN-cwf11.cjs → input-chip-DMXRT7bK.cjs} +2 -2
  201. package/dist/input-chip-DMXRT7bK.cjs.map +1 -0
  202. package/dist/{input-chip-BQrjpjaQ.js → input-chip-DwSyFv1x.js} +7 -4
  203. package/dist/input-chip-DwSyFv1x.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-BghHmee6.js} +1 -1
  215. package/dist/{layout-fjM1DWlF.js.map → layout-BghHmee6.js.map} +1 -1
  216. package/dist/{layout-CTfRXQoz.cjs → layout-VmxXuGGp.cjs} +1 -1
  217. package/dist/{layout-CTfRXQoz.cjs.map → layout-VmxXuGGp.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-CY52Z_ig.js → lightbox-IleIcq19.js} +13 -12
  223. package/dist/lightbox-IleIcq19.js.map +1 -0
  224. package/dist/lightbox-m5FLmYlv.cjs +202 -0
  225. package/dist/lightbox-m5FLmYlv.cjs.map +1 -0
  226. package/dist/lightbox.cjs +1 -1
  227. package/dist/lightbox.js +1 -1
  228. package/dist/{list-D7wUxu1C.js → list-BlXJlm16.js} +26 -21
  229. package/dist/list-BlXJlm16.js.map +1 -0
  230. package/dist/list-C-b9p1yi.cjs +40 -0
  231. package/dist/list-C-b9p1yi.cjs.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-B0hZLpF1.cjs} +64 -66
  239. package/dist/mailbox-B0hZLpF1.cjs.map +1 -0
  240. package/dist/{mailbox--EN-JhjV.js → mailbox-DAmejcKa.js} +137 -126
  241. package/dist/mailbox-DAmejcKa.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-BoIu47qU.js} +11 -9
  245. package/dist/map-BoIu47qU.js.map +1 -0
  246. package/dist/map-CZ0816EI.cjs +80 -0
  247. package/dist/map-CZ0816EI.cjs.map +1 -0
  248. package/dist/map.cjs +1 -1
  249. package/dist/map.js +1 -1
  250. package/dist/{menu-3edZGQ1x.cjs → menu-BFHBnp5M.cjs} +5 -5
  251. package/dist/menu-BFHBnp5M.cjs.map +1 -0
  252. package/dist/{menu-COeFpb6n.js → menu-BV9_8ys8.js} +15 -10
  253. package/dist/menu-BV9_8ys8.js.map +1 -0
  254. package/dist/menu.cjs +1 -1
  255. package/dist/menu.js +1 -1
  256. package/dist/mixins-BIXF7xkF.cjs +298 -0
  257. package/dist/mixins-BIXF7xkF.cjs.map +1 -0
  258. package/dist/mixins-CL1krSOE.js +627 -0
  259. package/dist/mixins-CL1krSOE.js.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-CigTy3ia.cjs +23 -0
  271. package/dist/notification-CigTy3ia.cjs.map +1 -0
  272. package/dist/{notification-CC-TFN5v.js → notification-Dzm6zWxX.js} +40 -38
  273. package/dist/notification-Dzm6zWxX.js.map +1 -0
  274. package/dist/notification.cjs +1 -1
  275. package/dist/notification.js +1 -1
  276. package/dist/option-BfvzzkzM.cjs +43 -0
  277. package/dist/option-BfvzzkzM.cjs.map +1 -0
  278. package/dist/{option-BwAF4nAw.js → option-Dyb0Q45u.js} +9 -7
  279. package/dist/option-Dyb0Q45u.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/payment-card-form-CQ6sLlrh.cjs +73 -0
  295. package/dist/{components-DkmEgyAc.cjs.map → payment-card-form-CQ6sLlrh.cjs.map} +1 -1
  296. package/dist/{components-DZgJWHdZ.js → payment-card-form-D9N2Q0wM.js} +21 -22
  297. package/dist/{components-DZgJWHdZ.js.map → payment-card-form-D9N2Q0wM.js.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-Yz6EMNSu.cjs → progress-Dyri7dc2.cjs} +3 -3
  301. package/dist/progress-Dyri7dc2.cjs.map +1 -0
  302. package/dist/{progress-Bk_Q1Shy.js → progress-LPwPfzBi.js} +16 -13
  303. package/dist/progress-LPwPfzBi.js.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-DK-T6jGy.cjs +40 -0
  311. package/dist/radio-group-DK-T6jGy.cjs.map +1 -0
  312. package/dist/{radio-group-BcdcjLNC.js → radio-group-DqP886F-.js} +14 -12
  313. package/dist/radio-group-DqP886F-.js.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-DXQv0ejL.js → scroll-BD82ANjm.js} +9 -7
  327. package/dist/scroll-BD82ANjm.js.map +1 -0
  328. package/dist/scroll-yfNU0zNO.cjs +26 -0
  329. package/dist/scroll-yfNU0zNO.cjs.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-BR3r3SZe.cjs} +6 -6
  335. package/dist/select-BR3r3SZe.cjs.map +1 -0
  336. package/dist/{select-DKyGWDsG.js → select-GONAphZI.js} +23 -20
  337. package/dist/select-GONAphZI.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-C4sAGqTf.js} +22 -20
  341. package/dist/sheet-C4sAGqTf.js.map +1 -0
  342. package/dist/sheet-D9pZMrzs.cjs +35 -0
  343. package/dist/sheet-D9pZMrzs.cjs.map +1 -0
  344. package/dist/sheet.cjs +1 -1
  345. package/dist/sheet.js +2 -2
  346. package/dist/{sheet.service-Dlv20Zfc.js → sheet.service-B7h_-e-q.js} +3 -3
  347. package/dist/{sheet.service-Dlv20Zfc.js.map → sheet.service-B7h_-e-q.js.map} +1 -1
  348. package/dist/sheet.service-C1J0-i4d.cjs +1 -0
  349. package/dist/{sheet.service-RcDBwHmv.cjs.map → sheet.service-C1J0-i4d.cjs.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-DWZe6swU.js → sound.service-Ba_HNBLD.js} +3 -3
  371. package/dist/sound.service-Ba_HNBLD.js.map +1 -0
  372. package/dist/sound.service-CvdB2yUJ.cjs +1 -0
  373. package/dist/sound.service-CvdB2yUJ.cjs.map +1 -0
  374. package/dist/{splash-screen-DbI5RgBf.js → splash-screen-BGMZmQRT.js} +12 -9
  375. package/dist/splash-screen-BGMZmQRT.js.map +1 -0
  376. package/dist/splash-screen-DqULOTZ0.cjs +41 -0
  377. package/dist/splash-screen-DqULOTZ0.cjs.map +1 -0
  378. package/dist/splash-screen.cjs +1 -1
  379. package/dist/splash-screen.js +1 -1
  380. package/dist/{src-00DfxCJq.js → src-CHM4hrEr.js} +299 -351
  381. package/dist/src-CHM4hrEr.js.map +1 -0
  382. package/dist/src-DzFcGdcn.cjs +263 -0
  383. package/dist/src-DzFcGdcn.cjs.map +1 -0
  384. package/dist/state-BAW3C11I.cjs +1 -0
  385. package/dist/state-BAW3C11I.cjs.map +1 -0
  386. package/dist/state-ClRXrqDA.js +846 -0
  387. package/dist/state-ClRXrqDA.js.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-BHJgIDz9.js +24 -0
  395. package/dist/surface-BHJgIDz9.js.map +1 -0
  396. package/dist/surface-DW78bc8W.cjs +7 -0
  397. package/dist/surface-DW78bc8W.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-Ce55RbwF.js → tabs-BCRVyQU1.js} +22 -22
  409. package/dist/tabs-BCRVyQU1.js.map +1 -0
  410. package/dist/tabs-EIEhkEUb.cjs +31 -0
  411. package/dist/tabs-EIEhkEUb.cjs.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-DApOhSAL.js} +30 -28
  417. package/dist/textarea-DApOhSAL.js.map +1 -0
  418. package/dist/textarea-zxNlRLVm.cjs +39 -0
  419. package/dist/textarea-zxNlRLVm.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-BCUjQH6-.js} +45 -41
  423. package/dist/{theme-pbxlt72h.js.map → theme-BCUjQH6-.js.map} +1 -1
  424. package/dist/theme-Z43TLE61.cjs +181 -0
  425. package/dist/{theme-B-IJ2r7Q.cjs.map → theme-Z43TLE61.cjs.map} +1 -1
  426. package/dist/theme-button-Czsdp3o1.cjs +8 -0
  427. package/dist/theme-button-Czsdp3o1.cjs.map +1 -0
  428. package/dist/{theme-button-CEMeAUOL.js → theme-button-DdSbcivT.js} +3 -4
  429. package/dist/theme-button-DdSbcivT.js.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-cOfPrtfe.js → theme.service-9clsqyee.js} +4 -4
  439. package/dist/theme.service-9clsqyee.js.map +1 -0
  440. package/dist/theme.service-CP71ojp6.cjs +1 -0
  441. package/dist/theme.service-CP71ojp6.cjs.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-DTgKAQgz.cjs +59 -0
  469. package/dist/window-DTgKAQgz.cjs.map +1 -0
  470. package/dist/{window-CrjZdf7Y.js → window-moDKyGLZ.js} +28 -30
  471. package/dist/window-moDKyGLZ.js.map +1 -0
  472. package/dist/window.cjs +1 -1
  473. package/dist/window.js +1 -1
  474. package/package.json +14 -2
  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 +161 -0
  486. package/src/agent/index.ts +1 -0
  487. package/src/agent/schmancy-skill.ts +71 -0
  488. package/src/agent/virtual-manifest.d.ts +1 -12
  489. package/src/area/area.component.ts +7 -19
  490. package/src/area/area.service.test.ts +4 -5
  491. package/src/area/area.service.ts +4 -3
  492. package/src/area/route.component.ts +17 -4
  493. package/src/area/utils.ts +3 -2
  494. package/src/audio/sound.service.ts +7 -11
  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 +4 -11
  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.ts +6 -3
  572. package/src/option/option.ts +4 -3
  573. package/src/overlay/overlay.animations.ts +196 -25
  574. package/src/overlay/overlay.component.ts +397 -190
  575. package/src/overlay/overlay.confirm-body.ts +21 -7
  576. package/src/overlay/overlay.gestures.ts +72 -36
  577. package/src/overlay/overlay.layout.ts +103 -1
  578. package/src/overlay/overlay.positioning.ts +301 -0
  579. package/src/overlay/overlay.service.ts +81 -3
  580. package/src/overlay/overlay.stack.ts +8 -4
  581. package/src/overlay/overlay.types.ts +83 -5
  582. package/src/page/page.ts +16 -11
  583. package/src/payment-card-form/index.ts +1 -0
  584. package/src/{components/form-elements → payment-card-form}/payment-card-form.ts +23 -23
  585. package/src/progress/progress.ts +5 -3
  586. package/src/qr-scanner/qr-scanner.ts +7 -30
  587. package/src/radio-group/radio-button.ts +3 -13
  588. package/src/radio-group/radio-group.ts +5 -22
  589. package/src/range/range.ts +4 -3
  590. package/src/rxjs-utils/waitForElements.ts +1 -1
  591. package/src/rxjs-utils/waitForElementsAll.ts +1 -1
  592. package/src/select/select.ts +10 -18
  593. package/src/sheet/hook.ts +1 -1
  594. package/src/sheet/sheet.ts +5 -20
  595. package/src/skeleton/skeleton.ts +4 -3
  596. package/src/slider/slide.ts +5 -3
  597. package/src/slider/slider.ts +5 -3
  598. package/src/splash-screen/splash-screen.ts +5 -3
  599. package/src/state/CLAUDE.md +161 -0
  600. package/src/state/MIGRATION.md +258 -0
  601. package/src/state/SCOPING.md +134 -0
  602. package/src/state/active-host.ts +156 -0
  603. package/src/state/index.ts +877 -0
  604. package/src/state/persist.ts +208 -0
  605. package/src/state/schmancy-context.ts +84 -0
  606. package/src/state/state.test-d.ts +227 -0
  607. package/src/state/state.test.ts +820 -0
  608. package/src/steps/schmancy-step.ts +5 -3
  609. package/src/steps/schmancy-steps-container.ts +5 -3
  610. package/src/surface/surface.ts +14 -9
  611. package/src/switch/switch.test.ts +2 -2
  612. package/src/switch/switch.ts +8 -10
  613. package/src/table/row.ts +7 -4
  614. package/src/table/table.ts +17 -14
  615. package/src/tabs/index.ts +0 -2
  616. package/src/tabs/tab.ts +2 -2
  617. package/src/tabs/tabs-group.ts +7 -4
  618. package/src/teleport/teleport.component.ts +5 -3
  619. package/src/textarea/textarea.ts +6 -12
  620. package/src/theme/theme-audio-player.ts +7 -5
  621. package/src/theme/theme-controller.ts +2 -2
  622. package/src/theme/theme.component.ts +22 -15
  623. package/src/theme/theme.service.ts +6 -7
  624. package/src/theme/theme.style.css +1 -0
  625. package/src/theme-button/theme-button.ts +2 -2
  626. package/src/timeline/index.ts +1 -0
  627. package/src/timeline/timeline-tile.ts +431 -0
  628. package/src/tree/tree.ts +4 -16
  629. package/src/typewriter/index.ts +1 -1
  630. package/src/typography/typography.ts +5 -98
  631. package/src/utils/intersection.ts +5 -1
  632. package/src/utils/overlay-stack.ts +1 -1
  633. package/src/utils/search.ts +2 -2
  634. package/src/visually-hidden/visually-hidden.ts +4 -3
  635. package/src/window/window-position.ts +3 -6
  636. package/src/window/window.ts +9 -7
  637. package/types/mixins/SchmancyElement.d.ts +49 -0
  638. package/types/mixins/formField.mixin.d.ts +4 -2
  639. package/types/mixins/index.d.ts +1 -0
  640. package/types/mixins/litElement.mixin.d.ts +11 -0
  641. package/types/src/agent/agent-entry.d.ts +2 -19
  642. package/types/src/agent/helpers.d.ts +0 -26
  643. package/types/src/agent/schmancy-skill.d.ts +3 -5
  644. package/types/src/area/area.component.d.ts +3 -17
  645. package/types/src/area/route.component.d.ts +14 -4
  646. package/types/src/autocomplete/autocomplete.d.ts +4 -15
  647. package/types/src/{avatar.d.ts → avatar/avatar.d.ts} +2 -3
  648. package/types/src/avatar/index.d.ts +1 -0
  649. package/types/src/badge/badge.d.ts +3 -3
  650. package/types/src/boat/boat.d.ts +3 -2
  651. package/types/src/breadcrumb/breadcrumb.d.ts +9 -19
  652. package/types/src/busy/busy.d.ts +3 -3
  653. package/types/src/busy/spinner.d.ts +3 -3
  654. package/types/src/button/button.d.ts +4 -10
  655. package/types/src/button/icon-button.d.ts +5 -11
  656. package/types/src/card/actions.d.ts +3 -12
  657. package/types/src/card/card.d.ts +4 -24
  658. package/types/src/card/content.d.ts +3 -12
  659. package/types/src/card/media.d.ts +3 -9
  660. package/types/src/charts/area-chart.d.ts +3 -3
  661. package/types/src/charts/pills.d.ts +3 -3
  662. package/types/src/checkbox/checkbox.d.ts +3 -10
  663. package/types/src/chips/assist-chip.d.ts +5 -15
  664. package/types/src/chips/chips.d.ts +3 -17
  665. package/types/src/chips/filter-chip.d.ts +3 -3
  666. package/types/src/chips/input-chip.d.ts +9 -10
  667. package/types/src/chips/suggestion-chip.d.ts +9 -13
  668. package/types/src/code-highlight/code-highlight.d.ts +4 -11
  669. package/types/src/code-highlight/code-preview.d.ts +3 -3
  670. package/types/src/connectivity/connectivity-status.d.ts +3 -3
  671. package/types/src/content-drawer/drawer.d.ts +4 -4
  672. package/types/src/content-drawer/main.d.ts +3 -3
  673. package/types/src/content-drawer/sheet.d.ts +4 -4
  674. package/types/src/date-range/date-range-dialog.d.ts +2 -3
  675. package/types/src/date-range/date-range.d.ts +2 -3
  676. package/types/src/delay/delay.d.ts +2 -3
  677. package/types/src/details/details.d.ts +3 -14
  678. package/types/src/dialog/dialog.component.d.ts +9 -9
  679. package/types/src/directives/drag.d.ts +1 -3
  680. package/types/src/directives/index.d.ts +0 -1
  681. package/types/src/divider/divider.d.ts +3 -14
  682. package/types/src/dropdown/dropdown-component.d.ts +4 -17
  683. package/types/src/dropdown/dropdown-content.d.ts +6 -14
  684. package/types/src/expand/expand-root.component.d.ts +4 -14
  685. package/types/src/expand/expand.component.d.ts +3 -17
  686. package/types/src/extra/countries/countries.d.ts +3 -13
  687. package/types/src/extra/timezone/timezone.d.ts +4 -11
  688. package/types/src/form/form.d.ts +2 -9
  689. package/types/src/icons/icon.d.ts +3 -3
  690. package/types/src/iframe/iframe.d.ts +5 -3
  691. package/types/src/index.d.ts +3 -3
  692. package/types/src/input/input.d.ts +4 -11
  693. package/types/src/json/json.d.ts +3 -3
  694. package/types/src/kbd/kbd.d.ts +3 -3
  695. package/types/src/layout/index.d.ts +0 -4
  696. package/types/src/layout/scroll/scroll.d.ts +4 -8
  697. package/types/src/lightbox/lightbox.d.ts +3 -14
  698. package/types/src/list/list-item.d.ts +3 -13
  699. package/types/src/list/list.d.ts +11 -10
  700. package/types/src/mailbox/email-editor.d.ts +3 -3
  701. package/types/src/mailbox/email-layout-selector.d.ts +2 -3
  702. package/types/src/mailbox/email-recipients.d.ts +7 -3
  703. package/types/src/mailbox/email-template-picker.d.ts +4 -4
  704. package/types/src/mailbox/email-viewer.d.ts +3 -3
  705. package/types/src/mailbox/mailbox.d.ts +4 -4
  706. package/types/src/map/map.d.ts +4 -3
  707. package/types/src/menu/menu-item.d.ts +3 -16
  708. package/types/src/menu/menu.d.ts +25 -13
  709. package/types/src/nav-drawer/appbar.d.ts +3 -14
  710. package/types/src/nav-drawer/content.d.ts +3 -14
  711. package/types/src/nav-drawer/drawer.d.ts +3 -18
  712. package/types/src/nav-drawer/navbar.d.ts +3 -18
  713. package/types/src/navigation-bar/navigation-bar-item.d.ts +7 -6
  714. package/types/src/navigation-bar/navigation-bar.d.ts +13 -7
  715. package/types/src/navigation-rail/navigation-rail-item.d.ts +9 -6
  716. package/types/src/navigation-rail/navigation-rail.d.ts +10 -15
  717. package/types/src/notification/notification.d.ts +3 -3
  718. package/types/src/option/option.d.ts +3 -3
  719. package/types/src/overlay/overlay.animations.d.ts +54 -5
  720. package/types/src/overlay/overlay.component.d.ts +39 -15
  721. package/types/src/overlay/overlay.confirm-body.d.ts +4 -4
  722. package/types/src/overlay/overlay.gestures.d.ts +26 -17
  723. package/types/src/overlay/overlay.layout.d.ts +27 -1
  724. package/types/src/overlay/overlay.positioning.d.ts +87 -0
  725. package/types/src/overlay/overlay.types.d.ts +59 -5
  726. package/types/src/page/page.d.ts +14 -11
  727. package/types/src/{components/form-elements → payment-card-form}/payment-card-form.d.ts +2 -3
  728. package/types/src/progress/progress.d.ts +3 -3
  729. package/types/src/qr-scanner/qr-scanner.d.ts +3 -3
  730. package/types/src/radio-group/radio-button.d.ts +3 -12
  731. package/types/src/radio-group/radio-group.d.ts +4 -20
  732. package/types/src/range/range.d.ts +3 -3
  733. package/types/src/rxjs-utils/waitForElements.d.ts +1 -1
  734. package/types/src/rxjs-utils/waitForElementsAll.d.ts +1 -1
  735. package/types/src/select/select.d.ts +4 -15
  736. package/types/src/sheet/sheet.d.ts +3 -20
  737. package/types/src/skeleton/skeleton.d.ts +3 -3
  738. package/types/src/slider/slide.d.ts +3 -2
  739. package/types/src/slider/slider.d.ts +3 -3
  740. package/types/src/splash-screen/splash-screen.d.ts +3 -3
  741. package/types/src/state/active-host.d.ts +18 -0
  742. package/types/src/state/index.d.ts +145 -0
  743. package/types/src/state/persist.d.ts +14 -0
  744. package/types/src/state/schmancy-context.d.ts +31 -0
  745. package/types/src/state/state.test-d.d.ts +131 -0
  746. package/types/src/state/state.test.d.ts +1 -0
  747. package/types/src/steps/schmancy-step.d.ts +3 -3
  748. package/types/src/steps/schmancy-steps-container.d.ts +3 -3
  749. package/types/src/surface/surface.d.ts +13 -5
  750. package/types/src/switch/switch.d.ts +7 -11
  751. package/types/src/table/row.d.ts +2 -3
  752. package/types/src/table/table.d.ts +4 -11
  753. package/types/src/tabs/index.d.ts +0 -2
  754. package/types/src/tabs/tab.d.ts +2 -3
  755. package/types/src/tabs/tabs-group.d.ts +3 -3
  756. package/types/src/teleport/teleport.component.d.ts +3 -3
  757. package/types/src/textarea/textarea.d.ts +5 -12
  758. package/types/src/theme/theme-audio-player.d.ts +3 -3
  759. package/types/src/theme/theme-controller.d.ts +2 -2
  760. package/types/src/theme/theme.component.d.ts +18 -13
  761. package/types/src/theme-button/theme-button.d.ts +2 -3
  762. package/types/src/timeline/index.d.ts +1 -0
  763. package/types/src/timeline/timeline-tile.d.ts +44 -0
  764. package/types/src/tree/tree.d.ts +3 -16
  765. package/types/src/typewriter/index.d.ts +1 -1
  766. package/types/src/typography/typography.d.ts +3 -36
  767. package/types/src/visually-hidden/visually-hidden.d.ts +3 -3
  768. package/types/src/window/window.d.ts +3 -3
  769. package/dist/agent/index.es-Dymj8REP.js +0 -489
  770. package/dist/agent/index.es-Dymj8REP.js.map +0 -1
  771. package/dist/area-BGBCMC79.js.map +0 -1
  772. package/dist/area-D7l9KR2N.cjs +0 -12
  773. package/dist/area-D7l9KR2N.cjs.map +0 -1
  774. package/dist/autocomplete-BPD5uraA.cjs +0 -115
  775. package/dist/autocomplete-BPD5uraA.cjs.map +0 -1
  776. package/dist/autocomplete-C2P0Soht.js.map +0 -1
  777. package/dist/boat-BkIO-0No.cjs +0 -80
  778. package/dist/boat-BkIO-0No.cjs.map +0 -1
  779. package/dist/boat-DXZ0k7oa.js.map +0 -1
  780. package/dist/busy-DGYhpTnO.cjs.map +0 -1
  781. package/dist/busy-iRjq6Nvd.js.map +0 -1
  782. package/dist/card-DjYnCckw.cjs.map +0 -1
  783. package/dist/card-wUTjx0EC.js.map +0 -1
  784. package/dist/checkbox-CiYEtw9F.cjs +0 -39
  785. package/dist/checkbox-CiYEtw9F.cjs.map +0 -1
  786. package/dist/checkbox-VBSenxgb.js.map +0 -1
  787. package/dist/chips-BDS9lkPa.js.map +0 -1
  788. package/dist/chips-D6ptH5re.cjs.map +0 -1
  789. package/dist/code-highlight-Bi91XHJN.js.map +0 -1
  790. package/dist/code-highlight-BzRmBZzz.cjs.map +0 -1
  791. package/dist/components-DkmEgyAc.cjs +0 -73
  792. package/dist/components.cjs +0 -1
  793. package/dist/components.js +0 -2
  794. package/dist/context-BerzpUhI.js +0 -3
  795. package/dist/context-C6dHUHhi.cjs +0 -1
  796. package/dist/date-range-BmFxTXiU.cjs +0 -131
  797. package/dist/date-range-BmFxTXiU.cjs.map +0 -1
  798. package/dist/date-range-ClTMg1AB.js.map +0 -1
  799. package/dist/date-range-inline-B9Dp2z6C.cjs +0 -43
  800. package/dist/delay-BHODnTg-.cjs +0 -9
  801. package/dist/delay-BHODnTg-.cjs.map +0 -1
  802. package/dist/delay-Dlk0A3he.js +0 -347
  803. package/dist/delay-Dlk0A3he.js.map +0 -1
  804. package/dist/details-CPjlqQD4.js.map +0 -1
  805. package/dist/details-Cz9ok9si.cjs.map +0 -1
  806. package/dist/dialog-service-CzDO08Gy.cjs.map +0 -1
  807. package/dist/dialog-service-DH-tjPuE.js.map +0 -1
  808. package/dist/divider-CILo3_vi.cjs.map +0 -1
  809. package/dist/divider-ghgyw5CU.js.map +0 -1
  810. package/dist/expand-CbjBr_Ds.js.map +0 -1
  811. package/dist/expand-r3OrSoDk.cjs +0 -141
  812. package/dist/expand-r3OrSoDk.cjs.map +0 -1
  813. package/dist/extra-BZeZOMBI.cjs.map +0 -1
  814. package/dist/extra-DK9MQtPJ.js.map +0 -1
  815. package/dist/float-CuZ8LOgB.cjs +0 -1
  816. package/dist/flow-BPDtbhLe.js +0 -386
  817. package/dist/flow-BPDtbhLe.js.map +0 -1
  818. package/dist/flow-Dn9AZktE.cjs +0 -1
  819. package/dist/flow-Dn9AZktE.cjs.map +0 -1
  820. package/dist/form-rCZqoAoK.js.map +0 -1
  821. package/dist/form-wI58M85H.cjs.map +0 -1
  822. package/dist/handover/agent-runtime-v2-loopback.md +0 -71
  823. package/dist/handover/claude-design-v2-paste.md +0 -42
  824. package/dist/icons-Drq4kKy2.js.map +0 -1
  825. package/dist/icons-DtdhaZdc.cjs +0 -52
  826. package/dist/icons-DtdhaZdc.cjs.map +0 -1
  827. package/dist/iframe-BkwwWIbQ.cjs +0 -24
  828. package/dist/iframe-BkwwWIbQ.cjs.map +0 -1
  829. package/dist/iframe-BmyHW8km.js.map +0 -1
  830. package/dist/index.es-BgmFX1JM.cjs +0 -1
  831. package/dist/index.es-BgmFX1JM.cjs.map +0 -1
  832. package/dist/index.es-CLyb_o3Y.js +0 -489
  833. package/dist/index.es-CLyb_o3Y.js.map +0 -1
  834. package/dist/input-BGNZlfL8.cjs.map +0 -1
  835. package/dist/input-Bc3bVISm.js.map +0 -1
  836. package/dist/input-chip-BQrjpjaQ.js.map +0 -1
  837. package/dist/input-chip-DN-cwf11.cjs.map +0 -1
  838. package/dist/intersection-BrXp4YTO.js +0 -12
  839. package/dist/intersection-BrXp4YTO.js.map +0 -1
  840. package/dist/intersection-DqBqnpgh.cjs +0 -1
  841. package/dist/intersection-DqBqnpgh.cjs.map +0 -1
  842. package/dist/layout-7eyMBmZk.cjs +0 -17
  843. package/dist/layout-7eyMBmZk.cjs.map +0 -1
  844. package/dist/layout-Ox6nJkzC.js +0 -268
  845. package/dist/layout-Ox6nJkzC.js.map +0 -1
  846. package/dist/lightbox-CY52Z_ig.js.map +0 -1
  847. package/dist/lightbox-H8Uq3AXy.cjs +0 -202
  848. package/dist/lightbox-H8Uq3AXy.cjs.map +0 -1
  849. package/dist/list-BGjVo6zb.cjs +0 -40
  850. package/dist/list-BGjVo6zb.cjs.map +0 -1
  851. package/dist/list-D7wUxu1C.js.map +0 -1
  852. package/dist/litElement.mixin-CszkJuNl.js +0 -12
  853. package/dist/litElement.mixin-CszkJuNl.js.map +0 -1
  854. package/dist/litElement.mixin-qh5-IIUq.cjs +0 -1
  855. package/dist/litElement.mixin-qh5-IIUq.cjs.map +0 -1
  856. package/dist/mailbox--EN-JhjV.js.map +0 -1
  857. package/dist/mailbox-DLiBGJhY.cjs.map +0 -1
  858. package/dist/map-B0S_q3ma.js.map +0 -1
  859. package/dist/map-EDQN0I6e.cjs +0 -80
  860. package/dist/map-EDQN0I6e.cjs.map +0 -1
  861. package/dist/menu-3edZGQ1x.cjs.map +0 -1
  862. package/dist/menu-COeFpb6n.js.map +0 -1
  863. package/dist/metric.cjs +0 -69
  864. package/dist/metric.cjs.map +0 -1
  865. package/dist/metric.js +0 -93
  866. package/dist/metric.js.map +0 -1
  867. package/dist/mixins.cjs.map +0 -1
  868. package/dist/mixins.js.map +0 -1
  869. package/dist/notification-CC-TFN5v.js.map +0 -1
  870. package/dist/notification-P4c-kFdH.cjs +0 -23
  871. package/dist/notification-P4c-kFdH.cjs.map +0 -1
  872. package/dist/option-BwAF4nAw.js.map +0 -1
  873. package/dist/option-Cu0ertuF.cjs +0 -43
  874. package/dist/option-Cu0ertuF.cjs.map +0 -1
  875. package/dist/progress-Bk_Q1Shy.js.map +0 -1
  876. package/dist/progress-Yz6EMNSu.cjs.map +0 -1
  877. package/dist/provide-CYgj58u_.cjs +0 -1
  878. package/dist/provide-CYgj58u_.cjs.map +0 -1
  879. package/dist/provide-ydIskwf2.js +0 -107
  880. package/dist/provide-ydIskwf2.js.map +0 -1
  881. package/dist/radio-group-BcdcjLNC.js.map +0 -1
  882. package/dist/radio-group-BpBz5tRA.cjs +0 -40
  883. package/dist/radio-group-BpBz5tRA.cjs.map +0 -1
  884. package/dist/scroll-DXQv0ejL.js.map +0 -1
  885. package/dist/scroll-DbZMTv0K.cjs +0 -26
  886. package/dist/scroll-DbZMTv0K.cjs.map +0 -1
  887. package/dist/search-CwMav5QB.cjs +0 -1
  888. package/dist/select-BV4lK2zy.cjs.map +0 -1
  889. package/dist/select-DKyGWDsG.js.map +0 -1
  890. package/dist/sheet-BAI_jH1t.cjs +0 -35
  891. package/dist/sheet-BAI_jH1t.cjs.map +0 -1
  892. package/dist/sheet-C3TLKItO.js.map +0 -1
  893. package/dist/sheet.service-RcDBwHmv.cjs +0 -1
  894. package/dist/skills/schmancy/store.md +0 -126
  895. package/dist/skills/store.md +0 -126
  896. package/dist/sound.service-BEN6Xjy_.cjs +0 -1
  897. package/dist/sound.service-BEN6Xjy_.cjs.map +0 -1
  898. package/dist/sound.service-DWZe6swU.js.map +0 -1
  899. package/dist/splash-screen-DbI5RgBf.js.map +0 -1
  900. package/dist/splash-screen-DoHRTHi8.cjs +0 -41
  901. package/dist/splash-screen-DoHRTHi8.cjs.map +0 -1
  902. package/dist/src-00DfxCJq.js.map +0 -1
  903. package/dist/src-C_JjQovE.cjs +0 -269
  904. package/dist/src-C_JjQovE.cjs.map +0 -1
  905. package/dist/store-CjFHCSDb.cjs +0 -1
  906. package/dist/store-CjFHCSDb.cjs.map +0 -1
  907. package/dist/store-CjzZDQt8.js +0 -1654
  908. package/dist/store-CjzZDQt8.js.map +0 -1
  909. package/dist/store.cjs +0 -1
  910. package/dist/store.js +0 -2
  911. package/dist/surface-D-GWBcsh.cjs +0 -7
  912. package/dist/surface-D-GWBcsh.cjs.map +0 -1
  913. package/dist/surface-D23JtxYP.js +0 -22
  914. package/dist/surface-D23JtxYP.js.map +0 -1
  915. package/dist/surface.mixin-DqMwoddO.js +0 -320
  916. package/dist/surface.mixin-DqMwoddO.js.map +0 -1
  917. package/dist/surface.mixin-DxOi-xo0.cjs +0 -297
  918. package/dist/surface.mixin-DxOi-xo0.cjs.map +0 -1
  919. package/dist/table-C7b73kdg.cjs +0 -63
  920. package/dist/table-C7b73kdg.cjs.map +0 -1
  921. package/dist/table-CTrhV9-k.js +0 -631
  922. package/dist/table-CTrhV9-k.js.map +0 -1
  923. package/dist/tabs-Ce55RbwF.js.map +0 -1
  924. package/dist/tabs-DAzB8O7w.cjs +0 -31
  925. package/dist/tabs-DAzB8O7w.cjs.map +0 -1
  926. package/dist/tailwind.mixin-DRI1oTYQ.cjs +0 -2
  927. package/dist/tailwind.mixin-DRI1oTYQ.cjs.map +0 -1
  928. package/dist/tailwind.mixin-mdQR3BEO.js +0 -219
  929. package/dist/tailwind.mixin-mdQR3BEO.js.map +0 -1
  930. package/dist/textarea-DjN1D9u0.js.map +0 -1
  931. package/dist/textarea-PuHxBvJA.cjs +0 -39
  932. package/dist/textarea-PuHxBvJA.cjs.map +0 -1
  933. package/dist/theme-B-IJ2r7Q.cjs +0 -181
  934. package/dist/theme-button-BSbYmS4p.cjs +0 -8
  935. package/dist/theme-button-BSbYmS4p.cjs.map +0 -1
  936. package/dist/theme-button-CEMeAUOL.js.map +0 -1
  937. package/dist/theme.service-DxJPUGlu.cjs +0 -1
  938. package/dist/theme.service-DxJPUGlu.cjs.map +0 -1
  939. package/dist/theme.service-cOfPrtfe.js.map +0 -1
  940. package/dist/tslib.es6-Cnt75pb6.cjs +0 -1
  941. package/dist/tslib.es6-Cnt75pb6.cjs.map +0 -1
  942. package/dist/tslib.es6-DMzzJKHV.js +0 -7
  943. package/dist/tslib.es6-DMzzJKHV.js.map +0 -1
  944. package/dist/utils-Bp2jhyZc.js.map +0 -1
  945. package/dist/utils-CBPQvxNW.cjs +0 -1
  946. package/dist/utils-CBPQvxNW.cjs.map +0 -1
  947. package/dist/window-CrjZdf7Y.js.map +0 -1
  948. package/dist/window-DTUARSrU.cjs +0 -59
  949. package/dist/window-DTUARSrU.cjs.map +0 -1
  950. package/skills/schmancy/store.md +0 -126
  951. package/src/components/form-elements/index.ts +0 -1
  952. package/src/components/index.ts +0 -1
  953. package/src/layout/flex/flex.scss +0 -4
  954. package/src/layout/flex/flex.ts +0 -74
  955. package/src/layout/flex/index.ts +0 -1
  956. package/src/layout/grid/.readme +0 -79
  957. package/src/layout/grid/grid.scss +0 -5
  958. package/src/layout/grid/grid.ts +0 -121
  959. package/src/layout/grid/index.ts +0 -1
  960. package/src/layout/layout.ts +0 -122
  961. package/src/layout/v2/flex.ts +0 -243
  962. package/src/layout/v2/index.ts +0 -1
  963. package/src/metric/index.ts +0 -1
  964. package/src/metric/metric.ts +0 -127
  965. package/src/store/context-array.ts +0 -358
  966. package/src/store/context-collection.ts +0 -218
  967. package/src/store/context-create.ts +0 -284
  968. package/src/store/context-object.ts +0 -298
  969. package/src/store/filter-directive.ts +0 -614
  970. package/src/store/index.ts +0 -10
  971. package/src/store/selector-hook.ts +0 -259
  972. package/src/store/selectors.ts +0 -289
  973. package/src/store/storage-manager.ts +0 -269
  974. package/src/store/store.class.ts +0 -239
  975. package/src/store/types.ts +0 -327
  976. package/src/tabs/tabs-compatibility.ts +0 -20
  977. package/src/typewriter/typewriter.ts +0 -410
  978. package/types/src/area/route.test.d.ts +0 -20
  979. package/types/src/button/button.test.d.ts +0 -1
  980. package/types/src/chips/chip.d.ts +0 -3
  981. package/types/src/components/index.d.ts +0 -1
  982. package/types/src/content-drawer/$sheet.d.ts +0 -14
  983. package/types/src/dialog/dailog.d.ts +0 -116
  984. package/types/src/dialog/dialog-content.d.ts +0 -17
  985. package/types/src/directives/guard.d.ts +0 -1
  986. package/types/src/directives/visibility.d.ts +0 -11
  987. package/types/src/form/form-v2.d.ts +0 -22
  988. package/types/src/input/input-v2.d.ts +0 -250
  989. package/types/src/layout/flex/flex.d.ts +0 -26
  990. package/types/src/layout/flex/index.d.ts +0 -1
  991. package/types/src/layout/grid/grid.d.ts +0 -39
  992. package/types/src/layout/grid/index.d.ts +0 -1
  993. package/types/src/layout/layout.d.ts +0 -59
  994. package/types/src/layout/v2/flex.d.ts +0 -65
  995. package/types/src/layout/v2/grid.d.ts +0 -51
  996. package/types/src/layout/v2/index.d.ts +0 -1
  997. package/types/src/lightbox/flip.directive.d.ts +0 -22
  998. package/types/src/metric/index.d.ts +0 -1
  999. package/types/src/metric/metric.d.ts +0 -39
  1000. package/types/src/notification/outlet.d.ts +0 -10
  1001. package/types/src/sheet/header.d.ts +0 -10
  1002. package/types/src/store/context-array.d.ts +0 -83
  1003. package/types/src/store/context-collection.d.ts +0 -74
  1004. package/types/src/store/context-create.d.ts +0 -43
  1005. package/types/src/store/context-object.d.ts +0 -46
  1006. package/types/src/store/filter-directive.d.ts +0 -116
  1007. package/types/src/store/immer-integration.d.ts +0 -54
  1008. package/types/src/store/index.d.ts +0 -10
  1009. package/types/src/store/selector-hook.d.ts +0 -46
  1010. package/types/src/store/selectors.d.ts +0 -90
  1011. package/types/src/store/storage-manager.d.ts +0 -48
  1012. package/types/src/store/store.class.d.ts +0 -73
  1013. package/types/src/store/types.d.ts +0 -241
  1014. package/types/src/tabs/tabs-compatibility.d.ts +0 -13
  1015. package/types/src/theme/theme.elevation.d.ts +0 -131
  1016. package/types/src/theme/theme.motion.d.ts +0 -198
  1017. package/types/src/theme/theme.shape.d.ts +0 -144
  1018. package/types/src/theme/theme.state.d.ts +0 -546
  1019. package/types/src/theme/theme.typography.d.ts +0 -74
  1020. package/types/src/tooltip/tooltip.d.ts +0 -33
  1021. package/types/src/typewriter/typewriter.d.ts +0 -94
  1022. /package/dist/agent/{flow-CvG1fLW5.js → flow-CaPi2G8y.js} +0 -0
  1023. /package/dist/agent/{vendor-material-color-DcL7ZPxx.js → vendor-material-color-Be96dpGE.js} +0 -0
  1024. /package/dist/{animation-hXFClrIn.js → animation-BK-8BwY8.js} +0 -0
  1025. /package/dist/{animation-CQRdLgzX.cjs → animation-CO_Csq84.cjs} +0 -0
  1026. /package/dist/{decorate-D_utPUsC.js → decorate-23nYs4Le.js} +0 -0
  1027. /package/dist/{decorate-F9CuyeHg.cjs → decorate-DpFmy0nm.cjs} +0 -0
  1028. /package/dist/{hashContent-B2IntJQf.js → hashContent-1ARKIsx9.js} +0 -0
  1029. /package/dist/{hashContent-CahnEuut.cjs → hashContent-Bp5S6T4U.cjs} +0 -0
  1030. /package/dist/{lazy-D6R5N5v4.js → lazy-B0ia54tT.js} +0 -0
  1031. /package/dist/{lazy-BDNnH_r7.cjs → lazy-Dq9mRRjT.cjs} +0 -0
  1032. /package/dist/{reduced-motion-BZTLqAyl.js → reduced-motion-D-L12p7G.js} +0 -0
  1033. /package/dist/{reduced-motion-9RjNnhIg.cjs → reduced-motion-Ds-HjMzn.cjs} +0 -0
  1034. /package/dist/{rxjs-utils-DJbZRjp3.cjs → rxjs-utils-Csnks202.cjs} +0 -0
  1035. /package/dist/{rxjs-utils-CKTnEKUH.js → rxjs-utils-d-ivVN84.js} +0 -0
  1036. /package/dist/{theme.events-NuihzD_p.js → theme.events-Cv7N4Toe.js} +0 -0
  1037. /package/dist/{theme.events-DakXxZeP.cjs → theme.events-DM4H5F2d.cjs} +0 -0
  1038. /package/dist/{theme.interface-DTwkuAKJ.cjs → theme.interface-D9l33b-M.cjs} +0 -0
  1039. /package/dist/{theme.interface-Buged9Cg.js → theme.interface-DnVNre4O.js} +0 -0
  1040. /package/src/{directives/typewriter.ts → typewriter/typewriter.directive.ts} +0 -0
  1041. /package/types/src/{components/form-elements → payment-card-form}/index.d.ts +0 -0
  1042. /package/types/src/{directives/typewriter.d.ts → typewriter/typewriter.directive.d.ts} +0 -0
@@ -2,74 +2,91 @@ import { describe, expect, it } from 'vitest'
2
2
  import './agent-entry'
3
3
 
4
4
  /**
5
- * Agent bundle = distribution test suite.
5
+ * Acceptance test per the Claude Design handover §4.4:
6
6
  *
7
- * The bundle exists so consumers can drop a single `<script type="module">`
8
- * tag and get every `<schmancy-*>` element registered. These tests verify
9
- * that contract, no more.
7
+ * > "CI check: load the bundle in a headless browser, assert
8
+ * > `customElements.get('schmancy-button')` resolves, assert
9
+ * > `window.schmancy.help()` returns non-empty."
10
10
  *
11
- * Earlier versions of this suite tested a `window.schmancy.help()` /
12
- * `tokens()` / `findFor()` runtime introspection surface that targeted a
13
- * hypothetical live-in-browser agent a consumer that never materialised
14
- * in any shipping product. That surface was removed; AI consumers read the
15
- * static manifest at `dist/agent/schmancy.manifest.json` instead, which is
16
- * the real integration point.
11
+ * This test is the runtime smoke test. It imports the agent bundle entry
12
+ * (which side-effect registers every <schmancy-*> tag plus <schmancy-skill>)
13
+ * and then verifies the self-describing surface is installed.
17
14
  */
18
- describe('agent bundle — distribution', () => {
15
+ describe('agent bundle — handover §4.4 acceptance', () => {
19
16
  it('registers `schmancy-button` on import', () => {
20
17
  expect(customElements.get('schmancy-button')).toBeDefined()
21
18
  })
22
19
 
23
- it('registers `schmancy-theme` on import', () => {
24
- expect(customElements.get('schmancy-theme')).toBeDefined()
20
+ it('registers `schmancy-skill` on import', () => {
21
+ expect(customElements.get('schmancy-skill')).toBeDefined()
25
22
  })
26
23
 
27
- it('registers `schmancy-surface` on import', () => {
28
- expect(customElements.get('schmancy-surface')).toBeDefined()
24
+ it('installs `window.schmancy` when a <schmancy-skill> connects', async () => {
25
+ const host = document.createElement('div')
26
+ const skill = document.createElement('schmancy-skill')
27
+ host.appendChild(skill)
28
+ document.body.appendChild(host)
29
+
30
+ await customElements.whenDefined('schmancy-skill')
31
+ // One microtask for connectedCallback to finish installing globals.
32
+ await new Promise(requestAnimationFrame)
33
+
34
+ expect(typeof window.schmancy).toBe('object')
35
+ expect(typeof window.schmancy?.help).toBe('function')
36
+ expect(typeof window.schmancy?.tokens).toBe('function')
37
+ expect(typeof window.schmancy?.capabilities).toBe('function')
38
+
39
+ host.remove()
29
40
  })
30
41
 
31
- it('registers a substantive set of components on import', () => {
32
- // Spot-check 20 commonly-used tags. If anything below this threshold
33
- // regresses, the side-effect registration chain is broken.
34
- const sampleTags = [
35
- 'schmancy-button',
36
- 'schmancy-input',
37
- 'schmancy-card',
38
- 'schmancy-dialog',
39
- 'schmancy-sheet',
40
- 'schmancy-list',
41
- 'schmancy-list-item',
42
- 'schmancy-typography',
43
- 'schmancy-icon',
44
- 'schmancy-icon-button',
45
- 'schmancy-form',
46
- 'schmancy-checkbox',
47
- 'schmancy-select',
48
- 'schmancy-autocomplete',
49
- 'schmancy-radio-group',
50
- 'schmancy-textarea',
51
- 'schmancy-switch',
52
- 'schmancy-divider',
53
- 'schmancy-details',
54
- 'schmancy-card-content',
55
- ]
56
- const registered = sampleTags.filter(tag => customElements.get(tag) !== undefined)
57
- expect(registered).toEqual(sampleTags)
42
+ it('`window.schmancy.help()` returns a non-empty manifest summary', async () => {
43
+ const skill = document.createElement('schmancy-skill')
44
+ document.body.appendChild(skill)
45
+ await customElements.whenDefined('schmancy-skill')
46
+ await new Promise(requestAnimationFrame)
47
+
48
+ const help = window.schmancy!.help() as { elements: unknown[]; services: unknown[] }
49
+ expect(Array.isArray(help.elements)).toBe(true)
50
+ expect(help.elements.length).toBeGreaterThan(50)
51
+
52
+ skill.remove()
58
53
  })
59
54
 
60
- it('exports the imperative service surface', async () => {
61
- const mod = await import('./agent-entry')
62
- expect(typeof mod.$dialog).toBe('object')
63
- expect(typeof mod.$notify).toBe('object')
64
- expect(typeof mod.sheet).toBe('object')
65
- expect(typeof mod.theme).toBe('object')
66
- expect(typeof mod.area).toBe('object')
55
+ it('`window.schmancy.help("schmancy-button")` returns attribute enum values', async () => {
56
+ const skill = document.createElement('schmancy-skill')
57
+ document.body.appendChild(skill)
58
+ await customElements.whenDefined('schmancy-skill')
59
+ await new Promise(requestAnimationFrame)
60
+
61
+ const btn = window.schmancy!.help('schmancy-button') as {
62
+ attributes?: Array<{ name: string; values?: string[] }>
63
+ }
64
+ expect(btn).toBeTruthy()
65
+ expect(btn.attributes?.length ?? 0).toBeGreaterThan(0)
66
+ const variant = btn.attributes?.find(a => a.name === 'variant')
67
+ expect(variant?.values).toContain('filled')
68
+
69
+ skill.remove()
67
70
  })
68
71
 
69
- it('does not install the legacy `window.schmancy` runtime surface', () => {
70
- // Negative test — the runtime introspection layer was removed
71
- // because no shipping consumer used it. If it comes back unintentionally,
72
- // flag it here so the regression is visible.
73
- expect((window as { schmancy?: unknown }).schmancy).toBeUndefined()
72
+ it('`window.schmancy.capabilities()` reports every probed feature', async () => {
73
+ const skill = document.createElement('schmancy-skill')
74
+ document.body.appendChild(skill)
75
+ await customElements.whenDefined('schmancy-skill')
76
+ await new Promise(requestAnimationFrame)
77
+
78
+ const caps = window.schmancy!.capabilities()
79
+ expect(caps).toMatchObject({
80
+ popover: expect.any(Boolean),
81
+ declarativeShadowDom: expect.any(Boolean),
82
+ scopedRegistries: expect.any(Boolean),
83
+ trustedTypes: expect.any(Boolean),
84
+ cssRegisteredProperties: expect.any(Boolean),
85
+ elementInternalsAria: expect.any(Boolean),
86
+ formAssociated: expect.any(Boolean),
87
+ adoptedStyleSheets: expect.any(Boolean),
88
+ })
89
+
90
+ skill.remove()
74
91
  })
75
92
  })
@@ -1,22 +1,5 @@
1
- /**
2
- * Agent bundle entry — the single-URL ESM distribution.
3
- *
4
- * Importing this module side-effect-registers every `<schmancy-*>` custom
5
- * element and exposes the imperative service surface ($dialog, sheet,
6
- * $notify, etc.). The import is meant for standalone HTML files and
7
- * one-page demos that want schmancy without a bundler.
8
- *
9
- * **Not** an agent-introspection runtime. Earlier versions installed a
10
- * `window.schmancy` object with `help()` / `tokens()` / `findFor()` for
11
- * a hypothetical "live agent in a browser" consumer that never materialised
12
- * in any shipping product. AI consumers (Claude Design's source ingestion,
13
- * IDE tooling, build pipelines) read the static manifest at
14
- * `dist/agent/schmancy.manifest.json` — that's the actual integration point.
15
- *
16
- * The bundle stays as a distribution convenience; the runtime introspection
17
- * surface was removed in favour of static-data consumption.
18
- */
19
1
  import '../index'
2
+ import './schmancy-skill'
20
3
 
21
4
  export {
22
5
  $dialog,
@@ -27,8 +10,9 @@ export {
27
10
  theme,
28
11
  area,
29
12
  lazy,
30
- createContext,
31
- select,
32
- selectItem,
13
+ state,
14
+ bindState,
15
+ computed,
16
+ stateFromObservable,
33
17
  } from '../index'
34
18
  export { $LitElement } from '../../mixins/index'
@@ -0,0 +1,161 @@
1
+ import manifest from 'virtual:schmancy-manifest'
2
+
3
+ export type Manifest = typeof manifest
4
+
5
+ export type ElementEntry = {
6
+ kind: 'class'
7
+ name: string
8
+ tagName?: string
9
+ description?: string
10
+ summary?: string
11
+ attributes?: Array<{
12
+ name: string
13
+ description?: string
14
+ type?: { text?: string }
15
+ default?: string
16
+ values?: string[]
17
+ }>
18
+ events?: Array<{ name: string; description?: string; type?: { text?: string } }>
19
+ slots?: Array<{ name: string; description?: string }>
20
+ cssProperties?: Array<{ name: string; description?: string }>
21
+ cssParts?: Array<{ name: string; description?: string }>
22
+ whenToUse?: string
23
+ platformPrimitive?: { tag: string; mode?: string; note?: string }
24
+ contexts?: { provides?: string[]; consumes?: string[] }
25
+ }
26
+
27
+ export type ServiceEntry = {
28
+ kind: 'variable'
29
+ name: string
30
+ description?: string
31
+ summary?: string
32
+ service: true
33
+ methods?: Array<{ signature: string; summary?: string }>
34
+ }
35
+
36
+ type Declaration = ElementEntry | ServiceEntry | { kind: string; name: string; [key: string]: unknown }
37
+
38
+ function allDeclarations(): Declaration[] {
39
+ const out: Declaration[] = []
40
+ for (const mod of manifest.modules ?? []) {
41
+ const decls = (mod as unknown as { declarations?: Declaration[] }).declarations ?? []
42
+ for (const decl of decls) out.push(decl)
43
+ }
44
+ return out
45
+ }
46
+
47
+ function elements(): ElementEntry[] {
48
+ return allDeclarations().filter(
49
+ (d): d is ElementEntry => d.kind === 'class' && typeof (d as ElementEntry).tagName === 'string',
50
+ )
51
+ }
52
+
53
+ function services(): ServiceEntry[] {
54
+ return allDeclarations().filter((d): d is ServiceEntry => d.kind === 'variable' && (d as ServiceEntry).service === true)
55
+ }
56
+
57
+ export function help(tag?: string): unknown {
58
+ if (!tag) {
59
+ return {
60
+ elements: elements().map(e => ({ tag: e.tagName, summary: e.summary ?? e.description })),
61
+ services: services().map(s => ({ name: s.name, summary: s.summary ?? s.description })),
62
+ }
63
+ }
64
+ const el = elements().find(e => e.tagName === tag)
65
+ if (el) return el
66
+ const svc = services().find(s => s.name === tag)
67
+ if (svc) return svc
68
+ return null
69
+ }
70
+
71
+ export function tokens(): string[] {
72
+ return (manifest as { tokens?: string[] }).tokens ?? []
73
+ }
74
+
75
+ export function platformPrimitive(tag: string): ElementEntry['platformPrimitive'] | null {
76
+ return elements().find(e => e.tagName === tag)?.platformPrimitive ?? null
77
+ }
78
+
79
+ export function registeredTags(): string[] {
80
+ return elements()
81
+ .map(e => e.tagName!)
82
+ .filter(tag => typeof customElements.get(tag) !== 'undefined')
83
+ }
84
+
85
+ export function a11yAudit(): Array<{
86
+ tag: string
87
+ role: string | null
88
+ ariaLabel: string | null
89
+ hasShadowRoot: boolean
90
+ formAssociated: boolean
91
+ }> {
92
+ const tags = new Set(elements().map(e => e.tagName!))
93
+ const report: Array<{
94
+ tag: string
95
+ role: string | null
96
+ ariaLabel: string | null
97
+ hasShadowRoot: boolean
98
+ formAssociated: boolean
99
+ }> = []
100
+ const all = document.querySelectorAll('*')
101
+ for (const node of Array.from(all)) {
102
+ const tag = node.tagName.toLowerCase()
103
+ if (!tags.has(tag)) continue
104
+ const ctor = customElements.get(tag) as (CustomElementConstructor & { formAssociated?: boolean }) | undefined
105
+ report.push({
106
+ tag,
107
+ role: node.getAttribute('role'),
108
+ ariaLabel: node.getAttribute('aria-label'),
109
+ hasShadowRoot: Boolean((node as Element & { shadowRoot?: ShadowRoot | null }).shadowRoot),
110
+ formAssociated: Boolean(ctor?.formAssociated),
111
+ })
112
+ }
113
+ return report
114
+ }
115
+
116
+ export type Capabilities = {
117
+ popover: boolean
118
+ declarativeShadowDom: boolean
119
+ scopedRegistries: boolean
120
+ trustedTypes: boolean
121
+ cssRegisteredProperties: boolean
122
+ elementInternalsAria: boolean
123
+ formAssociated: boolean
124
+ adoptedStyleSheets: boolean
125
+ }
126
+
127
+ /**
128
+ * Runtime feature probe. Tells an agent which platform capabilities the
129
+ * current sandbox exposes, so it can adapt without assuming the sandbox CSP
130
+ * or browser version. Every check is feature-detect, not UA-sniff.
131
+ */
132
+ export function capabilities(): Capabilities {
133
+ const anyTemplate = typeof HTMLTemplateElement !== 'undefined' ? HTMLTemplateElement.prototype : null
134
+ const anyElInternals = typeof ElementInternals !== 'undefined' ? ElementInternals.prototype : null
135
+ return {
136
+ popover: typeof HTMLElement !== 'undefined' && 'popover' in HTMLElement.prototype,
137
+ declarativeShadowDom: Boolean(anyTemplate && 'shadowRootMode' in anyTemplate),
138
+ scopedRegistries: (() => {
139
+ try {
140
+ // Native scoped registries require a constructible CustomElementRegistry.
141
+ // Pre-Safari-26/Chrome-146, the constructor throws Illegal constructor.
142
+ void new (window as { CustomElementRegistry?: new () => unknown }).CustomElementRegistry!()
143
+ return true
144
+ } catch {
145
+ return false
146
+ }
147
+ })(),
148
+ trustedTypes: typeof (globalThis as { trustedTypes?: unknown }).trustedTypes !== 'undefined',
149
+ cssRegisteredProperties: typeof (window as { CSS?: { registerProperty?: unknown } }).CSS?.registerProperty === 'function',
150
+ elementInternalsAria: Boolean(anyElInternals && 'role' in anyElInternals),
151
+ formAssociated: typeof ElementInternals !== 'undefined',
152
+ adoptedStyleSheets: typeof Document !== 'undefined' && 'adoptedStyleSheets' in Document.prototype,
153
+ }
154
+ }
155
+
156
+ export function manifestUrl(): string {
157
+ const blob = new Blob([JSON.stringify(manifest)], { type: 'application/json' })
158
+ return URL.createObjectURL(blob)
159
+ }
160
+
161
+ export { manifest }
@@ -0,0 +1 @@
1
+ export * from './schmancy-skill'
@@ -0,0 +1,71 @@
1
+ import { SchmancyElement } from '../../mixins/index'
2
+ import { html } from 'lit'
3
+ import { customElement } from 'lit/decorators.js'
4
+ import {
5
+ a11yAudit,
6
+ capabilities,
7
+ help,
8
+ manifest,
9
+ manifestUrl,
10
+ platformPrimitive,
11
+ registeredTags,
12
+ tokens,
13
+ } from './helpers'
14
+
15
+ declare global {
16
+ interface Window {
17
+ schmancy?: {
18
+ manifest: typeof manifest
19
+ manifestUrl: string
20
+ help: typeof help
21
+ tokens: typeof tokens
22
+ platformPrimitive: typeof platformPrimitive
23
+ registeredTags: typeof registeredTags
24
+ a11yAudit: typeof a11yAudit
25
+ capabilities: typeof capabilities
26
+ }
27
+ }
28
+ }
29
+
30
+ let installedUrl: string | null = null
31
+
32
+ function install() {
33
+ if (typeof window === 'undefined') return
34
+ if (installedUrl) return
35
+ installedUrl = manifestUrl()
36
+ window.schmancy = {
37
+ manifest,
38
+ manifestUrl: installedUrl,
39
+ help,
40
+ tokens,
41
+ platformPrimitive,
42
+ registeredTags,
43
+ a11yAudit,
44
+ capabilities,
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Self-describing runtime helper. Drop `<schmancy-skill></schmancy-skill>`
50
+ * once on a page and `window.schmancy.help('schmancy-button')` returns the
51
+ * machine-readable entry for any tag. Renders nothing.
52
+ *
53
+ * @element schmancy-skill
54
+ */
55
+ @customElement('schmancy-skill')
56
+ export class SchmancySkill extends SchmancyElement {
57
+ connectedCallback() {
58
+ super.connectedCallback()
59
+ install()
60
+ }
61
+
62
+ render() {
63
+ return html``
64
+ }
65
+ }
66
+
67
+ declare global {
68
+ interface HTMLElementTagNameMap {
69
+ 'schmancy-skill': SchmancySkill
70
+ }
71
+ }
@@ -1,21 +1,10 @@
1
1
  declare module 'virtual:schmancy-manifest' {
2
2
  type ManifestModule = { kind: 'javascript-module'; path: string; declarations: Array<Record<string, unknown>> }
3
- type ManifestRule = {
4
- id: string
5
- scope: 'global' | 'tag' | 'token' | 'attribute' | 'workflow'
6
- applies?: string[]
7
- rule: string
8
- severity: 'error' | 'warn' | 'hint'
9
- validator?: string
10
- }
11
3
  const manifest: {
12
- /** '1.1.0' adds the structured `rules` array. `conventions` stays for back-compat. */
13
- schemaVersion: '1.1.0'
4
+ schemaVersion: '1.0.0'
14
5
  readme?: string
15
6
  modules: ManifestModule[]
16
7
  tokens: string[]
17
- conventions: string[]
18
- rules: ManifestRule[]
19
8
  }
20
9
  export default manifest
21
10
  }
@@ -1,4 +1,4 @@
1
- import { $LitElement } from '@mixins/index'
1
+ import { SchmancyElement } from '@mixins/index'
2
2
  import { css, html } from 'lit'
3
3
  import { customElement, property, queryAssignedElements } from 'lit/decorators.js'
4
4
  import {
@@ -16,33 +16,21 @@ import {
16
16
  takeUntil,
17
17
  tap,
18
18
  } from 'rxjs'
19
- import area from './area.service'
19
+ import { area } from './area.service'
20
20
  import { RouteComponent, SchmancyRoute } from './route.component'
21
21
  import { ActiveRoute, HISTORY_STRATEGY, RouteAction } from './router.types'
22
22
 
23
- /**
24
- * Router outlet — renders the active route's component for the named area. Drives the schmancy router via the `area` service.
25
- *
26
- * @element schmancy-area
27
- * @summary Mount once per "addressable region" of the app (typically the main content area). Use the imperative `area.push({ area, component, params })` service to navigate. Multiple named areas can coexist on a page (e.g. main content + a sheet).
28
- * @example
29
- * <schmancy-area name="main"></schmancy-area>
30
- * <script>
31
- * import { area } from '@mhmo91/schmancy';
32
- * area.push({ area: 'main', component: MyDashboardView, params: { id: 42 } });
33
- * </script>
34
- * @platform div - Routing outlet. Degrades to an empty div if the tag never registers — routing is lost but the page stays accessible.
35
- * @fires redirect - When the area resolves a route to a different destination (programmatic redirect). `detail.from` and `detail.to` are the route names.
36
- */
37
23
  @customElement('schmancy-area')
38
- export class SchmancyArea extends $LitElement(css`
24
+ export class SchmancyArea extends SchmancyElement {
25
+ static styles = [css`
39
26
  :host {
40
27
  position: relative;
41
28
  display: block;
42
29
  inset: 0;
43
30
  contain: layout style;
44
31
  }
45
- `) {
32
+ `]
33
+
46
34
  /**
47
35
  * The name of the router outlet
48
36
  * @attr
@@ -342,7 +330,7 @@ export class SchmancyArea extends $LitElement(css`
342
330
  if (element) {
343
331
  if (route.params) Object.assign(element, route.params)
344
332
  if (route.props) Object.assign(element, route.props)
345
- if (route.state) (element as any).state = route.state
333
+ if (route.state) Object.assign(element, { state: route.state })
346
334
  }
347
335
 
348
336
  return { element, route }
@@ -8,8 +8,6 @@ class TestAreaService {
8
8
  public prettyURL = false
9
9
  public enableHistoryMode = true
10
10
 
11
- constructor() {}
12
-
13
11
  // Copy the createCleanURL method for direct testing
14
12
  createCleanURL(areas: Record<string, ActiveRoute>, clearQueryParams?: string[] | boolean | null): string {
15
13
  // Get the current base path (everything except the last segment which might be encoded state)
@@ -75,9 +73,10 @@ class TestAreaService {
75
73
  // Fallback to encoded state in URL (original behavior)
76
74
  try {
77
75
  // Clean up empty objects before encoding
78
- const cleanedAreas: Record<string, any> = {}
76
+ type CleanRoute = Omit<ActiveRoute, 'area'>
77
+ const cleanedAreas: Record<string, CleanRoute> = {}
79
78
  Object.entries(areas).forEach(([areaName, route]) => {
80
- const cleanRoute: any = { component: route.component }
79
+ const cleanRoute: CleanRoute = { component: route.component }
81
80
 
82
81
  // Only include state if it has content
83
82
  if (route.state && Object.keys(route.state).length > 0) {
@@ -823,7 +822,7 @@ describe('AreaService - Edge Cases', () => {
823
822
  mockLocation.pathname = '/demo/area/'
824
823
 
825
824
  // Create a large state object
826
- const largeState: Record<string, any> = {}
825
+ const largeState: Record<string, string> = {}
827
826
  for (let i = 0; i < 1000; i++) {
828
827
  largeState[`key${i}`] = `value${i}`.repeat(10)
829
828
  }
@@ -496,9 +496,10 @@ class AreaService implements AreaSubscription {
496
496
  // Fallback to encoded state in URL (original behavior)
497
497
  try {
498
498
  // Clean up empty objects before encoding
499
- const cleanedAreas: Record<string, any> = {}
499
+ type CleanRoute = Omit<ActiveRoute, 'area'>
500
+ const cleanedAreas: Record<string, CleanRoute> = {}
500
501
  Object.entries(areas).forEach(([areaName, route]) => {
501
- const cleanRoute: any = { component: route.component }
502
+ const cleanRoute: CleanRoute = { component: route.component }
502
503
 
503
504
  // Only include state if it has content
504
505
  if (route.state && Object.keys(route.state).length > 0) {
@@ -632,7 +633,7 @@ class AreaService implements AreaSubscription {
632
633
  if (this.enableHistoryMode) {
633
634
  try {
634
635
  const currentState = history.state || {}
635
- const schmancyAreas = { ...(currentState.schmancyAreas || {}) }
636
+ const schmancyAreas = { ...currentState.schmancyAreas }
636
637
  delete schmancyAreas[name]
637
638
 
638
639
  const newState = {
@@ -1,4 +1,4 @@
1
- import { $LitElement } from '@mixins/index';
1
+ import { SchmancyElement } from '@mixins/index';
2
2
  import { css, html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { Observable } from 'rxjs';
@@ -11,7 +11,7 @@ export type RouteComponent =
11
11
  | string // Tag name
12
12
  | CustomElementConstructor // Constructor function
13
13
  | HTMLElement // Existing element
14
- | LazyComponent<any>
14
+ | LazyComponent<CustomElementConstructor>
15
15
 
16
16
  export interface RouteConfig {
17
17
  when: string;
@@ -20,11 +20,22 @@ export interface RouteConfig {
20
20
  guard?: ObservableGuardResult;
21
21
  }
22
22
 
23
+ export type SchmancyRouteRedirectEvent = CustomEvent<{
24
+ blockedRoute: string;
25
+ area: string;
26
+ params: Record<string, string>;
27
+ state: Record<string, unknown>;
28
+ redirectTarget?: unknown;
29
+ }>;
30
+
23
31
  /**
24
32
  * A marker component that holds route configuration.
25
33
  * This component doesn't render anything - it's used by schmancy-area
26
34
  * to configure routing via slot change detection.
27
35
  *
36
+ * @fires {SchmancyRouteRedirectEvent} redirect - Fired by the parent schmancy-area
37
+ * on this element when the route's guard emits false. Listen with `@redirect`.
38
+ *
28
39
  * @example
29
40
  * ```html
30
41
  * <schmancy-area>
@@ -37,11 +48,13 @@ export interface RouteConfig {
37
48
  * ```
38
49
  */
39
50
  @customElement('schmancy-route')
40
- export class SchmancyRoute extends $LitElement(css`
51
+ export class SchmancyRoute extends SchmancyElement {
52
+ static styles = [css`
41
53
  :host {
42
54
  display: none;
43
55
  }
44
- `) {
56
+ `]
57
+
45
58
  @property({ type: String })
46
59
  when!: string;
47
60
 
package/src/area/utils.ts CHANGED
@@ -45,8 +45,8 @@ export function compareCustomElementConstructors(
45
45
  // Check if they have the same prototype chain
46
46
  if (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {
47
47
  // Check if they have the same property names
48
- const keys1 = Object.getOwnPropertyNames(proto1).sort()
49
- const keys2 = Object.getOwnPropertyNames(proto2).sort()
48
+ const keys1 = Object.getOwnPropertyNames(proto1).toSorted()
49
+ const keys2 = Object.getOwnPropertyNames(proto2).toSorted()
50
50
 
51
51
  return keys1.length === keys2.length && keys1.every((key, i) => key === keys2[i])
52
52
  }
@@ -144,6 +144,7 @@ export function debounce<T extends (...args: any[]) => any>(func: T, wait: numbe
144
144
  let timeout: ReturnType<typeof setTimeout> | null = null
145
145
 
146
146
  return function (this: any, ...args: Parameters<T>) {
147
+ // oxlint-disable-next-line typescript/no-this-alias
147
148
  const context = this
148
149
 
149
150
  if (timeout !== null) {
@@ -28,7 +28,7 @@
28
28
  */
29
29
 
30
30
  import { BehaviorSubject, distinctUntilChanged, map, shareReplay } from 'rxjs'
31
- import { createContext } from '../store'
31
+ import { state } from '../state'
32
32
  import type {
33
33
  Feeling,
34
34
  FeelingCategory,
@@ -43,16 +43,12 @@ import type {
43
43
  // CONTEXT
44
44
  // ============================================================================
45
45
 
46
- /** Sound settings context - persists to local storage */
47
- const SoundContext = createContext<SoundThemeSettings>(
48
- {
49
- theme: null,
50
- volume: 0.15,
51
- muted: false,
52
- },
53
- 'local',
54
- 'schmancy-sound-settings'
55
- )
46
+ /** Sound settings persists to localStorage under namespace `schmancy/sound`. */
47
+ const SoundContext = state<SoundThemeSettings>('schmancy/sound').local({
48
+ theme: null,
49
+ volume: 0.15,
50
+ muted: false,
51
+ })
56
52
 
57
53
  // ============================================================================
58
54
  // DEFAULT SOUND THEME