@mhmo91/schmancy 0.10.4 → 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 (446) hide show
  1. package/custom-elements.json +17 -220
  2. package/dist/agent/schmancy.agent.js +3770 -4600
  3. package/dist/agent/schmancy.agent.js.map +1 -1
  4. package/dist/agent/schmancy.manifest.json +6 -211
  5. package/dist/{area-ZupIezvU.cjs → area-CSQdhCBF.cjs} +1 -1
  6. package/dist/{area-ZupIezvU.cjs.map → area-CSQdhCBF.cjs.map} +1 -1
  7. package/dist/{area-DHVANBbr.js → area-D5haQE-J.js} +1 -1
  8. package/dist/{area-DHVANBbr.js.map → area-D5haQE-J.js.map} +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/area.js +1 -1
  11. package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-B_bJXUjm.cjs} +1 -1
  12. package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-B_bJXUjm.cjs.map} +1 -1
  13. package/dist/{autocomplete-pHvsyfbH.js → autocomplete-DtyjZJ1E.js} +2 -2
  14. package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-DtyjZJ1E.js.map} +1 -1
  15. package/dist/autocomplete.cjs +1 -1
  16. package/dist/autocomplete.js +1 -1
  17. package/dist/avatar.cjs +1 -1
  18. package/dist/avatar.js +2 -2
  19. package/dist/badge.cjs +1 -1
  20. package/dist/badge.js +1 -1
  21. package/dist/{boat-IyEtsNI4.cjs → boat-BJLCp-Hv.cjs} +1 -1
  22. package/dist/{boat-IyEtsNI4.cjs.map → boat-BJLCp-Hv.cjs.map} +1 -1
  23. package/dist/{boat-_Yv3M6YM.js → boat-MT8bRT8u.js} +2 -2
  24. package/dist/{boat-_Yv3M6YM.js.map → boat-MT8bRT8u.js.map} +1 -1
  25. package/dist/boat.cjs +1 -1
  26. package/dist/boat.js +1 -1
  27. package/dist/breadcrumb.cjs +1 -1
  28. package/dist/breadcrumb.js +1 -1
  29. package/dist/{busy-Ck2IXJ4r.js → busy-6BqWGryX.js} +1 -1
  30. package/dist/{busy-Ck2IXJ4r.js.map → busy-6BqWGryX.js.map} +1 -1
  31. package/dist/{busy-CjM39APN.cjs → busy-DSF2E-zy.cjs} +1 -1
  32. package/dist/{busy-CjM39APN.cjs.map → busy-DSF2E-zy.cjs.map} +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +3 -3
  37. package/dist/{card-DUWZmMHc.js → card-CvuVha-W.js} +1 -1
  38. package/dist/{card-DUWZmMHc.js.map → card-CvuVha-W.js.map} +1 -1
  39. package/dist/{card-DIxDuuth.cjs → card-DnKnaHzf.cjs} +1 -1
  40. package/dist/{card-DIxDuuth.cjs.map → card-DnKnaHzf.cjs.map} +1 -1
  41. package/dist/card.cjs +1 -1
  42. package/dist/card.js +1 -1
  43. package/dist/charts.cjs +1 -1
  44. package/dist/charts.js +1 -1
  45. package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-D3u8Wm9r.cjs} +1 -1
  46. package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-D3u8Wm9r.cjs.map} +1 -1
  47. package/dist/{checkbox-DPS1mWG-.js → checkbox-QDRsE8cp.js} +1 -1
  48. package/dist/{checkbox-DPS1mWG-.js.map → checkbox-QDRsE8cp.js.map} +1 -1
  49. package/dist/checkbox.cjs +1 -1
  50. package/dist/checkbox.js +1 -1
  51. package/dist/{chips-UoFbwmlG.cjs → chips-CMoQzop1.cjs} +1 -1
  52. package/dist/{chips-UoFbwmlG.cjs.map → chips-CMoQzop1.cjs.map} +1 -1
  53. package/dist/{chips-BnnXQSA-.js → chips-Dy9vx8JS.js} +4 -4
  54. package/dist/{chips-BnnXQSA-.js.map → chips-Dy9vx8JS.js.map} +1 -1
  55. package/dist/chips.cjs +1 -1
  56. package/dist/chips.js +2 -2
  57. package/dist/{code-highlight-CMilN0B8.cjs → code-highlight-Ddp0oZnm.cjs} +1 -1
  58. package/dist/{code-highlight-CMilN0B8.cjs.map → code-highlight-Ddp0oZnm.cjs.map} +1 -1
  59. package/dist/{code-highlight-kFUJ1Eet.js → code-highlight-DtE2-ObF.js} +1 -1
  60. package/dist/{code-highlight-kFUJ1Eet.js.map → code-highlight-DtE2-ObF.js.map} +1 -1
  61. package/dist/code-highlight.cjs +1 -1
  62. package/dist/code-highlight.js +1 -1
  63. package/dist/connectivity.cjs +1 -1
  64. package/dist/connectivity.js +1 -1
  65. package/dist/content-drawer.cjs +1 -1
  66. package/dist/content-drawer.js +1 -1
  67. package/dist/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
  68. package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
  69. package/dist/date-range-B2NuihKA.cjs +131 -0
  70. package/dist/date-range-B2NuihKA.cjs.map +1 -0
  71. package/dist/{date-range-DOstCIg8.js → date-range-Boesjlic.js} +99 -113
  72. package/dist/date-range-Boesjlic.js.map +1 -0
  73. package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-BI6_4Ahl.cjs} +1 -1
  74. package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-BI6_4Ahl.cjs.map} +1 -1
  75. package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-DBuND2pc.js} +1 -1
  76. package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-DBuND2pc.js.map} +1 -1
  77. package/dist/date-range-inline.cjs +1 -1
  78. package/dist/date-range-inline.js +1 -1
  79. package/dist/date-range.cjs +1 -1
  80. package/dist/date-range.js +1 -1
  81. package/dist/delay.cjs +1 -1
  82. package/dist/delay.js +2 -2
  83. package/dist/{details-BJBbZOO6.cjs → details-BRs_z5-k.cjs} +1 -1
  84. package/dist/{details-BJBbZOO6.cjs.map → details-BRs_z5-k.cjs.map} +1 -1
  85. package/dist/{details-DPc5GxPa.js → details-BrGrUTGC.js} +2 -2
  86. package/dist/{details-DPc5GxPa.js.map → details-BrGrUTGC.js.map} +1 -1
  87. package/dist/details.cjs +1 -1
  88. package/dist/details.js +1 -1
  89. package/dist/directives.cjs +1 -1
  90. package/dist/directives.js +2 -2
  91. package/dist/{divider-DPT3XnG5.cjs → divider-BOxQ2T9h.cjs} +1 -1
  92. package/dist/{divider-DPT3XnG5.cjs.map → divider-BOxQ2T9h.cjs.map} +1 -1
  93. package/dist/{divider-BvJsmSPH.js → divider-W3TiDasp.js} +1 -1
  94. package/dist/{divider-BvJsmSPH.js.map → divider-W3TiDasp.js.map} +1 -1
  95. package/dist/divider.cjs +1 -1
  96. package/dist/divider.js +1 -1
  97. package/dist/dropdown.cjs +1 -1
  98. package/dist/dropdown.js +1 -1
  99. package/dist/{expand-CTqBWVXo.cjs → expand-CnccBF91.cjs} +1 -1
  100. package/dist/{expand-CTqBWVXo.cjs.map → expand-CnccBF91.cjs.map} +1 -1
  101. package/dist/{expand-BMzocdtj.js → expand-Pu8fZ0jZ.js} +2 -2
  102. package/dist/{expand-BMzocdtj.js.map → expand-Pu8fZ0jZ.js.map} +1 -1
  103. package/dist/expand.cjs +1 -1
  104. package/dist/expand.js +1 -1
  105. package/dist/{extra-h_cuxRII.cjs → extra-B8IPs6gG.cjs} +1 -1
  106. package/dist/{extra-h_cuxRII.cjs.map → extra-B8IPs6gG.cjs.map} +1 -1
  107. package/dist/{extra-BeHlUhzv.js → extra-DxEWs41z.js} +1 -1
  108. package/dist/{extra-BeHlUhzv.js.map → extra-DxEWs41z.js.map} +1 -1
  109. package/dist/extra.cjs +1 -1
  110. package/dist/extra.js +1 -1
  111. package/dist/{float-CwVBs11k.cjs → float-BRKa-P6Z.cjs} +1 -1
  112. package/dist/{float-CwVBs11k.cjs.map → float-BRKa-P6Z.cjs.map} +1 -1
  113. package/dist/{float-CTc1xxqH.js → float-WCVdp3um.js} +1 -1
  114. package/dist/{float-CTc1xxqH.js.map → float-WCVdp3um.js.map} +1 -1
  115. package/dist/float.cjs +1 -1
  116. package/dist/float.js +1 -1
  117. package/dist/{form-CSJp687X.cjs.map → form-B2qudx_q.cjs.map} +1 -1
  118. package/dist/{form-BtwOBMZ9.js.map → form-CI59gad4.js.map} +1 -1
  119. package/dist/form.cjs +1 -1
  120. package/dist/form.js +1 -1
  121. package/dist/handover/agent-runtime-followups.md +1 -1
  122. package/dist/handover/agent-runtime-v1.md +3 -3
  123. package/dist/{hashContent-1ARKIsx9.js.map → hashContent-a8uVr3xs.js.map} +1 -1
  124. package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-ejkBgDnN.cjs.map} +1 -1
  125. package/dist/{icons-BbCVrcas.js → icons-C0ufCcdp.js} +2 -2
  126. package/dist/{icons-BbCVrcas.js.map → icons-C0ufCcdp.js.map} +1 -1
  127. package/dist/{icons-qEQW4pjM.cjs → icons-DXEbmg-O.cjs} +1 -1
  128. package/dist/{icons-qEQW4pjM.cjs.map → icons-DXEbmg-O.cjs.map} +1 -1
  129. package/dist/icons.cjs +1 -1
  130. package/dist/icons.js +1 -1
  131. package/dist/{iframe-D6HTruav.cjs → iframe-C6RVODkW.cjs} +1 -1
  132. package/dist/{iframe-D6HTruav.cjs.map → iframe-C6RVODkW.cjs.map} +1 -1
  133. package/dist/{iframe-BJfDIEJf.js → iframe-c9lGxw7x.js} +1 -1
  134. package/dist/{iframe-BJfDIEJf.js.map → iframe-c9lGxw7x.js.map} +1 -1
  135. package/dist/iframe.cjs +1 -1
  136. package/dist/iframe.js +1 -1
  137. package/dist/index.cjs +1 -1
  138. package/dist/index.js +72 -76
  139. package/dist/{input-U26axtcs.cjs → input-B4HM-9-H.cjs} +1 -1
  140. package/dist/{input-U26axtcs.cjs.map → input-B4HM-9-H.cjs.map} +1 -1
  141. package/dist/{input-LTK3cctF.js → input-Pmj_bH37.js} +1 -1
  142. package/dist/{input-LTK3cctF.js.map → input-Pmj_bH37.js.map} +1 -1
  143. package/dist/{input-chip-Ch-aCs3c.js → input-chip-BIGgd_7w.js} +1 -1
  144. package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BIGgd_7w.js.map} +1 -1
  145. package/dist/{input-chip-CADXt0X5.cjs → input-chip-BoDisY6c.cjs} +1 -1
  146. package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-BoDisY6c.cjs.map} +1 -1
  147. package/dist/input.cjs +1 -1
  148. package/dist/input.js +1 -1
  149. package/dist/json.cjs +1 -1
  150. package/dist/json.js +2 -2
  151. package/dist/kbd.cjs +1 -1
  152. package/dist/kbd.js +1 -1
  153. package/dist/{layout-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
  154. package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
  155. package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
  156. package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
  157. package/dist/layout.cjs +1 -1
  158. package/dist/layout.js +1 -1
  159. package/dist/{lightbox-DbYUSfVl.cjs → lightbox-DK1vDKm3.cjs} +1 -1
  160. package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-DK1vDKm3.cjs.map} +1 -1
  161. package/dist/{lightbox-DqG2z3Cn.js → lightbox-K1eJTYXP.js} +2 -2
  162. package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-K1eJTYXP.js.map} +1 -1
  163. package/dist/lightbox.cjs +1 -1
  164. package/dist/lightbox.js +1 -1
  165. package/dist/{list-CLX4sSAw.cjs → list-CEuVqAxN.cjs} +1 -1
  166. package/dist/{list-CLX4sSAw.cjs.map → list-CEuVqAxN.cjs.map} +1 -1
  167. package/dist/{list-D6-_E5ZD.js → list-Ds0Nv1y5.js} +1 -1
  168. package/dist/{list-D6-_E5ZD.js.map → list-Ds0Nv1y5.js.map} +1 -1
  169. package/dist/list.cjs +1 -1
  170. package/dist/list.js +1 -1
  171. package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
  172. package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
  173. package/dist/{mailbox-Ct6iYe-4.cjs → mailbox-CDWqbVvZ.cjs} +58 -58
  174. package/dist/mailbox-CDWqbVvZ.cjs.map +1 -0
  175. package/dist/{mailbox-DsPII8HR.js → mailbox-DD2How0H.js} +112 -101
  176. package/dist/mailbox-DD2How0H.js.map +1 -0
  177. package/dist/mailbox.cjs +1 -1
  178. package/dist/mailbox.js +1 -1
  179. package/dist/{map-Dhy3ta9v.js → map-1uwxxvBa.js} +1 -1
  180. package/dist/{map-Dhy3ta9v.js.map → map-1uwxxvBa.js.map} +1 -1
  181. package/dist/{map-WXeVkx2K.cjs → map-BrBSrIqg.cjs} +1 -1
  182. package/dist/{map-WXeVkx2K.cjs.map → map-BrBSrIqg.cjs.map} +1 -1
  183. package/dist/map.cjs +1 -1
  184. package/dist/map.js +1 -1
  185. package/dist/menu-Bly30Nje.cjs +23 -0
  186. package/dist/menu-Bly30Nje.cjs.map +1 -0
  187. package/dist/menu-L8MK1ma5.js +62 -0
  188. package/dist/menu-L8MK1ma5.js.map +1 -0
  189. package/dist/menu.cjs +1 -1
  190. package/dist/menu.js +1 -1
  191. package/dist/mixins-B34UxxCe.js +627 -0
  192. package/dist/{mixins-CcIWET41.js.map → mixins-B34UxxCe.js.map} +1 -1
  193. package/dist/mixins-CAb0b03r.cjs +298 -0
  194. package/dist/{mixins-De3xfjrm.cjs.map → mixins-CAb0b03r.cjs.map} +1 -1
  195. package/dist/mixins.cjs +1 -1
  196. package/dist/mixins.js +1 -1
  197. package/dist/nav-drawer.cjs +1 -1
  198. package/dist/nav-drawer.js +1 -1
  199. package/dist/navigation-bar.cjs +1 -1
  200. package/dist/navigation-bar.js +1 -1
  201. package/dist/navigation-rail.cjs +1 -1
  202. package/dist/navigation-rail.js +1 -1
  203. package/dist/{notification-D_PQjBSf.cjs → notification-7fSbk8hm.cjs} +1 -1
  204. package/dist/{notification-D_PQjBSf.cjs.map → notification-7fSbk8hm.cjs.map} +1 -1
  205. package/dist/{notification-CVLqQ8c_.js → notification-DB25M-qo.js} +2 -2
  206. package/dist/{notification-CVLqQ8c_.js.map → notification-DB25M-qo.js.map} +1 -1
  207. package/dist/notification.cjs +1 -1
  208. package/dist/notification.js +1 -1
  209. package/dist/{option-rm4HebVs.js → option-DDHa25k5.js} +1 -1
  210. package/dist/{option-rm4HebVs.js.map → option-DDHa25k5.js.map} +1 -1
  211. package/dist/{option-DDU_goh1.cjs → option-HF9Xqbuq.cjs} +1 -1
  212. package/dist/{option-DDU_goh1.cjs.map → option-HF9Xqbuq.cjs.map} +1 -1
  213. package/dist/option.cjs +1 -1
  214. package/dist/option.js +1 -1
  215. package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-CCiTaf_C.js.map} +1 -1
  216. package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-CFGiYf34.cjs.map} +1 -1
  217. package/dist/overlay.cjs +5 -53
  218. package/dist/overlay.cjs.map +1 -1
  219. package/dist/overlay.confirm-body-BDG94R0x.js +104 -0
  220. package/dist/overlay.confirm-body-BDG94R0x.js.map +1 -0
  221. package/dist/overlay.confirm-body-b4Nx_OVf.cjs +49 -0
  222. package/dist/overlay.confirm-body-b4Nx_OVf.cjs.map +1 -0
  223. package/dist/overlay.js +120 -360
  224. package/dist/overlay.js.map +1 -1
  225. package/dist/overlay.service-BUCuZa6V.js +146 -0
  226. package/dist/overlay.service-BUCuZa6V.js.map +1 -0
  227. package/dist/overlay.service-CRHZZY9F.cjs +1 -0
  228. package/dist/overlay.service-CRHZZY9F.cjs.map +1 -0
  229. package/dist/page.cjs +1 -1
  230. package/dist/page.js +4 -4
  231. package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-C4jb-OdM.js} +1 -1
  232. package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-C4jb-OdM.js.map} +1 -1
  233. package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-WEx4CscR.cjs} +1 -1
  234. package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-WEx4CscR.cjs.map} +1 -1
  235. package/dist/payment-card-form.cjs +1 -1
  236. package/dist/payment-card-form.js +1 -1
  237. package/dist/{progress-U3LQkpM2.cjs → progress-54R4QRgW.cjs} +1 -1
  238. package/dist/{progress-U3LQkpM2.cjs.map → progress-54R4QRgW.cjs.map} +1 -1
  239. package/dist/{progress-BRerM5Bn.js → progress-CqOyMM4i.js} +1 -1
  240. package/dist/{progress-BRerM5Bn.js.map → progress-CqOyMM4i.js.map} +1 -1
  241. package/dist/progress.cjs +1 -1
  242. package/dist/progress.js +1 -1
  243. package/dist/qr-scanner.cjs +1 -1
  244. package/dist/qr-scanner.js +1 -1
  245. package/dist/{radio-group-BZ2WoOXJ.js → radio-group-B4zbBIZF.js} +1 -1
  246. package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-B4zbBIZF.js.map} +1 -1
  247. package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-BJqZpYVy.cjs} +1 -1
  248. package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-BJqZpYVy.cjs.map} +1 -1
  249. package/dist/radio-group.cjs +1 -1
  250. package/dist/radio-group.js +1 -1
  251. package/dist/range.cjs +1 -1
  252. package/dist/range.js +1 -1
  253. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-BXpvHN4-.js.map} +1 -1
  254. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-CaC-tdot.cjs.map} +1 -1
  255. package/dist/rxjs-utils.cjs +1 -1
  256. package/dist/rxjs-utils.js +1 -1
  257. package/dist/{scroll-qL-HkMdP.js → scroll-CYm6Krus.js} +1 -1
  258. package/dist/{scroll-qL-HkMdP.js.map → scroll-CYm6Krus.js.map} +1 -1
  259. package/dist/{scroll-DJTjNIT_.cjs → scroll-iSRovYYt.cjs} +1 -1
  260. package/dist/{scroll-DJTjNIT_.cjs.map → scroll-iSRovYYt.cjs.map} +1 -1
  261. package/dist/{select-CnPXUeSf.js → select-1WHseXP6.js} +2 -2
  262. package/dist/{select-CnPXUeSf.js.map → select-1WHseXP6.js.map} +1 -1
  263. package/dist/{select-BvA7v-gL.cjs → select-DiQHtQJN.cjs} +1 -1
  264. package/dist/{select-BvA7v-gL.cjs.map → select-DiQHtQJN.cjs.map} +1 -1
  265. package/dist/select.cjs +1 -1
  266. package/dist/select.js +1 -1
  267. package/dist/skeleton.cjs +1 -1
  268. package/dist/skeleton.js +1 -1
  269. package/dist/skills/INDEX.md +2 -2
  270. package/dist/skills/SKILL.md +13 -9
  271. package/dist/skills/schmancy/INDEX.md +2 -2
  272. package/dist/skills/schmancy/SKILL.md +13 -9
  273. package/dist/slider.cjs +1 -1
  274. package/dist/slider.js +1 -1
  275. package/dist/{splash-screen-C8JCqX5L.js → splash-screen-BwvtKMdN.js} +1 -1
  276. package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-BwvtKMdN.js.map} +1 -1
  277. package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-CJL8DGDe.cjs} +1 -1
  278. package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-CJL8DGDe.cjs.map} +1 -1
  279. package/dist/splash-screen.cjs +1 -1
  280. package/dist/splash-screen.js +1 -1
  281. package/dist/{src-CpRNClhg.cjs → src-Bwr2NR0A.cjs} +13 -13
  282. package/dist/src-Bwr2NR0A.cjs.map +1 -0
  283. package/dist/{src-CqdnWGgr.js → src-UaZeROcW.js} +164 -162
  284. package/dist/src-UaZeROcW.js.map +1 -0
  285. package/dist/steps.cjs +1 -1
  286. package/dist/steps.js +1 -1
  287. package/dist/{surface-Du2Y4vXd.cjs → surface-DE5iuI8e.cjs} +1 -1
  288. package/dist/{surface-Du2Y4vXd.cjs.map → surface-DE5iuI8e.cjs.map} +1 -1
  289. package/dist/{surface-C8jQy8Ym.js → surface-DPUkQ3OL.js} +1 -1
  290. package/dist/{surface-C8jQy8Ym.js.map → surface-DPUkQ3OL.js.map} +1 -1
  291. package/dist/surface.cjs +1 -1
  292. package/dist/surface.js +1 -1
  293. package/dist/switch.cjs +1 -1
  294. package/dist/switch.js +1 -1
  295. package/dist/table.cjs +1 -1
  296. package/dist/table.js +1 -1
  297. package/dist/{tabs-Cyahh9Q6.js → tabs-B2XEQPQl.js} +1 -1
  298. package/dist/{tabs-Cyahh9Q6.js.map → tabs-B2XEQPQl.js.map} +1 -1
  299. package/dist/{tabs-0RfeCa00.cjs → tabs-CsDQ72Qk.cjs} +1 -1
  300. package/dist/{tabs-0RfeCa00.cjs.map → tabs-CsDQ72Qk.cjs.map} +1 -1
  301. package/dist/tabs.cjs +1 -1
  302. package/dist/tabs.js +1 -1
  303. package/dist/teleport.cjs +1 -1
  304. package/dist/teleport.js +1 -1
  305. package/dist/{textarea-CXCcTVnf.js → textarea-C_ps0lL-.js} +1 -1
  306. package/dist/{textarea-CXCcTVnf.js.map → textarea-C_ps0lL-.js.map} +1 -1
  307. package/dist/{textarea-jqRrLxmo.cjs → textarea-aeAP9cDG.cjs} +1 -1
  308. package/dist/{textarea-jqRrLxmo.cjs.map → textarea-aeAP9cDG.cjs.map} +1 -1
  309. package/dist/textarea.cjs +1 -1
  310. package/dist/textarea.js +1 -1
  311. package/dist/theme-DAYTVw13.cjs +181 -0
  312. package/dist/{theme-Hjz9sCN-.cjs.map → theme-DAYTVw13.cjs.map} +1 -1
  313. package/dist/{theme-2KZW2Rfs.js → theme-DAx1iRNr.js} +3 -4
  314. package/dist/{theme-2KZW2Rfs.js.map → theme-DAx1iRNr.js.map} +1 -1
  315. package/dist/{theme-button-9uF1eoHz.js → theme-button-BrHkzCtj.js} +1 -1
  316. package/dist/{theme-button-9uF1eoHz.js.map → theme-button-BrHkzCtj.js.map} +1 -1
  317. package/dist/{theme-button-C7QIbke1.cjs → theme-button-LsMKY_N_.cjs} +1 -1
  318. package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-LsMKY_N_.cjs.map} +1 -1
  319. package/dist/theme-button.cjs +1 -1
  320. package/dist/theme-button.js +1 -1
  321. package/dist/theme.cjs +1 -1
  322. package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-C_034TxG.js.map} +1 -1
  323. package/dist/{theme.interface-D9l33b-M.cjs.map → theme.interface-DESopuZS.cjs.map} +1 -1
  324. package/dist/theme.js +5 -6
  325. package/dist/theme.service-Cfk88qHK.cjs +1 -0
  326. package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
  327. package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
  328. package/dist/theme.service-DIUo1mBP.js.map +1 -0
  329. package/dist/timeline.cjs +1 -1
  330. package/dist/timeline.js +1 -1
  331. package/dist/tree.cjs +1 -1
  332. package/dist/tree.js +1 -1
  333. package/dist/typography.cjs +1 -1
  334. package/dist/typography.js +1 -1
  335. package/dist/{utils-hp-DnFf5.js → utils-BzFQfaIr.js} +1 -1
  336. package/dist/{utils-hp-DnFf5.js.map → utils-BzFQfaIr.js.map} +1 -1
  337. package/dist/{utils-Cr-YO4Np.cjs → utils-oLBkMvor.cjs} +1 -1
  338. package/dist/{utils-Cr-YO4Np.cjs.map → utils-oLBkMvor.cjs.map} +1 -1
  339. package/dist/utils.cjs +1 -1
  340. package/dist/utils.js +2 -2
  341. package/dist/visually-hidden.cjs +1 -1
  342. package/dist/visually-hidden.js +1 -1
  343. package/dist/{window-DtUOWiAj.cjs → window-BJrKS6Zr.cjs} +1 -1
  344. package/dist/{window-DtUOWiAj.cjs.map → window-BJrKS6Zr.cjs.map} +1 -1
  345. package/dist/{window-C7yY9yp5.js → window-CyDuTN80.js} +3 -3
  346. package/dist/{window-C7yY9yp5.js.map → window-CyDuTN80.js.map} +1 -1
  347. package/dist/window.cjs +1 -1
  348. package/dist/window.js +1 -1
  349. package/package.json +1 -1
  350. package/skills/schmancy/INDEX.md +2 -2
  351. package/skills/schmancy/SKILL.md +13 -9
  352. package/src/content-drawer/drawer.ts +24 -7
  353. package/src/content-drawer/events.ts +6 -0
  354. package/src/content-drawer/sheet.ts +13 -12
  355. package/src/date-range/date-range-dialog.ts +4 -4
  356. package/src/date-range/date-range.ts +35 -53
  357. package/src/index.ts +0 -2
  358. package/src/mailbox/email-editor.ts +17 -18
  359. package/src/mailbox/email-template-picker.ts +19 -13
  360. package/src/menu/menu-item.ts +7 -2
  361. package/src/menu/menu.ts +24 -20
  362. package/types/src/content-drawer/drawer.d.ts +2 -0
  363. package/types/src/content-drawer/events.d.ts +6 -0
  364. package/types/src/content-drawer/sheet.d.ts +6 -5
  365. package/types/src/date-range/date-range.d.ts +1 -5
  366. package/types/src/index.d.ts +0 -2
  367. package/types/src/mailbox/email-template-picker.d.ts +7 -7
  368. package/types/src/menu/menu-item.d.ts +1 -0
  369. package/types/src/menu/menu.d.ts +9 -7
  370. package/dist/date-range-BIyrzTRZ.cjs +0 -131
  371. package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
  372. package/dist/date-range-DOstCIg8.js.map +0 -1
  373. package/dist/dialog-service-DI9PPy4H.js +0 -193
  374. package/dist/dialog-service-DI9PPy4H.js.map +0 -1
  375. package/dist/dialog-service-DJd5L0f5.cjs +0 -1
  376. package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
  377. package/dist/dialog.cjs +0 -89
  378. package/dist/dialog.cjs.map +0 -1
  379. package/dist/dialog.js +0 -419
  380. package/dist/dialog.js.map +0 -1
  381. package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
  382. package/dist/mailbox-DsPII8HR.js.map +0 -1
  383. package/dist/menu-Bhd3EapX.js +0 -56
  384. package/dist/menu-Bhd3EapX.js.map +0 -1
  385. package/dist/menu-Cg2aaDjs.cjs +0 -23
  386. package/dist/menu-Cg2aaDjs.cjs.map +0 -1
  387. package/dist/mixins-CcIWET41.js +0 -627
  388. package/dist/mixins-De3xfjrm.cjs +0 -298
  389. package/dist/sheet-BRL07BB4.js +0 -170
  390. package/dist/sheet-BRL07BB4.js.map +0 -1
  391. package/dist/sheet-BYQJAHQn.cjs +0 -35
  392. package/dist/sheet-BYQJAHQn.cjs.map +0 -1
  393. package/dist/sheet.cjs +0 -1
  394. package/dist/sheet.js +0 -3
  395. package/dist/sheet.service-B25bsrYG.cjs +0 -1
  396. package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
  397. package/dist/sheet.service-SPQ8oLCi.js +0 -86
  398. package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
  399. package/dist/skills/dialog.md +0 -69
  400. package/dist/skills/schmancy/dialog.md +0 -69
  401. package/dist/skills/schmancy/sheet.md +0 -76
  402. package/dist/skills/sheet.md +0 -76
  403. package/dist/src-CpRNClhg.cjs.map +0 -1
  404. package/dist/src-CqdnWGgr.js.map +0 -1
  405. package/dist/theme-Hjz9sCN-.cjs +0 -181
  406. package/dist/theme.events-Cv7N4Toe.js +0 -2
  407. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  408. package/dist/theme.events-DM4H5F2d.cjs +0 -1
  409. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  410. package/dist/theme.service-BrUbGoeQ.cjs +0 -1
  411. package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
  412. package/dist/theme.service-CmbOGMA8.js.map +0 -1
  413. package/skills/schmancy/dialog.md +0 -69
  414. package/skills/schmancy/sheet.md +0 -76
  415. package/src/dialog/dialog-base.mixin.ts +0 -576
  416. package/src/dialog/dialog-events.ts +0 -17
  417. package/src/dialog/dialog-service.ts +0 -494
  418. package/src/dialog/dialog.component.ts +0 -414
  419. package/src/dialog/index.ts +0 -3
  420. package/src/sheet/hook.ts +0 -40
  421. package/src/sheet/index.ts +0 -2
  422. package/src/sheet/sheet.service.ts +0 -245
  423. package/src/sheet/sheet.ts +0 -238
  424. package/types/src/dialog/dialog-base.mixin.d.ts +0 -30
  425. package/types/src/dialog/dialog-events.d.ts +0 -13
  426. package/types/src/dialog/dialog-service.d.ts +0 -91
  427. package/types/src/dialog/dialog.component.d.ts +0 -150
  428. package/types/src/dialog/index.d.ts +0 -3
  429. package/types/src/sheet/hook.d.ts +0 -5
  430. package/types/src/sheet/index.d.ts +0 -2
  431. package/types/src/sheet/sheet.d.ts +0 -29
  432. package/types/src/sheet/sheet.service.d.ts +0 -65
  433. /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
  434. /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
  435. /package/dist/{form-CSJp687X.cjs → form-B2qudx_q.cjs} +0 -0
  436. /package/dist/{form-BtwOBMZ9.js → form-CI59gad4.js} +0 -0
  437. /package/dist/{hashContent-1ARKIsx9.js → hashContent-a8uVr3xs.js} +0 -0
  438. /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-ejkBgDnN.cjs} +0 -0
  439. /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
  440. /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
  441. /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-CCiTaf_C.js} +0 -0
  442. /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-CFGiYf34.cjs} +0 -0
  443. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BXpvHN4-.js} +0 -0
  444. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-CaC-tdot.cjs} +0 -0
  445. /package/dist/{theme.interface-DnVNre4O.js → theme.interface-C_034TxG.js} +0 -0
  446. /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-DESopuZS.cjs} +0 -0
