@mhmo91/schmancy 0.10.36 → 0.10.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/custom-elements.json +54 -31
  2. package/dist/SchmancyElement-BNnyBOwk.js +286 -0
  3. package/dist/{SchmancyElement-C3CpdNsi.js.map → SchmancyElement-BNnyBOwk.js.map} +1 -1
  4. package/dist/SchmancyElement-C41uPa6l.cjs +2 -0
  5. package/dist/{SchmancyElement-BBzRWB1w.cjs.map → SchmancyElement-C41uPa6l.cjs.map} +1 -1
  6. package/dist/agent/schmancy.agent.js +2432 -2361
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +4 -22
  9. package/dist/area-2FrTZI_T.cjs +21 -0
  10. package/dist/area-2FrTZI_T.cjs.map +1 -0
  11. package/dist/{area-BA96mwFY.js → area-KVDzhT4s.js} +4 -4
  12. package/dist/area-KVDzhT4s.js.map +1 -0
  13. package/dist/area.cjs +1 -1
  14. package/dist/area.js +2 -2
  15. package/dist/{audio-D52h1jAT.js → audio-D3gnp15Y.js} +1 -1
  16. package/dist/{audio-D52h1jAT.js.map → audio-D3gnp15Y.js.map} +1 -1
  17. package/dist/{audio-B_jT9Xr7.cjs → audio-EaD0Ggfh.cjs} +1 -1
  18. package/dist/{audio-B_jT9Xr7.cjs.map → audio-EaD0Ggfh.cjs.map} +1 -1
  19. package/dist/audio.cjs +1 -1
  20. package/dist/audio.js +2 -2
  21. package/dist/autocomplete-DMmxsvUe.cjs +115 -0
  22. package/dist/autocomplete-DMmxsvUe.cjs.map +1 -0
  23. package/dist/{autocomplete-CI4QJXAN.js → autocomplete-DWiEqlQf.js} +96 -96
  24. package/dist/autocomplete-DWiEqlQf.js.map +1 -0
  25. package/dist/autocomplete.cjs +1 -1
  26. package/dist/autocomplete.js +1 -1
  27. package/dist/avatar.cjs +1 -1
  28. package/dist/avatar.js +3 -3
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +1 -1
  31. package/dist/{boat-_N1x5U_3.js → boat-DmyG7y1V.js} +4 -4
  32. package/dist/{boat-_N1x5U_3.js.map → boat-DmyG7y1V.js.map} +1 -1
  33. package/dist/{boat-I4B1UNMc.cjs → boat-dB1_qLm0.cjs} +1 -1
  34. package/dist/{boat-I4B1UNMc.cjs.map → boat-dB1_qLm0.cjs.map} +1 -1
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/breadcrumb.cjs +3 -3
  38. package/dist/breadcrumb.cjs.map +1 -1
  39. package/dist/breadcrumb.js +4 -4
  40. package/dist/breadcrumb.js.map +1 -1
  41. package/dist/{busy-BIUonyPk.cjs → busy-Cj_PV7oC.cjs} +1 -1
  42. package/dist/{busy-BIUonyPk.cjs.map → busy-Cj_PV7oC.cjs.map} +1 -1
  43. package/dist/{busy-CCB3qKnh.js → busy-enYCTssB.js} +2 -2
  44. package/dist/{busy-CCB3qKnh.js.map → busy-enYCTssB.js.map} +1 -1
  45. package/dist/busy.cjs +1 -1
  46. package/dist/busy.js +1 -1
  47. package/dist/{button-C89bPnHt.js → button-BQSOVnHn.js} +10 -9
  48. package/dist/button-BQSOVnHn.js.map +1 -0
  49. package/dist/button-WRmXlNyw.cjs +62 -0
  50. package/dist/button-WRmXlNyw.cjs.map +1 -0
  51. package/dist/button.cjs +6 -6
  52. package/dist/button.cjs.map +1 -1
  53. package/dist/button.js +17 -16
  54. package/dist/button.js.map +1 -1
  55. package/dist/{card-CFsCgJKZ.js → card-BHTz1GwB.js} +16 -16
  56. package/dist/card-BHTz1GwB.js.map +1 -0
  57. package/dist/{card-BO93_oxQ.cjs → card-ThG_ZaQE.cjs} +3 -3
  58. package/dist/card-ThG_ZaQE.cjs.map +1 -0
  59. package/dist/card.cjs +1 -1
  60. package/dist/card.js +1 -1
  61. package/dist/{checkbox-CFUBUFtW.cjs → checkbox-C4zeib84.cjs} +2 -2
  62. package/dist/{checkbox-CFUBUFtW.cjs.map → checkbox-C4zeib84.cjs.map} +1 -1
  63. package/dist/{checkbox-Bh7q0djq.js → checkbox-Ce0DlAdW.js} +6 -6
  64. package/dist/{checkbox-Bh7q0djq.js.map → checkbox-Ce0DlAdW.js.map} +1 -1
  65. package/dist/checkbox.cjs +1 -1
  66. package/dist/checkbox.js +1 -1
  67. package/dist/{chips-BfzpsyV1.cjs → chips-B1jui8Pe.cjs} +3 -3
  68. package/dist/chips-B1jui8Pe.cjs.map +1 -0
  69. package/dist/{chips-6YaoRmeG.js → chips-DAy6v93f.js} +20 -19
  70. package/dist/chips-DAy6v93f.js.map +1 -0
  71. package/dist/chips.cjs +1 -1
  72. package/dist/chips.js +2 -2
  73. package/dist/connectivity.cjs +1 -1
  74. package/dist/connectivity.js +3 -3
  75. package/dist/content-drawer.cjs +1 -1
  76. package/dist/content-drawer.js +1 -1
  77. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  78. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  79. package/dist/{date-range-N-A249O9.cjs → date-range-BUaPgbTZ.cjs} +2 -2
  80. package/dist/date-range-BUaPgbTZ.cjs.map +1 -0
  81. package/dist/{date-range-CEo_Kjqw.js → date-range-NTpoA1in.js} +4 -4
  82. package/dist/date-range-NTpoA1in.js.map +1 -0
  83. package/dist/{date-range-inline-DFopysWF.cjs → date-range-inline-D0I6k84h.cjs} +1 -1
  84. package/dist/{date-range-inline-DFopysWF.cjs.map → date-range-inline-D0I6k84h.cjs.map} +1 -1
  85. package/dist/{date-range-inline-BwialV9j.js → date-range-inline-DjRdMZ1z.js} +2 -2
  86. package/dist/{date-range-inline-BwialV9j.js.map → date-range-inline-DjRdMZ1z.js.map} +1 -1
  87. package/dist/date-range-inline.cjs +1 -1
  88. package/dist/date-range-inline.js +1 -1
  89. package/dist/date-range.cjs +1 -1
  90. package/dist/date-range.js +1 -1
  91. package/dist/delay.cjs +1 -1
  92. package/dist/delay.js +2 -2
  93. package/dist/{details-GtpfI2hA.js → details-CY49XVfp.js} +43 -35
  94. package/dist/details-CY49XVfp.js.map +1 -0
  95. package/dist/details-DQNj2oaU.cjs +164 -0
  96. package/dist/details-DQNj2oaU.cjs.map +1 -0
  97. package/dist/details.cjs +1 -1
  98. package/dist/details.js +1 -1
  99. package/dist/{directives-CvYGSW_a.cjs → directives-Bb0S1DKZ.cjs} +4 -4
  100. package/dist/directives-Bb0S1DKZ.cjs.map +1 -0
  101. package/dist/{directives-C2dXgpCY.js → directives-Bfm1lkoy.js} +30 -23
  102. package/dist/directives-Bfm1lkoy.js.map +1 -0
  103. package/dist/directives.cjs +1 -1
  104. package/dist/directives.js +2 -2
  105. package/dist/{divider-D0pGX2VB.js → divider-BeyX_C0A.js} +2 -2
  106. package/dist/{divider-D0pGX2VB.js.map → divider-BeyX_C0A.js.map} +1 -1
  107. package/dist/{divider-rNsWCvMi.cjs → divider-Ck2C1sKl.cjs} +1 -1
  108. package/dist/{divider-rNsWCvMi.cjs.map → divider-Ck2C1sKl.cjs.map} +1 -1
  109. package/dist/divider.cjs +1 -1
  110. package/dist/divider.js +1 -1
  111. package/dist/dropdown.cjs +1 -1
  112. package/dist/dropdown.js +2 -2
  113. package/dist/{expand-FcKAzJta.js → expand-BYsSEtp6.js} +53 -53
  114. package/dist/expand-BYsSEtp6.js.map +1 -0
  115. package/dist/expand-CUF163mg.cjs +141 -0
  116. package/dist/expand-CUF163mg.cjs.map +1 -0
  117. package/dist/expand.cjs +1 -1
  118. package/dist/expand.js +1 -1
  119. package/dist/fab.cjs +1 -1
  120. package/dist/fab.js +2 -2
  121. package/dist/{float-CQ1WEp3M.js → float-Cgllk_H9.js} +2 -2
  122. package/dist/{float-CQ1WEp3M.js.map → float-Cgllk_H9.js.map} +1 -1
  123. package/dist/{float-CDjgxWyy.cjs → float-OvqX0nqG.cjs} +1 -1
  124. package/dist/{float-CDjgxWyy.cjs.map → float-OvqX0nqG.cjs.map} +1 -1
  125. package/dist/float.cjs +1 -1
  126. package/dist/float.js +1 -1
  127. package/dist/form-4GKROq2P.cjs +27 -0
  128. package/dist/form-4GKROq2P.cjs.map +1 -0
  129. package/dist/{form-H24puioV.js → form-DxaV_Ose.js} +39 -39
  130. package/dist/form-DxaV_Ose.js.map +1 -0
  131. package/dist/form.cjs +3 -3
  132. package/dist/form.cjs.map +1 -1
  133. package/dist/form.js +34 -34
  134. package/dist/form.js.map +1 -1
  135. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  136. package/dist/gravity-sVK3zGBF.js.map +1 -1
  137. package/dist/handover/agent-runtime-followups.md +1 -1
  138. package/dist/handover/agent-runtime-v1.md +3 -3
  139. package/dist/{icons-DBxfN91B.js → icons-CJ2mXcBi.js} +9 -9
  140. package/dist/icons-CJ2mXcBi.js.map +1 -0
  141. package/dist/icons-sZ-LybA9.cjs +24 -0
  142. package/dist/icons-sZ-LybA9.cjs.map +1 -0
  143. package/dist/icons.cjs +1 -1
  144. package/dist/icons.js +1 -1
  145. package/dist/{iframe-BDVElN8z.js → iframe-DWvN5nGB.js} +11 -11
  146. package/dist/iframe-DWvN5nGB.js.map +1 -0
  147. package/dist/{iframe-CG-z9qev.cjs → iframe-DpCv-QH2.cjs} +7 -7
  148. package/dist/iframe-DpCv-QH2.cjs.map +1 -0
  149. package/dist/iframe.cjs +1 -1
  150. package/dist/iframe.js +1 -1
  151. package/dist/index.cjs +1 -1
  152. package/dist/index.js +37 -37
  153. package/dist/{input-Bt_o4sYo.js → input-BCCHz6tB.js} +7 -7
  154. package/dist/input-BCCHz6tB.js.map +1 -0
  155. package/dist/{input-B14Nn6xD.cjs → input-Z-3N5JMv.cjs} +2 -2
  156. package/dist/input-Z-3N5JMv.cjs.map +1 -0
  157. package/dist/{input-chip-DEqO0DXc.js → input-chip-BOrcKH-H.js} +2 -2
  158. package/dist/{input-chip-DEqO0DXc.js.map → input-chip-BOrcKH-H.js.map} +1 -1
  159. package/dist/{input-chip-ugYu9Fn9.cjs → input-chip-ChAgRCXZ.cjs} +1 -1
  160. package/dist/{input-chip-ugYu9Fn9.cjs.map → input-chip-ChAgRCXZ.cjs.map} +1 -1
  161. package/dist/input.cjs +1 -1
  162. package/dist/input.js +1 -1
  163. package/dist/json.cjs +1 -1
  164. package/dist/json.js +3 -3
  165. package/dist/kbd.cjs +1 -1
  166. package/dist/kbd.js +2 -2
  167. package/dist/{layout-BJ_43VrH.js → layout-CFiG3lNT.js} +1 -1
  168. package/dist/{layout-BJ_43VrH.js.map → layout-CFiG3lNT.js.map} +1 -1
  169. package/dist/{layout-DF9ZaQ-b.cjs → layout-DZ4dpLh9.cjs} +1 -1
  170. package/dist/{layout-DF9ZaQ-b.cjs.map → layout-DZ4dpLh9.cjs.map} +1 -1
  171. package/dist/layout.cjs +1 -1
  172. package/dist/layout.js +2 -2
  173. package/dist/lazy-BaAiIUru.js +19 -0
  174. package/dist/lazy-BaAiIUru.js.map +1 -0
  175. package/dist/lazy-C-7a4FAe.cjs +1 -0
  176. package/dist/lazy-C-7a4FAe.cjs.map +1 -0
  177. package/dist/{lightbox-ZmuoBBFT.js → lightbox-B7Y4Nij_.js} +2 -2
  178. package/dist/lightbox-B7Y4Nij_.js.map +1 -0
  179. package/dist/{lightbox-B47Zoqv-.cjs → lightbox-Dpwsn8Qr.cjs} +1 -1
  180. package/dist/lightbox-Dpwsn8Qr.cjs.map +1 -0
  181. package/dist/lightbox.cjs +1 -1
  182. package/dist/lightbox.js +1 -1
  183. package/dist/{list-CaSWrlG2.cjs → list-BhM-6dAi.cjs} +1 -1
  184. package/dist/{list-CaSWrlG2.cjs.map → list-BhM-6dAi.cjs.map} +1 -1
  185. package/dist/{list-C47xzld_.js → list-C5WVoIfJ.js} +2 -2
  186. package/dist/{list-C47xzld_.js.map → list-C5WVoIfJ.js.map} +1 -1
  187. package/dist/list.cjs +1 -1
  188. package/dist/list.js +1 -1
  189. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  190. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  191. package/dist/{menu-8RObM6Ie.js → menu-CBAAJoHu.js} +3 -3
  192. package/dist/{menu-8RObM6Ie.js.map → menu-CBAAJoHu.js.map} +1 -1
  193. package/dist/{menu-Jpsy85SX.cjs → menu-DFQjJk3H.cjs} +1 -1
  194. package/dist/{menu-Jpsy85SX.cjs.map → menu-DFQjJk3H.cjs.map} +1 -1
  195. package/dist/menu.cjs +1 -1
  196. package/dist/menu.js +1 -1
  197. package/dist/{mixins-DTzfFVyv.js → mixins-DGBI7YPO.js} +11 -11
  198. package/dist/mixins-DGBI7YPO.js.map +1 -0
  199. package/dist/{mixins-DPdzC9ZH.cjs → mixins-fIpzhVMd.cjs} +1 -1
  200. package/dist/mixins-fIpzhVMd.cjs.map +1 -0
  201. package/dist/mixins.cjs +1 -1
  202. package/dist/mixins.js +2 -2
  203. package/dist/nav-drawer.cjs +1 -1
  204. package/dist/nav-drawer.js +1 -1
  205. package/dist/navigation-bar.cjs +1 -1
  206. package/dist/navigation-bar.js +1 -1
  207. package/dist/navigation-rail.cjs +3 -3
  208. package/dist/navigation-rail.cjs.map +1 -1
  209. package/dist/navigation-rail.js +11 -10
  210. package/dist/navigation-rail.js.map +1 -1
  211. package/dist/notification-B6yDL91t.cjs +24 -0
  212. package/dist/notification-B6yDL91t.cjs.map +1 -0
  213. package/dist/{notification-Ccktcj9H.js → notification-BB9OBRCr.js} +22 -22
  214. package/dist/notification-BB9OBRCr.js.map +1 -0
  215. package/dist/notification.cjs +1 -1
  216. package/dist/notification.js +1 -1
  217. package/dist/{option-CkMxwBqU.js → option-B21ImL0k.js} +2 -2
  218. package/dist/{option-CkMxwBqU.js.map → option-B21ImL0k.js.map} +1 -1
  219. package/dist/{option-0aNiVB3Q.cjs → option-CJQM5I9q.cjs} +1 -1
  220. package/dist/{option-0aNiVB3Q.cjs.map → option-CJQM5I9q.cjs.map} +1 -1
  221. package/dist/option.cjs +1 -1
  222. package/dist/option.js +1 -1
  223. package/dist/{overlay-H3Wt_dgQ.js → overlay-CWsihJ-E.js} +75 -67
  224. package/dist/overlay-CWsihJ-E.js.map +1 -0
  225. package/dist/overlay-DkIX9Ig3.cjs +58 -0
  226. package/dist/overlay-DkIX9Ig3.cjs.map +1 -0
  227. package/dist/overlay.cjs +1 -1
  228. package/dist/{overlay.confirm-body-Dxn_wNm3.js → overlay.confirm-body-CPqqPNks.js} +10 -10
  229. package/dist/overlay.confirm-body-CPqqPNks.js.map +1 -0
  230. package/dist/{overlay.confirm-body-CR9xaqOE.cjs → overlay.confirm-body-DwTfiNlV.cjs} +3 -3
  231. package/dist/overlay.confirm-body-DwTfiNlV.cjs.map +1 -0
  232. package/dist/overlay.js +4 -4
  233. package/dist/overlay.service-DU1nqh6A.cjs +1 -0
  234. package/dist/{overlay.service-DEj3rfRr.cjs.map → overlay.service-DU1nqh6A.cjs.map} +1 -1
  235. package/dist/{overlay.service-C46kOtUi.js → overlay.service-KTgBxjFb.js} +4 -4
  236. package/dist/{overlay.service-C46kOtUi.js.map → overlay.service-KTgBxjFb.js.map} +1 -1
  237. package/dist/{progress-zs18GR6C.cjs → progress-B-Qg44XY.cjs} +1 -1
  238. package/dist/{progress-zs18GR6C.cjs.map → progress-B-Qg44XY.cjs.map} +1 -1
  239. package/dist/{progress-BK7gSq8j.js → progress-CUSS1sNz.js} +2 -2
  240. package/dist/{progress-BK7gSq8j.js.map → progress-CUSS1sNz.js.map} +1 -1
  241. package/dist/progress.cjs +1 -1
  242. package/dist/progress.js +1 -1
  243. package/dist/{radio-group-1HCpzRUB.js → radio-group-AHLvrN8O.js} +7 -7
  244. package/dist/radio-group-AHLvrN8O.js.map +1 -0
  245. package/dist/{radio-group-DbYlyPc-.cjs → radio-group-BEtvCSS1.cjs} +2 -2
  246. package/dist/radio-group-BEtvCSS1.cjs.map +1 -0
  247. package/dist/radio-group.cjs +1 -1
  248. package/dist/radio-group.js +1 -1
  249. package/dist/range.cjs +1 -1
  250. package/dist/range.js +2 -2
  251. package/dist/select-BWpV2iv-.cjs +56 -0
  252. package/dist/select-BWpV2iv-.cjs.map +1 -0
  253. package/dist/{select-CEyhNtZ2.js → select-Cawz88lG.js} +46 -46
  254. package/dist/select-Cawz88lG.js.map +1 -0
  255. package/dist/select.cjs +1 -1
  256. package/dist/select.js +1 -1
  257. package/dist/skeleton.cjs +1 -1
  258. package/dist/skeleton.js +2 -2
  259. package/dist/skills/SKILL.md +17 -11
  260. package/dist/skills/overlay.md +14 -7
  261. package/dist/skills/schmancy/SKILL.md +17 -11
  262. package/dist/skills/schmancy/overlay.md +14 -7
  263. package/dist/skills/schmancy/steps.md +68 -34
  264. package/dist/skills/steps.md +68 -34
  265. package/dist/slider.cjs +1 -1
  266. package/dist/slider.js +2 -2
  267. package/dist/{sound.service-DO4SmUUT.js → sound.service-CK-5zob-.js} +4 -3
  268. package/dist/sound.service-CK-5zob-.js.map +1 -0
  269. package/dist/{sound.service-G_8GV_6L.cjs → sound.service-D2GGaBXc.cjs} +1 -1
  270. package/dist/sound.service-D2GGaBXc.cjs.map +1 -0
  271. package/dist/{splash-screen-B1mM4_xz.js → splash-screen-BUEtjHXC.js} +13 -13
  272. package/dist/splash-screen-BUEtjHXC.js.map +1 -0
  273. package/dist/{splash-screen-cbz4bxjB.cjs → splash-screen-DqPuipox.cjs} +6 -6
  274. package/dist/splash-screen-DqPuipox.cjs.map +1 -0
  275. package/dist/splash-screen.cjs +1 -1
  276. package/dist/splash-screen.js +1 -1
  277. package/dist/{src-tncsWsTY.js → src-CIqAj3Eh.js} +45 -45
  278. package/dist/src-CIqAj3Eh.js.map +1 -0
  279. package/dist/{src-czeiuT1m.cjs → src-CYqBQTyt.cjs} +6 -6
  280. package/dist/src-CYqBQTyt.cjs.map +1 -0
  281. package/dist/{state-Cx0aoL5e.cjs → state-BxDNox-2.cjs} +1 -1
  282. package/dist/{state-Cx0aoL5e.cjs.map → state-BxDNox-2.cjs.map} +1 -1
  283. package/dist/{state-DJDp3N7J.js → state-CnZCDMT0.js} +9 -9
  284. package/dist/{state-DJDp3N7J.js.map → state-CnZCDMT0.js.map} +1 -1
  285. package/dist/state.cjs +1 -1
  286. package/dist/state.js +2 -2
  287. package/dist/steps.cjs +35 -19
  288. package/dist/steps.cjs.map +1 -1
  289. package/dist/steps.js +96 -73
  290. package/dist/steps.js.map +1 -1
  291. package/dist/{surface-CYBl8_a3.js → surface-BMdG3dKQ.js} +2 -2
  292. package/dist/{surface-CYBl8_a3.js.map → surface-BMdG3dKQ.js.map} +1 -1
  293. package/dist/{surface-C3cxTcJD.cjs → surface-CWwYD_z2.cjs} +1 -1
  294. package/dist/{surface-C3cxTcJD.cjs.map → surface-CWwYD_z2.cjs.map} +1 -1
  295. package/dist/surface.cjs +1 -1
  296. package/dist/surface.js +1 -1
  297. package/dist/switch.cjs +4 -4
  298. package/dist/switch.cjs.map +1 -1
  299. package/dist/switch.js +11 -11
  300. package/dist/switch.js.map +1 -1
  301. package/dist/table.cjs +1 -1
  302. package/dist/table.js +2 -2
  303. package/dist/{tabs-DHy93Q3N.js → tabs-CDQYDc6v.js} +2 -2
  304. package/dist/{tabs-DHy93Q3N.js.map → tabs-CDQYDc6v.js.map} +1 -1
  305. package/dist/{tabs-ORQ_Zd43.cjs → tabs-CbD9E1gd.cjs} +1 -1
  306. package/dist/{tabs-ORQ_Zd43.cjs.map → tabs-CbD9E1gd.cjs.map} +1 -1
  307. package/dist/tabs.cjs +1 -1
  308. package/dist/tabs.js +1 -1
  309. package/dist/teleport.cjs +1 -1
  310. package/dist/teleport.js +1 -1
  311. package/dist/textarea-Brgi-vD2.cjs +43 -0
  312. package/dist/textarea-Brgi-vD2.cjs.map +1 -0
  313. package/dist/{textarea-DHIMt-ly.js → textarea-MPyrMi-S.js} +4 -4
  314. package/dist/textarea-MPyrMi-S.js.map +1 -0
  315. package/dist/textarea.cjs +1 -1
  316. package/dist/textarea.js +1 -1
  317. package/dist/{theme-CJpjkqHr.cjs → theme-BMbXoqi0.cjs} +1 -1
  318. package/dist/{theme-CJpjkqHr.cjs.map → theme-BMbXoqi0.cjs.map} +1 -1
  319. package/dist/{theme-CgI9PRco.js → theme-DZu-xmVp.js} +5 -5
  320. package/dist/{theme-CgI9PRco.js.map → theme-DZu-xmVp.js.map} +1 -1
  321. package/dist/{theme-button--FuBkuVr.cjs → theme-button-B0OLb-43.cjs} +1 -1
  322. package/dist/{theme-button--FuBkuVr.cjs.map → theme-button-B0OLb-43.cjs.map} +1 -1
  323. package/dist/{theme-button-D-FXb3oO.js → theme-button-D_qGvEYs.js} +2 -2
  324. package/dist/{theme-button-D-FXb3oO.js.map → theme-button-D_qGvEYs.js.map} +1 -1
  325. package/dist/theme-button.cjs +1 -1
  326. package/dist/theme-button.js +1 -1
  327. package/dist/theme.cjs +1 -1
  328. package/dist/theme.js +3 -3
  329. package/dist/{theme.service-BfTK1Wtl.js → theme.service-7VkM-hVf.js} +15 -11
  330. package/dist/theme.service-7VkM-hVf.js.map +1 -0
  331. package/dist/theme.service-B15FdjOS.cjs +1 -0
  332. package/dist/theme.service-B15FdjOS.cjs.map +1 -0
  333. package/dist/tree.cjs +4 -4
  334. package/dist/tree.cjs.map +1 -1
  335. package/dist/tree.js +8 -8
  336. package/dist/tree.js.map +1 -1
  337. package/dist/{typography-CxA3sx9B.cjs → typography-D4Fo1UGh.cjs} +3 -3
  338. package/dist/{typography-CxA3sx9B.cjs.map → typography-D4Fo1UGh.cjs.map} +1 -1
  339. package/dist/{typography-BEGLfHwz.js → typography-SZhjb_4R.js} +9 -9
  340. package/dist/{typography-BEGLfHwz.js.map → typography-SZhjb_4R.js.map} +1 -1
  341. package/dist/typography.cjs +1 -1
  342. package/dist/typography.js +1 -1
  343. package/dist/visually-hidden.cjs +1 -1
  344. package/dist/visually-hidden.js +2 -2
  345. package/dist/{window-B_n4P9az.js → window-BDVyrBnk.js} +101 -100
  346. package/dist/window-BDVyrBnk.js.map +1 -0
  347. package/dist/window-BbBYjm7R.cjs +59 -0
  348. package/dist/window-BbBYjm7R.cjs.map +1 -0
  349. package/dist/window.cjs +1 -1
  350. package/dist/window.js +1 -1
  351. package/package.json +1 -1
  352. package/skills/schmancy/SKILL.md +17 -11
  353. package/skills/schmancy/overlay.md +14 -7
  354. package/skills/schmancy/steps.md +68 -34
  355. package/src/area/area.component.ts +1 -1
  356. package/src/area/area.service.test.ts +2 -2
  357. package/src/area/area.service.ts +1 -1
  358. package/src/area/lazy.ts +87 -83
  359. package/src/audio/sound.service.ts +3 -3
  360. package/src/breadcrumb/breadcrumb.ts +2 -2
  361. package/src/button/button.ts +11 -11
  362. package/src/button/icon-button.ts +18 -18
  363. package/src/card/card.ts +16 -16
  364. package/src/content-drawer/drawer.ts +6 -6
  365. package/src/details/details.ts +55 -55
  366. package/src/directives/ai-badge.ts +2 -1
  367. package/src/directives/animate-text.ts +2 -1
  368. package/src/directives/art/art.directive.ts +2 -1
  369. package/src/directives/battery.ts +2 -1
  370. package/src/directives/confirm-click.ts +5 -3
  371. package/src/directives/cursor-glow.ts +2 -1
  372. package/src/directives/cycle-text.ts +2 -1
  373. package/src/directives/depth-of-field.ts +2 -1
  374. package/src/directives/drag.ts +4 -2
  375. package/src/directives/fyi.ts +2 -1
  376. package/src/directives/gravity.ts +2 -1
  377. package/src/directives/hummingbird.ts +2 -1
  378. package/src/directives/intersect.ts +3 -2
  379. package/src/directives/liquid.ts +2 -1
  380. package/src/directives/living-border.ts +2 -1
  381. package/src/directives/long-press.ts +2 -1
  382. package/src/directives/magnetic.ts +2 -1
  383. package/src/directives/missed-punch.ts +2 -1
  384. package/src/directives/nebula.ts +6 -5
  385. package/src/directives/overflow-within.ts +2 -1
  386. package/src/directives/reveal.ts +193 -118
  387. package/src/directives/urgent.ts +2 -1
  388. package/src/directives/working-snake.ts +2 -1
  389. package/src/expand/expand-root.component.ts +27 -27
  390. package/src/expand/expand.component.ts +48 -48
  391. package/src/form/fields/autocomplete/autocomplete.ts +154 -154
  392. package/src/form/fields/checkbox/checkbox.ts +4 -4
  393. package/src/form/fields/chips/chips.ts +2 -2
  394. package/src/form/fields/chips/filter-chip.ts +15 -15
  395. package/src/form/fields/date-range/date-range.ts +2 -2
  396. package/src/form/fields/input/input.ts +12 -12
  397. package/src/form/fields/radio-group/radio-button.ts +2 -2
  398. package/src/form/fields/radio-group/radio-group.ts +3 -3
  399. package/src/form/fields/select/select.ts +56 -56
  400. package/src/form/fields/switch/switch.ts +10 -10
  401. package/src/form/fields/textarea/textarea.ts +2 -2
  402. package/src/form/form-summary.ts +33 -33
  403. package/src/form/form.ts +45 -45
  404. package/src/icons/icon.ts +10 -8
  405. package/src/iframe/iframe.ts +11 -11
  406. package/src/lightbox/flip-directive.ts +2 -1
  407. package/src/lightbox/lightbox.directive.ts +2 -1
  408. package/src/nav-drawer/navbar.ts +3 -3
  409. package/src/navigation-rail/navigation-rail.ts +10 -10
  410. package/src/notification/notification.ts +22 -22
  411. package/src/overlay/overlay.component.ts +106 -83
  412. package/src/overlay/overlay.confirm-body.ts +4 -4
  413. package/src/overlay/overlay.service.ts +3 -3
  414. package/src/overlay/overlay.types.ts +4 -2
  415. package/src/splash-screen/splash-screen.ts +11 -11
  416. package/src/state/index.ts +12 -12
  417. package/src/state/schmancy-context.ts +9 -9
  418. package/src/steps/index.ts +1 -1
  419. package/src/steps/schmancy-step.ts +91 -65
  420. package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
  421. package/src/steps/steps.context.ts +5 -4
  422. package/src/steps/steps.test.ts +120 -0
  423. package/src/teleport/teleport.component.ts +2 -2
  424. package/src/theme/theme.service.ts +17 -17
  425. package/src/tree/tree.ts +7 -7
  426. package/src/typography/typography.ts +7 -7
  427. package/src/window/window-manager.ts +20 -20
  428. package/src/window/window.ts +100 -100
  429. package/types/mixins/SchmancyElement.d.ts +3 -2
  430. package/types/mixins/formField.mixin.d.ts +1 -1
  431. package/types/src/area/area.service.d.ts +1 -1
  432. package/types/src/area/lazy.d.ts +0 -6
  433. package/types/src/audio/sound.service.d.ts +1 -2
  434. package/types/src/breadcrumb/breadcrumb.d.ts +1 -1
  435. package/types/src/button/button.d.ts +3 -3
  436. package/types/src/button/icon-button.d.ts +6 -7
  437. package/types/src/card/card.d.ts +5 -5
  438. package/types/src/content-drawer/drawer.d.ts +1 -1
  439. package/types/src/details/details.d.ts +2 -21
  440. package/types/src/directives/ai-badge.d.ts +2 -2
  441. package/types/src/directives/animate-text.d.ts +2 -2
  442. package/types/src/directives/art/art.directive.d.ts +2 -2
  443. package/types/src/directives/battery.d.ts +2 -2
  444. package/types/src/directives/confirm-click.d.ts +2 -2
  445. package/types/src/directives/cursor-glow.d.ts +2 -2
  446. package/types/src/directives/cycle-text.d.ts +2 -2
  447. package/types/src/directives/depth-of-field.d.ts +2 -2
  448. package/types/src/directives/drag.d.ts +4 -4
  449. package/types/src/directives/fyi.d.ts +2 -2
  450. package/types/src/directives/gravity.d.ts +2 -2
  451. package/types/src/directives/hummingbird.d.ts +2 -2
  452. package/types/src/directives/intersect.d.ts +2 -2
  453. package/types/src/directives/liquid.d.ts +2 -2
  454. package/types/src/directives/living-border.d.ts +2 -2
  455. package/types/src/directives/long-press.d.ts +2 -2
  456. package/types/src/directives/magnetic.d.ts +2 -2
  457. package/types/src/directives/missed-punch.d.ts +2 -2
  458. package/types/src/directives/nebula.d.ts +2 -2
  459. package/types/src/directives/overflow-within.d.ts +2 -2
  460. package/types/src/directives/reveal.d.ts +17 -7
  461. package/types/src/directives/urgent.d.ts +2 -2
  462. package/types/src/directives/working-snake.d.ts +2 -2
  463. package/types/src/expand/expand-root.component.d.ts +8 -8
  464. package/types/src/expand/expand.component.d.ts +11 -11
  465. package/types/src/form/fields/autocomplete/autocomplete.d.ts +29 -29
  466. package/types/src/form/fields/checkbox/checkbox.d.ts +1 -1
  467. package/types/src/form/fields/chips/chips.d.ts +1 -1
  468. package/types/src/form/fields/chips/filter-chip.d.ts +1 -2
  469. package/types/src/form/fields/input/input.d.ts +3 -3
  470. package/types/src/form/fields/radio-group/radio-button.d.ts +1 -1
  471. package/types/src/form/fields/radio-group/radio-group.d.ts +1 -1
  472. package/types/src/form/fields/select/select.d.ts +8 -8
  473. package/types/src/form/fields/switch/switch.d.ts +3 -3
  474. package/types/src/form/fields/textarea/textarea.d.ts +1 -1
  475. package/types/src/form/form-summary.d.ts +7 -7
  476. package/types/src/form/form.d.ts +11 -11
  477. package/types/src/icons/icon.d.ts +2 -2
  478. package/types/src/iframe/iframe.d.ts +3 -3
  479. package/types/src/lightbox/flip-directive.d.ts +2 -2
  480. package/types/src/lightbox/lightbox.directive.d.ts +2 -2
  481. package/types/src/nav-drawer/navbar.d.ts +1 -1
  482. package/types/src/navigation-rail/navigation-rail.d.ts +2 -2
  483. package/types/src/notification/notification.d.ts +8 -8
  484. package/types/src/overlay/overlay.component.d.ts +16 -16
  485. package/types/src/overlay/overlay.confirm-body.d.ts +1 -1
  486. package/types/src/overlay/overlay.types.d.ts +4 -2
  487. package/types/src/splash-screen/splash-screen.d.ts +2 -2
  488. package/types/src/state/index.d.ts +1 -1
  489. package/types/src/state/schmancy-context.d.ts +3 -3
  490. package/types/src/steps/index.d.ts +1 -1
  491. package/types/src/steps/schmancy-step.d.ts +8 -23
  492. package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
  493. package/types/src/steps/steps.context.d.ts +2 -1
  494. package/types/src/steps/steps.test.d.ts +2 -0
  495. package/types/src/teleport/teleport.component.d.ts +1 -1
  496. package/types/src/theme/theme.service.d.ts +1 -4
  497. package/types/src/tree/tree.d.ts +3 -3
  498. package/types/src/typography/typography.d.ts +1 -1
  499. package/types/src/window/window-manager.d.ts +2 -2
  500. package/types/src/window/window.d.ts +20 -20
  501. package/dist/SchmancyElement-BBzRWB1w.cjs +0 -2
  502. package/dist/SchmancyElement-C3CpdNsi.js +0 -284
  503. package/dist/area-BA96mwFY.js.map +0 -1
  504. package/dist/area-DtyQDdOF.cjs +0 -21
  505. package/dist/area-DtyQDdOF.cjs.map +0 -1
  506. package/dist/autocomplete-Bts5Jwwr.cjs +0 -115
  507. package/dist/autocomplete-Bts5Jwwr.cjs.map +0 -1
  508. package/dist/autocomplete-CI4QJXAN.js.map +0 -1
  509. package/dist/button-C89bPnHt.js.map +0 -1
  510. package/dist/button-CkwQH-g3.cjs +0 -62
  511. package/dist/button-CkwQH-g3.cjs.map +0 -1
  512. package/dist/card-BO93_oxQ.cjs.map +0 -1
  513. package/dist/card-CFsCgJKZ.js.map +0 -1
  514. package/dist/chips-6YaoRmeG.js.map +0 -1
  515. package/dist/chips-BfzpsyV1.cjs.map +0 -1
  516. package/dist/date-range-CEo_Kjqw.js.map +0 -1
  517. package/dist/date-range-N-A249O9.cjs.map +0 -1
  518. package/dist/details-BLRPV8sY.cjs +0 -164
  519. package/dist/details-BLRPV8sY.cjs.map +0 -1
  520. package/dist/details-GtpfI2hA.js.map +0 -1
  521. package/dist/directives-C2dXgpCY.js.map +0 -1
  522. package/dist/directives-CvYGSW_a.cjs.map +0 -1
  523. package/dist/expand-FcKAzJta.js.map +0 -1
  524. package/dist/expand-tffQHGbZ.cjs +0 -141
  525. package/dist/expand-tffQHGbZ.cjs.map +0 -1
  526. package/dist/form-H24puioV.js.map +0 -1
  527. package/dist/form-VYhbbir3.cjs +0 -27
  528. package/dist/form-VYhbbir3.cjs.map +0 -1
  529. package/dist/icons-B_a1HStW.cjs +0 -24
  530. package/dist/icons-B_a1HStW.cjs.map +0 -1
  531. package/dist/icons-DBxfN91B.js.map +0 -1
  532. package/dist/iframe-BDVElN8z.js.map +0 -1
  533. package/dist/iframe-CG-z9qev.cjs.map +0 -1
  534. package/dist/input-B14Nn6xD.cjs.map +0 -1
  535. package/dist/input-Bt_o4sYo.js.map +0 -1
  536. package/dist/lazy-CayEFyC3.cjs +0 -1
  537. package/dist/lazy-CayEFyC3.cjs.map +0 -1
  538. package/dist/lazy-D-bO2r4m.js +0 -13
  539. package/dist/lazy-D-bO2r4m.js.map +0 -1
  540. package/dist/lightbox-B47Zoqv-.cjs.map +0 -1
  541. package/dist/lightbox-ZmuoBBFT.js.map +0 -1
  542. package/dist/mixins-DPdzC9ZH.cjs.map +0 -1
  543. package/dist/mixins-DTzfFVyv.js.map +0 -1
  544. package/dist/notification-Ccktcj9H.js.map +0 -1
  545. package/dist/notification-DSkB-sn0.cjs +0 -24
  546. package/dist/notification-DSkB-sn0.cjs.map +0 -1
  547. package/dist/overlay-BS-ta-zq.cjs +0 -58
  548. package/dist/overlay-BS-ta-zq.cjs.map +0 -1
  549. package/dist/overlay-H3Wt_dgQ.js.map +0 -1
  550. package/dist/overlay.confirm-body-CR9xaqOE.cjs.map +0 -1
  551. package/dist/overlay.confirm-body-Dxn_wNm3.js.map +0 -1
  552. package/dist/overlay.service-DEj3rfRr.cjs +0 -1
  553. package/dist/radio-group-1HCpzRUB.js.map +0 -1
  554. package/dist/radio-group-DbYlyPc-.cjs.map +0 -1
  555. package/dist/select-B-SSmUDe.cjs +0 -56
  556. package/dist/select-B-SSmUDe.cjs.map +0 -1
  557. package/dist/select-CEyhNtZ2.js.map +0 -1
  558. package/dist/sound.service-DO4SmUUT.js.map +0 -1
  559. package/dist/sound.service-G_8GV_6L.cjs.map +0 -1
  560. package/dist/splash-screen-B1mM4_xz.js.map +0 -1
  561. package/dist/splash-screen-cbz4bxjB.cjs.map +0 -1
  562. package/dist/src-czeiuT1m.cjs.map +0 -1
  563. package/dist/src-tncsWsTY.js.map +0 -1
  564. package/dist/textarea-CEUaDURR.cjs +0 -43
  565. package/dist/textarea-CEUaDURR.cjs.map +0 -1
  566. package/dist/textarea-DHIMt-ly.js.map +0 -1
  567. package/dist/theme.service-BfTK1Wtl.js.map +0 -1
  568. package/dist/theme.service-Dg7LO0Qz.cjs +0 -1
  569. package/dist/theme.service-Dg7LO0Qz.cjs.map +0 -1
  570. package/dist/window-B_n4P9az.js.map +0 -1
  571. package/dist/window-Vl1u1-EG.cjs +0 -59
  572. package/dist/window-Vl1u1-EG.cjs.map +0 -1
