@mhmo91/schmancy 0.10.27 → 0.10.29

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 (318) hide show
  1. package/custom-elements.json +12 -2
  2. package/dist/agent/{overlay.confirm-body-BZoUgkdK.js → overlay.confirm-body-BFYWMa45.js} +1799 -855
  3. package/dist/agent/overlay.confirm-body-BFYWMa45.js.map +1 -0
  4. package/dist/agent/schmancy.agent.js +2677 -3668
  5. package/dist/agent/schmancy.agent.js.map +1 -1
  6. package/dist/agent/schmancy.manifest.json +1 -2
  7. package/dist/{area-C_Yvjmad.js → area-D5wIy4Fn.js} +1 -1
  8. package/dist/{area-C_Yvjmad.js.map → area-D5wIy4Fn.js.map} +1 -1
  9. package/dist/{area-BSVOYQDA.cjs → area-HXuLLQnN.cjs} +1 -1
  10. package/dist/{area-BSVOYQDA.cjs.map → area-HXuLLQnN.cjs.map} +1 -1
  11. package/dist/area.cjs +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-C6I1mfOT.js → autocomplete-DCkkdDON.js} +2 -2
  14. package/dist/{autocomplete-C6I1mfOT.js.map → autocomplete-DCkkdDON.js.map} +1 -1
  15. package/dist/{autocomplete-B50VXUzw.cjs → autocomplete-hj2AQyEF.cjs} +1 -1
  16. package/dist/{autocomplete-B50VXUzw.cjs.map → autocomplete-hj2AQyEF.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/avatar.cjs +1 -1
  20. package/dist/avatar.js +1 -1
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.js +1 -1
  23. package/dist/{boat-DVQBNkk5.cjs → boat-B_5F_rFr.cjs} +1 -1
  24. package/dist/{boat-DVQBNkk5.cjs.map → boat-B_5F_rFr.cjs.map} +1 -1
  25. package/dist/{boat-C94QZ4Zt.js → boat-BfgbRnhA.js} +1 -1
  26. package/dist/{boat-C94QZ4Zt.js.map → boat-BfgbRnhA.js.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--bNb42rM.js → busy-D6tAS-kW.js} +1 -1
  32. package/dist/{busy--bNb42rM.js.map → busy-D6tAS-kW.js.map} +1 -1
  33. package/dist/{busy-DuxFvEkY.cjs → busy-zIt9bTZn.cjs} +1 -1
  34. package/dist/{busy-DuxFvEkY.cjs.map → busy-zIt9bTZn.cjs.map} +1 -1
  35. package/dist/busy.cjs +1 -1
  36. package/dist/busy.js +1 -1
  37. package/dist/{button-DAFZ5A4O.cjs → button-8oMffyiO.cjs} +1 -1
  38. package/dist/{button-DAFZ5A4O.cjs.map → button-8oMffyiO.cjs.map} +1 -1
  39. package/dist/{button-B7b9L_h5.js → button-D7AejvfK.js} +1 -1
  40. package/dist/{button-B7b9L_h5.js.map → button-D7AejvfK.js.map} +1 -1
  41. package/dist/button.cjs +1 -1
  42. package/dist/button.js +2 -2
  43. package/dist/{card-DZPd24Sn.cjs → card-CTucMMgp.cjs} +1 -1
  44. package/dist/{card-DZPd24Sn.cjs.map → card-CTucMMgp.cjs.map} +1 -1
  45. package/dist/{card-ixzxOW-Q.js → card-CUt9fm_4.js} +1 -1
  46. package/dist/{card-ixzxOW-Q.js.map → card-CUt9fm_4.js.map} +1 -1
  47. package/dist/card.cjs +1 -1
  48. package/dist/card.js +1 -1
  49. package/dist/{checkbox-DdGpepTh.js → checkbox-DMmqe2OO.js} +1 -1
  50. package/dist/{checkbox-DdGpepTh.js.map → checkbox-DMmqe2OO.js.map} +1 -1
  51. package/dist/{checkbox-Bi_Fm2mf.cjs → checkbox-DrKsfzC4.cjs} +1 -1
  52. package/dist/{checkbox-Bi_Fm2mf.cjs.map → checkbox-DrKsfzC4.cjs.map} +1 -1
  53. package/dist/checkbox.cjs +1 -1
  54. package/dist/checkbox.js +1 -1
  55. package/dist/{chips-DWQMZErr.cjs → chips-B1yQgLyW.cjs} +1 -1
  56. package/dist/{chips-DWQMZErr.cjs.map → chips-B1yQgLyW.cjs.map} +1 -1
  57. package/dist/{chips-DLTynyVB.js → chips-DRGsqDMA.js} +2 -2
  58. package/dist/{chips-DLTynyVB.js.map → chips-DRGsqDMA.js.map} +1 -1
  59. package/dist/chips.cjs +1 -1
  60. package/dist/chips.js +2 -2
  61. package/dist/connectivity.cjs +1 -1
  62. package/dist/connectivity.js +1 -1
  63. package/dist/content-drawer.cjs +1 -1
  64. package/dist/content-drawer.js +1 -1
  65. package/dist/{date-range-BgGQyxOC.cjs → date-range-BeF0dW1W.cjs} +6 -1
  66. package/dist/date-range-BeF0dW1W.cjs.map +1 -0
  67. package/dist/{date-range-CT6ckjmV.js → date-range-TDF-f0ss.js} +90 -82
  68. package/dist/date-range-TDF-f0ss.js.map +1 -0
  69. package/dist/{date-range-inline-nPWIs-3C.cjs → date-range-inline-BnhQZTK0.cjs} +1 -1
  70. package/dist/{date-range-inline-nPWIs-3C.cjs.map → date-range-inline-BnhQZTK0.cjs.map} +1 -1
  71. package/dist/{date-range-inline-Ho3CENTh.js → date-range-inline-JLsmcle2.js} +1 -1
  72. package/dist/{date-range-inline-Ho3CENTh.js.map → date-range-inline-JLsmcle2.js.map} +1 -1
  73. package/dist/date-range-inline.cjs +1 -1
  74. package/dist/date-range-inline.js +1 -1
  75. package/dist/date-range.cjs +1 -1
  76. package/dist/date-range.js +1 -1
  77. package/dist/delay.cjs +1 -1
  78. package/dist/delay.js +1 -1
  79. package/dist/{details-CcMTvYo7.js → details-ChMhQpcY.js} +1 -1
  80. package/dist/{details-CcMTvYo7.js.map → details-ChMhQpcY.js.map} +1 -1
  81. package/dist/{details-BnRWMZdt.cjs → details-T75tUASO.cjs} +1 -1
  82. package/dist/{details-BnRWMZdt.cjs.map → details-T75tUASO.cjs.map} +1 -1
  83. package/dist/details.cjs +1 -1
  84. package/dist/details.js +1 -1
  85. package/dist/{divider-CZCj0ioH.js → divider-D69bhEUY.js} +1 -1
  86. package/dist/{divider-CZCj0ioH.js.map → divider-D69bhEUY.js.map} +1 -1
  87. package/dist/{divider-C6yJSL1c.cjs → divider-DopO0yKi.cjs} +1 -1
  88. package/dist/{divider-C6yJSL1c.cjs.map → divider-DopO0yKi.cjs.map} +1 -1
  89. package/dist/divider.cjs +1 -1
  90. package/dist/divider.js +1 -1
  91. package/dist/dropdown.cjs +1 -1
  92. package/dist/dropdown.js +1 -1
  93. package/dist/{expand-D4EhwOYh.cjs → expand-C386rVT8.cjs} +1 -1
  94. package/dist/{expand-D4EhwOYh.cjs.map → expand-C386rVT8.cjs.map} +1 -1
  95. package/dist/{expand-Cc6ogXsR.js → expand-KLSx5dea.js} +2 -2
  96. package/dist/{expand-Cc6ogXsR.js.map → expand-KLSx5dea.js.map} +1 -1
  97. package/dist/expand.cjs +1 -1
  98. package/dist/expand.js +1 -1
  99. package/dist/{float-BvI3HTtB.js → float-BoPLNysg.js} +1 -1
  100. package/dist/{float-BvI3HTtB.js.map → float-BoPLNysg.js.map} +1 -1
  101. package/dist/{float-B8EPc_OG.cjs → float-DyaPI0qO.cjs} +1 -1
  102. package/dist/{float-B8EPc_OG.cjs.map → float-DyaPI0qO.cjs.map} +1 -1
  103. package/dist/float.cjs +1 -1
  104. package/dist/float.js +1 -1
  105. package/dist/{form-C4eFgFwF.cjs → form-CGIJlQyP.cjs} +4 -19
  106. package/dist/form-CGIJlQyP.cjs.map +1 -0
  107. package/dist/{form-CGe9rVox.js → form-CYeMWHmy.js} +10 -90
  108. package/dist/form-CYeMWHmy.js.map +1 -0
  109. package/dist/form.cjs +18 -1
  110. package/dist/form.cjs.map +1 -0
  111. package/dist/form.js +93 -9
  112. package/dist/form.js.map +1 -0
  113. package/dist/handover/agent-runtime-followups.md +1 -1
  114. package/dist/handover/agent-runtime-v1.md +3 -3
  115. package/dist/{icon-B1eZr2ZL.js → icons-BUQNMhjw.js} +1 -1
  116. package/dist/{icon-CgIXAvKI.cjs.map → icons-BUQNMhjw.js.map} +1 -1
  117. package/dist/{icon-CgIXAvKI.cjs → icons-CJUA5bfI.cjs} +1 -1
  118. package/dist/icons-CJUA5bfI.cjs.map +1 -0
  119. package/dist/icons.cjs +1 -1
  120. package/dist/icons.js +1 -1
  121. package/dist/{iframe-CmpAZc61.js → iframe-CbL0jCo1.js} +1 -1
  122. package/dist/{iframe-CmpAZc61.js.map → iframe-CbL0jCo1.js.map} +1 -1
  123. package/dist/{iframe-BO3BpRLH.cjs → iframe-pn7MIeH8.cjs} +1 -1
  124. package/dist/{iframe-BO3BpRLH.cjs.map → iframe-pn7MIeH8.cjs.map} +1 -1
  125. package/dist/iframe.cjs +1 -1
  126. package/dist/iframe.js +1 -1
  127. package/dist/index.cjs +1 -1
  128. package/dist/index.js +33 -32
  129. package/dist/{input-_Hft9vov.js → input-C1h5lLiJ.js} +1 -1
  130. package/dist/{input-_Hft9vov.js.map → input-C1h5lLiJ.js.map} +1 -1
  131. package/dist/{input-5YL2oUBr.cjs → input-Cmc0IoUP.cjs} +1 -1
  132. package/dist/{input-5YL2oUBr.cjs.map → input-Cmc0IoUP.cjs.map} +1 -1
  133. package/dist/{input-chip-DKMNpcED.cjs → input-chip-B0X_CodJ.cjs} +1 -1
  134. package/dist/{input-chip-DKMNpcED.cjs.map → input-chip-B0X_CodJ.cjs.map} +1 -1
  135. package/dist/{input-chip-BNTojQT6.js → input-chip-DqAR4nPD.js} +1 -1
  136. package/dist/{input-chip-BNTojQT6.js.map → input-chip-DqAR4nPD.js.map} +1 -1
  137. package/dist/input.cjs +1 -1
  138. package/dist/input.js +1 -1
  139. package/dist/json.cjs +1 -1
  140. package/dist/json.js +2 -2
  141. package/dist/kbd.cjs +1 -1
  142. package/dist/kbd.js +1 -1
  143. package/dist/layout.cjs +1 -1
  144. package/dist/layout.js +1 -1
  145. package/dist/{lightbox-t4dvb8_A.cjs → lightbox-BiNK_plj.cjs} +1 -1
  146. package/dist/{lightbox-t4dvb8_A.cjs.map → lightbox-BiNK_plj.cjs.map} +1 -1
  147. package/dist/{lightbox-CKlYcnHV.js → lightbox-C3zomJ-r.js} +1 -1
  148. package/dist/{lightbox-CKlYcnHV.js.map → lightbox-C3zomJ-r.js.map} +1 -1
  149. package/dist/lightbox.cjs +1 -1
  150. package/dist/lightbox.js +1 -1
  151. package/dist/{list-B6QhxgRJ.js → list-Bbmp1uMa.js} +1 -1
  152. package/dist/{list-B6QhxgRJ.js.map → list-Bbmp1uMa.js.map} +1 -1
  153. package/dist/{list-21mWtDKg.cjs → list-CbM9w9OM.cjs} +1 -1
  154. package/dist/{list-21mWtDKg.cjs.map → list-CbM9w9OM.cjs.map} +1 -1
  155. package/dist/list.cjs +1 -1
  156. package/dist/list.js +1 -1
  157. package/dist/{menu-Cu5G4vcR.cjs → menu-Bfay8vF8.cjs} +2 -2
  158. package/dist/{menu-Cu5G4vcR.cjs.map → menu-Bfay8vF8.cjs.map} +1 -1
  159. package/dist/{menu-CjOgPSOG.js → menu-Ph2hboJd.js} +3 -3
  160. package/dist/{menu-CjOgPSOG.js.map → menu-Ph2hboJd.js.map} +1 -1
  161. package/dist/menu.cjs +1 -1
  162. package/dist/menu.js +1 -1
  163. package/dist/mixins-BfazlmLD.js +627 -0
  164. package/dist/{mixins-8dT5j6CS.js.map → mixins-BfazlmLD.js.map} +1 -1
  165. package/dist/mixins-CxGRIPYQ.cjs +242 -0
  166. package/dist/{mixins-BF3Vj8_c.cjs.map → mixins-CxGRIPYQ.cjs.map} +1 -1
  167. package/dist/mixins.cjs +1 -1
  168. package/dist/mixins.js +1 -1
  169. package/dist/nav-drawer.cjs +1 -1
  170. package/dist/nav-drawer.js +1 -1
  171. package/dist/navigation-bar.cjs +1 -1
  172. package/dist/navigation-bar.js +1 -1
  173. package/dist/navigation-rail.cjs +1 -1
  174. package/dist/navigation-rail.js +1 -1
  175. package/dist/{notification-CcNoBFEJ.cjs → notification-DT_cAi8U.cjs} +1 -1
  176. package/dist/{notification-CcNoBFEJ.cjs.map → notification-DT_cAi8U.cjs.map} +1 -1
  177. package/dist/{notification-CDKBKh63.js → notification-Du5FRbYp.js} +2 -2
  178. package/dist/{notification-CDKBKh63.js.map → notification-Du5FRbYp.js.map} +1 -1
  179. package/dist/notification.cjs +1 -1
  180. package/dist/notification.js +1 -1
  181. package/dist/{option-BWfmDJvm.js → option-B7y4FhOn.js} +1 -1
  182. package/dist/{option-BWfmDJvm.js.map → option-B7y4FhOn.js.map} +1 -1
  183. package/dist/{option-DejeqOad.cjs → option-Cl5Q987d.cjs} +1 -1
  184. package/dist/{option-DejeqOad.cjs.map → option-Cl5Q987d.cjs.map} +1 -1
  185. package/dist/option.cjs +1 -1
  186. package/dist/option.js +1 -1
  187. package/dist/{overlay-D3c_NY18.js → overlay-B79m-KXf.js} +90 -141
  188. package/dist/overlay-B79m-KXf.js.map +1 -0
  189. package/dist/overlay-CRwfhbyi.cjs +43 -0
  190. package/dist/overlay-CRwfhbyi.cjs.map +1 -0
  191. package/dist/overlay.cjs +1 -1
  192. package/dist/{overlay.confirm-body-B_v0ivkn.js → overlay.confirm-body-CW_spktW.js} +7 -19
  193. package/dist/overlay.confirm-body-CW_spktW.js.map +1 -0
  194. package/dist/{overlay.confirm-body-B2ntyquG.cjs → overlay.confirm-body-CxOomuN6.cjs} +3 -12
  195. package/dist/overlay.confirm-body-CxOomuN6.cjs.map +1 -0
  196. package/dist/overlay.js +3 -3
  197. package/dist/{overlay.service-B3FjXCqc.js → overlay.service-DsBb_UwG.js} +31 -27
  198. package/dist/{overlay.service-B3FjXCqc.js.map → overlay.service-DsBb_UwG.js.map} +1 -1
  199. package/dist/overlay.service-fb3KaMiP.cjs +1 -0
  200. package/dist/{overlay.service-BkSeqXIv.cjs.map → overlay.service-fb3KaMiP.cjs.map} +1 -1
  201. package/dist/{progress-CFcmO0wv.js → progress-CMwUEDB1.js} +1 -1
  202. package/dist/{progress-CFcmO0wv.js.map → progress-CMwUEDB1.js.map} +1 -1
  203. package/dist/{progress-6_rb3Ah9.cjs → progress-fnGrmHpm.cjs} +1 -1
  204. package/dist/{progress-6_rb3Ah9.cjs.map → progress-fnGrmHpm.cjs.map} +1 -1
  205. package/dist/progress.cjs +1 -1
  206. package/dist/progress.js +1 -1
  207. package/dist/{radio-group-_WZg8EKM.cjs → radio-group-DQRJGMgS.cjs} +1 -1
  208. package/dist/{radio-group-_WZg8EKM.cjs.map → radio-group-DQRJGMgS.cjs.map} +1 -1
  209. package/dist/{radio-group-Bd8y9QpX.js → radio-group-Zb0fies1.js} +1 -1
  210. package/dist/{radio-group-Bd8y9QpX.js.map → radio-group-Zb0fies1.js.map} +1 -1
  211. package/dist/radio-group.cjs +1 -1
  212. package/dist/radio-group.js +1 -1
  213. package/dist/range.cjs +1 -1
  214. package/dist/range.js +1 -1
  215. package/dist/{select-Czpl1ztD.js → select-BJJKYtEi.js} +1 -1
  216. package/dist/{select-Czpl1ztD.js.map → select-BJJKYtEi.js.map} +1 -1
  217. package/dist/{select-BaioT3yY.cjs → select-C-acFFtV.cjs} +1 -1
  218. package/dist/{select-BaioT3yY.cjs.map → select-C-acFFtV.cjs.map} +1 -1
  219. package/dist/select.cjs +1 -1
  220. package/dist/select.js +1 -1
  221. package/dist/skeleton.cjs +1 -1
  222. package/dist/skeleton.js +1 -1
  223. package/dist/slider.cjs +1 -1
  224. package/dist/slider.js +1 -1
  225. package/dist/{splash-screen-YtTVkJg8.js → splash-screen-CCDpzGg_.js} +1 -1
  226. package/dist/{splash-screen-YtTVkJg8.js.map → splash-screen-CCDpzGg_.js.map} +1 -1
  227. package/dist/{splash-screen-3FtgdVy3.cjs → splash-screen-CGnhHDB_.cjs} +1 -1
  228. package/dist/{splash-screen-3FtgdVy3.cjs.map → splash-screen-CGnhHDB_.cjs.map} +1 -1
  229. package/dist/splash-screen.cjs +1 -1
  230. package/dist/splash-screen.js +1 -1
  231. package/dist/{src-0LIdvAX6.cjs → src-C0MzzF_S.cjs} +1 -1
  232. package/dist/{src-0LIdvAX6.cjs.map → src-C0MzzF_S.cjs.map} +1 -1
  233. package/dist/{src-BJHws7IS.js → src-CUcUMK0M.js} +31 -31
  234. package/dist/{src-BJHws7IS.js.map → src-CUcUMK0M.js.map} +1 -1
  235. package/dist/steps.cjs +1 -1
  236. package/dist/steps.js +1 -1
  237. package/dist/{surface-CVxyQPln.js → surface-CLcc26d2.js} +1 -1
  238. package/dist/{surface-CVxyQPln.js.map → surface-CLcc26d2.js.map} +1 -1
  239. package/dist/{surface-BNvxLEDN.cjs → surface-DPzlMMYX.cjs} +1 -1
  240. package/dist/{surface-BNvxLEDN.cjs.map → surface-DPzlMMYX.cjs.map} +1 -1
  241. package/dist/surface.cjs +1 -1
  242. package/dist/surface.js +1 -1
  243. package/dist/switch.cjs +1 -1
  244. package/dist/switch.js +1 -1
  245. package/dist/table.cjs +1 -1
  246. package/dist/table.js +1 -1
  247. package/dist/{tabs-CnPXvZuZ.js → tabs-BvEal6oS.js} +1 -1
  248. package/dist/{tabs-CnPXvZuZ.js.map → tabs-BvEal6oS.js.map} +1 -1
  249. package/dist/{tabs-DTU7748z.cjs → tabs-DEKOKYrn.cjs} +1 -1
  250. package/dist/{tabs-DTU7748z.cjs.map → tabs-DEKOKYrn.cjs.map} +1 -1
  251. package/dist/tabs.cjs +1 -1
  252. package/dist/tabs.js +1 -1
  253. package/dist/teleport.cjs +1 -1
  254. package/dist/teleport.js +1 -1
  255. package/dist/{textarea-mQPsppmd.js → textarea-CH62STRD.js} +1 -1
  256. package/dist/{textarea-mQPsppmd.js.map → textarea-CH62STRD.js.map} +1 -1
  257. package/dist/{textarea-Bqth6Q8P.cjs → textarea-Cjlsy3y9.cjs} +1 -1
  258. package/dist/{textarea-Bqth6Q8P.cjs.map → textarea-Cjlsy3y9.cjs.map} +1 -1
  259. package/dist/textarea.cjs +1 -1
  260. package/dist/textarea.js +1 -1
  261. package/dist/{theme-D4HGKt7N.cjs → theme-CG3Gpne7.cjs} +1 -1
  262. package/dist/{theme-D4HGKt7N.cjs.map → theme-CG3Gpne7.cjs.map} +1 -1
  263. package/dist/{theme-button-LP-Dgr17.cjs → theme-button-CEc_Kl54.cjs} +1 -1
  264. package/dist/{theme-button-LP-Dgr17.cjs.map → theme-button-CEc_Kl54.cjs.map} +1 -1
  265. package/dist/{theme-button-Jap7G_IH.js → theme-button-oWeOoeSw.js} +1 -1
  266. package/dist/{theme-button-Jap7G_IH.js.map → theme-button-oWeOoeSw.js.map} +1 -1
  267. package/dist/theme-button.cjs +1 -1
  268. package/dist/theme-button.js +1 -1
  269. package/dist/{theme-BJqpv4cG.js → theme-z82BIRuw.js} +1 -1
  270. package/dist/{theme-BJqpv4cG.js.map → theme-z82BIRuw.js.map} +1 -1
  271. package/dist/theme.cjs +1 -1
  272. package/dist/theme.js +2 -2
  273. package/dist/tree.cjs +1 -1
  274. package/dist/tree.js +1 -1
  275. package/dist/{typography-Bc4MmSal.cjs → typography-CjAvaB88.cjs} +1 -1
  276. package/dist/{typography-Bc4MmSal.cjs.map → typography-CjAvaB88.cjs.map} +1 -1
  277. package/dist/{typography-BJMm6b0b.js → typography-DP82e3GJ.js} +1 -1
  278. package/dist/{typography-BJMm6b0b.js.map → typography-DP82e3GJ.js.map} +1 -1
  279. package/dist/typography.cjs +1 -1
  280. package/dist/typography.js +1 -1
  281. package/dist/visually-hidden.cjs +1 -1
  282. package/dist/visually-hidden.js +1 -1
  283. package/dist/{window-DZTjkE24.js → window-BkPXY-8m.js} +1 -1
  284. package/dist/{window-DZTjkE24.js.map → window-BkPXY-8m.js.map} +1 -1
  285. package/dist/{window-CNu_WnsY.cjs → window-aVXgfw__.cjs} +1 -1
  286. package/dist/{window-CNu_WnsY.cjs.map → window-aVXgfw__.cjs.map} +1 -1
  287. package/dist/window.cjs +1 -1
  288. package/dist/window.js +1 -1
  289. package/package.json +1 -1
  290. package/src/form/fields/date-range/date-range-dialog.ts +8 -1
  291. package/src/form/form.ts +5 -1
  292. package/src/menu/menu.ts +4 -1
  293. package/src/overlay/overlay.animations.ts +0 -29
  294. package/src/overlay/overlay.component.ts +30 -38
  295. package/src/overlay/overlay.confirm-body.ts +3 -15
  296. package/src/overlay/overlay.layout.ts +11 -53
  297. package/src/overlay/overlay.stack.test.ts +113 -0
  298. package/src/overlay/overlay.types.ts +17 -11
  299. package/types/src/form/fields/date-range/date-range-dialog.d.ts +1 -0
  300. package/types/src/form/form.d.ts +1 -0
  301. package/types/src/overlay/overlay.confirm-body.d.ts +1 -1
  302. package/types/src/overlay/overlay.layout.d.ts +10 -30
  303. package/types/src/overlay/overlay.stack.test.d.ts +1 -0
  304. package/types/src/overlay/overlay.types.d.ts +17 -11
  305. package/dist/agent/overlay.confirm-body-BZoUgkdK.js.map +0 -1
  306. package/dist/date-range-BgGQyxOC.cjs.map +0 -1
  307. package/dist/date-range-CT6ckjmV.js.map +0 -1
  308. package/dist/form-C4eFgFwF.cjs.map +0 -1
  309. package/dist/form-CGe9rVox.js.map +0 -1
  310. package/dist/icon-B1eZr2ZL.js.map +0 -1
  311. package/dist/mixins-8dT5j6CS.js +0 -627
  312. package/dist/mixins-BF3Vj8_c.cjs +0 -242
  313. package/dist/overlay-D3c_NY18.js.map +0 -1
  314. package/dist/overlay-Dv2utO4C.cjs +0 -43
  315. package/dist/overlay-Dv2utO4C.cjs.map +0 -1
  316. package/dist/overlay.confirm-body-B2ntyquG.cjs.map +0 -1
  317. package/dist/overlay.confirm-body-B_v0ivkn.js.map +0 -1
  318. package/dist/overlay.service-BkSeqXIv.cjs +0 -1
@@ -0,0 +1,113 @@
1
+ // overlay.stack.test.ts — unit tests for the stacked-overlay dismiss guard
2
+ //
3
+ // Exercises the outsideClick$ filter in SchmancyOverlay by driving the element
4
+ // state directly and calling wireCloseTriggers via type-cast. The test spies on
5
+ // close() so it doesn't need to wait for animation promises to settle.
6
+ //
7
+ // Uses the real browser DOM (vitest browser mode) so composedPath and
8
+ // shadow-DOM queries behave identically to production.
9
+
10
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
11
+ import './overlay.component'
12
+ import { clearStack, currentStack, pushEntry, removeEntry } from './overlay.stack'
13
+ import type { OverlayEntry } from './overlay.types'
14
+
15
+ const nextFrame = () => new Promise<void>(r => requestAnimationFrame(() => r()))
16
+
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ type AnyOverlay = any
19
+
20
+ function entryFor(element: HTMLElement, id: string): OverlayEntry {
21
+ return { id, element, layout: 'anchored', modal: false, tier: 'fui-only' }
22
+ }
23
+
24
+ // Patch the @query getter for _surface (read-only) so wireCloseTriggers reads it.
25
+ function patchSurface(overlay: AnyOverlay, surface: HTMLElement): void {
26
+ Object.defineProperty(overlay, '_surface', { get: () => surface, configurable: true })
27
+ }
28
+
29
+ // Stub close() so tests don't wait for animation promises.
30
+ function stubClose(overlay: AnyOverlay): ReturnType<typeof vi.fn> {
31
+ const spy = vi.fn().mockResolvedValue(undefined)
32
+ Object.defineProperty(overlay, 'close', { value: spy, configurable: true })
33
+ return spy
34
+ }
35
+
36
+ describe('overlay stacked-dismiss guard', () => {
37
+ beforeEach(() => clearStack())
38
+ afterEach(() => { clearStack(); vi.restoreAllMocks() })
39
+
40
+ it('single overlay: body click invokes close("backdrop") (baseline)', async () => {
41
+ const overlayA: AnyOverlay = document.createElement('schmancy-overlay')
42
+ document.body.appendChild(overlayA)
43
+ await nextFrame()
44
+
45
+ const fakesurf = document.createElement('div')
46
+ fakesurf.className = 'surface'
47
+ document.body.appendChild(fakesurf)
48
+ patchSurface(overlayA, fakesurf)
49
+
50
+ overlayA.tier = 'fui-only'
51
+ overlayA.dismissable = true
52
+ overlayA.modal = false
53
+
54
+ const closeSpy = stubClose(overlayA)
55
+
56
+ pushEntry(entryFor(overlayA, 'a'))
57
+ expect(currentStack()).toHaveLength(1)
58
+
59
+ overlayA.wireCloseTriggers()
60
+
61
+ // Dispatch on a separate span — not inside the overlay's surface.
62
+ const outside = document.createElement('span')
63
+ document.body.appendChild(outside)
64
+ outside.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true, composed: true, cancelable: true }))
65
+ await nextFrame()
66
+
67
+ expect(closeSpy.mock.calls[0]?.[0]).toBe('backdrop')
68
+
69
+ outside.remove()
70
+ fakesurf.remove()
71
+ overlayA.remove()
72
+ removeEntry('a')
73
+ })
74
+
75
+ it('nested overlay: click inside overlay B does not close overlay A', async () => {
76
+ const overlayA: AnyOverlay = document.createElement('schmancy-overlay')
77
+ const overlayB: AnyOverlay = document.createElement('schmancy-overlay')
78
+ document.body.appendChild(overlayA)
79
+ document.body.appendChild(overlayB)
80
+ await nextFrame()
81
+
82
+ const surfA = document.createElement('div')
83
+ surfA.className = 'surface'
84
+ document.body.appendChild(surfA)
85
+ patchSurface(overlayA, surfA)
86
+
87
+ overlayA.tier = 'fui-only'
88
+ overlayA.dismissable = true
89
+ overlayA.modal = false
90
+
91
+ const closeSpy = stubClose(overlayA)
92
+
93
+ // Register A first, then B on top.
94
+ pushEntry(entryFor(overlayA, 'a'))
95
+ pushEntry(entryFor(overlayB, 'b'))
96
+ expect(currentStack()).toHaveLength(2)
97
+
98
+ overlayA.wireCloseTriggers()
99
+
100
+ // Dispatch a pointerdown on overlayB — its host element IS in composedPath.
101
+ overlayB.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true, composed: true, cancelable: true }))
102
+ await nextFrame()
103
+
104
+ // A must not have been closed.
105
+ expect(closeSpy).not.toHaveBeenCalled()
106
+
107
+ surfA.remove()
108
+ overlayA.remove()
109
+ overlayB.remove()
110
+ removeEntry('a')
111
+ removeEntry('b')
112
+ })
113
+ })
@@ -97,11 +97,11 @@ export interface ShowOptions {
97
97
  * dismisses (same as unsubscribe). */
98
98
  signal?: AbortSignal
99
99
 
100
- /** Rare escape hatch. Defaults: `false` for anchored, `true` for
101
- * centered/sheet. Setting `modal: true` on an anchored overlay forces
102
- * <dialog>.showModal() semantics (focus trap + background inert)
103
- * use for destructive-confirm menus. */
104
- modal?: boolean
100
+ /** Override the resolved layout. When set, short-circuits the resolver
101
+ * and forces this layout. Use when the caller knows the content's nature
102
+ * better than the resolver can e.g. `as: 'sheet'` for an immersive
103
+ * takeover view that doesn't have an anchor. */
104
+ as?: OverlayLayout
105
105
 
106
106
  /** Default `'push'`. Same vocabulary as `area.push()`.
107
107
  * - `'push'` — new history entry; back dismisses, forward re-opens.
@@ -129,14 +129,20 @@ export interface ShowOptions {
129
129
  }
130
130
 
131
131
  /**
132
- * Resolved layout. Pure output of the dispatch engine; callers never pick.
133
- * - `'centered'` — native <dialog>.showModal(), focus-trapped.
132
+ * Resolved layout. Two values:
134
133
  * - `'anchored'` — popover="auto" + CSS Anchor Positioning / Floating UI,
135
- * non-modal, background stays interactive.
136
- * - `'sheet'` — native <dialog>.showModal() as a bottom sheet,
137
- * swipe-to-dismiss, safe-area aware.
134
+ * non-modal, background stays interactive. Used when the
135
+ * caller passes an anchor (the novel default for menus,
136
+ * popovers, dropdowns).
137
+ * - `'sheet'` — bottom sheet (mobile) or modal panel (desktop) with
138
+ * swipe-to-dismiss, safe-area aware. The default for every
139
+ * non-anchored overlay — confirm/prompt, immersive content
140
+ * views, legal pages, takeovers.
141
+ *
142
+ * Callers can force a layout with `ShowOptions.as` — useful for an anchored
143
+ * trigger whose content should still render as a sheet, or vice versa.
138
144
  */
139
- export type OverlayLayout = 'centered' | 'anchored' | 'sheet'
145
+ export type OverlayLayout = 'anchored' | 'sheet'
140
146
 
141
147
  /**
142
148
  * Positioning tier an anchored overlay is using.
@@ -13,6 +13,7 @@ import { PresetCategory } from './date-range-presets';
13
13
  * @element schmancy-date-range-dialog
14
14
  */
15
15
  export declare class SchmancyDateRangeDialog extends SchmancyElement {
16
+ static styles: import("lit").CSSResult[];
16
17
  type: 'date' | 'datetime-local';
17
18
  dateFrom: {
18
19
  label: string;
@@ -33,6 +33,7 @@ export type SchmancyFormSubmitDetail<T = Record<string, FormDataEntryValue>> = {
33
33
  until(p: Promise<unknown>): void;
34
34
  };
35
35
  export default class SchmancyForm<TSchema extends ParseSchema | undefined = undefined> extends SchmancyElement {
36
+ static styles: import("lit").CSSResult;
36
37
  static readonly tagName: string;
37
38
  /**
38
39
  * Optional schema for parsing FormData on submit. Anything with a
@@ -1,6 +1,6 @@
1
1
  import { SchmancyElement } from '@mixins/index';
2
2
  import { type TemplateResult } from 'lit';
3
- import '../icons/icon';
3
+ import '../form/form';
4
4
  import '../form/fields/input/input';
5
5
  import '../typography/typography';
6
6
  import '../button/button';
@@ -7,45 +7,25 @@ import type { Anchor, OverlayLayout, VirtualAnchor } from './overlay.types';
7
7
  * as named-constant diffs, not hidden in inline literals (state skill:
8
8
  * "thresholds ARE the policy").
9
9
  */
10
- /** Below this viewport width, every overlay becomes a bottom sheet. */
11
- export declare const NARROW_VIEWPORT_PX = 640;
12
- /** Content taller than this fraction of viewport height → sheet. */
13
- export declare const TALL_CONTENT_FRACTION = 0.8;
14
- /** Content wider than this fraction of viewport width → sheet. */
15
- export declare const WIDE_CONTENT_FRACTION = 0.9;
16
10
  /** Floating UI / CSS anchor-positioning safety padding. */
17
11
  export declare const ANCHOR_FIT_PADDING_PX = 16;
18
12
  export interface LayoutInputs {
19
13
  anchor?: Anchor;
20
- content: {
21
- width: number;
22
- height: number;
23
- };
24
- viewport: {
25
- width: number;
26
- height: number;
27
- /** `matchMedia('(pointer: coarse)').matches` at call time. */
28
- isCoarsePointer: boolean;
29
- };
30
14
  }
31
15
  /**
32
- * Priority order:
33
- * 1. viewport / content forces sheet
34
- * 2. anchor provided → anchored (the novel default)
35
- * 3. fallback → centered
16
+ * Two outcomes, one signal: anchor presence.
36
17
  *
37
- * Floating UI's `flip` + `shift` + `size` middleware handles "anchor
38
- * doesn't fit initially" it returns a fitting position rather than
39
- * rejecting. So step 2 does NOT branch on "does the anchor fit?";
40
- * Floating UI's output IS the answer. If content is genuinely too
41
- * large for any anchored position, step 1 already routed to sheet.
18
+ * - anchor provided anchored (popover/menu/dropdown next to a trigger)
19
+ * - no anchor → sheet (everything else: dialogs, takeovers, content panels)
20
+ *
21
+ * Callers who want to force a specific layout regardless of anchor pass
22
+ * `ShowOptions.as` the resolver is bypassed entirely in that case.
23
+ *
24
+ * Floating UI's `flip` + `shift` + `size` middleware handles "anchor doesn't
25
+ * fit initially" — it returns a fitting position rather than rejecting. So
26
+ * anchored layouts don't need a fallback; Floating UI's output IS the answer.
42
27
  */
43
28
  export declare function resolveLayout(inputs: LayoutInputs): OverlayLayout;
44
- /**
45
- * Read the current viewport + pointer inputs. Separated so tests can
46
- * substitute synthetic inputs and the `resolveLayout` fn stays pure.
47
- */
48
- export declare function readViewport(): LayoutInputs['viewport'];
49
29
  /**
50
30
  * Resolved reference the positioning strategies consume.
51
31
  *
@@ -0,0 +1 @@
1
+ import './overlay.component';
@@ -71,11 +71,11 @@ export interface ShowOptions {
71
71
  * addEventListener, getUserMedia, etc. When signal aborts, overlay
72
72
  * dismisses (same as unsubscribe). */
73
73
  signal?: AbortSignal;
74
- /** Rare escape hatch. Defaults: `false` for anchored, `true` for
75
- * centered/sheet. Setting `modal: true` on an anchored overlay forces
76
- * <dialog>.showModal() semantics (focus trap + background inert)
77
- * use for destructive-confirm menus. */
78
- modal?: boolean;
74
+ /** Override the resolved layout. When set, short-circuits the resolver
75
+ * and forces this layout. Use when the caller knows the content's nature
76
+ * better than the resolver can e.g. `as: 'sheet'` for an immersive
77
+ * takeover view that doesn't have an anchor. */
78
+ as?: OverlayLayout;
79
79
  /** Default `'push'`. Same vocabulary as `area.push()`.
80
80
  * - `'push'` — new history entry; back dismisses, forward re-opens.
81
81
  * - `'replace'` — replace current entry; back skips the overlay.
@@ -98,14 +98,20 @@ export interface ShowOptions {
98
98
  track?: boolean;
99
99
  }
100
100
  /**
101
- * Resolved layout. Pure output of the dispatch engine; callers never pick.
102
- * - `'centered'` — native <dialog>.showModal(), focus-trapped.
101
+ * Resolved layout. Two values:
103
102
  * - `'anchored'` — popover="auto" + CSS Anchor Positioning / Floating UI,
104
- * non-modal, background stays interactive.
105
- * - `'sheet'` — native <dialog>.showModal() as a bottom sheet,
106
- * swipe-to-dismiss, safe-area aware.
103
+ * non-modal, background stays interactive. Used when the
104
+ * caller passes an anchor (the novel default for menus,
105
+ * popovers, dropdowns).
106
+ * - `'sheet'` — bottom sheet (mobile) or modal panel (desktop) with
107
+ * swipe-to-dismiss, safe-area aware. The default for every
108
+ * non-anchored overlay — confirm/prompt, immersive content
109
+ * views, legal pages, takeovers.
110
+ *
111
+ * Callers can force a layout with `ShowOptions.as` — useful for an anchored
112
+ * trigger whose content should still render as a sheet, or vice versa.
107
113
  */
108
- export type OverlayLayout = 'centered' | 'anchored' | 'sheet';
114
+ export type OverlayLayout = 'anchored' | 'sheet';
109
115
  /**
110
116
  * Positioning tier an anchored overlay is using.
111
117
  * - `'css-anchor'` — Tier 1: Popover API + CSS Anchor Positioning (Chromium).