@@ -1,576 +0,0 @@
1
- import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'
2
- import { LitElement } from 'lit'
3
- import { distinctUntilChanged, filter, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs'
4
- import type { Constructor } from '../../mixins/constructor'
5
- import type { IBaseMixin } from '../../mixins/baseElement'
6
- import {
7
- BLACKBIRD_EASING,
8
- DURATION_ENTER,
9
- DURATION_EXIT,
10
- DURATION_BACKDROP,
11
- EASE_OUT,
12
- EASE_IN,
13
- } from '../utils/animation'
14
- import { reducedMotion$ } from '../directives/reduced-motion'
15
-
16
- // Mobile breakpoint - matches Tailwind's sm breakpoint
17
- const MOBILE_BREAKPOINT = 640
18
-
19
- // Tablet breakpoint
20
- const TABLET_BREAKPOINT = 1024
21
-
22
- /**
23
- * Fraction of viewport a dialog can occupy before converting to bottom sheet.
24
- * Tablet (640–1024px): 60% — tighter screens benefit from bottom sheet sooner.
25
- * Desktop (>1024px): 80% — plenty of room, keep floating longer.
26
- */
27
- function largeContentThreshold(): number {
28
- return window.innerWidth < TABLET_BREAKPOINT ? 0.6 : 0.8
29
- }
30
-
31
- export interface DialogPosition {
32
- x: number
33
- y: number
34
- }
35
-
36
- export interface VirtualReference {
37
- getBoundingClientRect: () => DOMRect
38
- }
39
-
40
- /**
41
- * Interface for the DialogBase mixin methods
42
- */
43
- export interface IDialogBaseMixin {
44
- position: DialogPosition
45
- isMobile: boolean
46
- dragOffset: number
47
- show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>
48
- hide(result?: boolean): Promise<void>
49
- isCentered(): boolean
50
- isAnimating(): boolean
51
- }
52
-
53
- /**
54
- * Dialog mixin with smart positioning using Floating UI.
55
- *
56
- * On mobile (< 640px), automatically switches to bottom sheet mode
57
- * with swipe-to-dismiss gesture. On tablet/desktop, if content exceeds
58
- * a viewport-dependent threshold, also opens as bottom sheet.
59
- */
60
- export const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {
61
- class DialogBaseClass extends superClass {
62
- position: DialogPosition = { x: 0, y: 0 }
63
- isMobile = false
64
- dragOffset = 0
65
-
66
- protected resolvePromise?: (value: boolean) => void
67
- protected cleanupAutoUpdate?: () => void
68
- protected virtualReference?: VirtualReference
69
-
70
- // Subject to signal when to stop swipe gesture stream
71
- private readonly stopSwipe$ = new Subject<void>()
72
-
73
- // Focus trap state
74
- private lastFocusedElement: Element | null = null
75
- private inertSiblings: HTMLElement[] = []
76
-
77
- // Animation guard
78
- private animating = false
79
-
80
- /** ElementInternals — used for broadcasting `:state(open)` to consumers. */
81
- protected dialogInternals: ElementInternals | undefined = (() => {
82
- try {
83
- return this.attachInternals()
84
- } catch {
85
- return undefined
86
- }
87
- })()
88
-
89
- /**
90
- * Check if the dialog is currently animating
91
- */
92
- isAnimating(): boolean {
93
- return this.animating
94
- }
95
-
96
- /**
97
- * Override in subclass to return the dialog element
98
- */
99
- protected getDialogElement(): HTMLElement | null {
100
- return null
101
- }
102
-
103
- /**
104
- * Override in subclass to return the backdrop element for animations
105
- */
106
- protected getBackdropElement(): HTMLElement | null {
107
- return null
108
- }
109
-
110
- /**
111
- * Override in subclass to return the drag handle element for swipe gestures
112
- */
113
- protected getDragHandleElement(): HTMLElement | null {
114
- return null
115
- }
116
-
117
- connectedCallback(): void {
118
- super.connectedCallback()
119
- this.setupResizeListener()
120
- }
121
-
122
- /**
123
- * Listen for resize to switch between mobile/desktop modes
124
- */
125
- private setupResizeListener(): void {
126
- fromEvent(window, 'resize')
127
- .pipe(
128
- map(() => window.innerWidth < MOBILE_BREAKPOINT),
129
- distinctUntilChanged(),
130
- filter(() => this.hasAttribute('active')),
131
- tap(isMobile => {
132
- if (this.isMobile !== isMobile) {
133
- this.isMobile = isMobile
134
- this.requestUpdate()
135
- const dialog = this.getDialogElement()
136
- if (dialog) {
137
- if (isMobile) {
138
- this.applyBottomSheetStyles(dialog)
139
- this.setupSwipeGesture(dialog)
140
- } else {
141
- this.stopSwipe$.next()
142
- this.setupPositioning()
143
- }
144
- }
145
- }
146
- }),
147
- takeUntil(this.disconnecting),
148
- )
149
- .subscribe()
150
- }
151
-
152
- /**
153
- * Setup RxJS-based swipe gesture for dialog
154
- */
155
- private setupSwipeGesture(dialog: HTMLElement): void {
156
- // Stop any existing swipe gesture
157
- this.stopSwipe$.next()
158
-
159
- let dragStartY = 0
160
- let isDragging = false
161
- let currentY = 0
162
-
163
- const dragHandle = this.getDragHandleElement()
164
- const dragTarget = dragHandle || dialog
165
-
166
- const touchStart$ = fromEvent<TouchEvent>(dragTarget, 'touchstart', { passive: true }).pipe(
167
- tap(e => {
168
- const touch = e.touches[0]
169
- const rect = dialog.getBoundingClientRect()
170
- const touchY = touch.clientY - rect.top
171
-
172
- // Only allow drag from top 80px or drag handle
173
- if (touchY > 80 && !dragHandle) return
174
-
175
- isDragging = true
176
- dragStartY = touch.clientY
177
- currentY = 0
178
- this.dragOffset = 0
179
-
180
- // Disable transitions for immediate feedback
181
- dialog.style.transition = 'none'
182
- dialog.style.willChange = 'transform'
183
- }),
184
- )
185
-
186
- const touchMove$ = fromEvent<TouchEvent>(dialog, 'touchmove', { passive: false }).pipe(
187
- filter(() => isDragging),
188
- tap(e => {
189
- const touch = e.touches[0]
190
- const deltaY = touch.clientY - dragStartY
191
-
192
- // Rubber-band effect for upward drag
193
- if (deltaY < 0) {
194
- currentY = deltaY * 0.2
195
- } else {
196
- currentY = deltaY
197
- }
198
-
199
- this.dragOffset = Math.max(0, deltaY)
200
-
201
- // Direct DOM update - 1:1 tracking
202
- dialog.style.transform = `translateY(${currentY}px)`
203
-
204
- e.preventDefault()
205
- }),
206
- )
207
-
208
- const touchEnd$ = merge(
209
- fromEvent<TouchEvent>(dialog, 'touchend', { passive: true }),
210
- fromEvent<TouchEvent>(dialog, 'touchcancel', { passive: true }),
211
- ).pipe(
212
- filter(() => isDragging),
213
- tap(() => {
214
- isDragging = false
215
-
216
- // Re-enable transitions for snap animation
217
- dialog.style.transition = 'transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)'
218
- dialog.style.willChange = ''
219
-
220
- const dialogHeight = dialog.getBoundingClientRect().height
221
- const threshold = Math.min(100, dialogHeight * 0.25)
222
-
223
- if (this.dragOffset > threshold) {
224
- // Dismiss - animate out
225
- dialog.style.transform = 'translateY(100%)'
226
- this.hide(false)
227
- } else {
228
- // Snap back
229
- dialog.style.transform = 'translateY(0)'
230
- this.dragOffset = 0
231
- }
232
- }),
233
- )
234
-
235
- // Merge all touch streams and subscribe
236
- merge(touchStart$, touchMove$, touchEnd$)
237
- .pipe(takeUntil(merge(this.stopSwipe$, this.disconnecting)))
238
- .subscribe()
239
- }
240
-
241
- /**
242
- * Apply bottom sheet styles for mobile
243
- */
244
- private applyBottomSheetStyles(dialog: HTMLElement): void {
245
- if (this.cleanupAutoUpdate) {
246
- this.cleanupAutoUpdate()
247
- this.cleanupAutoUpdate = undefined
248
- }
249
-
250
- Object.assign(dialog.style, {
251
- position: '',
252
- left: '',
253
- top: '',
254
- transform: '',
255
- maxWidth: '',
256
- })
257
- }
258
-
259
- /**
260
- * Show the dialog at a specific position
261
- */
262
- async show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {
263
- if (this.cleanupAutoUpdate) {
264
- this.cleanupAutoUpdate()
265
- this.cleanupAutoUpdate = undefined
266
- }
267
-
268
- this.isMobile = window.innerWidth < MOBILE_BREAKPOINT
269
-
270
- let x: number, y: number
271
-
272
- if (!positionOrEvent) {
273
- x = window.innerWidth / 2
274
- y = window.innerHeight / 2
275
- } else if ('clientX' in positionOrEvent) {
276
- x = positionOrEvent.clientX
277
- y = positionOrEvent.clientY
278
- } else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {
279
- x = positionOrEvent.touches[0].clientX
280
- y = positionOrEvent.touches[0].clientY
281
- } else {
282
- const pos = positionOrEvent as DialogPosition
283
- x = pos.x
284
- y = pos.y
285
- }
286
-
287
- this.position = { x, y }
288
-
289
- this.virtualReference = {
290
- getBoundingClientRect: () => new DOMRect(x, y, 0, 0),
291
- }
292
-
293
- this.requestUpdate()
294
- await this.updateComplete
295
-
296
- this.setAttribute('active', '')
297
- this.dialogInternals?.states.add('open')
298
- await this.updateComplete
299
-
300
- // Save focus and set siblings to inert for focus trap
301
- this.lastFocusedElement = document.activeElement
302
- const parent = this.parentElement
303
- if (parent) {
304
- this.inertSiblings = []
305
- for (let i = 0; i < parent.children.length; i++) {
306
- const sibling = parent.children[i] as HTMLElement
307
- if (sibling !== this && 'inert' in sibling) {
308
- sibling.inert = true
309
- this.inertSiblings.push(sibling)
310
- }
311
- }
312
- }
313
-
314
- // Escape key listener
315
- fromEvent<KeyboardEvent>(document, 'keydown')
316
- .pipe(
317
- filter(e => e.key === 'Escape'),
318
- tap(e => {
319
- e.preventDefault()
320
- this.hide(false)
321
- }),
322
- takeUntil(merge(this.stopSwipe$, this.disconnecting)),
323
- )
324
- .subscribe()
325
-
326
- const dialog = this.getDialogElement()
327
-
328
- // If content exceeds viewport threshold on desktop, treat as bottom sheet
329
- const threshold = largeContentThreshold()
330
- if (
331
- !this.isMobile &&
332
- dialog &&
333
- (dialog.scrollHeight > window.innerHeight * threshold ||
334
- dialog.scrollWidth > window.innerWidth * threshold)
335
- ) {
336
- this.isMobile = true
337
- this.requestUpdate()
338
- await this.updateComplete
339
- }
340
-
341
- if (this.isMobile) {
342
- if (dialog) {
343
- this.applyBottomSheetStyles(dialog)
344
- this.setupSwipeGesture(dialog)
345
- }
346
- } else {
347
- this.setupPositioning()
348
- }
349
-
350
- this.animating = true
351
- await this.animateIn()
352
- this.animating = false
353
-
354
- return new Promise<boolean>(resolve => {
355
- this.resolvePromise = resolve
356
- })
357
- }
358
-
359
- /**
360
- * Animate dialog entrance
361
- */
362
- private async animateIn(): Promise<void> {
363
- const dialog = this.getDialogElement()
364
- const backdrop = this.getBackdropElement()
365
-
366
- if (reducedMotion$.value) {
367
- if (backdrop) backdrop.style.opacity = '1'
368
- if (dialog) dialog.style.opacity = '1'
369
- return
370
- }
371
-
372
- backdrop?.animate([{ opacity: 0 }, { opacity: 1 }], {
373
- duration: DURATION_BACKDROP,
374
- easing: EASE_OUT,
375
- fill: 'forwards',
376
- })
377
-
378
- if (dialog) {
379
- const animation = this.isMobile
380
- ? [
381
- { opacity: 0, transform: 'translateY(100%)' },
382
- { opacity: 1, transform: 'translateY(0)' },
383
- ]
384
- : [
385
- { opacity: 0, transform: 'scale(0.92) translateY(16px)' },
386
- { opacity: 1, transform: 'scale(1) translateY(0)' },
387
- ]
388
-
389
- await dialog.animate(animation, {
390
- duration: DURATION_ENTER,
391
- easing: BLACKBIRD_EASING,
392
- fill: 'forwards',
393
- }).finished
394
- }
395
- }
396
-
397
- /**
398
- * Animate dialog exit
399
- */
400
- private async animateOut(): Promise<void> {
401
- const dialog = this.getDialogElement()
402
- const backdrop = this.getBackdropElement()
403
-
404
- if (reducedMotion$.value) {
405
- if (backdrop) backdrop.style.opacity = '0'
406
- if (dialog) dialog.style.opacity = '0'
407
- return
408
- }
409
-
410
- const animations: Promise<Animation>[] = []
411
-
412
- if (backdrop) {
413
- animations.push(
414
- backdrop.animate([{ opacity: 1 }, { opacity: 0 }], {
415
- duration: DURATION_EXIT,
416
- easing: EASE_OUT,
417
- fill: 'forwards',
418
- }).finished,
419
- )
420
- }
421
-
422
- if (dialog) {
423
- const animation = this.isMobile
424
- ? [
425
- { opacity: 1, transform: 'translateY(0)' },
426
- { opacity: 0, transform: 'translateY(100%)' },
427
- ]
428
- : [
429
- { opacity: 1, transform: 'scale(1) translateY(0)' },
430
- { opacity: 0, transform: 'scale(0.95) translateY(8px)' },
431
- ]
432
-
433
- animations.push(
434
- dialog.animate(animation, {
435
- duration: DURATION_EXIT,
436
- easing: EASE_IN,
437
- fill: 'forwards',
438
- }).finished,
439
- )
440
- }
441
-
442
- await Promise.all(animations)
443
- }
444
-
445
- /**
446
- * Hide the dialog
447
- */
448
- async hide(result = false): Promise<void> {
449
- this.stopSwipe$.next()
450
-
451
- this.animating = true
452
- await this.animateOut()
453
- this.animating = false
454
-
455
- this.removeAttribute('active')
456
- this.dialogInternals?.states.delete('open')
457
-
458
- // Restore inert siblings
459
- for (const el of this.inertSiblings) {
460
- el.inert = false
461
- }
462
- this.inertSiblings = []
463
-
464
- // Restore focus
465
- if (this.lastFocusedElement) {
466
- const el = this.lastFocusedElement as HTMLElement
467
- if (typeof el.focus === 'function') {
468
- el.focus()
469
- }
470
- this.lastFocusedElement = null
471
- }
472
-
473
- if (this.cleanupAutoUpdate) {
474
- this.cleanupAutoUpdate()
475
- this.cleanupAutoUpdate = undefined
476
- }
477
-
478
- if (this.resolvePromise) {
479
- this.resolvePromise(result)
480
- this.resolvePromise = undefined
481
- }
482
- }
483
-
484
- /**
485
- * Check if position is near center (only skip Floating UI for truly centered dialogs)
486
- */
487
- isCentered(): boolean {
488
- // Use tight tolerance (5%) - only skip Floating UI when position is very close to center
489
- const toleranceX = window.innerWidth * 0.05
490
- const toleranceY = window.innerHeight * 0.05
491
-
492
- return (
493
- Math.abs(this.position.x - window.innerWidth / 2) < toleranceX &&
494
- Math.abs(this.position.y - window.innerHeight / 2) < toleranceY
495
- )
496
- }
497
-
498
- /**
499
- * Setup Floating UI positioning for desktop
500
- */
501
- private setupPositioning(): void {
502
- const dialog = this.getDialogElement()
503
- if (!dialog) return
504
-
505
- if (this.isCentered()) return
506
-
507
- if (this.virtualReference) {
508
- this.cleanupAutoUpdate = autoUpdate(
509
- this.virtualReference,
510
- dialog,
511
- () => this.updatePosition(dialog),
512
- {
513
- ancestorScroll: true,
514
- ancestorResize: true,
515
- elementResize: true,
516
- },
517
- )
518
- this.updatePosition(dialog)
519
- }
520
- }
521
-
522
- /**
523
- * Update position using Floating UI
524
- */
525
- private async updatePosition(dialog: HTMLElement): Promise<void> {
526
- if (!this.virtualReference) return
527
-
528
- const padding = 16
529
-
530
- const { x, y } = await computePosition(this.virtualReference, dialog, {
531
- strategy: 'fixed',
532
- middleware: [
533
- offset(8),
534
- autoPlacement({
535
- padding,
536
- allowedPlacements: [
537
- 'top-start',
538
- 'top-end',
539
- 'bottom-start',
540
- 'bottom-end',
541
- 'left-start',
542
- 'left-end',
543
- 'right-start',
544
- 'right-end',
545
- ],
546
- }),
547
- shift({ padding }),
548
- size({
549
- padding,
550
- apply({ availableWidth, elements }) {
551
- elements.floating.style.maxWidth = `${availableWidth}px`
552
- },
553
- }),
554
- ],
555
- })
556
-
557
- Object.assign(dialog.style, {
558
- position: 'fixed',
559
- left: `${Math.round(x)}px`,
560
- top: `${Math.round(y)}px`,
561
- transform: 'none',
562
- })
563
- }
564
-
565
- disconnectedCallback(): void {
566
- this.stopSwipe$.next()
567
- if (this.cleanupAutoUpdate) {
568
- this.cleanupAutoUpdate()
569
- this.cleanupAutoUpdate = undefined
570
- }
571
- super.disconnectedCallback()
572
- }
573
- }
574
-
575
- return DialogBaseClass as Constructor<IDialogBaseMixin> & T
576
- }
@@ -1,17 +0,0 @@
1
- // Dialog discovery event constants
2
- export const DialogWhereAreYouRicky = 'are-you-there-dialog'
3
- export const DialogHereMorty = 'yes-dialog-here'
4
-
5
- // Event interfaces
6
- export interface DialogWhereAreYouRickyEvent extends CustomEvent {
7
- detail: {
8
- uid: string
9
- }
10
- }
11
-
12
- export interface DialogHereMortyEvent extends CustomEvent {
13
- detail: {
14
- dialog: any // Will be schmancy-dialog instance
15
- theme?: any // Will be schmancy-theme instance
16
- }
17
- }