@mhmo91/schmancy 0.10.26 → 0.10.27

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 (389) hide show
  1. package/custom-elements.json +9 -18
  2. package/dist/agent/overlay.confirm-body-BZoUgkdK.js +4574 -0
  3. package/dist/agent/overlay.confirm-body-BZoUgkdK.js.map +1 -0
  4. package/dist/agent/schmancy.agent.js +3113 -4893
  5. package/dist/agent/schmancy.agent.js.map +1 -1
  6. package/dist/agent/schmancy.manifest.json +68 -24
  7. package/dist/{area-DkvO_oiO.cjs → area-BSVOYQDA.cjs} +1 -1
  8. package/dist/{area-DkvO_oiO.cjs.map → area-BSVOYQDA.cjs.map} +1 -1
  9. package/dist/{area-fC1_kvAW.js → area-C_Yvjmad.js} +1 -1
  10. package/dist/{area-fC1_kvAW.js.map → area-C_Yvjmad.js.map} +1 -1
  11. package/dist/area.cjs +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-Aa2IstyX.cjs → autocomplete-B50VXUzw.cjs} +1 -1
  14. package/dist/{autocomplete-Aa2IstyX.cjs.map → autocomplete-B50VXUzw.cjs.map} +1 -1
  15. package/dist/{autocomplete-Hb-C11a3.js → autocomplete-C6I1mfOT.js} +2 -2
  16. package/dist/{autocomplete-Hb-C11a3.js.map → autocomplete-C6I1mfOT.js.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/avatar.cjs +2 -2
  20. package/dist/avatar.js +3 -3
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.js +1 -1
  23. package/dist/{boat-BW6aRcdY.js → boat-C94QZ4Zt.js} +1 -1
  24. package/dist/{boat-BW6aRcdY.js.map → boat-C94QZ4Zt.js.map} +1 -1
  25. package/dist/{boat-BEq-AHmL.cjs → boat-DVQBNkk5.cjs} +1 -1
  26. package/dist/{boat-BEq-AHmL.cjs.map → boat-DVQBNkk5.cjs.map} +1 -1
  27. package/dist/boat.cjs +1 -1
  28. package/dist/boat.js +1 -1
  29. package/dist/breadcrumb.cjs +1 -1
  30. package/dist/breadcrumb.js +1 -1
  31. package/dist/{busy-D-ucQFSB.js → busy--bNb42rM.js} +1 -1
  32. package/dist/{busy-D-ucQFSB.js.map → busy--bNb42rM.js.map} +1 -1
  33. package/dist/{busy-CKpIblIO.cjs → busy-DuxFvEkY.cjs} +1 -1
  34. package/dist/{busy-CKpIblIO.cjs.map → busy-DuxFvEkY.cjs.map} +1 -1
  35. package/dist/busy.cjs +1 -1
  36. package/dist/busy.js +1 -1
  37. package/dist/{button-BU-X0a0S.js → button-B7b9L_h5.js} +26 -187
  38. package/dist/button-B7b9L_h5.js.map +1 -0
  39. package/dist/{button-HzLpB3NP.cjs → button-DAFZ5A4O.cjs} +2 -60
  40. package/dist/button-DAFZ5A4O.cjs.map +1 -0
  41. package/dist/button.cjs +59 -1
  42. package/dist/button.cjs.map +1 -0
  43. package/dist/button.js +170 -2
  44. package/dist/button.js.map +1 -0
  45. package/dist/{card-CcrUlgd3.cjs → card-DZPd24Sn.cjs} +1 -1
  46. package/dist/{card-CcrUlgd3.cjs.map → card-DZPd24Sn.cjs.map} +1 -1
  47. package/dist/{card-ueXBeJ6q.js → card-ixzxOW-Q.js} +1 -1
  48. package/dist/{card-ueXBeJ6q.js.map → card-ixzxOW-Q.js.map} +1 -1
  49. package/dist/card.cjs +1 -1
  50. package/dist/card.js +1 -1
  51. package/dist/{checkbox-qsp-I5C6.cjs → checkbox-Bi_Fm2mf.cjs} +1 -1
  52. package/dist/{checkbox-qsp-I5C6.cjs.map → checkbox-Bi_Fm2mf.cjs.map} +1 -1
  53. package/dist/{checkbox-CW1kk4Tu.js → checkbox-DdGpepTh.js} +1 -1
  54. package/dist/{checkbox-CW1kk4Tu.js.map → checkbox-DdGpepTh.js.map} +1 -1
  55. package/dist/checkbox.cjs +1 -1
  56. package/dist/checkbox.js +1 -1
  57. package/dist/{chips-C_F6-gfe.js → chips-DLTynyVB.js} +3 -3
  58. package/dist/{chips-C_F6-gfe.js.map → chips-DLTynyVB.js.map} +1 -1
  59. package/dist/{chips-Dluk6RV4.cjs → chips-DWQMZErr.cjs} +1 -1
  60. package/dist/{chips-Dluk6RV4.cjs.map → chips-DWQMZErr.cjs.map} +1 -1
  61. package/dist/chips.cjs +1 -1
  62. package/dist/chips.js +2 -2
  63. package/dist/connectivity.cjs +1 -1
  64. package/dist/connectivity.js +1 -1
  65. package/dist/content-drawer.cjs +1 -1
  66. package/dist/content-drawer.js +1 -1
  67. package/dist/{date-range-BFOqXAI2.cjs → date-range-BgGQyxOC.cjs} +1 -1
  68. package/dist/{date-range-BFOqXAI2.cjs.map → date-range-BgGQyxOC.cjs.map} +1 -1
  69. package/dist/{date-range-ASZ8h_Il.js → date-range-CT6ckjmV.js} +2 -2
  70. package/dist/{date-range-ASZ8h_Il.js.map → date-range-CT6ckjmV.js.map} +1 -1
  71. package/dist/{date-range-inline-DHrgolLn.js → date-range-inline-Ho3CENTh.js} +1 -1
  72. package/dist/{date-range-inline-DHrgolLn.js.map → date-range-inline-Ho3CENTh.js.map} +1 -1
  73. package/dist/{date-range-inline-BNmNOpL0.cjs → date-range-inline-nPWIs-3C.cjs} +1 -1
  74. package/dist/{date-range-inline-BNmNOpL0.cjs.map → date-range-inline-nPWIs-3C.cjs.map} +1 -1
  75. package/dist/date-range-inline.cjs +1 -1
  76. package/dist/date-range-inline.js +1 -1
  77. package/dist/date-range.cjs +1 -1
  78. package/dist/date-range.js +1 -1
  79. package/dist/delay.cjs +1 -1
  80. package/dist/delay.js +2 -2
  81. package/dist/{details-Bx9c4XQR.cjs → details-BnRWMZdt.cjs} +1 -1
  82. package/dist/{details-Bx9c4XQR.cjs.map → details-BnRWMZdt.cjs.map} +1 -1
  83. package/dist/{details-B9RgRw6c.js → details-CcMTvYo7.js} +2 -2
  84. package/dist/{details-B9RgRw6c.js.map → details-CcMTvYo7.js.map} +1 -1
  85. package/dist/details.cjs +1 -1
  86. package/dist/details.js +1 -1
  87. package/dist/{directives-Dq0zi2KR.cjs → directives-BkSqmLBV.cjs} +11 -11
  88. package/dist/directives-BkSqmLBV.cjs.map +1 -0
  89. package/dist/{directives-sWKTEJDb.js → directives-DgPbz0lQ.js} +116 -153
  90. package/dist/directives-DgPbz0lQ.js.map +1 -0
  91. package/dist/directives.cjs +1 -1
  92. package/dist/directives.js +7 -6
  93. package/dist/discovery.cjs +1 -1
  94. package/dist/discovery.js +1 -1
  95. package/dist/{discovery.service-CVDXO9rH.cjs.map → discovery.service-CIa3Eeuk.cjs.map} +1 -1
  96. package/dist/{discovery.service-COmbHaoI.js.map → discovery.service-DZFxtRwW.js.map} +1 -1
  97. package/dist/{divider-DH0BvTOv.cjs → divider-C6yJSL1c.cjs} +1 -1
  98. package/dist/{divider-DH0BvTOv.cjs.map → divider-C6yJSL1c.cjs.map} +1 -1
  99. package/dist/{divider-C7BtzDcK.js → divider-CZCj0ioH.js} +1 -1
  100. package/dist/{divider-C7BtzDcK.js.map → divider-CZCj0ioH.js.map} +1 -1
  101. package/dist/divider.cjs +1 -1
  102. package/dist/divider.js +1 -1
  103. package/dist/dropdown.cjs +1 -1
  104. package/dist/dropdown.js +1 -1
  105. package/dist/{expand-DcMx9dHY.js → expand-Cc6ogXsR.js} +2 -2
  106. package/dist/{expand-DcMx9dHY.js.map → expand-Cc6ogXsR.js.map} +1 -1
  107. package/dist/{expand-CPMF44eL.cjs → expand-D4EhwOYh.cjs} +1 -1
  108. package/dist/{expand-CPMF44eL.cjs.map → expand-D4EhwOYh.cjs.map} +1 -1
  109. package/dist/expand.cjs +1 -1
  110. package/dist/expand.js +1 -1
  111. package/dist/{float-CgBN4H3g.cjs → float-B8EPc_OG.cjs} +1 -1
  112. package/dist/{float-CgBN4H3g.cjs.map → float-B8EPc_OG.cjs.map} +1 -1
  113. package/dist/{float-DkUw5TN4.js → float-BvI3HTtB.js} +1 -1
  114. package/dist/{float-DkUw5TN4.js.map → float-BvI3HTtB.js.map} +1 -1
  115. package/dist/float.cjs +1 -1
  116. package/dist/float.js +1 -1
  117. package/dist/form-C4eFgFwF.cjs +42 -0
  118. package/dist/{form-DxApnyVx.cjs.map → form-C4eFgFwF.cjs.map} +1 -1
  119. package/dist/{form-kSgJf_h4.js → form-CGe9rVox.js} +8 -8
  120. package/dist/{form-kSgJf_h4.js.map → form-CGe9rVox.js.map} +1 -1
  121. package/dist/form.cjs +1 -1
  122. package/dist/form.js +6 -6
  123. package/dist/gravity-6pL6CfIr.cjs +1 -0
  124. package/dist/gravity-6pL6CfIr.cjs.map +1 -0
  125. package/dist/gravity-sVK3zGBF.js +46 -0
  126. package/dist/gravity-sVK3zGBF.js.map +1 -0
  127. package/dist/handover/agent-runtime-followups.md +1 -1
  128. package/dist/handover/agent-runtime-v1.md +3 -3
  129. package/dist/{hashContent-Dgmzc32o.js.map → hashContent-BqU6v1Xr.js.map} +1 -1
  130. package/dist/{hashContent-Dh1VzIAb.cjs.map → hashContent-iRZJJWtE.cjs.map} +1 -1
  131. package/dist/{icons-DsfpmrVO.js → icon-B1eZr2ZL.js} +1 -1
  132. package/dist/icon-B1eZr2ZL.js.map +1 -0
  133. package/dist/{icons-3F1nQAn_.cjs → icon-CgIXAvKI.cjs} +1 -1
  134. package/dist/{icons-DsfpmrVO.js.map → icon-CgIXAvKI.cjs.map} +1 -1
  135. package/dist/icons.cjs +1 -1
  136. package/dist/icons.js +1 -1
  137. package/dist/{iframe-sTXBw6zB.cjs → iframe-BO3BpRLH.cjs} +1 -1
  138. package/dist/{iframe-sTXBw6zB.cjs.map → iframe-BO3BpRLH.cjs.map} +1 -1
  139. package/dist/{iframe-KrV4Cak-.js → iframe-CmpAZc61.js} +1 -1
  140. package/dist/{iframe-KrV4Cak-.js.map → iframe-CmpAZc61.js.map} +1 -1
  141. package/dist/iframe.cjs +1 -1
  142. package/dist/iframe.js +1 -1
  143. package/dist/index.cjs +1 -1
  144. package/dist/index.js +49 -47
  145. package/dist/{input-DMoggdSN.cjs → input-5YL2oUBr.cjs} +1 -1
  146. package/dist/{input-DMoggdSN.cjs.map → input-5YL2oUBr.cjs.map} +1 -1
  147. package/dist/{input-zj3eaZM_.js → input-_Hft9vov.js} +1 -1
  148. package/dist/{input-zj3eaZM_.js.map → input-_Hft9vov.js.map} +1 -1
  149. package/dist/{input-chip-DHbfUatc.js → input-chip-BNTojQT6.js} +1 -1
  150. package/dist/{input-chip-DHbfUatc.js.map → input-chip-BNTojQT6.js.map} +1 -1
  151. package/dist/{input-chip-B1iNQW2m.cjs → input-chip-DKMNpcED.cjs} +1 -1
  152. package/dist/{input-chip-B1iNQW2m.cjs.map → input-chip-DKMNpcED.cjs.map} +1 -1
  153. package/dist/input.cjs +1 -1
  154. package/dist/input.js +1 -1
  155. package/dist/json.cjs +1 -1
  156. package/dist/json.js +2 -2
  157. package/dist/kbd.cjs +1 -1
  158. package/dist/kbd.js +1 -1
  159. package/dist/layout.cjs +1 -1
  160. package/dist/layout.js +1 -1
  161. package/dist/{lightbox-CAcXlJlv.js → lightbox-CKlYcnHV.js} +1 -1
  162. package/dist/{lightbox-CAcXlJlv.js.map → lightbox-CKlYcnHV.js.map} +1 -1
  163. package/dist/{lightbox-86F2RgXy.cjs → lightbox-t4dvb8_A.cjs} +1 -1
  164. package/dist/{lightbox-86F2RgXy.cjs.map → lightbox-t4dvb8_A.cjs.map} +1 -1
  165. package/dist/lightbox.cjs +1 -1
  166. package/dist/lightbox.js +1 -1
  167. package/dist/{list-CUbI0RM6.cjs → list-21mWtDKg.cjs} +4 -4
  168. package/dist/list-21mWtDKg.cjs.map +1 -0
  169. package/dist/{list-BIjJ6T1c.js → list-B6QhxgRJ.js} +4 -7
  170. package/dist/list-B6QhxgRJ.js.map +1 -0
  171. package/dist/list.cjs +1 -1
  172. package/dist/list.js +1 -1
  173. package/dist/{magnetic-mHXl54Z8.js.map → magnetic-B2VKNfDu.js.map} +1 -1
  174. package/dist/{magnetic-D-ph029G.cjs.map → magnetic-MQ3HMHJi.cjs.map} +1 -1
  175. package/dist/{menu-CtFcvxgU.js → menu-CjOgPSOG.js} +2 -2
  176. package/dist/{menu-CtFcvxgU.js.map → menu-CjOgPSOG.js.map} +1 -1
  177. package/dist/{menu-DGMrjR_a.cjs → menu-Cu5G4vcR.cjs} +1 -1
  178. package/dist/{menu-DGMrjR_a.cjs.map → menu-Cu5G4vcR.cjs.map} +1 -1
  179. package/dist/menu.cjs +1 -1
  180. package/dist/menu.js +1 -1
  181. package/dist/mixins-8dT5j6CS.js +627 -0
  182. package/dist/mixins-8dT5j6CS.js.map +1 -0
  183. package/dist/mixins-BF3Vj8_c.cjs +242 -0
  184. package/dist/mixins-BF3Vj8_c.cjs.map +1 -0
  185. package/dist/mixins.cjs +1 -1
  186. package/dist/mixins.js +1 -1
  187. package/dist/nav-drawer.cjs +1 -1
  188. package/dist/nav-drawer.js +1 -1
  189. package/dist/navigation-bar.cjs +1 -1
  190. package/dist/navigation-bar.js +1 -1
  191. package/dist/navigation-rail.cjs +7 -5
  192. package/dist/navigation-rail.cjs.map +1 -1
  193. package/dist/navigation-rail.js +52 -38
  194. package/dist/navigation-rail.js.map +1 -1
  195. package/dist/notification-CDKBKh63.js +243 -0
  196. package/dist/notification-CDKBKh63.js.map +1 -0
  197. package/dist/notification-CcNoBFEJ.cjs +24 -0
  198. package/dist/notification-CcNoBFEJ.cjs.map +1 -0
  199. package/dist/notification.cjs +1 -1
  200. package/dist/notification.js +1 -1
  201. package/dist/{option-C3UyYQi_.js → option-BWfmDJvm.js} +1 -1
  202. package/dist/{option-C3UyYQi_.js.map → option-BWfmDJvm.js.map} +1 -1
  203. package/dist/{option-DJ3R-2Wn.cjs → option-DejeqOad.cjs} +1 -1
  204. package/dist/{option-DJ3R-2Wn.cjs.map → option-DejeqOad.cjs.map} +1 -1
  205. package/dist/option.cjs +1 -1
  206. package/dist/option.js +1 -1
  207. package/dist/{overlay-D1hFkcFA.js → overlay-D3c_NY18.js} +214 -265
  208. package/dist/overlay-D3c_NY18.js.map +1 -0
  209. package/dist/overlay-Dv2utO4C.cjs +43 -0
  210. package/dist/overlay-Dv2utO4C.cjs.map +1 -0
  211. package/dist/overlay.cjs +1 -1
  212. package/dist/overlay.confirm-body-B2ntyquG.cjs +79 -0
  213. package/dist/overlay.confirm-body-B2ntyquG.cjs.map +1 -0
  214. package/dist/overlay.confirm-body-B_v0ivkn.js +159 -0
  215. package/dist/overlay.confirm-body-B_v0ivkn.js.map +1 -0
  216. package/dist/overlay.js +3 -3
  217. package/dist/overlay.service-B3FjXCqc.js +143 -0
  218. package/dist/overlay.service-B3FjXCqc.js.map +1 -0
  219. package/dist/overlay.service-BkSeqXIv.cjs +1 -0
  220. package/dist/overlay.service-BkSeqXIv.cjs.map +1 -0
  221. package/dist/{progress-CY-UbvOB.cjs → progress-6_rb3Ah9.cjs} +1 -1
  222. package/dist/{progress-CY-UbvOB.cjs.map → progress-6_rb3Ah9.cjs.map} +1 -1
  223. package/dist/{progress-YjdEWDI5.js → progress-CFcmO0wv.js} +1 -1
  224. package/dist/{progress-YjdEWDI5.js.map → progress-CFcmO0wv.js.map} +1 -1
  225. package/dist/progress.cjs +1 -1
  226. package/dist/progress.js +1 -1
  227. package/dist/{radio-group-aKXKHqUp.js → radio-group-Bd8y9QpX.js} +1 -1
  228. package/dist/{radio-group-aKXKHqUp.js.map → radio-group-Bd8y9QpX.js.map} +1 -1
  229. package/dist/{radio-group--UamzqAm.cjs → radio-group-_WZg8EKM.cjs} +1 -1
  230. package/dist/{radio-group--UamzqAm.cjs.map → radio-group-_WZg8EKM.cjs.map} +1 -1
  231. package/dist/radio-group.cjs +1 -1
  232. package/dist/radio-group.js +1 -1
  233. package/dist/range.cjs +1 -1
  234. package/dist/range.js +1 -1
  235. package/dist/{rxjs-utils-CaC-tdot.cjs.map → rxjs-utils-Csnks202.cjs.map} +1 -1
  236. package/dist/{rxjs-utils-BXpvHN4-.js.map → rxjs-utils-d-ivVN84.js.map} +1 -1
  237. package/dist/rxjs-utils.cjs +1 -1
  238. package/dist/rxjs-utils.js +1 -1
  239. package/dist/{select-CIquL8LY.cjs → select-BaioT3yY.cjs} +2 -2
  240. package/dist/{select-CIquL8LY.cjs.map → select-BaioT3yY.cjs.map} +1 -1
  241. package/dist/{select-B0Qk4PfT.js → select-Czpl1ztD.js} +3 -3
  242. package/dist/{select-B0Qk4PfT.js.map → select-Czpl1ztD.js.map} +1 -1
  243. package/dist/select.cjs +1 -1
  244. package/dist/select.js +1 -1
  245. package/dist/skeleton.cjs +1 -1
  246. package/dist/skeleton.js +1 -1
  247. package/dist/skills/SKILL.md +1 -1
  248. package/dist/skills/list.md +0 -1
  249. package/dist/skills/schmancy/SKILL.md +1 -1
  250. package/dist/skills/schmancy/list.md +0 -1
  251. package/dist/slider.cjs +1 -1
  252. package/dist/slider.js +1 -1
  253. package/dist/{splash-screen-rg56AXCf.cjs → splash-screen-3FtgdVy3.cjs} +1 -1
  254. package/dist/{splash-screen-rg56AXCf.cjs.map → splash-screen-3FtgdVy3.cjs.map} +1 -1
  255. package/dist/{splash-screen-CP_Idse2.js → splash-screen-YtTVkJg8.js} +1 -1
  256. package/dist/{splash-screen-CP_Idse2.js.map → splash-screen-YtTVkJg8.js.map} +1 -1
  257. package/dist/splash-screen.cjs +1 -1
  258. package/dist/splash-screen.js +1 -1
  259. package/dist/{src-BAaNnqwc.cjs → src-0LIdvAX6.cjs} +8 -8
  260. package/dist/{src-BAaNnqwc.cjs.map → src-0LIdvAX6.cjs.map} +1 -1
  261. package/dist/{src-Do0IGupa.js → src-BJHws7IS.js} +37 -37
  262. package/dist/{src-Do0IGupa.js.map → src-BJHws7IS.js.map} +1 -1
  263. package/dist/steps.cjs +1 -1
  264. package/dist/steps.js +1 -1
  265. package/dist/{surface-B7a2O5-9.cjs → surface-BNvxLEDN.cjs} +1 -1
  266. package/dist/surface-BNvxLEDN.cjs.map +1 -0
  267. package/dist/{surface-DGewe6IV.js → surface-CVxyQPln.js} +1 -1
  268. package/dist/surface-CVxyQPln.js.map +1 -0
  269. package/dist/surface.cjs +1 -1
  270. package/dist/surface.js +1 -1
  271. package/dist/switch.cjs +1 -1
  272. package/dist/switch.js +1 -1
  273. package/dist/table.cjs +1 -1
  274. package/dist/table.js +1 -1
  275. package/dist/{tabs-g2aM43TH.js → tabs-CnPXvZuZ.js} +1 -1
  276. package/dist/{tabs-g2aM43TH.js.map → tabs-CnPXvZuZ.js.map} +1 -1
  277. package/dist/{tabs-n4dO5fo1.cjs → tabs-DTU7748z.cjs} +1 -1
  278. package/dist/{tabs-n4dO5fo1.cjs.map → tabs-DTU7748z.cjs.map} +1 -1
  279. package/dist/tabs.cjs +1 -1
  280. package/dist/tabs.js +1 -1
  281. package/dist/teleport.cjs +1 -1
  282. package/dist/teleport.js +1 -1
  283. package/dist/{textarea-DDx_7AfQ.cjs → textarea-Bqth6Q8P.cjs} +1 -1
  284. package/dist/{textarea-DDx_7AfQ.cjs.map → textarea-Bqth6Q8P.cjs.map} +1 -1
  285. package/dist/{textarea-D5hw4jsP.js → textarea-mQPsppmd.js} +1 -1
  286. package/dist/{textarea-D5hw4jsP.js.map → textarea-mQPsppmd.js.map} +1 -1
  287. package/dist/textarea.cjs +1 -1
  288. package/dist/textarea.js +1 -1
  289. package/dist/{theme-BMYkheaA.js → theme-BJqpv4cG.js} +2 -2
  290. package/dist/{theme-BMYkheaA.js.map → theme-BJqpv4cG.js.map} +1 -1
  291. package/dist/{theme-BdZAj0CO.cjs → theme-D4HGKt7N.cjs} +1 -1
  292. package/dist/{theme-BdZAj0CO.cjs.map → theme-D4HGKt7N.cjs.map} +1 -1
  293. package/dist/{theme-button-DdI6kxY3.js → theme-button-Jap7G_IH.js} +1 -1
  294. package/dist/{theme-button-DdI6kxY3.js.map → theme-button-Jap7G_IH.js.map} +1 -1
  295. package/dist/{theme-button-R2f_kLEl.cjs → theme-button-LP-Dgr17.cjs} +1 -1
  296. package/dist/{theme-button-R2f_kLEl.cjs.map → theme-button-LP-Dgr17.cjs.map} +1 -1
  297. package/dist/theme-button.cjs +1 -1
  298. package/dist/theme-button.js +1 -1
  299. package/dist/theme.cjs +1 -1
  300. package/dist/{theme.interface-B5xjEk74.cjs.map → theme.interface-CSt7JUBD.cjs.map} +1 -1
  301. package/dist/{theme.interface-DVEw3s8m.js.map → theme.interface-odQEpZZH.js.map} +1 -1
  302. package/dist/theme.js +3 -3
  303. package/dist/tree.cjs +1 -1
  304. package/dist/tree.js +1 -1
  305. package/dist/typography-BJMm6b0b.js +358 -0
  306. package/dist/typography-BJMm6b0b.js.map +1 -0
  307. package/dist/typography-Bc4MmSal.cjs +282 -0
  308. package/dist/typography-Bc4MmSal.cjs.map +1 -0
  309. package/dist/typography.cjs +1 -282
  310. package/dist/typography.js +2 -358
  311. package/dist/{utils-CVWUrECT.cjs.map → utils-DTa3QHxk.cjs.map} +1 -1
  312. package/dist/{utils-578eFTx4.js.map → utils-H8wNknWC.js.map} +1 -1
  313. package/dist/utils.cjs +1 -1
  314. package/dist/utils.js +1 -1
  315. package/dist/visually-hidden.cjs +1 -1
  316. package/dist/visually-hidden.js +1 -1
  317. package/dist/{window-LOGPpN8K.cjs → window-CNu_WnsY.cjs} +1 -1
  318. package/dist/{window-LOGPpN8K.cjs.map → window-CNu_WnsY.cjs.map} +1 -1
  319. package/dist/{window-MQxhTodp.js → window-DZTjkE24.js} +1 -1
  320. package/dist/{window-MQxhTodp.js.map → window-DZTjkE24.js.map} +1 -1
  321. package/dist/window.cjs +1 -1
  322. package/dist/window.js +1 -1
  323. package/package.json +1 -1
  324. package/skills/schmancy/SKILL.md +1 -1
  325. package/skills/schmancy/list.md +0 -1
  326. package/src/list/list.ts +1 -12
  327. package/src/navigation-rail/navigation-rail.ts +558 -490
  328. package/src/notification/notification-service.ts +81 -263
  329. package/src/notification/notification.scss +93 -50
  330. package/src/notification/notification.ts +32 -69
  331. package/src/overlay/overlay.component.ts +99 -158
  332. package/src/overlay/overlay.confirm-body.ts +106 -61
  333. package/src/overlay/overlay.service.ts +81 -108
  334. package/src/surface/surface.styles.ts +0 -17
  335. package/src/surface/surface.ts +5 -7
  336. package/types/mixins/surface.mixin.d.ts +0 -3
  337. package/types/src/list/list.d.ts +0 -9
  338. package/types/src/navigation-rail/navigation-rail.d.ts +21 -1
  339. package/types/src/notification/notification-service.d.ts +3 -86
  340. package/types/src/notification/notification.d.ts +1 -1
  341. package/types/src/overlay/overlay.component.d.ts +1 -2
  342. package/types/src/overlay/overlay.confirm-body.d.ts +8 -4
  343. package/types/src/surface/surface.d.ts +5 -6
  344. package/types/src/surface/surface.styles.d.ts +0 -4
  345. package/dist/agent/overlay.confirm-body-DJrL6tio.js +0 -2859
  346. package/dist/agent/overlay.confirm-body-DJrL6tio.js.map +0 -1
  347. package/dist/button-BU-X0a0S.js.map +0 -1
  348. package/dist/button-HzLpB3NP.cjs.map +0 -1
  349. package/dist/directives-Dq0zi2KR.cjs.map +0 -1
  350. package/dist/directives-sWKTEJDb.js.map +0 -1
  351. package/dist/form-DxApnyVx.cjs +0 -42
  352. package/dist/icons-3F1nQAn_.cjs.map +0 -1
  353. package/dist/list-BIjJ6T1c.js.map +0 -1
  354. package/dist/list-CUbI0RM6.cjs.map +0 -1
  355. package/dist/mixins-CKbQ6BJo.js +0 -642
  356. package/dist/mixins-CKbQ6BJo.js.map +0 -1
  357. package/dist/mixins-DSy-enUd.cjs +0 -254
  358. package/dist/mixins-DSy-enUd.cjs.map +0 -1
  359. package/dist/notification-BqyMYtP7.js +0 -306
  360. package/dist/notification-BqyMYtP7.js.map +0 -1
  361. package/dist/notification-D5eOdsMT.cjs +0 -23
  362. package/dist/notification-D5eOdsMT.cjs.map +0 -1
  363. package/dist/overlay-D1hFkcFA.js.map +0 -1
  364. package/dist/overlay-D7nQaT5U.cjs +0 -81
  365. package/dist/overlay-D7nQaT5U.cjs.map +0 -1
  366. package/dist/overlay.confirm-body-B4eCDLmU.js +0 -100
  367. package/dist/overlay.confirm-body-B4eCDLmU.js.map +0 -1
  368. package/dist/overlay.confirm-body-P18SmJL2.cjs +0 -45
  369. package/dist/overlay.confirm-body-P18SmJL2.cjs.map +0 -1
  370. package/dist/overlay.service-02ZLZ8Ib.js +0 -146
  371. package/dist/overlay.service-02ZLZ8Ib.js.map +0 -1
  372. package/dist/overlay.service-m-8omCA-.cjs +0 -1
  373. package/dist/overlay.service-m-8omCA-.cjs.map +0 -1
  374. package/dist/surface-B7a2O5-9.cjs.map +0 -1
  375. package/dist/surface-DGewe6IV.js.map +0 -1
  376. package/dist/typography.cjs.map +0 -1
  377. package/dist/typography.js.map +0 -1
  378. /package/dist/{discovery.service-CVDXO9rH.cjs → discovery.service-CIa3Eeuk.cjs} +0 -0
  379. /package/dist/{discovery.service-COmbHaoI.js → discovery.service-DZFxtRwW.js} +0 -0
  380. /package/dist/{hashContent-Dgmzc32o.js → hashContent-BqU6v1Xr.js} +0 -0
  381. /package/dist/{hashContent-Dh1VzIAb.cjs → hashContent-iRZJJWtE.cjs} +0 -0
  382. /package/dist/{magnetic-mHXl54Z8.js → magnetic-B2VKNfDu.js} +0 -0
  383. /package/dist/{magnetic-D-ph029G.cjs → magnetic-MQ3HMHJi.cjs} +0 -0
  384. /package/dist/{rxjs-utils-CaC-tdot.cjs → rxjs-utils-Csnks202.cjs} +0 -0
  385. /package/dist/{rxjs-utils-BXpvHN4-.js → rxjs-utils-d-ivVN84.js} +0 -0
  386. /package/dist/{theme.interface-B5xjEk74.cjs → theme.interface-CSt7JUBD.cjs} +0 -0
  387. /package/dist/{theme.interface-DVEw3s8m.js → theme.interface-odQEpZZH.js} +0 -0
  388. /package/dist/{utils-CVWUrECT.cjs → utils-DTa3QHxk.cjs} +0 -0
  389. /package/dist/{utils-578eFTx4.js → utils-H8wNknWC.js} +0 -0
@@ -1,3 +1,4 @@
1
+ import { fromEvent } from 'rxjs'
1
2
  import { $sounds, type Feeling } from '../audio'
2
3
  import SchmancyNotification, { NotificationType } from './notification'
3
4
 
@@ -19,230 +20,62 @@ const typeToFeeling: Record<NotificationType, Feeling> = {
19
20
  error: 'disappointed',
20
21
  }
21
22
 
22
- // Track last mouse position
23
- let lastClickPosition = { x: window.innerWidth - 100, y: 50 }
23
+ const typeDurations: Record<NotificationType, number> = {
24
+ success: 1500,
25
+ info: 2000,
26
+ warning: 2500,
27
+ error: 2500,
28
+ }
29
+
30
+ $sounds.setVolume(0.1)
24
31
 
25
- // Global mousedown listener to track click position
32
+ // Track last mouse position via RxJS
33
+ let lastClickPosition = { x: window.innerWidth - 100, y: 50 }
26
34
  if (typeof window !== 'undefined') {
27
- window.addEventListener(
28
- 'mousedown',
29
- (e: MouseEvent) => {
35
+ fromEvent<MouseEvent>(window, 'mousedown', { capture: true, passive: true } as AddEventListenerOptions).subscribe(
36
+ e => {
30
37
  lastClickPosition = { x: e.clientX, y: e.clientY }
31
38
  },
32
- { capture: true, passive: true },
33
39
  )
34
40
  }
35
41
 
36
- // Track current notification element
37
42
  let currentNotification: SchmancyNotification | null = null
43
+ const notificationStack: string[] = []
38
44
 
39
- /**
40
- * Notification service for centralized notification management.
41
- * Provides a simple API for showing notifications.
42
- */
43
- export class NotificationService {
44
- private static instance: NotificationService
45
- private notificationStack: string[] = []
46
- private audioVolume = 0.1
47
-
48
- // Default notification options
49
- private static DEFAULT_OPTIONS: Partial<NotificationOptions> = {
50
- duration: 1000, // 1 seconds - long enough to be readable
51
- closable: true,
52
- playSound: true,
53
- }
54
-
55
- // Type-specific default durations (in milliseconds)
56
- private static TYPE_DURATIONS: Record<NotificationType, number> = {
57
- success: 1500, // 1.5 seconds - quick confirmation
58
- info: 2000, // 2 seconds - informational
59
- warning: 2500, // 2.5 seconds - needs attention
60
- error: 2500, // 2.5 seconds - important
61
- }
62
-
63
- // Private constructor for singleton pattern
64
- private constructor() {
65
- $sounds.setVolume(this.audioVolume)
66
- }
67
-
68
- /**
69
- * Get the singleton instance
70
- */
71
- public static getInstance(): NotificationService {
72
- if (!NotificationService.instance) {
73
- NotificationService.instance = new NotificationService()
74
- }
75
- return NotificationService.instance
76
- }
77
-
78
- /**
79
- * Show a notification
80
- * @returns The ID of the created notification
81
- */
82
- public notify(options: NotificationOptions): string {
83
- // Apply default options
84
- const completeOptions = {
85
- ...NotificationService.DEFAULT_OPTIONS,
86
- ...options,
87
- // Override with duraton from options if provided, otherwise use default
88
- duration: options.duration ?? NotificationService.DEFAULT_OPTIONS.duration,
89
- }
90
-
91
- const id = completeOptions.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`
92
-
93
- // Add to stack for tracking
94
- this.notificationStack.push(id)
95
-
96
- // Remove existing notification if any (only 1 at a time)
97
- if (currentNotification) {
98
- currentNotification.remove()
99
- currentNotification = null
100
- }
101
-
102
- // Create the notification element directly
103
- const notification = document.createElement('sch-notification') as SchmancyNotification
104
- notification.id = id
105
- notification.title = completeOptions.title || ''
106
- notification.message = completeOptions.message
107
- notification.type = completeOptions.type || 'info'
108
- notification.duration = completeOptions.duration ?? 1000
109
- notification.closable = completeOptions.closable !== false
110
- notification.playSound = false // We handle sound here
111
- notification.showProgress = completeOptions.showProgress || false
112
- notification.startPosition = { ...lastClickPosition }
113
-
114
- // Play sound if enabled
115
- if (completeOptions.playSound !== false) {
116
- $sounds.play(typeToFeeling[notification.type])
117
- }
118
-
119
- // Listen for close event
120
- notification.addEventListener('close', () => {
121
- const index = this.notificationStack.indexOf(id)
122
- if (index > -1) {
123
- this.notificationStack.splice(index, 1)
124
- }
125
- notification.remove()
126
- if (currentNotification === notification) {
127
- currentNotification = null
128
- }
129
- })
130
-
131
- // Append to body
132
- document.body.appendChild(notification)
133
- currentNotification = notification
134
-
135
- return id
136
- }
137
-
138
- /**
139
- * Dismiss a notification
140
- * @param id Optional notification ID. If not provided, dismisses the most recent notification
141
- */
142
- public dismiss(id?: string): void {
143
- let targetId: string | undefined
144
-
145
- if (id) {
146
- // Remove specific notification from stack
147
- const index = this.notificationStack.indexOf(id)
148
- if (index > -1) {
149
- this.notificationStack.splice(index, 1)
150
- targetId = id
151
- }
152
- } else {
153
- // Remove most recent notification (last in stack)
154
- targetId = this.notificationStack.pop()
155
- }
156
-
157
- if (targetId && currentNotification && currentNotification.id === targetId) {
158
- currentNotification.close()
159
- }
160
- }
161
-
162
- /**
163
- * Update a notification's content
164
- */
165
- public update(id: string, options: Partial<NotificationOptions>): void {
166
- if (currentNotification && currentNotification.id === id) {
167
- if (options.title !== undefined) currentNotification.title = options.title
168
- if (options.message !== undefined) currentNotification.message = options.message
169
- if (options.type !== undefined) currentNotification.type = options.type
170
- }
171
- }
172
-
173
- /**
174
- * Show an info notification
175
- */
176
- public info(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {
177
- return this.notify({
178
- message: message ?? '',
179
- type: 'info',
180
- duration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.info) : 1,
181
- ...options,
182
- })
183
- }
184
-
185
- /**
186
- * Show a success notification
187
- */
188
- public success(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {
189
- return this.notify({
190
- message: message ?? '',
191
- type: 'success',
192
- duration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.success) : 1,
193
- ...options,
194
- })
195
- }
45
+ function show(options: NotificationOptions): string {
46
+ const id = options.id ?? `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`
47
+ notificationStack.push(id)
196
48
 
197
- /**
198
- * Show a warning notification
199
- */
200
- public warning(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {
201
- return this.notify({
202
- message: message ?? '',
203
- type: 'warning',
204
- duration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.warning) : 1,
205
- ...options,
206
- })
49
+ if (currentNotification) {
50
+ currentNotification.remove()
51
+ currentNotification = null
207
52
  }
208
53
 
209
- /**
210
- * Show an error notification
211
- */
212
- public error(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {
213
- return this.notify({
214
- message: message ?? '',
215
- type: 'error',
216
- duration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.error) : 1,
217
- ...options,
218
- })
54
+ const notification = document.createElement('sch-notification') as SchmancyNotification
55
+ notification.id = id
56
+ notification.title = options.title ?? ''
57
+ notification.message = options.message
58
+ notification.type = options.type ?? 'info'
59
+ notification.duration = options.duration ?? 1000
60
+ notification.closable = options.closable !== false
61
+ notification.playSound = false
62
+ notification.showProgress = options.showProgress ?? false
63
+ notification.startPosition = { ...lastClickPosition }
64
+
65
+ if (options.playSound !== false) {
66
+ $sounds.play(typeToFeeling[notification.type])
219
67
  }
220
68
 
221
- /**
222
- * Show a notification with a custom duration
223
- */
224
- public customDuration(
225
- message: string,
226
- duration: number,
227
- options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},
228
- ): string {
229
- return this.notify({
230
- message,
231
- duration,
232
- ...options,
233
- })
234
- }
69
+ fromEvent(notification, 'close').subscribe(() => {
70
+ const index = notificationStack.indexOf(id)
71
+ if (index > -1) notificationStack.splice(index, 1)
72
+ notification.remove()
73
+ if (currentNotification === notification) currentNotification = null
74
+ })
235
75
 
236
- /**
237
- * Show a persistent notification (won't auto-dismiss)
238
- */
239
- public persistent(message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string {
240
- return this.notify({
241
- message,
242
- duration: 0, // Zero duration means no auto-close
243
- ...options,
244
- })
245
- }
76
+ document.body.appendChild(notification)
77
+ currentNotification = notification
78
+ return id
246
79
  }
247
80
 
248
81
  /**
@@ -259,74 +92,59 @@ export class NotificationService {
259
92
  * @method warning(message, options?) - Amber warning toast.
260
93
  */
261
94
  export const $notify = {
262
- /**
263
- * Show a notification
264
- */
265
- show: (options: NotificationOptions): string => {
266
- return NotificationService.getInstance().notify(options)
267
- },
95
+ show,
268
96
 
269
- /**
270
- * Show an info notification
271
- */
272
- info: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {
273
- return NotificationService.getInstance().info(message, options)
274
- },
97
+ info: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>
98
+ show({
99
+ message: message ?? '',
100
+ type: 'info',
101
+ duration: message ? (options.duration ?? typeDurations.info) : 1,
102
+ ...options,
103
+ }),
275
104
 
276
- /**
277
- * Show a success notification
278
- */
279
- success: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {
280
- return NotificationService.getInstance().success(message, options)
281
- },
105
+ success: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>
106
+ show({
107
+ message: message ?? '',
108
+ type: 'success',
109
+ duration: message ? (options.duration ?? typeDurations.success) : 1,
110
+ ...options,
111
+ }),
282
112
 
283
- /**
284
- * Show a warning notification
285
- */
286
- warning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {
287
- return NotificationService.getInstance().warning(message, options)
288
- },
113
+ warning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>
114
+ show({
115
+ message: message ?? '',
116
+ type: 'warning',
117
+ duration: message ? (options.duration ?? typeDurations.warning) : 1,
118
+ ...options,
119
+ }),
289
120
 
290
- /**
291
- * Show an error notification
292
- */
293
- error: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {
294
- return NotificationService.getInstance().error(message, options)
295
- },
121
+ error: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>
122
+ show({
123
+ message: message ?? '',
124
+ type: 'error',
125
+ duration: message ? (options.duration ?? typeDurations.error) : 1,
126
+ ...options,
127
+ }),
296
128
 
297
- /**
298
- * Show a notification with a custom duration
299
- * @param message The notification message
300
- * @param duration Duration in milliseconds before auto-dismissing (0 for no auto-dismiss)
301
- * @param options Additional notification options
302
- */
303
129
  customDuration: (
304
130
  message: string,
305
131
  duration: number,
306
132
  options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},
307
- ): string => {
308
- return NotificationService.getInstance().customDuration(message, duration, options)
309
- },
133
+ ): string => show({ message, duration, ...options }),
310
134
 
311
- /**
312
- * Show a persistent notification that won't auto-dismiss
313
- */
314
- persistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string => {
315
- return NotificationService.getInstance().persistent(message, options)
316
- },
135
+ persistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string =>
136
+ show({ message, duration: 0, ...options }),
317
137
 
318
- /**
319
- * Dismiss a notification
320
- * @param id Optional notification ID. If not provided, dismisses the most recent notification (queue-like behavior)
321
- */
322
138
  dismiss: (id?: string): void => {
323
- return NotificationService.getInstance().dismiss(id)
139
+ const targetId = id ? (notificationStack.splice(notificationStack.indexOf(id), 1)[0]) : notificationStack.pop()
140
+ if (targetId && currentNotification?.id === targetId) currentNotification.close()
324
141
  },
325
142
 
326
- /**
327
- * Update a notification's content
328
- */
329
143
  update: (id: string, options: Partial<NotificationOptions>): void => {
330
- return NotificationService.getInstance().update(id, options)
144
+ if (currentNotification?.id !== id) return
145
+ if (options.title !== undefined) currentNotification.title = options.title
146
+ if (options.message !== undefined) currentNotification.message = options.message
147
+ if (options.type !== undefined) currentNotification.type = options.type
331
148
  },
332
149
  }
150
+
@@ -5,112 +5,155 @@
5
5
  .notification {
6
6
  position: relative;
7
7
  display: flex;
8
- align-items: flex-start;
9
- gap: 10px;
10
- padding: 12px;
11
- padding-right: 32px;
12
- background: var(--schmancy-sys-color-surface-container);
13
- border-radius: var(--schmancy-sys-shape-corner-extraLarge, 16px);
14
- color: var(--schmancy-sys-color-surface-on);
15
- max-width: 320px;
8
+ align-items: stretch;
9
+ max-width: 360px;
16
10
  overflow: hidden;
17
11
 
18
- /* Type-colored luminous glow */
12
+ /* Asymmetric radius: 4px left, 14px right */
13
+ border-radius: 4px 14px 14px 4px;
14
+ outline: 1px solid color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 50%, transparent);
15
+
16
+ background: linear-gradient(
17
+ 180deg,
18
+ color-mix(in srgb, var(--schmancy-sys-color-surface-container) 100%, transparent),
19
+ color-mix(in srgb, var(--schmancy-sys-color-surface-containerHigh) 100%, transparent)
20
+ );
21
+
22
+ color: var(--schmancy-sys-color-surface-on);
23
+
24
+ /* Type-colored luminous glow — tightened */
19
25
  --notification-glow-color: var(--schmancy-sys-color-primary-default);
20
- box-shadow: 0 4px 24px -6px color-mix(in srgb, var(--notification-glow-color) 18%, transparent);
26
+ box-shadow:
27
+ 0 6px 28px -10px color-mix(in srgb, var(--notification-glow-color) 22%, transparent),
28
+ 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);
21
29
 
22
30
  transition:
23
31
  box-shadow 300ms ease,
24
32
  transform 300ms cubic-bezier(0.34, 1.56, 0.64, 1);
25
33
 
26
- &.info { --notification-glow-color: var(--schmancy-sys-color-primary-default); }
27
- &.success { --notification-glow-color: var(--schmancy-sys-color-success-default); }
28
- &.warning { --notification-glow-color: var(--schmancy-sys-color-warning-default); }
29
- &.error { --notification-glow-color: var(--schmancy-sys-color-error-default); }
34
+ &.info {
35
+ --notification-glow-color: var(--schmancy-sys-color-primary-default);
36
+ --notification-accent: var(--schmancy-sys-color-primary-default);
37
+ }
38
+ &.success {
39
+ --notification-glow-color: var(--schmancy-sys-color-success-default);
40
+ --notification-accent: var(--schmancy-sys-color-success-default);
41
+ }
42
+ &.warning {
43
+ --notification-glow-color: var(--schmancy-sys-color-tertiary-default);
44
+ --notification-accent: var(--schmancy-sys-color-tertiary-default);
45
+ }
46
+ &.error {
47
+ --notification-glow-color: var(--schmancy-sys-color-error-default);
48
+ --notification-accent: var(--schmancy-sys-color-error-default);
49
+ }
30
50
 
31
51
  &.hovered {
32
- box-shadow: 0 8px 32px -4px color-mix(in srgb, var(--notification-glow-color) 28%, transparent);
52
+ box-shadow:
53
+ 0 10px 36px -8px color-mix(in srgb, var(--notification-glow-color) 34%, transparent),
54
+ 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);
33
55
  transform: translateY(-2px);
56
+
57
+ .accent-rail {
58
+ width: 4px;
59
+ }
34
60
  }
35
61
 
36
62
  @media (prefers-reduced-motion: reduce) {
37
63
  transition: box-shadow 200ms ease;
38
- &.hovered { transform: none; }
64
+
65
+ &.hovered {
66
+ transform: none;
67
+ }
39
68
  }
40
69
  }
41
70
 
42
- .emoji {
43
- font-size: 20px;
44
- line-height: 1;
71
+ /* Vertical accent rail — left edge */
72
+ .accent-rail {
45
73
  flex-shrink: 0;
46
- margin-top: 1px;
74
+ width: 3px;
75
+ background: var(--notification-accent, var(--schmancy-sys-color-primary-default));
76
+ border-radius: 4px 0 0 4px;
77
+ transition: width 200ms ease;
78
+ align-self: stretch;
47
79
  }
48
80
 
81
+ /* Card body */
49
82
  .content {
50
83
  flex: 1;
51
84
  min-width: 0;
85
+ padding: 14px 36px 14px 18px;
52
86
  }
53
87
 
88
+ /* Monospace uppercase type tag */
89
+ .type-tag {
90
+ display: block;
91
+ font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
92
+ font-size: 10px;
93
+ letter-spacing: 0.14em;
94
+ text-transform: uppercase;
95
+ opacity: 0.7;
96
+ color: var(--notification-accent, var(--schmancy-sys-color-primary-default));
97
+ margin-bottom: 4px;
98
+ line-height: 1;
99
+ }
100
+
101
+ /* Serif display title */
54
102
  .title {
103
+ font-family: ui-serif, Georgia, Cambria, 'Times New Roman', serif;
55
104
  font-weight: 500;
56
- font-size: 13px;
57
- line-height: 1.4;
58
- margin-bottom: 2px;
59
- letter-spacing: 0.01em;
60
-
61
- .info & {
62
- color: var(--schmancy-sys-color-primary-default);
63
- }
64
- .success & {
65
- color: var(--schmancy-sys-color-success-default);
66
- }
67
- .warning & {
68
- color: var(--schmancy-sys-color-tertiary-default);
69
- }
70
- .error & {
71
- color: var(--schmancy-sys-color-error-default);
72
- }
105
+ font-size: 15px;
106
+ line-height: 1.3;
107
+ margin-bottom: 3px;
108
+ color: var(--schmancy-sys-color-surface-on);
73
109
  }
74
110
 
111
+ /* Body message */
75
112
  .message {
113
+ font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
76
114
  font-size: 13px;
77
- line-height: 1.4;
78
- opacity: 0.75;
79
- letter-spacing: 0.01em;
115
+ line-height: 1.45;
116
+ opacity: 0.72;
80
117
  }
81
118
 
119
+ /* Close button — 28×28 hit target, × glyph */
82
120
  .close {
83
121
  position: absolute;
84
- top: 8px;
122
+ top: 6px;
85
123
  right: 6px;
124
+ width: 28px;
125
+ height: 28px;
126
+ display: flex;
127
+ align-items: center;
128
+ justify-content: center;
86
129
  background: none;
87
130
  border: none;
88
- font-size: 16px;
89
- font-weight: 300;
131
+ font-size: 18px;
132
+ font-weight: 400;
90
133
  color: var(--schmancy-sys-color-surface-onVariant);
91
134
  cursor: pointer;
92
- padding: 4px 6px;
135
+ padding: 0;
93
136
  line-height: 1;
94
137
  opacity: 0.4;
95
- border-radius: var(--schmancy-sys-shape-corner-full, 50%);
138
+ border-radius: 50%;
96
139
  transition: opacity 200ms ease;
97
140
 
98
141
  &:hover {
99
- opacity: 0.8;
142
+ opacity: 0.85;
100
143
  }
101
144
 
102
145
  &:focus-visible {
103
146
  outline: none;
104
147
  opacity: 1;
105
- box-shadow:
106
- 0 0 0 2px var(--schmancy-sys-color-primary-default),
107
- 0 0 8px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 25%, transparent);
148
+ box-shadow: 0 0 0 2px var(--notification-accent, var(--schmancy-sys-color-primary-default));
108
149
  }
109
150
  }
110
151
 
152
+ /* Progress hairline — top edge */
111
153
  .progress {
112
154
  position: absolute;
113
- bottom: 0;
155
+ top: 0;
156
+ bottom: auto;
114
157
  left: 0;
115
158
  right: 0;
116
159
  }