@mhmo91/schmancy 0.10.3 → 0.10.5

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 (458) hide show
  1. package/README.md +20 -19
  2. package/custom-elements.json +17 -233
  3. package/dist/agent/schmancy.agent.js +5709 -9749
  4. package/dist/agent/schmancy.agent.js.map +1 -1
  5. package/dist/agent/schmancy.manifest.json +7 -224
  6. package/dist/{area-ZupIezvU.cjs → area-CSQdhCBF.cjs} +1 -1
  7. package/dist/{area-ZupIezvU.cjs.map → area-CSQdhCBF.cjs.map} +1 -1
  8. package/dist/{area-DHVANBbr.js → area-D5haQE-J.js} +1 -1
  9. package/dist/{area-DHVANBbr.js.map → area-D5haQE-J.js.map} +1 -1
  10. package/dist/area.cjs +1 -1
  11. package/dist/area.js +1 -1
  12. package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-B_bJXUjm.cjs} +1 -1
  13. package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-B_bJXUjm.cjs.map} +1 -1
  14. package/dist/{autocomplete-pHvsyfbH.js → autocomplete-DtyjZJ1E.js} +2 -2
  15. package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-DtyjZJ1E.js.map} +1 -1
  16. package/dist/autocomplete.cjs +1 -1
  17. package/dist/autocomplete.js +1 -1
  18. package/dist/avatar.cjs +1 -1
  19. package/dist/avatar.js +2 -2
  20. package/dist/badge.cjs +1 -1
  21. package/dist/badge.js +1 -1
  22. package/dist/{boat-IyEtsNI4.cjs → boat-BJLCp-Hv.cjs} +1 -1
  23. package/dist/{boat-IyEtsNI4.cjs.map → boat-BJLCp-Hv.cjs.map} +1 -1
  24. package/dist/{boat-_Yv3M6YM.js → boat-MT8bRT8u.js} +2 -2
  25. package/dist/{boat-_Yv3M6YM.js.map → boat-MT8bRT8u.js.map} +1 -1
  26. package/dist/boat.cjs +1 -1
  27. package/dist/boat.js +1 -1
  28. package/dist/breadcrumb.cjs +1 -1
  29. package/dist/breadcrumb.js +1 -1
  30. package/dist/{busy-Ck2IXJ4r.js → busy-6BqWGryX.js} +1 -1
  31. package/dist/{busy-Ck2IXJ4r.js.map → busy-6BqWGryX.js.map} +1 -1
  32. package/dist/{busy-CjM39APN.cjs → busy-DSF2E-zy.cjs} +1 -1
  33. package/dist/{busy-CjM39APN.cjs.map → busy-DSF2E-zy.cjs.map} +1 -1
  34. package/dist/busy.cjs +1 -1
  35. package/dist/busy.js +1 -1
  36. package/dist/button.cjs +1 -1
  37. package/dist/button.js +3 -3
  38. package/dist/{card-DUWZmMHc.js → card-CvuVha-W.js} +1 -1
  39. package/dist/{card-DUWZmMHc.js.map → card-CvuVha-W.js.map} +1 -1
  40. package/dist/{card-DIxDuuth.cjs → card-DnKnaHzf.cjs} +1 -1
  41. package/dist/{card-DIxDuuth.cjs.map → card-DnKnaHzf.cjs.map} +1 -1
  42. package/dist/card.cjs +1 -1
  43. package/dist/card.js +1 -1
  44. package/dist/charts.cjs +1 -1
  45. package/dist/charts.js +1 -1
  46. package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-D3u8Wm9r.cjs} +1 -1
  47. package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-D3u8Wm9r.cjs.map} +1 -1
  48. package/dist/{checkbox-DPS1mWG-.js → checkbox-QDRsE8cp.js} +1 -1
  49. package/dist/{checkbox-DPS1mWG-.js.map → checkbox-QDRsE8cp.js.map} +1 -1
  50. package/dist/checkbox.cjs +1 -1
  51. package/dist/checkbox.js +1 -1
  52. package/dist/{chips-UoFbwmlG.cjs → chips-CMoQzop1.cjs} +1 -1
  53. package/dist/{chips-UoFbwmlG.cjs.map → chips-CMoQzop1.cjs.map} +1 -1
  54. package/dist/{chips-BnnXQSA-.js → chips-Dy9vx8JS.js} +4 -4
  55. package/dist/{chips-BnnXQSA-.js.map → chips-Dy9vx8JS.js.map} +1 -1
  56. package/dist/chips.cjs +1 -1
  57. package/dist/chips.js +2 -2
  58. package/dist/{code-highlight-CMilN0B8.cjs → code-highlight-Ddp0oZnm.cjs} +1 -1
  59. package/dist/{code-highlight-CMilN0B8.cjs.map → code-highlight-Ddp0oZnm.cjs.map} +1 -1
  60. package/dist/{code-highlight-kFUJ1Eet.js → code-highlight-DtE2-ObF.js} +1 -1
  61. package/dist/{code-highlight-kFUJ1Eet.js.map → code-highlight-DtE2-ObF.js.map} +1 -1
  62. package/dist/code-highlight.cjs +1 -1
  63. package/dist/code-highlight.js +1 -1
  64. package/dist/connectivity.cjs +1 -1
  65. package/dist/connectivity.js +1 -1
  66. package/dist/content-drawer.cjs +1 -1
  67. package/dist/content-drawer.js +1 -1
  68. package/dist/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
  69. package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
  70. package/dist/date-range-B2NuihKA.cjs +131 -0
  71. package/dist/date-range-B2NuihKA.cjs.map +1 -0
  72. package/dist/{date-range-DOstCIg8.js → date-range-Boesjlic.js} +99 -113
  73. package/dist/date-range-Boesjlic.js.map +1 -0
  74. package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-BI6_4Ahl.cjs} +1 -1
  75. package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-BI6_4Ahl.cjs.map} +1 -1
  76. package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-DBuND2pc.js} +1 -1
  77. package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-DBuND2pc.js.map} +1 -1
  78. package/dist/date-range-inline.cjs +1 -1
  79. package/dist/date-range-inline.js +1 -1
  80. package/dist/date-range.cjs +1 -1
  81. package/dist/date-range.js +1 -1
  82. package/dist/delay.cjs +1 -1
  83. package/dist/delay.js +2 -2
  84. package/dist/{details-BJBbZOO6.cjs → details-BRs_z5-k.cjs} +1 -1
  85. package/dist/{details-BJBbZOO6.cjs.map → details-BRs_z5-k.cjs.map} +1 -1
  86. package/dist/{details-DPc5GxPa.js → details-BrGrUTGC.js} +2 -2
  87. package/dist/{details-DPc5GxPa.js.map → details-BrGrUTGC.js.map} +1 -1
  88. package/dist/details.cjs +1 -1
  89. package/dist/details.js +1 -1
  90. package/dist/directives.cjs +1 -1
  91. package/dist/directives.js +2 -2
  92. package/dist/{divider-DPT3XnG5.cjs → divider-BOxQ2T9h.cjs} +1 -1
  93. package/dist/{divider-DPT3XnG5.cjs.map → divider-BOxQ2T9h.cjs.map} +1 -1
  94. package/dist/{divider-BvJsmSPH.js → divider-W3TiDasp.js} +1 -1
  95. package/dist/{divider-BvJsmSPH.js.map → divider-W3TiDasp.js.map} +1 -1
  96. package/dist/divider.cjs +1 -1
  97. package/dist/divider.js +1 -1
  98. package/dist/dropdown.cjs +1 -1
  99. package/dist/dropdown.js +1 -1
  100. package/dist/{expand-CTqBWVXo.cjs → expand-CnccBF91.cjs} +1 -1
  101. package/dist/{expand-CTqBWVXo.cjs.map → expand-CnccBF91.cjs.map} +1 -1
  102. package/dist/{expand-BMzocdtj.js → expand-Pu8fZ0jZ.js} +2 -2
  103. package/dist/{expand-BMzocdtj.js.map → expand-Pu8fZ0jZ.js.map} +1 -1
  104. package/dist/expand.cjs +1 -1
  105. package/dist/expand.js +1 -1
  106. package/dist/{extra-h_cuxRII.cjs → extra-B8IPs6gG.cjs} +1 -1
  107. package/dist/{extra-h_cuxRII.cjs.map → extra-B8IPs6gG.cjs.map} +1 -1
  108. package/dist/{extra-BeHlUhzv.js → extra-DxEWs41z.js} +1 -1
  109. package/dist/{extra-BeHlUhzv.js.map → extra-DxEWs41z.js.map} +1 -1
  110. package/dist/extra.cjs +1 -1
  111. package/dist/extra.js +1 -1
  112. package/dist/{float-CwVBs11k.cjs → float-BRKa-P6Z.cjs} +1 -1
  113. package/dist/{float-CwVBs11k.cjs.map → float-BRKa-P6Z.cjs.map} +1 -1
  114. package/dist/{float-CTc1xxqH.js → float-WCVdp3um.js} +1 -1
  115. package/dist/{float-CTc1xxqH.js.map → float-WCVdp3um.js.map} +1 -1
  116. package/dist/float.cjs +1 -1
  117. package/dist/float.js +1 -1
  118. package/dist/{form-CSJp687X.cjs.map → form-B2qudx_q.cjs.map} +1 -1
  119. package/dist/{form-BtwOBMZ9.js.map → form-CI59gad4.js.map} +1 -1
  120. package/dist/form.cjs +1 -1
  121. package/dist/form.js +1 -1
  122. package/dist/handover/agent-runtime-followups.md +1 -1
  123. package/dist/handover/agent-runtime-v1.md +3 -3
  124. package/dist/{hashContent-1ARKIsx9.js.map → hashContent-a8uVr3xs.js.map} +1 -1
  125. package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-ejkBgDnN.cjs.map} +1 -1
  126. package/dist/{icons-BbCVrcas.js → icons-C0ufCcdp.js} +2 -2
  127. package/dist/{icons-BbCVrcas.js.map → icons-C0ufCcdp.js.map} +1 -1
  128. package/dist/{icons-qEQW4pjM.cjs → icons-DXEbmg-O.cjs} +1 -1
  129. package/dist/{icons-qEQW4pjM.cjs.map → icons-DXEbmg-O.cjs.map} +1 -1
  130. package/dist/icons.cjs +1 -1
  131. package/dist/icons.js +1 -1
  132. package/dist/{iframe-D6HTruav.cjs → iframe-C6RVODkW.cjs} +1 -1
  133. package/dist/{iframe-D6HTruav.cjs.map → iframe-C6RVODkW.cjs.map} +1 -1
  134. package/dist/{iframe-BJfDIEJf.js → iframe-c9lGxw7x.js} +1 -1
  135. package/dist/{iframe-BJfDIEJf.js.map → iframe-c9lGxw7x.js.map} +1 -1
  136. package/dist/iframe.cjs +1 -1
  137. package/dist/iframe.js +1 -1
  138. package/dist/index.cjs +1 -1
  139. package/dist/index.js +72 -76
  140. package/dist/{input-U26axtcs.cjs → input-B4HM-9-H.cjs} +1 -1
  141. package/dist/{input-U26axtcs.cjs.map → input-B4HM-9-H.cjs.map} +1 -1
  142. package/dist/{input-LTK3cctF.js → input-Pmj_bH37.js} +1 -1
  143. package/dist/{input-LTK3cctF.js.map → input-Pmj_bH37.js.map} +1 -1
  144. package/dist/{input-chip-Ch-aCs3c.js → input-chip-BIGgd_7w.js} +1 -1
  145. package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BIGgd_7w.js.map} +1 -1
  146. package/dist/{input-chip-CADXt0X5.cjs → input-chip-BoDisY6c.cjs} +1 -1
  147. package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-BoDisY6c.cjs.map} +1 -1
  148. package/dist/input.cjs +1 -1
  149. package/dist/input.js +1 -1
  150. package/dist/json.cjs +1 -1
  151. package/dist/json.js +2 -2
  152. package/dist/kbd.cjs +1 -1
  153. package/dist/kbd.js +1 -1
  154. package/dist/{layout-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
  155. package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
  156. package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
  157. package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
  158. package/dist/layout.cjs +1 -1
  159. package/dist/layout.js +1 -1
  160. package/dist/{lightbox-DbYUSfVl.cjs → lightbox-DK1vDKm3.cjs} +1 -1
  161. package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-DK1vDKm3.cjs.map} +1 -1
  162. package/dist/{lightbox-DqG2z3Cn.js → lightbox-K1eJTYXP.js} +2 -2
  163. package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-K1eJTYXP.js.map} +1 -1
  164. package/dist/lightbox.cjs +1 -1
  165. package/dist/lightbox.js +1 -1
  166. package/dist/{list-CLX4sSAw.cjs → list-CEuVqAxN.cjs} +1 -1
  167. package/dist/{list-CLX4sSAw.cjs.map → list-CEuVqAxN.cjs.map} +1 -1
  168. package/dist/{list-D6-_E5ZD.js → list-Ds0Nv1y5.js} +1 -1
  169. package/dist/{list-D6-_E5ZD.js.map → list-Ds0Nv1y5.js.map} +1 -1
  170. package/dist/list.cjs +1 -1
  171. package/dist/list.js +1 -1
  172. package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
  173. package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
  174. package/dist/{mailbox-Ct6iYe-4.cjs → mailbox-CDWqbVvZ.cjs} +58 -58
  175. package/dist/mailbox-CDWqbVvZ.cjs.map +1 -0
  176. package/dist/{mailbox-DsPII8HR.js → mailbox-DD2How0H.js} +112 -101
  177. package/dist/mailbox-DD2How0H.js.map +1 -0
  178. package/dist/mailbox.cjs +1 -1
  179. package/dist/mailbox.js +1 -1
  180. package/dist/{map-Dhy3ta9v.js → map-1uwxxvBa.js} +1 -1
  181. package/dist/{map-Dhy3ta9v.js.map → map-1uwxxvBa.js.map} +1 -1
  182. package/dist/{map-WXeVkx2K.cjs → map-BrBSrIqg.cjs} +1 -1
  183. package/dist/{map-WXeVkx2K.cjs.map → map-BrBSrIqg.cjs.map} +1 -1
  184. package/dist/map.cjs +1 -1
  185. package/dist/map.js +1 -1
  186. package/dist/menu-Bly30Nje.cjs +23 -0
  187. package/dist/menu-Bly30Nje.cjs.map +1 -0
  188. package/dist/menu-L8MK1ma5.js +62 -0
  189. package/dist/menu-L8MK1ma5.js.map +1 -0
  190. package/dist/menu.cjs +1 -1
  191. package/dist/menu.js +1 -1
  192. package/dist/mixins-B34UxxCe.js +627 -0
  193. package/dist/{mixins-CcIWET41.js.map → mixins-B34UxxCe.js.map} +1 -1
  194. package/dist/mixins-CAb0b03r.cjs +298 -0
  195. package/dist/{mixins-De3xfjrm.cjs.map → mixins-CAb0b03r.cjs.map} +1 -1
  196. package/dist/mixins.cjs +1 -1
  197. package/dist/mixins.js +1 -1
  198. package/dist/nav-drawer.cjs +1 -1
  199. package/dist/nav-drawer.js +1 -1
  200. package/dist/navigation-bar.cjs +1 -1
  201. package/dist/navigation-bar.js +1 -1
  202. package/dist/navigation-rail.cjs +1 -1
  203. package/dist/navigation-rail.js +1 -1
  204. package/dist/{notification-D_PQjBSf.cjs → notification-7fSbk8hm.cjs} +1 -1
  205. package/dist/{notification-D_PQjBSf.cjs.map → notification-7fSbk8hm.cjs.map} +1 -1
  206. package/dist/{notification-CVLqQ8c_.js → notification-DB25M-qo.js} +2 -2
  207. package/dist/{notification-CVLqQ8c_.js.map → notification-DB25M-qo.js.map} +1 -1
  208. package/dist/notification.cjs +1 -1
  209. package/dist/notification.js +1 -1
  210. package/dist/{option-rm4HebVs.js → option-DDHa25k5.js} +1 -1
  211. package/dist/{option-rm4HebVs.js.map → option-DDHa25k5.js.map} +1 -1
  212. package/dist/{option-DDU_goh1.cjs → option-HF9Xqbuq.cjs} +1 -1
  213. package/dist/{option-DDU_goh1.cjs.map → option-HF9Xqbuq.cjs.map} +1 -1
  214. package/dist/option.cjs +1 -1
  215. package/dist/option.js +1 -1
  216. package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-CCiTaf_C.js.map} +1 -1
  217. package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-CFGiYf34.cjs.map} +1 -1
  218. package/dist/overlay.cjs +5 -53
  219. package/dist/overlay.cjs.map +1 -1
  220. package/dist/overlay.confirm-body-BDG94R0x.js +104 -0
  221. package/dist/overlay.confirm-body-BDG94R0x.js.map +1 -0
  222. package/dist/overlay.confirm-body-b4Nx_OVf.cjs +49 -0
  223. package/dist/overlay.confirm-body-b4Nx_OVf.cjs.map +1 -0
  224. package/dist/overlay.js +120 -360
  225. package/dist/overlay.js.map +1 -1
  226. package/dist/overlay.service-BUCuZa6V.js +146 -0
  227. package/dist/overlay.service-BUCuZa6V.js.map +1 -0
  228. package/dist/overlay.service-CRHZZY9F.cjs +1 -0
  229. package/dist/overlay.service-CRHZZY9F.cjs.map +1 -0
  230. package/dist/page.cjs +1 -1
  231. package/dist/page.js +4 -4
  232. package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-C4jb-OdM.js} +1 -1
  233. package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-C4jb-OdM.js.map} +1 -1
  234. package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-WEx4CscR.cjs} +1 -1
  235. package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-WEx4CscR.cjs.map} +1 -1
  236. package/dist/payment-card-form.cjs +1 -1
  237. package/dist/payment-card-form.js +1 -1
  238. package/dist/{progress-U3LQkpM2.cjs → progress-54R4QRgW.cjs} +1 -1
  239. package/dist/{progress-U3LQkpM2.cjs.map → progress-54R4QRgW.cjs.map} +1 -1
  240. package/dist/{progress-BRerM5Bn.js → progress-CqOyMM4i.js} +1 -1
  241. package/dist/{progress-BRerM5Bn.js.map → progress-CqOyMM4i.js.map} +1 -1
  242. package/dist/progress.cjs +1 -1
  243. package/dist/progress.js +1 -1
  244. package/dist/qr-scanner.cjs +1 -1
  245. package/dist/qr-scanner.js +1 -1
  246. package/dist/{radio-group-BZ2WoOXJ.js → radio-group-B4zbBIZF.js} +1 -1
  247. package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-B4zbBIZF.js.map} +1 -1
  248. package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-BJqZpYVy.cjs} +1 -1
  249. package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-BJqZpYVy.cjs.map} +1 -1
  250. package/dist/radio-group.cjs +1 -1
  251. package/dist/radio-group.js +1 -1
  252. package/dist/range.cjs +1 -1
  253. package/dist/range.js +1 -1
  254. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-BXpvHN4-.js.map} +1 -1
  255. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-CaC-tdot.cjs.map} +1 -1
  256. package/dist/rxjs-utils.cjs +1 -1
  257. package/dist/rxjs-utils.js +1 -1
  258. package/dist/{scroll-qL-HkMdP.js → scroll-CYm6Krus.js} +1 -1
  259. package/dist/{scroll-qL-HkMdP.js.map → scroll-CYm6Krus.js.map} +1 -1
  260. package/dist/{scroll-DJTjNIT_.cjs → scroll-iSRovYYt.cjs} +1 -1
  261. package/dist/{scroll-DJTjNIT_.cjs.map → scroll-iSRovYYt.cjs.map} +1 -1
  262. package/dist/{select-CnPXUeSf.js → select-1WHseXP6.js} +2 -2
  263. package/dist/{select-CnPXUeSf.js.map → select-1WHseXP6.js.map} +1 -1
  264. package/dist/{select-BvA7v-gL.cjs → select-DiQHtQJN.cjs} +1 -1
  265. package/dist/{select-BvA7v-gL.cjs.map → select-DiQHtQJN.cjs.map} +1 -1
  266. package/dist/select.cjs +1 -1
  267. package/dist/select.js +1 -1
  268. package/dist/skeleton.cjs +1 -1
  269. package/dist/skeleton.js +1 -1
  270. package/dist/skills/INDEX.md +2 -2
  271. package/dist/skills/SKILL.md +13 -9
  272. package/dist/skills/schmancy/INDEX.md +2 -2
  273. package/dist/skills/schmancy/SKILL.md +13 -9
  274. package/dist/slider.cjs +1 -1
  275. package/dist/slider.js +1 -1
  276. package/dist/{splash-screen-C8JCqX5L.js → splash-screen-BwvtKMdN.js} +1 -1
  277. package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-BwvtKMdN.js.map} +1 -1
  278. package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-CJL8DGDe.cjs} +1 -1
  279. package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-CJL8DGDe.cjs.map} +1 -1
  280. package/dist/splash-screen.cjs +1 -1
  281. package/dist/splash-screen.js +1 -1
  282. package/dist/{src-CpRNClhg.cjs → src-Bwr2NR0A.cjs} +13 -13
  283. package/dist/src-Bwr2NR0A.cjs.map +1 -0
  284. package/dist/{src-CqdnWGgr.js → src-UaZeROcW.js} +164 -162
  285. package/dist/src-UaZeROcW.js.map +1 -0
  286. package/dist/steps.cjs +1 -1
  287. package/dist/steps.js +1 -1
  288. package/dist/{surface-Du2Y4vXd.cjs → surface-DE5iuI8e.cjs} +1 -1
  289. package/dist/{surface-Du2Y4vXd.cjs.map → surface-DE5iuI8e.cjs.map} +1 -1
  290. package/dist/{surface-C8jQy8Ym.js → surface-DPUkQ3OL.js} +1 -1
  291. package/dist/{surface-C8jQy8Ym.js.map → surface-DPUkQ3OL.js.map} +1 -1
  292. package/dist/surface.cjs +1 -1
  293. package/dist/surface.js +1 -1
  294. package/dist/switch.cjs +1 -1
  295. package/dist/switch.js +1 -1
  296. package/dist/table.cjs +1 -1
  297. package/dist/table.js +1 -1
  298. package/dist/{tabs-Cyahh9Q6.js → tabs-B2XEQPQl.js} +1 -1
  299. package/dist/{tabs-Cyahh9Q6.js.map → tabs-B2XEQPQl.js.map} +1 -1
  300. package/dist/{tabs-0RfeCa00.cjs → tabs-CsDQ72Qk.cjs} +1 -1
  301. package/dist/{tabs-0RfeCa00.cjs.map → tabs-CsDQ72Qk.cjs.map} +1 -1
  302. package/dist/tabs.cjs +1 -1
  303. package/dist/tabs.js +1 -1
  304. package/dist/teleport.cjs +1 -1
  305. package/dist/teleport.js +1 -1
  306. package/dist/{textarea-CXCcTVnf.js → textarea-C_ps0lL-.js} +1 -1
  307. package/dist/{textarea-CXCcTVnf.js.map → textarea-C_ps0lL-.js.map} +1 -1
  308. package/dist/{textarea-jqRrLxmo.cjs → textarea-aeAP9cDG.cjs} +1 -1
  309. package/dist/{textarea-jqRrLxmo.cjs.map → textarea-aeAP9cDG.cjs.map} +1 -1
  310. package/dist/textarea.cjs +1 -1
  311. package/dist/textarea.js +1 -1
  312. package/dist/theme-DAYTVw13.cjs +181 -0
  313. package/dist/{theme-Hjz9sCN-.cjs.map → theme-DAYTVw13.cjs.map} +1 -1
  314. package/dist/{theme-2KZW2Rfs.js → theme-DAx1iRNr.js} +3 -4
  315. package/dist/{theme-2KZW2Rfs.js.map → theme-DAx1iRNr.js.map} +1 -1
  316. package/dist/{theme-button-9uF1eoHz.js → theme-button-BrHkzCtj.js} +1 -1
  317. package/dist/{theme-button-9uF1eoHz.js.map → theme-button-BrHkzCtj.js.map} +1 -1
  318. package/dist/{theme-button-C7QIbke1.cjs → theme-button-LsMKY_N_.cjs} +1 -1
  319. package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-LsMKY_N_.cjs.map} +1 -1
  320. package/dist/theme-button.cjs +1 -1
  321. package/dist/theme-button.js +1 -1
  322. package/dist/theme.cjs +1 -1
  323. package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-C_034TxG.js.map} +1 -1
  324. package/dist/{theme.interface-D9l33b-M.cjs.map → theme.interface-DESopuZS.cjs.map} +1 -1
  325. package/dist/theme.js +5 -6
  326. package/dist/theme.service-Cfk88qHK.cjs +1 -0
  327. package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
  328. package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
  329. package/dist/theme.service-DIUo1mBP.js.map +1 -0
  330. package/dist/timeline.cjs +1 -1
  331. package/dist/timeline.js +1 -1
  332. package/dist/tree.cjs +1 -1
  333. package/dist/tree.js +1 -1
  334. package/dist/typography.cjs +1 -1
  335. package/dist/typography.js +1 -1
  336. package/dist/{utils-hp-DnFf5.js → utils-BzFQfaIr.js} +1 -1
  337. package/dist/{utils-hp-DnFf5.js.map → utils-BzFQfaIr.js.map} +1 -1
  338. package/dist/{utils-Cr-YO4Np.cjs → utils-oLBkMvor.cjs} +1 -1
  339. package/dist/{utils-Cr-YO4Np.cjs.map → utils-oLBkMvor.cjs.map} +1 -1
  340. package/dist/utils.cjs +1 -1
  341. package/dist/utils.js +2 -2
  342. package/dist/visually-hidden.cjs +1 -1
  343. package/dist/visually-hidden.js +1 -1
  344. package/dist/{window-DtUOWiAj.cjs → window-BJrKS6Zr.cjs} +1 -1
  345. package/dist/{window-DtUOWiAj.cjs.map → window-BJrKS6Zr.cjs.map} +1 -1
  346. package/dist/{window-C7yY9yp5.js → window-CyDuTN80.js} +3 -3
  347. package/dist/{window-C7yY9yp5.js.map → window-CyDuTN80.js.map} +1 -1
  348. package/dist/window.cjs +1 -1
  349. package/dist/window.js +1 -1
  350. package/package.json +1 -1
  351. package/plugins/vite-plugin-schmancy-manifest.ts +0 -13
  352. package/skills/schmancy/INDEX.md +2 -2
  353. package/skills/schmancy/SKILL.md +13 -9
  354. package/src/agent/agent-entry.test.ts +15 -0
  355. package/src/agent/agent-entry.ts +11 -16
  356. package/src/content-drawer/drawer.ts +24 -7
  357. package/src/content-drawer/events.ts +6 -0
  358. package/src/content-drawer/sheet.ts +13 -12
  359. package/src/date-range/date-range-dialog.ts +4 -4
  360. package/src/date-range/date-range.ts +35 -53
  361. package/src/index.ts +0 -2
  362. package/src/mailbox/email-editor.ts +17 -18
  363. package/src/mailbox/email-template-picker.ts +19 -13
  364. package/src/menu/menu-item.ts +7 -2
  365. package/src/menu/menu.ts +24 -20
  366. package/types/src/agent/agent-entry.d.ts +2 -3
  367. package/types/src/content-drawer/drawer.d.ts +2 -0
  368. package/types/src/content-drawer/events.d.ts +6 -0
  369. package/types/src/content-drawer/sheet.d.ts +6 -5
  370. package/types/src/date-range/date-range.d.ts +1 -5
  371. package/types/src/index.d.ts +0 -2
  372. package/types/src/mailbox/email-template-picker.d.ts +7 -7
  373. package/types/src/menu/menu-item.d.ts +1 -0
  374. package/types/src/menu/menu.d.ts +9 -7
  375. package/dist/date-range-BIyrzTRZ.cjs +0 -131
  376. package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
  377. package/dist/date-range-DOstCIg8.js.map +0 -1
  378. package/dist/dialog-service-DI9PPy4H.js +0 -193
  379. package/dist/dialog-service-DI9PPy4H.js.map +0 -1
  380. package/dist/dialog-service-DJd5L0f5.cjs +0 -1
  381. package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
  382. package/dist/dialog.cjs +0 -89
  383. package/dist/dialog.cjs.map +0 -1
  384. package/dist/dialog.js +0 -419
  385. package/dist/dialog.js.map +0 -1
  386. package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
  387. package/dist/mailbox-DsPII8HR.js.map +0 -1
  388. package/dist/menu-Bhd3EapX.js +0 -56
  389. package/dist/menu-Bhd3EapX.js.map +0 -1
  390. package/dist/menu-Cg2aaDjs.cjs +0 -23
  391. package/dist/menu-Cg2aaDjs.cjs.map +0 -1
  392. package/dist/mixins-CcIWET41.js +0 -627
  393. package/dist/mixins-De3xfjrm.cjs +0 -298
  394. package/dist/sheet-BRL07BB4.js +0 -170
  395. package/dist/sheet-BRL07BB4.js.map +0 -1
  396. package/dist/sheet-BYQJAHQn.cjs +0 -35
  397. package/dist/sheet-BYQJAHQn.cjs.map +0 -1
  398. package/dist/sheet.cjs +0 -1
  399. package/dist/sheet.js +0 -3
  400. package/dist/sheet.service-B25bsrYG.cjs +0 -1
  401. package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
  402. package/dist/sheet.service-SPQ8oLCi.js +0 -86
  403. package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
  404. package/dist/skills/dialog.md +0 -69
  405. package/dist/skills/schmancy/dialog.md +0 -69
  406. package/dist/skills/schmancy/sheet.md +0 -76
  407. package/dist/skills/sheet.md +0 -76
  408. package/dist/src-CpRNClhg.cjs.map +0 -1
  409. package/dist/src-CqdnWGgr.js.map +0 -1
  410. package/dist/theme-Hjz9sCN-.cjs +0 -181
  411. package/dist/theme.events-Cv7N4Toe.js +0 -2
  412. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  413. package/dist/theme.events-DM4H5F2d.cjs +0 -1
  414. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  415. package/dist/theme.service-BrUbGoeQ.cjs +0 -1
  416. package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
  417. package/dist/theme.service-CmbOGMA8.js.map +0 -1
  418. package/skills/schmancy/dialog.md +0 -69
  419. package/skills/schmancy/sheet.md +0 -76
  420. package/src/agent/agent-bundle.test.ts +0 -92
  421. package/src/agent/helpers.ts +0 -159
  422. package/src/agent/schmancy-skill.ts +0 -71
  423. package/src/agent/virtual-manifest.d.ts +0 -10
  424. package/src/dialog/dialog-base.mixin.ts +0 -576
  425. package/src/dialog/dialog-events.ts +0 -17
  426. package/src/dialog/dialog-service.ts +0 -494
  427. package/src/dialog/dialog.component.ts +0 -414
  428. package/src/dialog/index.ts +0 -3
  429. package/src/sheet/hook.ts +0 -40
  430. package/src/sheet/index.ts +0 -2
  431. package/src/sheet/sheet.service.ts +0 -245
  432. package/src/sheet/sheet.ts +0 -238
  433. package/types/src/agent/helpers.d.ts +0 -86
  434. package/types/src/agent/schmancy-skill.d.ts +0 -32
  435. package/types/src/dialog/dialog-base.mixin.d.ts +0 -30
  436. package/types/src/dialog/dialog-events.d.ts +0 -13
  437. package/types/src/dialog/dialog-service.d.ts +0 -91
  438. package/types/src/dialog/dialog.component.d.ts +0 -150
  439. package/types/src/dialog/index.d.ts +0 -3
  440. package/types/src/sheet/hook.d.ts +0 -5
  441. package/types/src/sheet/index.d.ts +0 -2
  442. package/types/src/sheet/sheet.d.ts +0 -29
  443. package/types/src/sheet/sheet.service.d.ts +0 -65
  444. /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
  445. /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
  446. /package/dist/{form-CSJp687X.cjs → form-B2qudx_q.cjs} +0 -0
  447. /package/dist/{form-BtwOBMZ9.js → form-CI59gad4.js} +0 -0
  448. /package/dist/{hashContent-1ARKIsx9.js → hashContent-a8uVr3xs.js} +0 -0
  449. /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-ejkBgDnN.cjs} +0 -0
  450. /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
  451. /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
  452. /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-CCiTaf_C.js} +0 -0
  453. /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-CFGiYf34.cjs} +0 -0
  454. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BXpvHN4-.js} +0 -0
  455. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-CaC-tdot.cjs} +0 -0
  456. /package/dist/{theme.interface-DnVNre4O.js → theme.interface-C_034TxG.js} +0 -0
  457. /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-DESopuZS.cjs} +0 -0
  458. /package/types/src/agent/{agent-bundle.test.d.ts → agent-entry.test.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet-BRL07BB4.js","names":[],"sources":["../src/sheet/hook.ts","../src/sheet/sheet.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name](oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { area } from '../area'\nimport { html, css } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil, tap, filter } from 'rxjs'\nimport { on } from './hook'\nimport { SchmancySheetPosition, sheet } from './sheet.service'\nimport { BLACKBIRD_EASING, DURATION_ENTER, DURATION_EXIT, DURATION_BACKDROP, EASE_OUT, EASE_IN } from '../utils/animation'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: var(--schmancy-overlay-z, 999);\n\t\tdisplay: none;\n\t}\n\t:host([open]) {\n\t\tdisplay: block;\n\t}\n\n\t/* Luminous edge glow on sheet panel */\n\t.content {\n\t\tbox-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t:host([position='bottom']) .content {\n\t\tbox-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.content { box-shadow: var(--schmancy-sys-elevation-3); }\n\t}\n`]\n\n\t// uid is inherited from $LitElement mixin - auto-generated or set via attribute\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\n\tprivate lastFocusedElement: HTMLElement | null = null\n\t@query('.overlay') private overlayEl!: HTMLDivElement\n\t@query('.content') private contentEl!: HTMLDivElement\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.animateIn()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.animateOut()\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tprivate animateIn() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\tduration: DURATION_BACKDROP,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_ENTER,\n\t\t\teasing: BLACKBIRD_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tprivate animateOut() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.98)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.98)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_IN,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\tfilter(() => this.handleHistory),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle render events from sheet service\n\t\tconst render$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-render').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(e => {\n\t\t\t\tarea.push({\n\t\t\t\t\tarea: this.uid,\n\t\t\t\t\tcomponent: e.detail.component,\n\t\t\t\t\tprops: e.detail.props,\n\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\n\t\t// Handle dismiss events from sheet service\n\t\tconst dismiss$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-dismiss').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(() => {\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, render$, dismiss$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\tconst parent = this.parentElement\n\t\tif (!parent) return\n\n\t\tArray.from(parent.children).forEach(child => {\n\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\tchild.toggleAttribute('inert', inert)\n\t\t\t}\n\t\t})\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\toverride focus() {\n\t\t// delegatesFocus in shadowRootOptions handles automatic focus\n\t\t// Just focus first element with autofocus attribute if present\n\t\tconst element = this.querySelector('[autofocus]')\n\t\tif (element instanceof HTMLElement) {\n\t\t\telement.focus()\n\t\t}\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst sheetClasses = `absolute inset-0 flex h-full`\n\n\t\tconst overlayClasses = `overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 ${this.lock ? '' : 'cursor-pointer'}`\n\n\t\tconst contentClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10'\n\t\t\t\t: 'content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10'\n\n\t\tconst surfaceClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'h-full overflow-auto'\n\t\t\t\t: 'max-h-[90vh] overflow-auto'\n\n\t\treturn html`\n\t\t\t<div class=${sheetClasses} role=\"dialog\" aria-hidden=${!this.open} aria-modal=${this.open} tabindex=\"0\">\n\t\t\t\t<div class=${overlayClasses} @click=${this.handleOverlayClick}></div>\n\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=${surfaceClasses} type=\"solid\">\n\t\t\t\t\t\t<schmancy-area class=\"size-full overflow-auto\" name=${this.uid}>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</schmancy-area>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n"],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-De3xfjrm.cjs`),t=require(`./decorate-DpFmy0nm.cjs`),n=require(`./area-ZupIezvU.cjs`),r=require(`./animation-CO_Csq84.cjs`),i=require(`./sheet.service-B25bsrYG.cjs`);let a=require(`rxjs`),o=require(`lit/decorators.js`),s=require(`lit`);var c,l,u=class extends e.s{constructor(...e){super(...e),this.open=!1,this.position=i.t.Side,this.persist=!1,this.lock=!1,this.handleHistory=!0,this.lastFocusedElement=null,this.handleOverlayClick=e=>{e.stopPropagation(),this.lock||i.n.dismiss(this.uid)}}static{this.styles=[s.css`
