@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
package/dist/dialog.js DELETED
@@ -1,419 +0,0 @@
1
- import { n as e } from "./mixins-CcIWET41.js";
2
- import { t } from "./decorate-23nYs4Le.js";
3
- import { i as n, n as r, o as i, s as a } from "./animation-BK-8BwY8.js";
4
- import { t as o } from "./reduced-motion-D-L12p7G.js";
5
- import { t as s } from "./cursor-glow-Ah7VXSj7.js";
6
- import { i as c, n as l, r as u, t as d } from "./dialog-service-DI9PPy4H.js";
7
- import { Subject as f, distinctUntilChanged as p, filter as m, fromEvent as h, map as g, merge as _, takeUntil as v, tap as y } from "rxjs";
8
- import { takeUntil as b } from "rxjs/operators";
9
- import { customElement as x, property as S, queryAssignedElements as C } from "lit/decorators.js";
10
- import { css as w, html as T, nothing as E } from "lit";
11
- import { createRef as D, ref as O } from "lit/directives/ref.js";
12
- import { when as k } from "lit/directives/when.js";
13
- import { autoPlacement as A, autoUpdate as j, computePosition as M, offset as N, shift as P, size as F } from "@floating-ui/dom";
14
- var I = (e) => class extends e {
15
- constructor(...e) {
16
- super(...e), this.position = {
17
- x: 0,
18
- y: 0
19
- }, this.isMobile = !1, this.dragOffset = 0, this.stopSwipe$ = new f(), this.lastFocusedElement = null, this.inertSiblings = [], this.animating = !1, this.dialogInternals = (() => {
20
- try {
21
- return this.attachInternals();
22
- } catch {
23
- return;
24
- }
25
- })();
26
- }
27
- isAnimating() {
28
- return this.animating;
29
- }
30
- getDialogElement() {
31
- return null;
32
- }
33
- getBackdropElement() {
34
- return null;
35
- }
36
- getDragHandleElement() {
37
- return null;
38
- }
39
- connectedCallback() {
40
- super.connectedCallback(), this.setupResizeListener();
41
- }
42
- setupResizeListener() {
43
- h(window, "resize").pipe(g(() => window.innerWidth < 640), p(), m(() => this.hasAttribute("active")), y((e) => {
44
- if (this.isMobile !== e) {
45
- this.isMobile = e, this.requestUpdate();
46
- let t = this.getDialogElement();
47
- t && (e ? (this.applyBottomSheetStyles(t), this.setupSwipeGesture(t)) : (this.stopSwipe$.next(), this.setupPositioning()));
48
- }
49
- }), v(this.disconnecting)).subscribe();
50
- }
51
- setupSwipeGesture(e) {
52
- this.stopSwipe$.next();
53
- let t = 0, n = !1, r = 0, i = this.getDragHandleElement();
54
- _(h(i || e, "touchstart", { passive: !0 }).pipe(y((a) => {
55
- let o = a.touches[0], s = e.getBoundingClientRect();
56
- o.clientY - s.top > 80 && !i || (n = !0, t = o.clientY, r = 0, this.dragOffset = 0, e.style.transition = "none", e.style.willChange = "transform");
57
- })), h(e, "touchmove", { passive: !1 }).pipe(m(() => n), y((n) => {
58
- let i = n.touches[0].clientY - t;
59
- r = i < 0 ? .2 * i : i, this.dragOffset = Math.max(0, i), e.style.transform = `translateY(${r}px)`, n.preventDefault();
60
- })), _(h(e, "touchend", { passive: !0 }), h(e, "touchcancel", { passive: !0 })).pipe(m(() => n), y(() => {
61
- n = !1, e.style.transition = "transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)", e.style.willChange = "";
62
- let t = e.getBoundingClientRect().height, r = Math.min(100, .25 * t);
63
- this.dragOffset > r ? (e.style.transform = "translateY(100%)", this.hide(!1)) : (e.style.transform = "translateY(0)", this.dragOffset = 0);
64
- }))).pipe(v(_(this.stopSwipe$, this.disconnecting))).subscribe();
65
- }
66
- applyBottomSheetStyles(e) {
67
- this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), Object.assign(e.style, {
68
- position: "",
69
- left: "",
70
- top: "",
71
- transform: "",
72
- maxWidth: ""
73
- });
74
- }
75
- async show(e) {
76
- let t, n;
77
- if (this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), this.isMobile = window.innerWidth < 640, e) if ("clientX" in e) t = e.clientX, n = e.clientY;
78
- else if ("touches" in e && e.touches.length) t = e.touches[0].clientX, n = e.touches[0].clientY;
79
- else {
80
- let r = e;
81
- t = r.x, n = r.y;
82
- }
83
- else t = window.innerWidth / 2, n = window.innerHeight / 2;
84
- this.position = {
85
- x: t,
86
- y: n
87
- }, this.virtualReference = { getBoundingClientRect: () => new DOMRect(t, n, 0, 0) }, this.requestUpdate(), await this.updateComplete, this.setAttribute("active", ""), this.dialogInternals?.states.add("open"), await this.updateComplete, this.lastFocusedElement = document.activeElement;
88
- let r = this.parentElement;
89
- if (r) {
90
- this.inertSiblings = [];
91
- for (let e = 0; e < r.children.length; e++) {
92
- let t = r.children[e];
93
- t !== this && "inert" in t && (t.inert = !0, this.inertSiblings.push(t));
94
- }
95
- }
96
- h(document, "keydown").pipe(m((e) => e.key === "Escape"), y((e) => {
97
- e.preventDefault(), this.hide(!1);
98
- }), v(_(this.stopSwipe$, this.disconnecting))).subscribe();
99
- let i = this.getDialogElement(), a = window.innerWidth < 1024 ? .6 : .8;
100
- return !this.isMobile && i && (i.scrollHeight > window.innerHeight * a || i.scrollWidth > window.innerWidth * a) && (this.isMobile = !0, this.requestUpdate(), await this.updateComplete), this.isMobile ? i && (this.applyBottomSheetStyles(i), this.setupSwipeGesture(i)) : this.setupPositioning(), this.animating = !0, await this.animateIn(), this.animating = !1, new Promise((e) => {
101
- this.resolvePromise = e;
102
- });
103
- }
104
- async animateIn() {
105
- let e = this.getDialogElement(), t = this.getBackdropElement();
106
- if (o.value) return t && (t.style.opacity = "1"), void (e && (e.style.opacity = "1"));
107
- if (t?.animate([{ opacity: 0 }, { opacity: 1 }], {
108
- duration: 200,
109
- easing: a,
110
- fill: "forwards"
111
- }), e) {
112
- let t = this.isMobile ? [{
113
- opacity: 0,
114
- transform: "translateY(100%)"
115
- }, {
116
- opacity: 1,
117
- transform: "translateY(0)"
118
- }] : [{
119
- opacity: 0,
120
- transform: "scale(0.92) translateY(16px)"
121
- }, {
122
- opacity: 1,
123
- transform: "scale(1) translateY(0)"
124
- }];
125
- await e.animate(t, {
126
- duration: n,
127
- easing: r,
128
- fill: "forwards"
129
- }).finished;
130
- }
131
- }
132
- async animateOut() {
133
- let e = this.getDialogElement(), t = this.getBackdropElement();
134
- if (o.value) return t && (t.style.opacity = "0"), void (e && (e.style.opacity = "0"));
135
- let n = [];
136
- if (t && n.push(t.animate([{ opacity: 1 }, { opacity: 0 }], {
137
- duration: 150,
138
- easing: a,
139
- fill: "forwards"
140
- }).finished), e) {
141
- let t = this.isMobile ? [{
142
- opacity: 1,
143
- transform: "translateY(0)"
144
- }, {
145
- opacity: 0,
146
- transform: "translateY(100%)"
147
- }] : [{
148
- opacity: 1,
149
- transform: "scale(1) translateY(0)"
150
- }, {
151
- opacity: 0,
152
- transform: "scale(0.95) translateY(8px)"
153
- }];
154
- n.push(e.animate(t, {
155
- duration: 150,
156
- easing: i,
157
- fill: "forwards"
158
- }).finished);
159
- }
160
- await Promise.all(n);
161
- }
162
- async hide(e = !1) {
163
- this.stopSwipe$.next(), this.animating = !0, await this.animateOut(), this.animating = !1, this.removeAttribute("active"), this.dialogInternals?.states.delete("open");
164
- for (let e of this.inertSiblings) e.inert = !1;
165
- if (this.inertSiblings = [], this.lastFocusedElement) {
166
- let e = this.lastFocusedElement;
167
- typeof e.focus == "function" && e.focus(), this.lastFocusedElement = null;
168
- }
169
- this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), this.resolvePromise &&= (this.resolvePromise(e), void 0);
170
- }
171
- isCentered() {
172
- let e = .05 * window.innerWidth, t = .05 * window.innerHeight;
173
- return Math.abs(this.position.x - window.innerWidth / 2) < e && Math.abs(this.position.y - window.innerHeight / 2) < t;
174
- }
175
- setupPositioning() {
176
- let e = this.getDialogElement();
177
- e && (this.isCentered() || this.virtualReference && (this.cleanupAutoUpdate = j(this.virtualReference, e, () => this.updatePosition(e), {
178
- ancestorScroll: !0,
179
- ancestorResize: !0,
180
- elementResize: !0
181
- }), this.updatePosition(e)));
182
- }
183
- async updatePosition(e) {
184
- if (!this.virtualReference) return;
185
- let { x: t, y: n } = await M(this.virtualReference, e, {
186
- strategy: "fixed",
187
- middleware: [
188
- N(8),
189
- A({
190
- padding: 16,
191
- allowedPlacements: [
192
- "top-start",
193
- "top-end",
194
- "bottom-start",
195
- "bottom-end",
196
- "left-start",
197
- "left-end",
198
- "right-start",
199
- "right-end"
200
- ]
201
- }),
202
- P({ padding: 16 }),
203
- F({
204
- padding: 16,
205
- apply({ availableWidth: e, elements: t }) {
206
- t.floating.style.maxWidth = `${e}px`;
207
- }
208
- })
209
- ]
210
- });
211
- Object.assign(e.style, {
212
- position: "fixed",
213
- left: `${Math.round(t)}px`,
214
- top: `${Math.round(n)}px`,
215
- transform: "none"
216
- });
217
- }
218
- disconnectedCallback() {
219
- this.stopSwipe$.next(), this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), super.disconnectedCallback();
220
- }
221
- }, L = class extends I(e(w`
222
- :host {
223
- position: fixed;
224
- z-index: var(--schmancy-overlay-z, 10000);
225
- inset: 0;
226
- display: none;
227
- --dialog-width: fit-content;
228
- }
229
-
230
- :host([active]) {
231
- display: block;
232
- }
233
-
234
-
235
- /* Luminous glow around the dialog container */
236
- .dialog {
237
- box-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
238
- border-radius: var(--schmancy-sys-shape-corner-large);
239
- }
240
-
241
- @media (prefers-reduced-motion: reduce) {
242
- .dialog { box-shadow: var(--schmancy-sys-elevation-2); }
243
- }
244
- `)) {
245
- constructor(...e) {
246
- super(...e), this.title = void 0, this.subtitle = void 0, this.message = void 0, this.confirmText = void 0, this.cancelText = void 0, this.variant = "default", this.hideActions = !1, this._confirmDialogRef = D(), this._contentDialogRef = D(), this._backdropRef = D(), this._dragHandleRef = D(), this._a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`;
247
- }
248
- get _titleId() {
249
- return `${this._a11yId}-title`;
250
- }
251
- get _descId() {
252
- return `${this._a11yId}-desc`;
253
- }
254
- getDialogElement() {
255
- return this._contentDialogRef.value ? this._contentDialogRef.value : this._confirmDialogRef.value ?? null;
256
- }
257
- getBackdropElement() {
258
- return this._backdropRef.value ?? null;
259
- }
260
- getDragHandleElement() {
261
- return this._dragHandleRef.value ?? null;
262
- }
263
- get isConfirmMode() {
264
- return !this.hideActions && !(!this.confirmText?.trim() || !this.cancelText?.trim());
265
- }
266
- connectedCallback() {
267
- super.connectedCallback(), h(window, c).pipe(y((e) => {
268
- e.detail.uid === this.uid && this.announcePresence();
269
- }), b(this.disconnecting)).subscribe();
270
- }
271
- announcePresence() {
272
- this.dispatchEvent(new CustomEvent(u, {
273
- detail: { dialog: this },
274
- bubbles: !0,
275
- composed: !0
276
- }));
277
- }
278
- handleConfirm() {
279
- this.hide(!0), this.dispatchEvent(new CustomEvent("confirm", {
280
- bubbles: !0,
281
- composed: !0
282
- }));
283
- }
284
- handleClose() {
285
- this.isAnimating() || (this.hide(!1), this.dispatchEvent(new CustomEvent(this.isConfirmMode ? "cancel" : "close", {
286
- bubbles: !0,
287
- composed: !0
288
- })));
289
- }
290
- renderDragHandle() {
291
- return T`
292
- <div ${O(this._dragHandleRef)} class="dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none">
293
- <div class="w-10 h-1 rounded-full bg-outline-variant"></div>
294
- </div>
295
- `;
296
- }
297
- render() {
298
- let e = this.isCentered(), t = this._contentSlotElements?.length > 0, n = {
299
- dialog: !0,
300
- fixed: !0,
301
- "w-[var(--dialog-width)]": !0,
302
- "max-w-[calc(100vw-2rem)]": !0,
303
- "max-h-[90dvh]": !0,
304
- "overflow-hidden": !0,
305
- "top-1/2": e,
306
- "left-1/2": e,
307
- "-translate-x-1/2": e,
308
- "-translate-y-1/2": e
309
- }, r = this.isMobile ? {
310
- dialog: !0,
311
- fixed: !0,
312
- "inset-x-0": !0,
313
- "bottom-0": !0,
314
- "w-full": !0,
315
- "max-h-[90dvh]": !0,
316
- "overflow-hidden": !0,
317
- "pb-[env(safe-area-inset-bottom)]": !0
318
- } : n, i = this.isMobile ? "flex flex-col-reverse gap-2 w-full" : "flex justify-end gap-3";
319
- if (this.isConfirmMode) {
320
- let e = !!this.title?.trim(), n = !!this.subtitle?.trim(), a = !!this.message?.trim(), o = [n && this._descId + "-sub", a && this._descId + "-msg"].filter(Boolean).join(" ") || "";
321
- return T`
322
- <div ${O(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
323
-
324
- <div
325
- ${O(this._confirmDialogRef)}
326
- class=${this.classMap(r)}
327
- role="alertdialog"
328
- aria-modal="true"
329
- aria-labelledby=${e ? this._titleId : E}
330
- aria-describedby=${o || E}
331
- >
332
- <schmancy-surface
333
- ${s({
334
- radius: 250,
335
- intensity: .1
336
- })}
337
- rounded=${this.isMobile ? "top" : "all"}
338
- type="glass"
339
- fill="all"
340
- class="overflow-hidden"
341
- >
342
- ${this.isMobile ? this.renderDragHandle() : null}
343
- <schmancy-scroll direction="vertical" hide class="p-4 pt-2">
344
- <schmancy-form @submit=${this.handleConfirm}>
345
- ${k(e, () => T`
346
- <schmancy-typography id=${this._titleId} type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
347
- ${k(n, () => T`
348
- <schmancy-typography id="${this._descId}-sub" type="subtitle" token="xs" class="mb-2">
349
- ${this.subtitle}
350
- </schmancy-typography>
351
- `)}
352
- `)}
353
- ${t ? T`<div class="mb-4"><slot name="content"></slot></div>` : k(a, () => T`<schmancy-typography id="${this._descId}-msg" type="body" class="mb-4">${this.message}</schmancy-typography>`)}
354
- <div class=${i}>
355
- <schmancy-button
356
- variant="outlined"
357
- @click=${this.handleClose}
358
- class=${this.isMobile ? "w-full" : ""}
359
- >
360
- ${this.cancelText}
361
- </schmancy-button>
362
- <schmancy-button
363
- type="submit"
364
- variant="filled"
365
- class=${this.isMobile ? "w-full" : ""}
366
- >
367
- ${this.confirmText}
368
- </schmancy-button>
369
- </div>
370
- </schmancy-form>
371
- </schmancy-scroll>
372
- </schmancy-surface>
373
- </div>
374
- `;
375
- }
376
- return T`
377
- <div ${O(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
378
-
379
- <section ${O(this._contentDialogRef)} class=${this.classMap(r)} role="dialog" aria-modal="true">
380
- <schmancy-surface ${s({
381
- radius: 250,
382
- intensity: .1
383
- })} rounded=${this.isMobile ? "top" : "all"} type="glass" fill="all">
384
- ${this.isMobile ? this.renderDragHandle() : null}
385
- <schmancy-scroll direction="vertical" hide class="max-h-[85dvh]">
386
- <slot></slot>
387
- </schmancy-scroll>
388
- </schmancy-surface>
389
- </section>
390
- `;
391
- }
392
- static async confirm(e) {
393
- let t = document.querySelector("schmancy-dialog[data-static-confirm]");
394
- return t || (t = document.createElement("schmancy-dialog"), t.setAttribute("data-static-confirm", ""), document.body.appendChild(t)), t.title = e.title, t.subtitle = e.subtitle, t.message = e.message, t.confirmText = e.confirmText ?? "Confirm", t.cancelText = e.cancelText ?? "Cancel", t.variant = e.variant ?? "default", e.width && t.style.setProperty("--dialog-width", e.width), t.show(e.position);
395
- }
396
- static async ask(e, t) {
397
- return this.confirm({
398
- message: e,
399
- position: t
400
- });
401
- }
402
- };
403
- t([S({
404
- type: String,
405
- reflect: !0
406
- })], L.prototype, "uid", void 0), t([S({ type: String })], L.prototype, "title", void 0), t([S({ type: String })], L.prototype, "subtitle", void 0), t([S({ type: String })], L.prototype, "message", void 0), t([S({
407
- type: String,
408
- attribute: "confirm-text"
409
- })], L.prototype, "confirmText", void 0), t([S({
410
- type: String,
411
- attribute: "cancel-text"
412
- })], L.prototype, "cancelText", void 0), t([S({ type: String })], L.prototype, "variant", void 0), t([S({
413
- type: Boolean,
414
- attribute: "hide-actions"
415
- })], L.prototype, "hideActions", void 0), t([C({
416
- slot: "content",
417
- flatten: !0
418
- })], L.prototype, "_contentSlotElements", void 0), L = t([x("schmancy-dialog")], L);
419
- export { d as $dialog, L as ConfirmDialog, L as SchmancyDialog, I as DialogBase, l as DialogService };
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog.js","names":[],"sources":["../src/dialog/dialog-base.mixin.ts","../src/dialog/dialog.component.ts"],"sourcesContent":["import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { LitElement } from 'lit'\nimport { distinctUntilChanged, filter, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs'\nimport type { Constructor } from '../../mixins/constructor'\nimport type { IBaseMixin } from '../../mixins/baseElement'\nimport {\n\tBLACKBIRD_EASING,\n\tDURATION_ENTER,\n\tDURATION_EXIT,\n\tDURATION_BACKDROP,\n\tEASE_OUT,\n\tEASE_IN,\n} from '../utils/animation'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n// Mobile breakpoint - matches Tailwind's sm breakpoint\nconst MOBILE_BREAKPOINT = 640\n\n// Tablet breakpoint\nconst TABLET_BREAKPOINT = 1024\n\n/**\n * Fraction of viewport a dialog can occupy before converting to bottom sheet.\n * Tablet (640–1024px): 60% — tighter screens benefit from bottom sheet sooner.\n * Desktop (>1024px): 80% — plenty of room, keep floating longer.\n */\nfunction largeContentThreshold(): number {\n\treturn window.innerWidth < TABLET_BREAKPOINT ? 0.6 : 0.8\n}\n\nexport interface DialogPosition {\n\tx: number\n\ty: number\n}\n\nexport interface VirtualReference {\n\tgetBoundingClientRect: () => DOMRect\n}\n\n/**\n * Interface for the DialogBase mixin methods\n */\nexport interface IDialogBaseMixin {\n\tposition: DialogPosition\n\tisMobile: boolean\n\tdragOffset: number\n\tshow(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>\n\thide(result?: boolean): Promise<void>\n\tisCentered(): boolean\n\tisAnimating(): boolean\n}\n\n/**\n * Dialog mixin with smart positioning using Floating UI.\n *\n * On mobile (< 640px), automatically switches to bottom sheet mode\n * with swipe-to-dismiss gesture. On tablet/desktop, if content exceeds\n * a viewport-dependent threshold, also opens as bottom sheet.\n */\nexport const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {\n\tclass DialogBaseClass extends superClass {\n\t\tposition: DialogPosition = { x: 0, y: 0 }\n\t\tisMobile = false\n\t\tdragOffset = 0\n\n\t\tprotected resolvePromise?: (value: boolean) => void\n\t\tprotected cleanupAutoUpdate?: () => void\n\t\tprotected virtualReference?: VirtualReference\n\n\t\t// Subject to signal when to stop swipe gesture stream\n\t\tprivate readonly stopSwipe$ = new Subject<void>()\n\n\t\t// Focus trap state\n\t\tprivate lastFocusedElement: Element | null = null\n\t\tprivate inertSiblings: HTMLElement[] = []\n\n\t\t// Animation guard\n\t\tprivate animating = false\n\n\t\t/** ElementInternals — used for broadcasting `:state(open)` to consumers. */\n\t\tprotected dialogInternals: ElementInternals | undefined = (() => {\n\t\t\ttry {\n\t\t\t\treturn this.attachInternals()\n\t\t\t} catch {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t})()\n\n\t\t/**\n\t\t * Check if the dialog is currently animating\n\t\t */\n\t\tisAnimating(): boolean {\n\t\t\treturn this.animating\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the dialog element\n\t\t */\n\t\tprotected getDialogElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the backdrop element for animations\n\t\t */\n\t\tprotected getBackdropElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the drag handle element for swipe gestures\n\t\t */\n\t\tprotected getDragHandleElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\tconnectedCallback(): void {\n\t\t\tsuper.connectedCallback()\n\t\t\tthis.setupResizeListener()\n\t\t}\n\n\t\t/**\n\t\t * Listen for resize to switch between mobile/desktop modes\n\t\t */\n\t\tprivate setupResizeListener(): void {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(() => window.innerWidth < MOBILE_BREAKPOINT),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tfilter(() => this.hasAttribute('active')),\n\t\t\t\t\ttap(isMobile => {\n\t\t\t\t\t\tif (this.isMobile !== isMobile) {\n\t\t\t\t\t\t\tthis.isMobile = isMobile\n\t\t\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t\t\t\tconst dialog = this.getDialogElement()\n\t\t\t\t\t\t\tif (dialog) {\n\t\t\t\t\t\t\t\tif (isMobile) {\n\t\t\t\t\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.stopSwipe$.next()\n\t\t\t\t\t\t\t\t\tthis.setupPositioning()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Setup RxJS-based swipe gesture for dialog\n\t\t */\n\t\tprivate setupSwipeGesture(dialog: HTMLElement): void {\n\t\t\t// Stop any existing swipe gesture\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tlet dragStartY = 0\n\t\t\tlet isDragging = false\n\t\t\tlet currentY = 0\n\n\t\t\tconst dragHandle = this.getDragHandleElement()\n\t\t\tconst dragTarget = dragHandle || dialog\n\n\t\t\tconst touchStart$ = fromEvent<TouchEvent>(dragTarget, 'touchstart', { passive: true }).pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst rect = dialog.getBoundingClientRect()\n\t\t\t\t\tconst touchY = touch.clientY - rect.top\n\n\t\t\t\t\t// Only allow drag from top 80px or drag handle\n\t\t\t\t\tif (touchY > 80 && !dragHandle) return\n\n\t\t\t\t\tisDragging = true\n\t\t\t\t\tdragStartY = touch.clientY\n\t\t\t\t\tcurrentY = 0\n\t\t\t\t\tthis.dragOffset = 0\n\n\t\t\t\t\t// Disable transitions for immediate feedback\n\t\t\t\t\tdialog.style.transition = 'none'\n\t\t\t\t\tdialog.style.willChange = 'transform'\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchMove$ = fromEvent<TouchEvent>(dialog, 'touchmove', { passive: false }).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst deltaY = touch.clientY - dragStartY\n\n\t\t\t\t\t// Rubber-band effect for upward drag\n\t\t\t\t\tif (deltaY < 0) {\n\t\t\t\t\t\tcurrentY = deltaY * 0.2\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentY = deltaY\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dragOffset = Math.max(0, deltaY)\n\n\t\t\t\t\t// Direct DOM update - 1:1 tracking\n\t\t\t\t\tdialog.style.transform = `translateY(${currentY}px)`\n\n\t\t\t\t\te.preventDefault()\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchEnd$ = merge(\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchend', { passive: true }),\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchcancel', { passive: true }),\n\t\t\t).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(() => {\n\t\t\t\t\tisDragging = false\n\n\t\t\t\t\t// Re-enable transitions for snap animation\n\t\t\t\t\tdialog.style.transition = 'transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)'\n\t\t\t\t\tdialog.style.willChange = ''\n\n\t\t\t\t\tconst dialogHeight = dialog.getBoundingClientRect().height\n\t\t\t\t\tconst threshold = Math.min(100, dialogHeight * 0.25)\n\n\t\t\t\t\tif (this.dragOffset > threshold) {\n\t\t\t\t\t\t// Dismiss - animate out\n\t\t\t\t\t\tdialog.style.transform = 'translateY(100%)'\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Snap back\n\t\t\t\t\t\tdialog.style.transform = 'translateY(0)'\n\t\t\t\t\t\tthis.dragOffset = 0\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\t// Merge all touch streams and subscribe\n\t\t\tmerge(touchStart$, touchMove$, touchEnd$)\n\t\t\t\t.pipe(takeUntil(merge(this.stopSwipe$, this.disconnecting)))\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Apply bottom sheet styles for mobile\n\t\t */\n\t\tprivate applyBottomSheetStyles(dialog: HTMLElement): void {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: '',\n\t\t\t\tleft: '',\n\t\t\t\ttop: '',\n\t\t\t\ttransform: '',\n\t\t\t\tmaxWidth: '',\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Show the dialog at a specific position\n\t\t */\n\t\tasync show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tthis.isMobile = window.innerWidth < MOBILE_BREAKPOINT\n\n\t\t\tlet x: number, y: number\n\n\t\t\tif (!positionOrEvent) {\n\t\t\t\tx = window.innerWidth / 2\n\t\t\t\ty = window.innerHeight / 2\n\t\t\t} else if ('clientX' in positionOrEvent) {\n\t\t\t\tx = positionOrEvent.clientX\n\t\t\t\ty = positionOrEvent.clientY\n\t\t\t} else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {\n\t\t\t\tx = positionOrEvent.touches[0].clientX\n\t\t\t\ty = positionOrEvent.touches[0].clientY\n\t\t\t} else {\n\t\t\t\tconst pos = positionOrEvent as DialogPosition\n\t\t\t\tx = pos.x\n\t\t\t\ty = pos.y\n\t\t\t}\n\n\t\t\tthis.position = { x, y }\n\n\t\t\tthis.virtualReference = {\n\t\t\t\tgetBoundingClientRect: () => new DOMRect(x, y, 0, 0),\n\t\t\t}\n\n\t\t\tthis.requestUpdate()\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.setAttribute('active', '')\n\t\t\tthis.dialogInternals?.states.add('open')\n\t\t\tawait this.updateComplete\n\n\t\t\t// Save focus and set siblings to inert for focus trap\n\t\t\tthis.lastFocusedElement = document.activeElement\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tthis.inertSiblings = []\n\t\t\t\tfor (let i = 0; i < parent.children.length; i++) {\n\t\t\t\t\tconst sibling = parent.children[i] as HTMLElement\n\t\t\t\t\tif (sibling !== this && 'inert' in sibling) {\n\t\t\t\t\t\tsibling.inert = true\n\t\t\t\t\t\tthis.inertSiblings.push(sibling)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Escape key listener\n\t\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape'),\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(merge(this.stopSwipe$, this.disconnecting)),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\n\t\t\tconst dialog = this.getDialogElement()\n\n\t\t\t// If content exceeds viewport threshold on desktop, treat as bottom sheet\n\t\t\tconst threshold = largeContentThreshold()\n\t\t\tif (\n\t\t\t\t!this.isMobile &&\n\t\t\t\tdialog &&\n\t\t\t\t(dialog.scrollHeight > window.innerHeight * threshold ||\n\t\t\t\t\tdialog.scrollWidth > window.innerWidth * threshold)\n\t\t\t) {\n\t\t\t\tthis.isMobile = true\n\t\t\t\tthis.requestUpdate()\n\t\t\t\tawait this.updateComplete\n\t\t\t}\n\n\t\t\tif (this.isMobile) {\n\t\t\t\tif (dialog) {\n\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setupPositioning()\n\t\t\t}\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateIn()\n\t\t\tthis.animating = false\n\n\t\t\treturn new Promise<boolean>(resolve => {\n\t\t\t\tthis.resolvePromise = resolve\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog entrance\n\t\t */\n\t\tprivate async animateIn(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '1'\n\t\t\t\tif (dialog) dialog.style.opacity = '1'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tbackdrop?.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: DURATION_BACKDROP,\n\t\t\t\teasing: EASE_OUT,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.92) translateY(16px)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tawait dialog.animate(animation, {\n\t\t\t\t\tduration: DURATION_ENTER,\n\t\t\t\t\teasing: BLACKBIRD_EASING,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t}).finished\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog exit\n\t\t */\n\t\tprivate async animateOut(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '0'\n\t\t\t\tif (dialog) dialog.style.opacity = '0'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst animations: Promise<Animation>[] = []\n\n\t\t\tif (backdrop) {\n\t\t\t\tanimations.push(\n\t\t\t\t\tbackdrop.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_OUT,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.95) translateY(8px)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tanimations.push(\n\t\t\t\t\tdialog.animate(animation, {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_IN,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tawait Promise.all(animations)\n\t\t}\n\n\t\t/**\n\t\t * Hide the dialog\n\t\t */\n\t\tasync hide(result = false): Promise<void> {\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateOut()\n\t\t\tthis.animating = false\n\n\t\t\tthis.removeAttribute('active')\n\t\t\tthis.dialogInternals?.states.delete('open')\n\n\t\t\t// Restore inert siblings\n\t\t\tfor (const el of this.inertSiblings) {\n\t\t\t\tel.inert = false\n\t\t\t}\n\t\t\tthis.inertSiblings = []\n\n\t\t\t// Restore focus\n\t\t\tif (this.lastFocusedElement) {\n\t\t\t\tconst el = this.lastFocusedElement as HTMLElement\n\t\t\t\tif (typeof el.focus === 'function') {\n\t\t\t\t\tel.focus()\n\t\t\t\t}\n\t\t\t\tthis.lastFocusedElement = null\n\t\t\t}\n\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tif (this.resolvePromise) {\n\t\t\t\tthis.resolvePromise(result)\n\t\t\t\tthis.resolvePromise = undefined\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if position is near center (only skip Floating UI for truly centered dialogs)\n\t\t */\n\t\tisCentered(): boolean {\n\t\t\t// Use tight tolerance (5%) - only skip Floating UI when position is very close to center\n\t\t\tconst toleranceX = window.innerWidth * 0.05\n\t\t\tconst toleranceY = window.innerHeight * 0.05\n\n\t\t\treturn (\n\t\t\t\tMath.abs(this.position.x - window.innerWidth / 2) < toleranceX &&\n\t\t\t\tMath.abs(this.position.y - window.innerHeight / 2) < toleranceY\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * Setup Floating UI positioning for desktop\n\t\t */\n\t\tprivate setupPositioning(): void {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tif (!dialog) return\n\n\t\t\tif (this.isCentered()) return\n\n\t\t\tif (this.virtualReference) {\n\t\t\t\tthis.cleanupAutoUpdate = autoUpdate(\n\t\t\t\t\tthis.virtualReference,\n\t\t\t\t\tdialog,\n\t\t\t\t\t() => this.updatePosition(dialog),\n\t\t\t\t\t{\n\t\t\t\t\t\tancestorScroll: true,\n\t\t\t\t\t\tancestorResize: true,\n\t\t\t\t\t\telementResize: true,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\tthis.updatePosition(dialog)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Update position using Floating UI\n\t\t */\n\t\tprivate async updatePosition(dialog: HTMLElement): Promise<void> {\n\t\t\tif (!this.virtualReference) return\n\n\t\t\tconst padding = 16\n\n\t\t\tconst { x, y } = await computePosition(this.virtualReference, dialog, {\n\t\t\t\tstrategy: 'fixed',\n\t\t\t\tmiddleware: [\n\t\t\t\t\toffset(8),\n\t\t\t\t\tautoPlacement({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tallowedPlacements: [\n\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t'left-start',\n\t\t\t\t\t\t\t'left-end',\n\t\t\t\t\t\t\t'right-start',\n\t\t\t\t\t\t\t'right-end',\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t\tshift({ padding }),\n\t\t\t\t\tsize({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tapply({ availableWidth, elements }) {\n\t\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tleft: `${Math.round(x)}px`,\n\t\t\t\ttop: `${Math.round(y)}px`,\n\t\t\t\ttransform: 'none',\n\t\t\t})\n\t\t}\n\n\t\tdisconnectedCallback(): void {\n\t\t\tthis.stopSwipe$.next()\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\n\treturn DialogBaseClass as Constructor<IDialogBaseMixin> & T\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, tap } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { DialogBase } from './dialog-base.mixin'\nimport { DialogHereMorty, DialogWhereAreYouRicky, DialogWhereAreYouRickyEvent } from './dialog-events'\n\n/**\n * Unified dialog component that handles both content-only and confirm modes.\n *\n * @element schmancy-dialog\n * @slot default - Content slot for dialog body (used in content mode)\n * @slot content - Named slot for custom content in confirm mode\n *\n * @example Content mode (no buttons):\n * ```html\n * <schmancy-dialog>\n * <my-custom-content></my-custom-content>\n * </schmancy-dialog>\n * ```\n *\n * @example Confirm mode (with buttons):\n * ```html\n * <schmancy-dialog\n * title=\"Confirm Action\"\n * message=\"Are you sure?\"\n * confirm-text=\"Yes\"\n * cancel-text=\"No\"\n * ></schmancy-dialog>\n * ```\n */\n@customElement('schmancy-dialog')\nexport class SchmancyDialog extends DialogBase(\n\t$LitElement(css`\n\t\t:host {\n\t\t\tposition: fixed;\n\t\t\tz-index: var(--schmancy-overlay-z, 10000);\n\t\t\tinset: 0;\n\t\t\tdisplay: none;\n\t\t\t--dialog-width: fit-content;\n\t\t}\n\n\t\t:host([active]) {\n\t\t\tdisplay: block;\n\t\t}\n\n\n\t\t/* Luminous glow around the dialog container */\n\t\t.dialog {\n\t\t\tbox-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t\t\tborder-radius: var(--schmancy-sys-shape-corner-large);\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.dialog { box-shadow: var(--schmancy-sys-elevation-2); }\n\t\t}\n\t`),\n) {\n\t/**\n\t * Unique identifier for the dialog instance\n\t */\n\t@property({ type: String, reflect: true }) uid!: string\n\n\t/**\n\t * Dialog title (enables confirm mode when set)\n\t */\n\t@property({ type: String }) title: string | undefined = undefined\n\n\t/**\n\t * Dialog subtitle\n\t */\n\t@property({ type: String }) subtitle: string | undefined = undefined\n\n\t/**\n\t * Dialog message\n\t */\n\t@property({ type: String }) message: string | undefined = undefined\n\n\t/**\n\t * Text for confirm button (enables confirm mode when set with cancelText)\n\t */\n\t@property({ type: String, attribute: 'confirm-text' }) confirmText: string | undefined = undefined\n\n\t/**\n\t * Text for cancel button\n\t */\n\t@property({ type: String, attribute: 'cancel-text' }) cancelText: string | undefined = undefined\n\n\t/**\n\t * Dialog variant (affects button colors in confirm mode)\n\t */\n\t@property({ type: String }) variant: 'default' | 'danger' = 'default'\n\n\t/**\n\t * Whether to hide action buttons (force content mode)\n\t */\n\t@property({ type: Boolean, attribute: 'hide-actions' }) hideActions = false\n\n\t/**\n\t * Slotted children in the named \"content\" slot (confirm mode custom content)\n\t */\n\t@queryAssignedElements({ slot: 'content', flatten: true })\n\tprivate _contentSlotElements!: HTMLElement[]\n\n\t/**\n\t * Ref to the confirm mode wrapper div\n\t */\n\tprivate _confirmDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the content mode section element\n\t */\n\tprivate _contentDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the backdrop element for animations\n\t */\n\tprivate _backdropRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the drag handle element for swipe gestures\n\t */\n\tprivate _dragHandleRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Stable per-instance id used for ARIA labelledby/describedby wiring\n\t */\n\tprivate readonly _a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`\n\tprivate get _titleId() { return `${this._a11yId}-title` }\n\tprivate get _descId() { return `${this._a11yId}-desc` }\n\n\t/**\n\t * Return the dialog element for positioning/size measurement.\n\t * In content mode, returns the first slotted child (the actual component).\n\t * In confirm mode, returns the wrapper div.\n\t */\n\tprotected getDialogElement(): HTMLElement | null {\n\t\t// Content mode: use the section wrapper (slotted content may be display:contents)\n\t\tif (this._contentDialogRef.value) return this._contentDialogRef.value\n\t\t// Confirm mode: use the wrapper div\n\t\treturn this._confirmDialogRef.value ?? null\n\t}\n\n\t/**\n\t * Return the backdrop element for animations\n\t */\n\tprotected getBackdropElement(): HTMLElement | null {\n\t\treturn this._backdropRef.value ?? null\n\t}\n\n\t/**\n\t * Return the drag handle element for swipe gestures\n\t */\n\tprotected getDragHandleElement(): HTMLElement | null {\n\t\treturn this._dragHandleRef.value ?? null\n\t}\n\n\t/**\n\t * Check if dialog is in confirm mode (has buttons)\n\t */\n\tprivate get isConfirmMode(): boolean {\n\t\tif (this.hideActions) return false\n\t\treturn !!(this.confirmText?.trim() && this.cancelText?.trim())\n\t}\n\n\t/**\n\t * Handle component connection to DOM\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Listen for \"where are you ricky\" events\n\t\tfromEvent<DialogWhereAreYouRickyEvent>(window, DialogWhereAreYouRicky)\n\t\t\t.pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Announce this dialog's presence to the service\n\t */\n\tprivate announcePresence(): void {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(DialogHereMorty, {\n\t\t\t\tdetail: { dialog: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle confirm action\n\t */\n\tprivate handleConfirm(): void {\n\t\tthis.hide(true)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('confirm', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle cancel/close action\n\t */\n\tprivate handleClose(): void {\n\t\tif (this.isAnimating()) return\n\t\tthis.hide(false)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(this.isConfirmMode ? 'cancel' : 'close', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Render drag handle for mobile bottom sheet\n\t */\n\tprivate renderDragHandle() {\n\t\treturn html`\n\t\t\t<div ${ref(this._dragHandleRef)} class=\"dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none\">\n\t\t\t\t<div class=\"w-10 h-1 rounded-full bg-outline-variant\"></div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\trender() {\n\t\tconst isCentered = this.isCentered()\n\t\tconst hasCustomContent = this._contentSlotElements?.length > 0\n\n\t\t// Mobile bottom sheet classes\n\t\tconst mobileDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'inset-x-0': true,\n\t\t\t'bottom-0': true,\n\t\t\t'w-full': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t// Safe area padding for notched devices\n\t\t\t'pb-[env(safe-area-inset-bottom)]': true,\n\t\t}\n\n\t\t// Desktop dialog classes\n\t\tconst desktopDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'w-[var(--dialog-width)]': true,\n\t\t\t'max-w-[calc(100vw-2rem)]': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t'top-1/2': isCentered,\n\t\t\t'left-1/2': isCentered,\n\t\t\t'-translate-x-1/2': isCentered,\n\t\t\t'-translate-y-1/2': isCentered,\n\t\t}\n\n\t\tconst dialogClasses = this.isMobile ? mobileDialogClasses : desktopDialogClasses\n\n\t\t// Button classes - stack vertically on mobile\n\t\tconst buttonContainerClasses = this.isMobile\n\t\t\t? 'flex flex-col-reverse gap-2 w-full'\n\t\t\t: 'flex justify-end gap-3'\n\n\t\t// Confirm mode: with title/buttons\n\t\tif (this.isConfirmMode) {\n\t\t\tconst hasTitle = !!this.title?.trim()\n\t\t\tconst hasSubtitle = !!this.subtitle?.trim()\n\t\t\tconst hasMessage = !!this.message?.trim()\n\t\t\tconst describedBy = [hasSubtitle && this._descId + '-sub', hasMessage && this._descId + '-msg']\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(' ') || ''\n\t\t\treturn html`\n\t\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._confirmDialogRef)}\n\t\t\t\t\tclass=${this.classMap(dialogClasses)}\n\t\t\t\t\trole=\"alertdialog\"\n\t\t\t\t\taria-modal=\"true\"\n\t\t\t\t\taria-labelledby=${hasTitle ? this._titleId : nothing}\n\t\t\t\t\taria-describedby=${describedBy || nothing}\n\t\t\t\t>\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\t${cursorGlow({ radius: 250, intensity: 0.1 })}\n\t\t\t\t\t\trounded=${this.isMobile ? 'top' : 'all'}\n\t\t\t\t\t\ttype=\"glass\"\n\t\t\t\t\t\tfill=\"all\"\n\t\t\t\t\t\tclass=\"overflow-hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"p-4 pt-2\">\n\t\t\t\t\t\t\t<schmancy-form @submit=${this.handleConfirm}>\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\thasTitle,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography id=${this._titleId} type=\"title\" token=\"md\" class=\"mb-1\">${this.title}</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\t\thasSubtitle,\n\t\t\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-typography id=\"${this._descId}-sub\" type=\"subtitle\" token=\"xs\" class=\"mb-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t${this.subtitle}\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t${hasCustomContent\n\t\t\t\t\t\t\t\t\t? html`<div class=\"mb-4\"><slot name=\"content\"></slot></div>`\n\t\t\t\t\t\t\t\t\t: when(\n\t\t\t\t\t\t\t\t\t\t\thasMessage,\n\t\t\t\t\t\t\t\t\t\t\t() => html`<schmancy-typography id=\"${this._descId}-msg\" type=\"body\" class=\"mb-4\">${this.message}</schmancy-typography>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div class=${buttonContainerClasses}>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.handleClose}\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.cancelText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.confirmText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</schmancy-form>\n\t\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\t// Content mode: minimal, just slot\n\t\treturn html`\n\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t<section ${ref(this._contentDialogRef)} class=${this.classMap(dialogClasses)} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<schmancy-surface ${cursorGlow({ radius: 250, intensity: 0.1 })} rounded=${this.isMobile ? 'top' : 'all'} type=\"glass\" fill=\"all\">\n\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"max-h-[85dvh]\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t</schmancy-surface>\n\t\t\t</section>\n\t\t`\n\t}\n\n\t/**\n\t * Static helper for confirm dialogs\n\t */\n\tstatic async confirm(options: {\n\t\ttitle?: string\n\t\tsubtitle?: string\n\t\tmessage?: string\n\t\tconfirmText?: string\n\t\tcancelText?: string\n\t\tvariant?: 'default' | 'danger'\n\t\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\t\twidth?: string\n\t}): Promise<boolean> {\n\t\tlet dialog = document.querySelector('schmancy-dialog[data-static-confirm]') as SchmancyDialog\n\n\t\tif (!dialog) {\n\t\t\tdialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\tdialog.setAttribute('data-static-confirm', '')\n\t\t\tdocument.body.appendChild(dialog)\n\t\t}\n\n\t\t// Set options\n\t\tdialog.title = options.title\n\t\tdialog.subtitle = options.subtitle\n\t\tdialog.message = options.message\n\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\tdialog.variant = options.variant ?? 'default'\n\t\tif (options.width) dialog.style.setProperty('--dialog-width', options.width)\n\n\t\treturn dialog.show(options.position)\n\t}\n\n\t/**\n\t * Simple shorthand - just pass message and optionally an event\n\t */\n\tstatic async ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n}\n\n// Alias for backward compatibility\nexport { SchmancyDialog as ConfirmDialog }\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dialog': SchmancyDialog\n\t}\n}\n"],"mappings":"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"}