@@ -4,6 +4,9 @@
4
4
  * Uses Blackbird spring physics for natural, organic motion.
5
5
  * Element stays in DOM to prevent layout shift.
6
6
  *
7
+ * When fully revealed, no directive-imposed max-height or overflow:hidden
8
+ * is left on the element — it lays out at its natural full height.
9
+ *
7
10
  * Usage:
8
11
  * ```ts
9
12
  * // Basic - uses 'smooth' preset
@@ -12,7 +15,7 @@
12
15
  * // With preset - 'snappy' for quick interactions
13
16
  * html`<div ${reveal(this.isVisible, { preset: 'snappy' })}>Content</div>`
14
17
  *
15
- * // With custom max height
18
+ * // Opt-in scroll cap (explicit maxHeight — keeps overflow:auto, does NOT clip)
16
19
  * html`<div ${reveal(this.items.length > 1, { maxHeight: '200px' })}>Content</div>`
17
20
  *
18
21
  * // Bouncy for playful UI
@@ -28,131 +31,203 @@
28
31
  * @see packages/schmancy/src/utils/animation.ts for Blackbird system
29
32
  */
30
33
 
31
- import { noChange } from 'lit'
32
- import { AsyncDirective, directive } from 'lit/async-directive.js'
33
- import type { ElementPart, PartInfo } from 'lit/directive.js'
34
- import { PartType } from 'lit/directive.js'
34
+ import { noChange } from 'lit';
35
+ import { AsyncDirective, directive } from 'lit/async-directive.js';
36
+ import { type ElementPart, type PartInfo, PartType } from 'lit/directive.js';
37
+ import { fromEvent, Subject } from 'rxjs';
38
+ import { filter, take, takeUntil } from 'rxjs/operators';
35
39
  import {
36
- SPRING_SMOOTH,
37
- SPRING_SNAPPY,
38
- SPRING_BOUNCY,
39
- SPRING_GENTLE,
40
- getEasing,
41
- type AnimationPreset,
42
- } from '../utils/animation'
43
- import { reducedMotion$ } from './reduced-motion'
40
+ type AnimationPreset,
41
+ getEasing,
42
+ SPRING_BOUNCY,
43
+ SPRING_GENTLE,
44
+ SPRING_SMOOTH,
45
+ SPRING_SNAPPY,
46
+ } from '../utils/animation';
47
+ import { reducedMotion$ } from './reduced-motion';
44
48
 
45
- export type RevealPreset = 'smooth' | 'snappy' | 'bouncy' | 'gentle'
49
+ export type RevealPreset = 'smooth' | 'snappy' | 'bouncy' | 'gentle';
46
50
 
47
51
  export interface RevealOptions {
48
- /** Animation preset (default: 'smooth') */
49
- preset?: RevealPreset
50
- /** Max height when revealed (default: '10rem') */
51
- maxHeight?: string
52
- /** Custom duration override in ms (uses preset duration if not specified) */
53
- duration?: number
54
- /** Custom easing override (uses preset easing if not specified) */
55
- easing?: string
52
+ /** Animation preset (default: 'smooth') */
53
+ preset?: RevealPreset;
54
+ /**
55
+ * Explicit scroll cap (opt-in). When set the element is constrained to
56
+ * this height with overflow:auto content scrolls rather than clips.
57
+ * When omitted (the default) the element is fully unconstrained after
58
+ * opening: no max-height, no overflow:hidden left on it.
59
+ */
60
+ maxHeight?: string;
61
+ /** Custom duration override in ms (uses preset duration if not specified) */
62
+ duration?: number;
63
+ /** Custom easing override (uses preset easing if not specified) */
64
+ easing?: string;
56
65
  }
57
66
 
58
67
  const PRESETS: Record<RevealPreset, AnimationPreset> = {
59
- smooth: SPRING_SMOOTH,
60
- snappy: SPRING_SNAPPY,
61
- bouncy: SPRING_BOUNCY,
62
- gentle: SPRING_GENTLE,
63
- }
68
+ smooth: SPRING_SMOOTH,
69
+ snappy: SPRING_SNAPPY,
70
+ bouncy: SPRING_BOUNCY,
71
+ gentle: SPRING_GENTLE,
72
+ };
64
73
 
65
74
  class RevealDirective extends AsyncDirective {
66
- private initialized = false
67
- private element: HTMLElement | null = null
68
-
69
- constructor(partInfo: PartInfo) {
70
- super(partInfo)
71
- if (partInfo.type !== PartType.ELEMENT) {
72
- throw new Error('reveal() can only be used on elements')
73
- }
74
- }
75
-
76
- render(_show?: boolean, _options?: RevealOptions) {
77
- return noChange
78
- }
79
-
80
- override update(part: ElementPart, [show = false, options = {}]: [boolean | undefined, RevealOptions?]) {
81
- const element = part.element as HTMLElement
82
- this.element = element
83
-
84
- const { preset = 'smooth', maxHeight = '10rem', duration, easing } = options
85
-
86
- // Get the preset configuration
87
- const presetConfig = PRESETS[preset]
88
-
89
- // Determine actual duration and easing
90
- const actualDuration = duration ?? presetConfig.duration
91
- const actualEasing = easing ?? getEasing(presetConfig)
92
-
93
- const reducedMotion = reducedMotion$.value
94
-
95
- // Set up transitions on first run or when preset changes
96
- if (!this.initialized) {
97
- this.setupElement(element, actualDuration, actualEasing, reducedMotion)
98
- this.initialized = true
99
- }
100
-
101
- // Apply show/hide styles with spring physics
102
- if (show) {
103
- element.style.maxHeight = maxHeight
104
- element.style.opacity = '1'
105
- element.style.transform = 'translateY(0) scale(1)'
106
- element.style.pointerEvents = ''
107
- element.style.paddingTop = ''
108
- element.style.paddingBottom = ''
109
- element.style.marginTop = ''
110
- element.style.marginBottom = ''
111
- element.removeAttribute('aria-hidden')
112
- element.removeAttribute('inert')
113
- } else {
114
- element.style.maxHeight = '0'
115
- element.style.opacity = '0'
116
- element.style.transform = 'translateY(-8px) scale(0.98)'
117
- element.style.pointerEvents = 'none'
118
- element.style.paddingTop = '0'
119
- element.style.paddingBottom = '0'
120
- element.style.marginTop = '0'
121
- element.style.marginBottom = '0'
122
- element.setAttribute('aria-hidden', 'true')
123
- element.setAttribute('inert', '')
124
- }
125
-
126
- return noChange
127
- }
128
-
129
- private setupElement(element: HTMLElement, duration: number, easing: string, reducedMotion: boolean): void {
130
- element.style.overflow = 'hidden'
131
-
132
- if (reducedMotion) {
133
- // Instant transitions for reduced motion
134
- element.style.transition = 'none'
135
- } else {
136
- // Spring physics transitions — include padding/margin so hidden elements take zero space
137
- element.style.transition = [
138
- `max-height ${duration}ms ${easing}`,
139
- `opacity ${duration}ms ${easing}`,
140
- `transform ${duration}ms ${easing}`,
141
- `padding ${duration}ms ${easing}`,
142
- `margin ${duration}ms ${easing}`,
143
- ].join(', ')
144
- }
145
- }
146
-
147
- override disconnected(): void {
148
- if (this.element) {
149
- this.element.style.willChange = ''
150
- }
151
- }
152
-
153
- override reconnected(): void {
154
- // State preserved in inline styles — no action needed
155
- }
75
+ private initialized = false;
76
+ /** Fires on disconnect to tear down the transitionend subscription. */
77
+ private teardown$ = new Subject<void>();
78
+ /** True if this is the very first update call — used to detect always-true initial mount. */
79
+ private firstUpdate = true;
80
+
81
+ constructor(partInfo: PartInfo) {
82
+ super(partInfo);
83
+ if (partInfo.type !== PartType.ELEMENT) {
84
+ throw new Error('reveal() can only be used on elements');
85
+ }
86
+ }
87
+
88
+ render(show?: boolean, options?: RevealOptions) {
89
+ void show; void options;
90
+ return noChange;
91
+ }
92
+
93
+ override update(
94
+ part: ElementPart,
95
+ [show = false, options = {}]: [boolean | undefined, RevealOptions?],
96
+ ) {
97
+ const element = part.element as HTMLElement;
98
+
99
+ const { preset = 'smooth', maxHeight, duration, easing } = options;
100
+ const explicitCap = maxHeight !== undefined;
101
+
102
+ const presetConfig = PRESETS[preset];
103
+ const actualDuration = duration ?? presetConfig.duration;
104
+ const actualEasing = easing ?? getEasing(presetConfig);
105
+ const reducedMotion = reducedMotion$.value;
106
+
107
+ const isFirstUpdate = this.firstUpdate;
108
+ this.firstUpdate = false;
109
+
110
+ if (!this.initialized) {
111
+ this.initialized = true;
112
+
113
+ if (reducedMotion) {
114
+ element.style.transition = 'none';
115
+ } else {
116
+ element.style.transition = [
117
+ `max-height ${actualDuration}ms ${actualEasing}`,
118
+ `opacity ${actualDuration}ms ${actualEasing}`,
119
+ `transform ${actualDuration}ms ${actualEasing}`,
120
+ `padding ${actualDuration}ms ${actualEasing}`,
121
+ `margin ${actualDuration}ms ${actualEasing}`,
122
+ ].join(', ');
123
+ }
124
+ }
125
+
126
+ if (show) {
127
+ if (isFirstUpdate) {
128
+ // Always-true initial mount: do not impose max-height animation.
129
+ // Apply opacity/transform entrance only (visible immediately for
130
+ // reduced-motion; fades in via the transition for normal motion).
131
+ if (explicitCap) {
132
+ element.style.maxHeight = maxHeight;
133
+ element.style.overflow = 'auto';
134
+ } else {
135
+ element.style.maxHeight = '';
136
+ element.style.overflow = '';
137
+ }
138
+ element.style.opacity = '1';
139
+ element.style.transform = 'translateY(0) scale(1)';
140
+ } else {
141
+ // Toggle case: false→true. Animate from 0 to natural height,
142
+ // then release the clamp so content is fully unconstrained.
143
+ if (reducedMotion) {
144
+ if (explicitCap) {
145
+ element.style.maxHeight = maxHeight;
146
+ element.style.overflow = 'auto';
147
+ } else {
148
+ element.style.maxHeight = '';
149
+ element.style.overflow = '';
150
+ }
151
+ element.style.opacity = '1';
152
+ element.style.transform = 'translateY(0) scale(1)';
153
+ } else {
154
+ // Force a concrete start value so CSS can animate from it.
155
+ element.style.overflow = 'hidden';
156
+ element.style.maxHeight = '0';
157
+ void element.offsetHeight; // force reflow
158
+
159
+ const targetHeight = explicitCap ? maxHeight : `${element.scrollHeight}px`;
160
+ element.style.maxHeight = targetHeight;
161
+ element.style.opacity = '1';
162
+ element.style.transform = 'translateY(0) scale(1)';
163
+
164
+ if (!explicitCap) {
165
+ // Once the open animation settles, release the clamp entirely.
166
+ fromEvent<TransitionEvent>(element, 'transitionend')
167
+ .pipe(
168
+ filter((e) => e.propertyName === 'max-height' && e.target === element),
169
+ take(1),
170
+ takeUntil(this.teardown$),
171
+ )
172
+ .subscribe(() => {
173
+ element.style.maxHeight = '';
174
+ element.style.overflow = '';
175
+ });
176
+ } else {
177
+ fromEvent<TransitionEvent>(element, 'transitionend')
178
+ .pipe(
179
+ filter((e) => e.propertyName === 'max-height' && e.target === element),
180
+ take(1),
181
+ takeUntil(this.teardown$),
182
+ )
183
+ .subscribe(() => {
184
+ element.style.overflow = 'auto';
185
+ });
186
+ }
187
+ }
188
+ }
189
+
190
+ element.style.pointerEvents = '';
191
+ element.style.paddingTop = '';
192
+ element.style.paddingBottom = '';
193
+ element.style.marginTop = '';
194
+ element.style.marginBottom = '';
195
+ element.removeAttribute('aria-hidden');
196
+ element.removeAttribute('inert');
197
+ } else {
198
+ // Collapse: animate to height 0. Re-measure from natural height if
199
+ // the clamp was previously released (max-height is '' or 'none').
200
+ if (element.style.maxHeight === '' || element.style.maxHeight === 'none') {
201
+ element.style.overflow = 'hidden';
202
+ element.style.maxHeight = `${element.scrollHeight}px`;
203
+ void element.offsetHeight; // force reflow so CSS sees the start value
204
+ } else {
205
+ element.style.overflow = 'hidden';
206
+ }
207
+
208
+ element.style.maxHeight = '0';
209
+ element.style.opacity = '0';
210
+ element.style.transform = 'translateY(-8px) scale(0.98)';
211
+ element.style.pointerEvents = 'none';
212
+ element.style.paddingTop = '0';
213
+ element.style.paddingBottom = '0';
214
+ element.style.marginTop = '0';
215
+ element.style.marginBottom = '0';
216
+ element.setAttribute('aria-hidden', 'true');
217
+ element.setAttribute('inert', '');
218
+ }
219
+
220
+ return noChange;
221
+ }
222
+
223
+ override disconnected(): void {
224
+ this.teardown$.next();
225
+ }
226
+
227
+ override reconnected(): void {
228
+ // Re-subscribe is handled on the next update() call via the new subscription
229
+ // created in the show branch. Nothing to wire up here explicitly.
230
+ }
156
231
  }
157
232
 
158
- export const reveal = directive(RevealDirective)
233
+ export const reveal = directive(RevealDirective);
@@ -386,7 +386,8 @@ class UrgentDirective extends AsyncDirective {
386
386
  private state: DirectiveState | null = null
387
387
  private coordinator = UrgentCoordinator.getInstance()
388
388
 
389
- render(_activeOrOptions?: boolean | UrgentOptions, _color?: UrgentColor, _shake?: boolean) {
389
+ render(activeOrOptions?: boolean | UrgentOptions, color?: UrgentColor, shake?: boolean) {
390
+ void activeOrOptions; void color; void shake
390
391
  return noChange
391
392
  }
392
393
 
@@ -65,7 +65,8 @@ const TAIL_RADIUS = 1.5
65
65
  class WorkingSnakeDirective extends AsyncDirective {
66
66
  private state: SnakeState | null = null
67
67
 
68
- render(_options: WorkingSnakeOptions) {
68
+ render(options: WorkingSnakeOptions) {
69
+ void options
69
70
  return noChange
70
71
  }
71
72
 
@@ -51,19 +51,19 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
51
51
  @state() isOpen = false
52
52
  private summaryRect: DOMRect | null = null
53
53
 
54
- private _panelRef = createRef<HTMLElement>()
55
- private _backdropRef = createRef<HTMLDivElement>()
56
- private _btnRef = createRef<HTMLButtonElement>()
57
- private _owner: (Element & { close?: () => void }) | null = null
58
- private _hideIndicator = false
59
- private _backdrop = true
54
+ private panelRef = createRef<HTMLElement>()
55
+ private backdropRef = createRef<HTMLDivElement>()
56
+ private btnRef = createRef<HTMLButtonElement>()
57
+ private owner: (Element & { close?: () => void }) | null = null
58
+ private hideIndicator = false
59
+ private backdrop = true
60
60
 
61
61
  /** Called by schmancy-expand before nodes are moved */
62
62
  prepare(rect: DOMRect, owner: Element, hideIndicator = false, backdrop = true) {
63
63
  this.summaryRect = rect
64
- this._owner = owner as Element & { close?: () => void }
65
- this._hideIndicator = hideIndicator
66
- this._backdrop = backdrop
64
+ this.owner = owner as Element & { close?: () => void }
65
+ this.hideIndicator = hideIndicator
66
+ this.backdrop = backdrop
67
67
  }
68
68
 
69
69
  /** Called by schmancy-expand after nodes are moved in */
@@ -71,7 +71,7 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
71
71
  this.isOpen = true
72
72
  await this.updateComplete
73
73
 
74
- const panel = this._panelRef.value
74
+ const panel = this.panelRef.value
75
75
  if (!panel) return
76
76
 
77
77
  const src = this.summaryRect!
@@ -126,18 +126,18 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
126
126
  })
127
127
 
128
128
  // 5. Animate the mask open — content revealed, not stretched
129
- this._animateOpen(insetTop, insetRight, insetBottom, insetLeft, finalTop)
129
+ this.animateOpen(insetTop, insetRight, insetBottom, insetLeft, finalTop)
130
130
  }
131
131
 
132
132
  /** Animate close, return Promise resolving when done */
133
133
  async triggerClose(targetRect: DOMRect): Promise<void> {
134
- await this._animateClose(targetRect)
134
+ await this.animateClose(targetRect)
135
135
  this.isOpen = false
136
136
  this.summaryRect = null
137
137
  }
138
138
 
139
- private _animateOpen(insetTop: number, insetRight: number, insetBottom: number, insetLeft: number, finalTop: number) {
140
- const panel = this._panelRef.value
139
+ private animateOpen(insetTop: number, insetRight: number, insetBottom: number, insetLeft: number, finalTop: number) {
140
+ const panel = this.panelRef.value
141
141
  if (!panel) return
142
142
 
143
143
  if (reducedMotion$.value) {
@@ -145,7 +145,7 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
145
145
  return
146
146
  }
147
147
 
148
- const backdrop = this._backdropRef.value
148
+ const backdrop = this.backdropRef.value
149
149
  if (backdrop) {
150
150
  backdrop.animate([{ opacity: 0 }, { opacity: 1 }], {
151
151
  duration: SPRING_SMOOTH.duration,
@@ -182,7 +182,7 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
182
182
  return
183
183
  })
184
184
 
185
- const btn = this._btnRef.value
185
+ const btn = this.btnRef.value
186
186
  if (btn) {
187
187
  btn.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(180deg)' }], {
188
188
  duration: SPRING_SMOOTH.duration,
@@ -192,8 +192,8 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
192
192
  }
193
193
  }
194
194
 
195
- private _animateClose(targetRect: DOMRect): Promise<void> {
196
- const panel = this._panelRef.value
195
+ private animateClose(targetRect: DOMRect): Promise<void> {
196
+ const panel = this.panelRef.value
197
197
  if (!panel) return Promise.resolve()
198
198
  if (reducedMotion$.value) return Promise.resolve()
199
199
 
@@ -217,7 +217,7 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
217
217
 
218
218
  const anim = panel.animate(closeKeyframes, { duration: closeDuration, easing: closeEasing, fill: 'forwards' })
219
219
 
220
- const backdrop = this._backdropRef.value
220
+ const backdrop = this.backdropRef.value
221
221
  if (backdrop) {
222
222
  backdrop.animate([{ opacity: 1 }, { opacity: 0 }], {
223
223
  duration: closeDuration,
@@ -226,7 +226,7 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
226
226
  })
227
227
  }
228
228
 
229
- const btn = this._btnRef.value
229
+ const btn = this.btnRef.value
230
230
  if (btn) {
231
231
  btn.animate([{ transform: 'rotate(180deg)' }, { transform: 'rotate(0deg)' }], {
232
232
  duration: closeDuration,
@@ -242,25 +242,25 @@ export class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {
242
242
  if (!this.isOpen) return nothing
243
243
 
244
244
  return html`
245
- ${this._backdrop ? html`
245
+ ${this.backdrop ? html`
246
246
  <div
247
- ${ref(this._backdropRef)}
247
+ ${ref(this.backdropRef)}
248
248
  class="fixed inset-0 z-9998 backdrop-blur-sm backdrop-saturate-150 backdrop-brightness-105 bg-black/[0.07] will-change-[opacity]"
249
- @click=${() => this._owner?.close?.()}
249
+ @click=${() => this.owner?.close?.()}
250
250
  ></div>
251
251
  ` : nothing}
252
252
  <schmancy-surface
253
- ${ref(this._panelRef)}
253
+ ${ref(this.panelRef)}
254
254
  class="portal-panel"
255
255
  type=${this.type}
256
256
  style="overflow-y: auto;"
257
257
  >
258
- ${!this._hideIndicator ? html`
258
+ ${!this.hideIndicator ? html`
259
259
  <button
260
- ${ref(this._btnRef)}
260
+ ${ref(this.btnRef)}
261
261
  class="minimize-btn"
262
262
  aria-label="Minimize"
263
- @click=${() => this._owner?.close?.()}
263
+ @click=${() => this.owner?.close?.()}
264
264
  >
265
265
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true">
266
266
  <path d="M19 9L12 16L5 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>