2
- :host {
3
- position: fixed;
4
- inset: 0;
5
- z-index: var(--schmancy-overlay-z, 999);
6
- display: none;
7
- }
8
- :host([open]) {
9
- display: block;
10
- }
11
-
12
- /* Luminous edge glow on sheet panel */
13
- .content {
14
- box-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
15
- }
16
-
17
- :host([position='bottom']) .content {
18
- box-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
19
- }
20
-
21
- @media (prefers-reduced-motion: reduce) {
22
- .content { box-shadow: var(--schmancy-sys-elevation-3); }
23
- }
24
- `]}onOpenChange(e,t){t?(this.lastFocusedElement=document.activeElement,this.setBackgroundInert(!0),this.animateIn(),this.focus()):(this.animateOut(),this.setBackgroundInert(!1),this.lastFocusedElement?.focus(),this.lastFocusedElement=null)}animateIn(){if(!this.overlayEl||!this.contentEl)return;this.overlayEl.animate([{opacity:0},{opacity:1}],{duration:200,easing:r.s,fill:`forwards`});let e=this.position===i.t.Side?[{opacity:0,transform:`translateX(100%) scale(0.95)`},{opacity:1,transform:`translateX(0) scale(1)`}]:[{opacity:0,transform:`translateY(100%) scale(0.95)`},{opacity:1,transform:`translateY(0) scale(1)`}];this.contentEl.animate(e,{duration:r.i,easing:r.n,fill:`forwards`})}animateOut(){if(!this.overlayEl||!this.contentEl)return;this.overlayEl.animate([{opacity:1},{opacity:0}],{duration:150,easing:r.s,fill:`forwards`});let e=this.position===i.t.Side?[{opacity:1,transform:`translateX(0) scale(1)`},{opacity:0,transform:`translateX(100%) scale(0.98)`}]:[{opacity:1,transform:`translateY(0) scale(1)`},{opacity:0,transform:`translateY(100%) scale(0.98)`}];this.contentEl.animate(e,{duration:150,easing:r.o,fill:`forwards`})}connectedCallback(){super.connectedCallback(),this.setupEventListeners()}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}setupEventListeners(){(0,a.merge)((0,a.fromEvent)(window,`popstate`).pipe((0,a.filter)(()=>this.handleHistory),(0,a.tap)(e=>{e.preventDefault(),this.closeSheet()})),(0,a.fromEvent)(this,`keydown`).pipe((0,a.tap)(e=>{e.key===`Escape`&&!this.lock&&this.open&&(e.preventDefault(),e.stopPropagation(),i.n.dismiss(this.uid))})),(0,a.fromEvent)(window,`schmancy-sheet-render`).pipe((0,a.filter)(e=>e.detail.uid===this.uid),(0,a.tap)(e=>{n.S.push({area:this.uid,component:e.detail.component,props:e.detail.props,historyStrategy:`silent`})})),(0,a.fromEvent)(window,`schmancy-sheet-dismiss`).pipe((0,a.filter)(e=>e.detail.uid===this.uid),(0,a.tap)(()=>{this.closeSheet()}))).pipe((0,a.takeUntil)(this.disconnecting)).subscribe()}setBackgroundInert(e){let t=this.parentElement;t&&Array.from(t.children).forEach(t=>{t!==this&&t instanceof HTMLElement&&t.toggleAttribute(`inert`,e)})}closeSheet(){this.open=!1,this.dispatchEvent(new CustomEvent(`close`))}focus(){let e=this.querySelector(`[autofocus]`);e instanceof HTMLElement&&e.focus()}render(){let e=`overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 `+(this.lock?``:`cursor-pointer`),t=this.position===i.t.Side?`content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10`:`content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10`,n=this.position===i.t.Side?`h-full overflow-auto`:`max-h-[90vh] overflow-auto`;return s.html`
25
- <div class=${`absolute inset-0 flex h-full`} role="dialog" aria-hidden=${!this.open} aria-modal=${this.open} tabindex="0">
26
- <div class=${e} @click=${this.handleOverlayClick}></div>
27
- <div class=${t}>
28
- <schmancy-surface rounded="left" fill="all" id="body" class=${n} type="solid">
29
- <schmancy-area class="size-full overflow-auto" name=${this.uid}>
30
- <slot></slot>
31
- </schmancy-area>
32
- </schmancy-surface>
33
- </div>
34
- </div>
35
- `}};t.t([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`open`,void 0),t.t([(0,o.property)({type:String,reflect:!0})],u.prototype,`position`,void 0),t.t([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`persist`,void 0),t.t([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`lock`,void 0),t.t([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`handleHistory`,void 0),t.t([(0,o.query)(`.overlay`)],u.prototype,`overlayEl`,void 0),t.t([(0,o.query)(`.content`)],u.prototype,`contentEl`,void 0),t.t([(c=`open`,(e,t)=>{let{willUpdate:n}=e;l=Object.assign({waitUntilFirstUpdate:!1},l),e.willUpdate=function(e){if(n.call(this,e),e.has(c)){let n=e.get(c),r=this[c];n!==r&&(l?.waitUntilFirstUpdate&&!this.hasUpdated||this[t](n,r))}}})],u.prototype,`onOpenChange`,null),u=t.t([(0,o.customElement)(`schmancy-sheet`)],u);
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet-BYQJAHQn.cjs","names":[],"sources":["../src/sheet/hook.ts","../src/sheet/sheet.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name](oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { area } from '../area'\nimport { html, css } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil, tap, filter } from 'rxjs'\nimport { on } from './hook'\nimport { SchmancySheetPosition, sheet } from './sheet.service'\nimport { BLACKBIRD_EASING, DURATION_ENTER, DURATION_EXIT, DURATION_BACKDROP, EASE_OUT, EASE_IN } from '../utils/animation'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: var(--schmancy-overlay-z, 999);\n\t\tdisplay: none;\n\t}\n\t:host([open]) {\n\t\tdisplay: block;\n\t}\n\n\t/* Luminous edge glow on sheet panel */\n\t.content {\n\t\tbox-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t:host([position='bottom']) .content {\n\t\tbox-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.content { box-shadow: var(--schmancy-sys-elevation-3); }\n\t}\n`]\n\n\t// uid is inherited from $LitElement mixin - auto-generated or set via attribute\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\n\tprivate lastFocusedElement: HTMLElement | null = null\n\t@query('.overlay') private overlayEl!: HTMLDivElement\n\t@query('.content') private contentEl!: HTMLDivElement\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.animateIn()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.animateOut()\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tprivate animateIn() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\tduration: DURATION_BACKDROP,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_ENTER,\n\t\t\teasing: BLACKBIRD_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tprivate animateOut() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.98)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.98)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_IN,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\tfilter(() => this.handleHistory),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle render events from sheet service\n\t\tconst render$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-render').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(e => {\n\t\t\t\tarea.push({\n\t\t\t\t\tarea: this.uid,\n\t\t\t\t\tcomponent: e.detail.component,\n\t\t\t\t\tprops: e.detail.props,\n\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\n\t\t// Handle dismiss events from sheet service\n\t\tconst dismiss$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-dismiss').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(() => {\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, render$, dismiss$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\tconst parent = this.parentElement\n\t\tif (!parent) return\n\n\t\tArray.from(parent.children).forEach(child => {\n\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\tchild.toggleAttribute('inert', inert)\n\t\t\t}\n\t\t})\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\toverride focus() {\n\t\t// delegatesFocus in shadowRootOptions handles automatic focus\n\t\t// Just focus first element with autofocus attribute if present\n\t\tconst element = this.querySelector('[autofocus]')\n\t\tif (element instanceof HTMLElement) {\n\t\t\telement.focus()\n\t\t}\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst sheetClasses = `absolute inset-0 flex h-full`\n\n\t\tconst overlayClasses = `overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 ${this.lock ? '' : 'cursor-pointer'}`\n\n\t\tconst contentClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10'\n\t\t\t\t: 'content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10'\n\n\t\tconst surfaceClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'h-full overflow-auto'\n\t\t\t\t: 'max-h-[90vh] overflow-auto'\n\n\t\treturn html`\n\t\t\t<div class=${sheetClasses} role=\"dialog\" aria-hidden=${!this.open} aria-modal=${this.open} tabindex=\"0\">\n\t\t\t\t<div class=${overlayClasses} @click=${this.handleOverlayClick}></div>\n\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=${surfaceClasses} type=\"solid\">\n\t\t\t\t\t\t<schmancy-area class=\"size-full overflow-auto\" name=${this.uid}>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</schmancy-area>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n"],"mappings":"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"}
package/dist/sheet.cjs DELETED
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sheet.service-B25bsrYG.cjs`);require(`./sheet-BYQJAHQn.cjs`),exports.SchmancySheetPosition=e.t,exports.sheet=e.n;
package/dist/sheet.js DELETED
@@ -1,3 +0,0 @@
1
- import { n as e, t } from "./sheet.service-SPQ8oLCi.js";
2
- import "./sheet-BRL07BB4.js";
3
- export { t as SchmancySheetPosition, e as sheet };
@@ -1 +0,0 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-De3xfjrm.cjs`),t=require(`./audio-CluX8Qpq.cjs`),n=require(`./overlay-stack-BprhAE9a.cjs`);let r=require(`rxjs`);var i=function(e){return e.Side=`side`,e.Bottom=`bottom`,e}({}),a=new class{constructor(){this.bottomSheet=new r.Subject,this.activeSheets=new Set,this.popStateListenerActive=!1,this.setupSheetOpeningLogic(),this.setupPopStateListener()}setupSheetOpeningLogic(){this.bottomSheet.pipe((0,r.switchMap)(t=>{let n=t.uid??`sheet-${Date.now()}`;return e._(`schmancy-sheet`).pipe((0,r.map)(e=>({target:t,existingSheet:e?.getAttribute(`uid`)===n?e:null,uid:n})))}),(0,r.switchMap)(({target:t,existingSheet:n,uid:i})=>n?(0,r.of)({target:t,sheet:n,uid:i}):e._(`schmancy-theme`).pipe((0,r.map)(e=>{let n=e||document.body,r=document.createElement(`schmancy-sheet`);return r.setAttribute(`uid`,i),n.appendChild(r),{target:t,sheet:r,uid:i}}))),(0,r.tap)(({target:e,sheet:t})=>{e.lock&&t.setAttribute(`lock`,`true`);let r=e.position||(window.innerWidth>=768?i.Side:i.Bottom);t.setAttribute(`position`,r),e.persist&&t.setAttribute(`persist`,String(e.persist)),t.style.setProperty(`--schmancy-overlay-z`,String(n.t.getNextZIndex())),document.body.style.overflow=`hidden`}),(0,r.delay)(20),(0,r.tap)(({target:e,uid:t})=>{window.dispatchEvent(new CustomEvent(`schmancy-sheet-render`,{detail:{component:e.component,uid:t,props:e.props},bubbles:!0,composed:!0}))}),(0,r.delay)(1),(0,r.tap)(({sheet:e,uid:i})=>{e.setAttribute(`open`,`true`),t.t.play(`curious`),this.activeSheets.add(i),(0,r.fromEvent)(e,`close`).pipe((0,r.take)(1),(0,r.delay)(300)).subscribe(()=>{this.activeSheets.delete(i),n.t.release();let t=e.getAttribute(`persist`);t&&t!==`false`||e.remove(),document.body.style.overflow=`auto`})})).subscribe()}setupPopStateListener(){this.popStateListenerActive||=((0,r.fromEvent)(window,`popstate`).subscribe(e=>{if(this.activeSheets.size>0){let t=Array.from(this.activeSheets).pop();t&&(this.dismiss(t),e.state&&e.state.schmancySheet&&history.pushState({},``,window.location.href))}}),!0)}dismiss(e){if(!e&&this.activeSheets.size>0){let t=Array.from(this.activeSheets);e=t[t.length-1]}e&&(t.t.play(`atEase`),window.dispatchEvent(new CustomEvent(`schmancy-sheet-dismiss`,{detail:{uid:e},bubbles:!0,composed:!0})),this.activeSheets.delete(e))}open(e){this.bottomSheet.next(e)}push(e){this.bottomSheet.next(e)}isOpen(e){return this.activeSheets.has(e)}closeAll(){Array.from(this.activeSheets).forEach(e=>{this.dismiss(e)})}};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet.service-B25bsrYG.cjs","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\n\n/**\n * Bottom / side sheet service. Mounts any element as a sheet with a chosen\n * position (see `SchmancySheetPosition` enum).\n *\n * @service\n * @summary Imperative bottom / side sheet surface.\n * @method open({ component, position? }) - Mount an element as a sheet.\n * @method dismiss(id?) - Dismiss a sheet by id, or the topmost.\n */\nexport const sheet = new BottomSheetService()\n"],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- import { _ as e } from "./mixins-CcIWET41.js";
2
- import { t } from "./audio-DcXphulJ.js";
3
- import { t as n } from "./overlay-stack-CAQno0CK.js";
4
- import { Subject as r, delay as i, fromEvent as a, map as o, of as s, switchMap as c, take as l, tap as u } from "rxjs";
5
- var d = function(e) {
6
- return e.Side = "side", e.Bottom = "bottom", e;
7
- }({}), f = new class {
8
- constructor() {
9
- this.bottomSheet = new r(), this.activeSheets = /* @__PURE__ */ new Set(), this.popStateListenerActive = !1, this.setupSheetOpeningLogic(), this.setupPopStateListener();
10
- }
11
- setupSheetOpeningLogic() {
12
- this.bottomSheet.pipe(c((t) => {
13
- let n = t.uid ?? `sheet-${Date.now()}`;
14
- return e("schmancy-sheet").pipe(o((e) => ({
15
- target: t,
16
- existingSheet: e?.getAttribute("uid") === n ? e : null,
17
- uid: n
18
- })));
19
- }), c(({ target: t, existingSheet: n, uid: r }) => n ? s({
20
- target: t,
21
- sheet: n,
22
- uid: r
23
- }) : e("schmancy-theme").pipe(o((e) => {
24
- let n = e || document.body, i = document.createElement("schmancy-sheet");
25
- return i.setAttribute("uid", r), n.appendChild(i), {
26
- target: t,
27
- sheet: i,
28
- uid: r
29
- };
30
- }))), u(({ target: e, sheet: t }) => {
31
- e.lock && t.setAttribute("lock", "true");
32
- let r = e.position || (window.innerWidth >= 768 ? d.Side : d.Bottom);
33
- t.setAttribute("position", r), e.persist && t.setAttribute("persist", String(e.persist)), t.style.setProperty("--schmancy-overlay-z", String(n.getNextZIndex())), document.body.style.overflow = "hidden";
34
- }), i(20), u(({ target: e, uid: t }) => {
35
- window.dispatchEvent(new CustomEvent("schmancy-sheet-render", {
36
- detail: {
37
- component: e.component,
38
- uid: t,
39
- props: e.props
40
- },
41
- bubbles: !0,
42
- composed: !0
43
- }));
44
- }), i(1), u(({ sheet: e, uid: r }) => {
45
- e.setAttribute("open", "true"), t.play("curious"), this.activeSheets.add(r), a(e, "close").pipe(l(1), i(300)).subscribe(() => {
46
- this.activeSheets.delete(r), n.release();
47
- let t = e.getAttribute("persist");
48
- t && t !== "false" || e.remove(), document.body.style.overflow = "auto";
49
- });
50
- })).subscribe();
51
- }
52
- setupPopStateListener() {
53
- this.popStateListenerActive ||= (a(window, "popstate").subscribe((e) => {
54
- if (this.activeSheets.size > 0) {
55
- let t = Array.from(this.activeSheets).pop();
56
- t && (this.dismiss(t), e.state && e.state.schmancySheet && history.pushState({}, "", window.location.href));
57
- }
58
- }), !0);
59
- }
60
- dismiss(e) {
61
- if (!e && this.activeSheets.size > 0) {
62
- let t = Array.from(this.activeSheets);
63
- e = t[t.length - 1];
64
- }
65
- e && (t.play("atEase"), window.dispatchEvent(new CustomEvent("schmancy-sheet-dismiss", {
66
- detail: { uid: e },
67
- bubbles: !0,
68
- composed: !0
69
- })), this.activeSheets.delete(e));
70
- }
71
- open(e) {
72
- this.bottomSheet.next(e);
73
- }
74
- push(e) {
75
- this.bottomSheet.next(e);
76
- }
77
- isOpen(e) {
78
- return this.activeSheets.has(e);
79
- }
80
- closeAll() {
81
- Array.from(this.activeSheets).forEach((e) => {
82
- this.dismiss(e);
83
- });
84
- }
85
- }();
86
- export { f as n, d as t };
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet.service-SPQ8oLCi.js","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\n\n/**\n * Bottom / side sheet service. Mounts any element as a sheet with a chosen\n * position (see `SchmancySheetPosition` enum).\n *\n * @service\n * @summary Imperative bottom / side sheet surface.\n * @method open({ component, position? }) - Mount an element as a sheet.\n * @method dismiss(id?) - Dismiss a sheet by id, or the topmost.\n */\nexport const sheet = new BottomSheetService()\n"],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- # schmancy-dialog / $dialog
2
-
3
- > Dialog with glass surface, cursorGlow, and mobile bottom-sheet adaptation. Use `$dialog` service for imperative usage.
4
-
5
- ## Usage
6
- ```typescript
7
- import { $dialog } from '@mhmo91/schmancy'
8
-
9
- // Confirm dialog
10
- const confirmed = await $dialog.confirm({
11
- title: 'Delete item?',
12
- message: 'This cannot be undone.',
13
- confirmText: 'Delete',
14
- cancelText: 'Cancel',
15
- variant: 'danger',
16
- })
17
-
18
- // Component dialog (renders any template/element)
19
- await $dialog.component(html`<my-editor .data=${item}></my-editor>`)
20
- ```
21
-
22
- ## $dialog API
23
- | Method | Returns | Description |
24
- |--------|---------|-------------|
25
- | `confirm(options)` | `Promise<boolean>` | Show confirm dialog with title/message/buttons |
26
- | `ask(message, event?)` | `Promise<boolean>` | Quick confirm with just a message |
27
- | `danger(options)` | `Promise<boolean>` | Confirm with danger variant |
28
- | `component(content, options?)` | `Promise<boolean>` | Show any template/element as dialog |
29
- | `prompt(options)` | `Promise<string \| null>` | Input dialog, returns value or null |
30
- | `dismiss()` | `boolean` | Dismiss topmost dialog |
31
-
32
- ## Confirm Options
33
- | Option | Type | Default | Description |
34
- |--------|------|---------|-------------|
35
- | `title` | `string` | `undefined` | Dialog title |
36
- | `subtitle` | `string` | `undefined` | Subtitle below title |
37
- | `message` | `string` | `undefined` | Body message |
38
- | `confirmText` | `string` | `'Confirm'` | Confirm button label |
39
- | `cancelText` | `string` | `'Cancel'` | Cancel button label |
40
- | `variant` | `'default' \| 'danger'` | `'default'` | Button color scheme |
41
- | `position` | `{x,y} \| MouseEvent` | Last click | Animation origin |
42
- | `content` | `TemplateResult \| HTMLElement` | `undefined` | Custom content in body |
43
-
44
- ## Physics
45
- - **cursorGlow** on dialog surface (radius: 250, intensity: 0.1)
46
- - Glass surface with `backdrop-blur-lg` and `backdrop-saturate-150`
47
- - Luminous glow shadow around dialog container
48
- - Mobile: renders as bottom sheet with drag handle and swipe dismiss
49
-
50
- ## Examples
51
- ```typescript
52
- // Quick ask
53
- if (await $dialog.ask('Remove this entry?', event)) {
54
- removeEntry()
55
- }
56
-
57
- // Prompt for input
58
- const name = await $dialog.prompt({
59
- title: 'Rename',
60
- label: 'New name',
61
- defaultValue: currentName,
62
- })
63
-
64
- // Custom component dialog
65
- await $dialog.component(
66
- html`<user-profile-editor .user=${user}></user-profile-editor>`,
67
- { position: event }
68
- )
69
- ```
@@ -1,69 +0,0 @@
1
- # schmancy-dialog / $dialog
2
-
3
- > Dialog with glass surface, cursorGlow, and mobile bottom-sheet adaptation. Use `$dialog` service for imperative usage.
4
-
5
- ## Usage
6
- ```typescript
7
- import { $dialog } from '@mhmo91/schmancy'
8
-
9
- // Confirm dialog
10
- const confirmed = await $dialog.confirm({
11
- title: 'Delete item?',
12
- message: 'This cannot be undone.',
13
- confirmText: 'Delete',
14
- cancelText: 'Cancel',
15
- variant: 'danger',
16
- })
17
-
18
- // Component dialog (renders any template/element)
19
- await $dialog.component(html`<my-editor .data=${item}></my-editor>`)
20
- ```
21
-
22
- ## $dialog API
23
- | Method | Returns | Description |
24
- |--------|---------|-------------|
25
- | `confirm(options)` | `Promise<boolean>` | Show confirm dialog with title/message/buttons |
26
- | `ask(message, event?)` | `Promise<boolean>` | Quick confirm with just a message |
27
- | `danger(options)` | `Promise<boolean>` | Confirm with danger variant |
28
- | `component(content, options?)` | `Promise<boolean>` | Show any template/element as dialog |
29
- | `prompt(options)` | `Promise<string \| null>` | Input dialog, returns value or null |
30
- | `dismiss()` | `boolean` | Dismiss topmost dialog |
31
-
32
- ## Confirm Options
33
- | Option | Type | Default | Description |
34
- |--------|------|---------|-------------|
35
- | `title` | `string` | `undefined` | Dialog title |
36
- | `subtitle` | `string` | `undefined` | Subtitle below title |
37
- | `message` | `string` | `undefined` | Body message |
38
- | `confirmText` | `string` | `'Confirm'` | Confirm button label |
39
- | `cancelText` | `string` | `'Cancel'` | Cancel button label |
40
- | `variant` | `'default' \| 'danger'` | `'default'` | Button color scheme |
41
- | `position` | `{x,y} \| MouseEvent` | Last click | Animation origin |
42
- | `content` | `TemplateResult \| HTMLElement` | `undefined` | Custom content in body |
43
-
44
- ## Physics
45
- - **cursorGlow** on dialog surface (radius: 250, intensity: 0.1)
46
- - Glass surface with `backdrop-blur-lg` and `backdrop-saturate-150`
47
- - Luminous glow shadow around dialog container
48
- - Mobile: renders as bottom sheet with drag handle and swipe dismiss
49
-
50
- ## Examples
51
- ```typescript
52
- // Quick ask
53
- if (await $dialog.ask('Remove this entry?', event)) {
54
- removeEntry()
55
- }
56
-
57
- // Prompt for input
58
- const name = await $dialog.prompt({
59
- title: 'Rename',
60
- label: 'New name',
61
- defaultValue: currentName,
62
- })
63
-
64
- // Custom component dialog
65
- await $dialog.component(
66
- html`<user-profile-editor .user=${user}></user-profile-editor>`,
67
- { position: event }
68
- )
69
- ```
@@ -1,76 +0,0 @@
1
- # schmancy-sheet / sheet
2
-
3
- > Side/bottom panel with glass backdrop, luminous edge glow, and spring entry animation. Use `sheet` service for imperative usage.
4
-
5
- ## Usage
6
- ```typescript
7
- import { sheet } from '@mhmo91/schmancy'
8
-
9
- sheet.push({
10
- component: MyComponent, // Component class or tag name
11
- position: SchmancySheetPosition.Side,
12
- props: { itemId: '123' }, // Passed to component
13
- })
14
- ```
15
-
16
- ## sheet API
17
- | Method | Description |
18
- |--------|-------------|
19
- | `push(config)` | Open a sheet with component content |
20
- | `dismiss(uid?)` | Close sheet by uid, or most recent |
21
- | `closeAll()` | Close all open sheets |
22
- | `isOpen(uid)` | Check if sheet with uid is open |
23
-
24
- ## SheetConfig
25
- | Option | Type | Default | Description |
26
- |--------|------|---------|-------------|
27
- | `component` | `ComponentType` | required | Component class or lazy loader |
28
- | `uid` | `string` | Auto-generated | Unique identifier for the sheet |
29
- | `position` | `SchmancySheetPosition` | Auto (side on desktop, bottom on mobile) | `Side` or `Bottom` |
30
- | `persist` | `boolean` | `false` | Keep DOM after close |
31
- | `lock` | `boolean` | `false` | Prevent ESC and overlay click dismiss |
32
- | `props` | `Record<string, unknown>` | `undefined` | Properties passed to component |
33
- | `close` | `() => void` | `undefined` | Close callback |
34
-
35
- ## Component Properties (schmancy-sheet)
36
- | Property | Type | Default | Description |
37
- |----------|------|---------|-------------|
38
- | `open` | `boolean` | `false` | Open state |
39
- | `position` | `'side' \| 'bottom'` | `'side'` | Panel position |
40
- | `persist` | `boolean` | `false` | Keep in DOM after close |
41
- | `lock` | `boolean` | `false` | Disable dismiss via ESC/overlay |
42
- | `handleHistory` | `boolean` | `true` | Handle browser back button |
43
-
44
- ## Events
45
- | Event | Description |
46
- |-------|-------------|
47
- | `close` | Fired when sheet closes |
48
-
49
- ## Physics
50
- - Glass backdrop: `backdrop-blur-lg` + `backdrop-saturate-150`
51
- - Luminous edge glow on panel (primary color, 15% intensity)
52
- - Spring entry: `scale(0.95)` to `scale(1)` with Blackbird easing
53
- - Side: slides from right; Bottom: slides from bottom
54
- - Background siblings set to `inert` while open
55
- - Stacks with dialogs via shared `overlayStack` z-index manager
56
-
57
- ## Examples
58
- ```typescript
59
- import { sheet, SchmancySheetPosition } from '@mhmo91/schmancy'
60
-
61
- // Open side sheet
62
- sheet.push({
63
- component: UserEditor,
64
- props: { userId: '456' },
65
- })
66
-
67
- // Locked bottom sheet
68
- sheet.push({
69
- component: PaymentForm,
70
- position: SchmancySheetPosition.Bottom,
71
- lock: true,
72
- })
73
-
74
- // Dismiss programmatically
75
- sheet.dismiss()
76
- ```
@@ -1,76 +0,0 @@
1
- # schmancy-sheet / sheet
2
-
3
- > Side/bottom panel with glass backdrop, luminous edge glow, and spring entry animation. Use `sheet` service for imperative usage.
4
-
5
- ## Usage
6
- ```typescript
7
- import { sheet } from '@mhmo91/schmancy'
8
-
9
- sheet.push({
10
- component: MyComponent, // Component class or tag name
11
- position: SchmancySheetPosition.Side,
12
- props: { itemId: '123' }, // Passed to component
13
- })
14
- ```
15
-
16
- ## sheet API
17
- | Method | Description |
18
- |--------|-------------|
19
- | `push(config)` | Open a sheet with component content |
20
- | `dismiss(uid?)` | Close sheet by uid, or most recent |
21
- | `closeAll()` | Close all open sheets |
22
- | `isOpen(uid)` | Check if sheet with uid is open |
23
-
24
- ## SheetConfig
25
- | Option | Type | Default | Description |
26
- |--------|------|---------|-------------|
27
- | `component` | `ComponentType` | required | Component class or lazy loader |
28
- | `uid` | `string` | Auto-generated | Unique identifier for the sheet |
29
- | `position` | `SchmancySheetPosition` | Auto (side on desktop, bottom on mobile) | `Side` or `Bottom` |
30
- | `persist` | `boolean` | `false` | Keep DOM after close |
31
- | `lock` | `boolean` | `false` | Prevent ESC and overlay click dismiss |
32
- | `props` | `Record<string, unknown>` | `undefined` | Properties passed to component |
33
- | `close` | `() => void` | `undefined` | Close callback |
34
-
35
- ## Component Properties (schmancy-sheet)
36
- | Property | Type | Default | Description |
37
- |----------|------|---------|-------------|
38
- | `open` | `boolean` | `false` | Open state |
39
- | `position` | `'side' \| 'bottom'` | `'side'` | Panel position |
40
- | `persist` | `boolean` | `false` | Keep in DOM after close |
41
- | `lock` | `boolean` | `false` | Disable dismiss via ESC/overlay |
42
- | `handleHistory` | `boolean` | `true` | Handle browser back button |
43
-
44
- ## Events
45
- | Event | Description |
46
- |-------|-------------|
47
- | `close` | Fired when sheet closes |
48
-
49
- ## Physics
50
- - Glass backdrop: `backdrop-blur-lg` + `backdrop-saturate-150`
51
- - Luminous edge glow on panel (primary color, 15% intensity)
52
- - Spring entry: `scale(0.95)` to `scale(1)` with Blackbird easing
53
- - Side: slides from right; Bottom: slides from bottom
54
- - Background siblings set to `inert` while open
55
- - Stacks with dialogs via shared `overlayStack` z-index manager
56
-
57
- ## Examples
58
- ```typescript
59
- import { sheet, SchmancySheetPosition } from '@mhmo91/schmancy'
60
-
61
- // Open side sheet
62
- sheet.push({
63
- component: UserEditor,
64
- props: { userId: '456' },
65
- })
66
-
67
- // Locked bottom sheet
68
- sheet.push({
69
- component: PaymentForm,
70
- position: SchmancySheetPosition.Bottom,
71
- lock: true,
72
- })
73
-
74
- // Dismiss programmatically
75
- sheet.dismiss()
76
- ```