@mhmo91/schmancy 0.10.3 → 0.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/README.md +20 -19
  2. package/custom-elements.json +17 -233
  3. package/dist/agent/schmancy.agent.js +5709 -9749
  4. package/dist/agent/schmancy.agent.js.map +1 -1
  5. package/dist/agent/schmancy.manifest.json +7 -224
  6. package/dist/{area-ZupIezvU.cjs → area-CSQdhCBF.cjs} +1 -1
  7. package/dist/{area-ZupIezvU.cjs.map → area-CSQdhCBF.cjs.map} +1 -1
  8. package/dist/{area-DHVANBbr.js → area-D5haQE-J.js} +1 -1
  9. package/dist/{area-DHVANBbr.js.map → area-D5haQE-J.js.map} +1 -1
  10. package/dist/area.cjs +1 -1
  11. package/dist/area.js +1 -1
  12. package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-B_bJXUjm.cjs} +1 -1
  13. package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-B_bJXUjm.cjs.map} +1 -1
  14. package/dist/{autocomplete-pHvsyfbH.js → autocomplete-DtyjZJ1E.js} +2 -2
  15. package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-DtyjZJ1E.js.map} +1 -1
  16. package/dist/autocomplete.cjs +1 -1
  17. package/dist/autocomplete.js +1 -1
  18. package/dist/avatar.cjs +1 -1
  19. package/dist/avatar.js +2 -2
  20. package/dist/badge.cjs +1 -1
  21. package/dist/badge.js +1 -1
  22. package/dist/{boat-IyEtsNI4.cjs → boat-BJLCp-Hv.cjs} +1 -1
  23. package/dist/{boat-IyEtsNI4.cjs.map → boat-BJLCp-Hv.cjs.map} +1 -1
  24. package/dist/{boat-_Yv3M6YM.js → boat-MT8bRT8u.js} +2 -2
  25. package/dist/{boat-_Yv3M6YM.js.map → boat-MT8bRT8u.js.map} +1 -1
  26. package/dist/boat.cjs +1 -1
  27. package/dist/boat.js +1 -1
  28. package/dist/breadcrumb.cjs +1 -1
  29. package/dist/breadcrumb.js +1 -1
  30. package/dist/{busy-Ck2IXJ4r.js → busy-6BqWGryX.js} +1 -1
  31. package/dist/{busy-Ck2IXJ4r.js.map → busy-6BqWGryX.js.map} +1 -1
  32. package/dist/{busy-CjM39APN.cjs → busy-DSF2E-zy.cjs} +1 -1
  33. package/dist/{busy-CjM39APN.cjs.map → busy-DSF2E-zy.cjs.map} +1 -1
  34. package/dist/busy.cjs +1 -1
  35. package/dist/busy.js +1 -1
  36. package/dist/button.cjs +1 -1
  37. package/dist/button.js +3 -3
  38. package/dist/{card-DUWZmMHc.js → card-CvuVha-W.js} +1 -1
  39. package/dist/{card-DUWZmMHc.js.map → card-CvuVha-W.js.map} +1 -1
  40. package/dist/{card-DIxDuuth.cjs → card-DnKnaHzf.cjs} +1 -1
  41. package/dist/{card-DIxDuuth.cjs.map → card-DnKnaHzf.cjs.map} +1 -1
  42. package/dist/card.cjs +1 -1
  43. package/dist/card.js +1 -1
  44. package/dist/charts.cjs +1 -1
  45. package/dist/charts.js +1 -1
  46. package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-D3u8Wm9r.cjs} +1 -1
  47. package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-D3u8Wm9r.cjs.map} +1 -1
  48. package/dist/{checkbox-DPS1mWG-.js → checkbox-QDRsE8cp.js} +1 -1
  49. package/dist/{checkbox-DPS1mWG-.js.map → checkbox-QDRsE8cp.js.map} +1 -1
  50. package/dist/checkbox.cjs +1 -1
  51. package/dist/checkbox.js +1 -1
  52. package/dist/{chips-UoFbwmlG.cjs → chips-CMoQzop1.cjs} +1 -1
  53. package/dist/{chips-UoFbwmlG.cjs.map → chips-CMoQzop1.cjs.map} +1 -1
  54. package/dist/{chips-BnnXQSA-.js → chips-Dy9vx8JS.js} +4 -4
  55. package/dist/{chips-BnnXQSA-.js.map → chips-Dy9vx8JS.js.map} +1 -1
  56. package/dist/chips.cjs +1 -1
  57. package/dist/chips.js +2 -2
  58. package/dist/{code-highlight-CMilN0B8.cjs → code-highlight-Ddp0oZnm.cjs} +1 -1
  59. package/dist/{code-highlight-CMilN0B8.cjs.map → code-highlight-Ddp0oZnm.cjs.map} +1 -1
  60. package/dist/{code-highlight-kFUJ1Eet.js → code-highlight-DtE2-ObF.js} +1 -1
  61. package/dist/{code-highlight-kFUJ1Eet.js.map → code-highlight-DtE2-ObF.js.map} +1 -1
  62. package/dist/code-highlight.cjs +1 -1
  63. package/dist/code-highlight.js +1 -1
  64. package/dist/connectivity.cjs +1 -1
  65. package/dist/connectivity.js +1 -1
  66. package/dist/content-drawer.cjs +1 -1
  67. package/dist/content-drawer.js +1 -1
  68. package/dist/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
  69. package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
  70. package/dist/date-range-B2NuihKA.cjs +131 -0
  71. package/dist/date-range-B2NuihKA.cjs.map +1 -0
  72. package/dist/{date-range-DOstCIg8.js → date-range-Boesjlic.js} +99 -113
  73. package/dist/date-range-Boesjlic.js.map +1 -0
  74. package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-BI6_4Ahl.cjs} +1 -1
  75. package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-BI6_4Ahl.cjs.map} +1 -1
  76. package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-DBuND2pc.js} +1 -1
  77. package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-DBuND2pc.js.map} +1 -1
  78. package/dist/date-range-inline.cjs +1 -1
  79. package/dist/date-range-inline.js +1 -1
  80. package/dist/date-range.cjs +1 -1
  81. package/dist/date-range.js +1 -1
  82. package/dist/delay.cjs +1 -1
  83. package/dist/delay.js +2 -2
  84. package/dist/{details-BJBbZOO6.cjs → details-BRs_z5-k.cjs} +1 -1
  85. package/dist/{details-BJBbZOO6.cjs.map → details-BRs_z5-k.cjs.map} +1 -1
  86. package/dist/{details-DPc5GxPa.js → details-BrGrUTGC.js} +2 -2
  87. package/dist/{details-DPc5GxPa.js.map → details-BrGrUTGC.js.map} +1 -1
  88. package/dist/details.cjs +1 -1
  89. package/dist/details.js +1 -1
  90. package/dist/directives.cjs +1 -1
  91. package/dist/directives.js +2 -2
  92. package/dist/{divider-DPT3XnG5.cjs → divider-BOxQ2T9h.cjs} +1 -1
  93. package/dist/{divider-DPT3XnG5.cjs.map → divider-BOxQ2T9h.cjs.map} +1 -1
  94. package/dist/{divider-BvJsmSPH.js → divider-W3TiDasp.js} +1 -1
  95. package/dist/{divider-BvJsmSPH.js.map → divider-W3TiDasp.js.map} +1 -1
  96. package/dist/divider.cjs +1 -1
  97. package/dist/divider.js +1 -1
  98. package/dist/dropdown.cjs +1 -1
  99. package/dist/dropdown.js +1 -1
  100. package/dist/{expand-CTqBWVXo.cjs → expand-CnccBF91.cjs} +1 -1
  101. package/dist/{expand-CTqBWVXo.cjs.map → expand-CnccBF91.cjs.map} +1 -1
  102. package/dist/{expand-BMzocdtj.js → expand-Pu8fZ0jZ.js} +2 -2
  103. package/dist/{expand-BMzocdtj.js.map → expand-Pu8fZ0jZ.js.map} +1 -1
  104. package/dist/expand.cjs +1 -1
  105. package/dist/expand.js +1 -1
  106. package/dist/{extra-h_cuxRII.cjs → extra-B8IPs6gG.cjs} +1 -1
  107. package/dist/{extra-h_cuxRII.cjs.map → extra-B8IPs6gG.cjs.map} +1 -1
  108. package/dist/{extra-BeHlUhzv.js → extra-DxEWs41z.js} +1 -1
  109. package/dist/{extra-BeHlUhzv.js.map → extra-DxEWs41z.js.map} +1 -1
  110. package/dist/extra.cjs +1 -1
  111. package/dist/extra.js +1 -1
  112. package/dist/{float-CwVBs11k.cjs → float-BRKa-P6Z.cjs} +1 -1
  113. package/dist/{float-CwVBs11k.cjs.map → float-BRKa-P6Z.cjs.map} +1 -1
  114. package/dist/{float-CTc1xxqH.js → float-WCVdp3um.js} +1 -1
  115. package/dist/{float-CTc1xxqH.js.map → float-WCVdp3um.js.map} +1 -1
  116. package/dist/float.cjs +1 -1
  117. package/dist/float.js +1 -1
  118. package/dist/{form-CSJp687X.cjs.map → form-B2qudx_q.cjs.map} +1 -1
  119. package/dist/{form-BtwOBMZ9.js.map → form-CI59gad4.js.map} +1 -1
  120. package/dist/form.cjs +1 -1
  121. package/dist/form.js +1 -1
  122. package/dist/handover/agent-runtime-followups.md +1 -1
  123. package/dist/handover/agent-runtime-v1.md +3 -3
  124. package/dist/{hashContent-1ARKIsx9.js.map → hashContent-a8uVr3xs.js.map} +1 -1
  125. package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-ejkBgDnN.cjs.map} +1 -1
  126. package/dist/{icons-BbCVrcas.js → icons-C0ufCcdp.js} +2 -2
  127. package/dist/{icons-BbCVrcas.js.map → icons-C0ufCcdp.js.map} +1 -1
  128. package/dist/{icons-qEQW4pjM.cjs → icons-DXEbmg-O.cjs} +1 -1
  129. package/dist/{icons-qEQW4pjM.cjs.map → icons-DXEbmg-O.cjs.map} +1 -1
  130. package/dist/icons.cjs +1 -1
  131. package/dist/icons.js +1 -1
  132. package/dist/{iframe-D6HTruav.cjs → iframe-C6RVODkW.cjs} +1 -1
  133. package/dist/{iframe-D6HTruav.cjs.map → iframe-C6RVODkW.cjs.map} +1 -1
  134. package/dist/{iframe-BJfDIEJf.js → iframe-c9lGxw7x.js} +1 -1
  135. package/dist/{iframe-BJfDIEJf.js.map → iframe-c9lGxw7x.js.map} +1 -1
  136. package/dist/iframe.cjs +1 -1
  137. package/dist/iframe.js +1 -1
  138. package/dist/index.cjs +1 -1
  139. package/dist/index.js +72 -76
  140. package/dist/{input-U26axtcs.cjs → input-B4HM-9-H.cjs} +1 -1
  141. package/dist/{input-U26axtcs.cjs.map → input-B4HM-9-H.cjs.map} +1 -1
  142. package/dist/{input-LTK3cctF.js → input-Pmj_bH37.js} +1 -1
  143. package/dist/{input-LTK3cctF.js.map → input-Pmj_bH37.js.map} +1 -1
  144. package/dist/{input-chip-Ch-aCs3c.js → input-chip-BIGgd_7w.js} +1 -1
  145. package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BIGgd_7w.js.map} +1 -1
  146. package/dist/{input-chip-CADXt0X5.cjs → input-chip-BoDisY6c.cjs} +1 -1
  147. package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-BoDisY6c.cjs.map} +1 -1
  148. package/dist/input.cjs +1 -1
  149. package/dist/input.js +1 -1
  150. package/dist/json.cjs +1 -1
  151. package/dist/json.js +2 -2
  152. package/dist/kbd.cjs +1 -1
  153. package/dist/kbd.js +1 -1
  154. package/dist/{layout-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
  155. package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
  156. package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
  157. package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
  158. package/dist/layout.cjs +1 -1
  159. package/dist/layout.js +1 -1
  160. package/dist/{lightbox-DbYUSfVl.cjs → lightbox-DK1vDKm3.cjs} +1 -1
  161. package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-DK1vDKm3.cjs.map} +1 -1
  162. package/dist/{lightbox-DqG2z3Cn.js → lightbox-K1eJTYXP.js} +2 -2
  163. package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-K1eJTYXP.js.map} +1 -1
  164. package/dist/lightbox.cjs +1 -1
  165. package/dist/lightbox.js +1 -1
  166. package/dist/{list-CLX4sSAw.cjs → list-CEuVqAxN.cjs} +1 -1
  167. package/dist/{list-CLX4sSAw.cjs.map → list-CEuVqAxN.cjs.map} +1 -1
  168. package/dist/{list-D6-_E5ZD.js → list-Ds0Nv1y5.js} +1 -1
  169. package/dist/{list-D6-_E5ZD.js.map → list-Ds0Nv1y5.js.map} +1 -1
  170. package/dist/list.cjs +1 -1
  171. package/dist/list.js +1 -1
  172. package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
  173. package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
  174. package/dist/{mailbox-Ct6iYe-4.cjs → mailbox-CDWqbVvZ.cjs} +58 -58
  175. package/dist/mailbox-CDWqbVvZ.cjs.map +1 -0
  176. package/dist/{mailbox-DsPII8HR.js → mailbox-DD2How0H.js} +112 -101
  177. package/dist/mailbox-DD2How0H.js.map +1 -0
  178. package/dist/mailbox.cjs +1 -1
  179. package/dist/mailbox.js +1 -1
  180. package/dist/{map-Dhy3ta9v.js → map-1uwxxvBa.js} +1 -1
  181. package/dist/{map-Dhy3ta9v.js.map → map-1uwxxvBa.js.map} +1 -1
  182. package/dist/{map-WXeVkx2K.cjs → map-BrBSrIqg.cjs} +1 -1
  183. package/dist/{map-WXeVkx2K.cjs.map → map-BrBSrIqg.cjs.map} +1 -1
  184. package/dist/map.cjs +1 -1
  185. package/dist/map.js +1 -1
  186. package/dist/menu-Bly30Nje.cjs +23 -0
  187. package/dist/menu-Bly30Nje.cjs.map +1 -0
  188. package/dist/menu-L8MK1ma5.js +62 -0
  189. package/dist/menu-L8MK1ma5.js.map +1 -0
  190. package/dist/menu.cjs +1 -1
  191. package/dist/menu.js +1 -1
  192. package/dist/mixins-B34UxxCe.js +627 -0
  193. package/dist/{mixins-CcIWET41.js.map → mixins-B34UxxCe.js.map} +1 -1
  194. package/dist/mixins-CAb0b03r.cjs +298 -0
  195. package/dist/{mixins-De3xfjrm.cjs.map → mixins-CAb0b03r.cjs.map} +1 -1
  196. package/dist/mixins.cjs +1 -1
  197. package/dist/mixins.js +1 -1
  198. package/dist/nav-drawer.cjs +1 -1
  199. package/dist/nav-drawer.js +1 -1
  200. package/dist/navigation-bar.cjs +1 -1
  201. package/dist/navigation-bar.js +1 -1
  202. package/dist/navigation-rail.cjs +1 -1
  203. package/dist/navigation-rail.js +1 -1
  204. package/dist/{notification-D_PQjBSf.cjs → notification-7fSbk8hm.cjs} +1 -1
  205. package/dist/{notification-D_PQjBSf.cjs.map → notification-7fSbk8hm.cjs.map} +1 -1
  206. package/dist/{notification-CVLqQ8c_.js → notification-DB25M-qo.js} +2 -2
  207. package/dist/{notification-CVLqQ8c_.js.map → notification-DB25M-qo.js.map} +1 -1
  208. package/dist/notification.cjs +1 -1
  209. package/dist/notification.js +1 -1
  210. package/dist/{option-rm4HebVs.js → option-DDHa25k5.js} +1 -1
  211. package/dist/{option-rm4HebVs.js.map → option-DDHa25k5.js.map} +1 -1
  212. package/dist/{option-DDU_goh1.cjs → option-HF9Xqbuq.cjs} +1 -1
  213. package/dist/{option-DDU_goh1.cjs.map → option-HF9Xqbuq.cjs.map} +1 -1
  214. package/dist/option.cjs +1 -1
  215. package/dist/option.js +1 -1
  216. package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-CCiTaf_C.js.map} +1 -1
  217. package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-CFGiYf34.cjs.map} +1 -1
  218. package/dist/overlay.cjs +5 -53
  219. package/dist/overlay.cjs.map +1 -1
  220. package/dist/overlay.confirm-body-BDG94R0x.js +104 -0
  221. package/dist/overlay.confirm-body-BDG94R0x.js.map +1 -0
  222. package/dist/overlay.confirm-body-b4Nx_OVf.cjs +49 -0
  223. package/dist/overlay.confirm-body-b4Nx_OVf.cjs.map +1 -0
  224. package/dist/overlay.js +120 -360
  225. package/dist/overlay.js.map +1 -1
  226. package/dist/overlay.service-BUCuZa6V.js +146 -0
  227. package/dist/overlay.service-BUCuZa6V.js.map +1 -0
  228. package/dist/overlay.service-CRHZZY9F.cjs +1 -0
  229. package/dist/overlay.service-CRHZZY9F.cjs.map +1 -0
  230. package/dist/page.cjs +1 -1
  231. package/dist/page.js +4 -4
  232. package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-C4jb-OdM.js} +1 -1
  233. package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-C4jb-OdM.js.map} +1 -1
  234. package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-WEx4CscR.cjs} +1 -1
  235. package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-WEx4CscR.cjs.map} +1 -1
  236. package/dist/payment-card-form.cjs +1 -1
  237. package/dist/payment-card-form.js +1 -1
  238. package/dist/{progress-U3LQkpM2.cjs → progress-54R4QRgW.cjs} +1 -1
  239. package/dist/{progress-U3LQkpM2.cjs.map → progress-54R4QRgW.cjs.map} +1 -1
  240. package/dist/{progress-BRerM5Bn.js → progress-CqOyMM4i.js} +1 -1
  241. package/dist/{progress-BRerM5Bn.js.map → progress-CqOyMM4i.js.map} +1 -1
  242. package/dist/progress.cjs +1 -1
  243. package/dist/progress.js +1 -1
  244. package/dist/qr-scanner.cjs +1 -1
  245. package/dist/qr-scanner.js +1 -1
  246. package/dist/{radio-group-BZ2WoOXJ.js → radio-group-B4zbBIZF.js} +1 -1
  247. package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-B4zbBIZF.js.map} +1 -1
  248. package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-BJqZpYVy.cjs} +1 -1
  249. package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-BJqZpYVy.cjs.map} +1 -1
  250. package/dist/radio-group.cjs +1 -1
  251. package/dist/radio-group.js +1 -1
  252. package/dist/range.cjs +1 -1
  253. package/dist/range.js +1 -1
  254. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-BXpvHN4-.js.map} +1 -1
  255. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-CaC-tdot.cjs.map} +1 -1
  256. package/dist/rxjs-utils.cjs +1 -1
  257. package/dist/rxjs-utils.js +1 -1
  258. package/dist/{scroll-qL-HkMdP.js → scroll-CYm6Krus.js} +1 -1
  259. package/dist/{scroll-qL-HkMdP.js.map → scroll-CYm6Krus.js.map} +1 -1
  260. package/dist/{scroll-DJTjNIT_.cjs → scroll-iSRovYYt.cjs} +1 -1
  261. package/dist/{scroll-DJTjNIT_.cjs.map → scroll-iSRovYYt.cjs.map} +1 -1
  262. package/dist/{select-CnPXUeSf.js → select-1WHseXP6.js} +2 -2
  263. package/dist/{select-CnPXUeSf.js.map → select-1WHseXP6.js.map} +1 -1
  264. package/dist/{select-BvA7v-gL.cjs → select-DiQHtQJN.cjs} +1 -1
  265. package/dist/{select-BvA7v-gL.cjs.map → select-DiQHtQJN.cjs.map} +1 -1
  266. package/dist/select.cjs +1 -1
  267. package/dist/select.js +1 -1
  268. package/dist/skeleton.cjs +1 -1
  269. package/dist/skeleton.js +1 -1
  270. package/dist/skills/INDEX.md +2 -2
  271. package/dist/skills/SKILL.md +13 -9
  272. package/dist/skills/schmancy/INDEX.md +2 -2
  273. package/dist/skills/schmancy/SKILL.md +13 -9
  274. package/dist/slider.cjs +1 -1
  275. package/dist/slider.js +1 -1
  276. package/dist/{splash-screen-C8JCqX5L.js → splash-screen-BwvtKMdN.js} +1 -1
  277. package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-BwvtKMdN.js.map} +1 -1
  278. package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-CJL8DGDe.cjs} +1 -1
  279. package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-CJL8DGDe.cjs.map} +1 -1
  280. package/dist/splash-screen.cjs +1 -1
  281. package/dist/splash-screen.js +1 -1
  282. package/dist/{src-CpRNClhg.cjs → src-Bwr2NR0A.cjs} +13 -13
  283. package/dist/src-Bwr2NR0A.cjs.map +1 -0
  284. package/dist/{src-CqdnWGgr.js → src-UaZeROcW.js} +164 -162
  285. package/dist/src-UaZeROcW.js.map +1 -0
  286. package/dist/steps.cjs +1 -1
  287. package/dist/steps.js +1 -1
  288. package/dist/{surface-Du2Y4vXd.cjs → surface-DE5iuI8e.cjs} +1 -1
  289. package/dist/{surface-Du2Y4vXd.cjs.map → surface-DE5iuI8e.cjs.map} +1 -1
  290. package/dist/{surface-C8jQy8Ym.js → surface-DPUkQ3OL.js} +1 -1
  291. package/dist/{surface-C8jQy8Ym.js.map → surface-DPUkQ3OL.js.map} +1 -1
  292. package/dist/surface.cjs +1 -1
  293. package/dist/surface.js +1 -1
  294. package/dist/switch.cjs +1 -1
  295. package/dist/switch.js +1 -1
  296. package/dist/table.cjs +1 -1
  297. package/dist/table.js +1 -1
  298. package/dist/{tabs-Cyahh9Q6.js → tabs-B2XEQPQl.js} +1 -1
  299. package/dist/{tabs-Cyahh9Q6.js.map → tabs-B2XEQPQl.js.map} +1 -1
  300. package/dist/{tabs-0RfeCa00.cjs → tabs-CsDQ72Qk.cjs} +1 -1
  301. package/dist/{tabs-0RfeCa00.cjs.map → tabs-CsDQ72Qk.cjs.map} +1 -1
  302. package/dist/tabs.cjs +1 -1
  303. package/dist/tabs.js +1 -1
  304. package/dist/teleport.cjs +1 -1
  305. package/dist/teleport.js +1 -1
  306. package/dist/{textarea-CXCcTVnf.js → textarea-C_ps0lL-.js} +1 -1
  307. package/dist/{textarea-CXCcTVnf.js.map → textarea-C_ps0lL-.js.map} +1 -1
  308. package/dist/{textarea-jqRrLxmo.cjs → textarea-aeAP9cDG.cjs} +1 -1
  309. package/dist/{textarea-jqRrLxmo.cjs.map → textarea-aeAP9cDG.cjs.map} +1 -1
  310. package/dist/textarea.cjs +1 -1
  311. package/dist/textarea.js +1 -1
  312. package/dist/theme-DAYTVw13.cjs +181 -0
  313. package/dist/{theme-Hjz9sCN-.cjs.map → theme-DAYTVw13.cjs.map} +1 -1
  314. package/dist/{theme-2KZW2Rfs.js → theme-DAx1iRNr.js} +3 -4
  315. package/dist/{theme-2KZW2Rfs.js.map → theme-DAx1iRNr.js.map} +1 -1
  316. package/dist/{theme-button-9uF1eoHz.js → theme-button-BrHkzCtj.js} +1 -1
  317. package/dist/{theme-button-9uF1eoHz.js.map → theme-button-BrHkzCtj.js.map} +1 -1
  318. package/dist/{theme-button-C7QIbke1.cjs → theme-button-LsMKY_N_.cjs} +1 -1
  319. package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-LsMKY_N_.cjs.map} +1 -1
  320. package/dist/theme-button.cjs +1 -1
  321. package/dist/theme-button.js +1 -1
  322. package/dist/theme.cjs +1 -1
  323. package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-C_034TxG.js.map} +1 -1
  324. package/dist/{theme.interface-D9l33b-M.cjs.map → theme.interface-DESopuZS.cjs.map} +1 -1
  325. package/dist/theme.js +5 -6
  326. package/dist/theme.service-Cfk88qHK.cjs +1 -0
  327. package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
  328. package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
  329. package/dist/theme.service-DIUo1mBP.js.map +1 -0
  330. package/dist/timeline.cjs +1 -1
  331. package/dist/timeline.js +1 -1
  332. package/dist/tree.cjs +1 -1
  333. package/dist/tree.js +1 -1
  334. package/dist/typography.cjs +1 -1
  335. package/dist/typography.js +1 -1
  336. package/dist/{utils-hp-DnFf5.js → utils-BzFQfaIr.js} +1 -1
  337. package/dist/{utils-hp-DnFf5.js.map → utils-BzFQfaIr.js.map} +1 -1
  338. package/dist/{utils-Cr-YO4Np.cjs → utils-oLBkMvor.cjs} +1 -1
  339. package/dist/{utils-Cr-YO4Np.cjs.map → utils-oLBkMvor.cjs.map} +1 -1
  340. package/dist/utils.cjs +1 -1
  341. package/dist/utils.js +2 -2
  342. package/dist/visually-hidden.cjs +1 -1
  343. package/dist/visually-hidden.js +1 -1
  344. package/dist/{window-DtUOWiAj.cjs → window-BJrKS6Zr.cjs} +1 -1
  345. package/dist/{window-DtUOWiAj.cjs.map → window-BJrKS6Zr.cjs.map} +1 -1
  346. package/dist/{window-C7yY9yp5.js → window-CyDuTN80.js} +3 -3
  347. package/dist/{window-C7yY9yp5.js.map → window-CyDuTN80.js.map} +1 -1
  348. package/dist/window.cjs +1 -1
  349. package/dist/window.js +1 -1
  350. package/package.json +1 -1
  351. package/plugins/vite-plugin-schmancy-manifest.ts +0 -13
  352. package/skills/schmancy/INDEX.md +2 -2
  353. package/skills/schmancy/SKILL.md +13 -9
  354. package/src/agent/agent-entry.test.ts +15 -0
  355. package/src/agent/agent-entry.ts +11 -16
  356. package/src/content-drawer/drawer.ts +24 -7
  357. package/src/content-drawer/events.ts +6 -0
  358. package/src/content-drawer/sheet.ts +13 -12
  359. package/src/date-range/date-range-dialog.ts +4 -4
  360. package/src/date-range/date-range.ts +35 -53
  361. package/src/index.ts +0 -2
  362. package/src/mailbox/email-editor.ts +17 -18
  363. package/src/mailbox/email-template-picker.ts +19 -13
  364. package/src/menu/menu-item.ts +7 -2
  365. package/src/menu/menu.ts +24 -20
  366. package/types/src/agent/agent-entry.d.ts +2 -3
  367. package/types/src/content-drawer/drawer.d.ts +2 -0
  368. package/types/src/content-drawer/events.d.ts +6 -0
  369. package/types/src/content-drawer/sheet.d.ts +6 -5
  370. package/types/src/date-range/date-range.d.ts +1 -5
  371. package/types/src/index.d.ts +0 -2
  372. package/types/src/mailbox/email-template-picker.d.ts +7 -7
  373. package/types/src/menu/menu-item.d.ts +1 -0
  374. package/types/src/menu/menu.d.ts +9 -7
  375. package/dist/date-range-BIyrzTRZ.cjs +0 -131
  376. package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
  377. package/dist/date-range-DOstCIg8.js.map +0 -1
  378. package/dist/dialog-service-DI9PPy4H.js +0 -193
  379. package/dist/dialog-service-DI9PPy4H.js.map +0 -1
  380. package/dist/dialog-service-DJd5L0f5.cjs +0 -1
  381. package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
  382. package/dist/dialog.cjs +0 -89
  383. package/dist/dialog.cjs.map +0 -1
  384. package/dist/dialog.js +0 -419
  385. package/dist/dialog.js.map +0 -1
  386. package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
  387. package/dist/mailbox-DsPII8HR.js.map +0 -1
  388. package/dist/menu-Bhd3EapX.js +0 -56
  389. package/dist/menu-Bhd3EapX.js.map +0 -1
  390. package/dist/menu-Cg2aaDjs.cjs +0 -23
  391. package/dist/menu-Cg2aaDjs.cjs.map +0 -1
  392. package/dist/mixins-CcIWET41.js +0 -627
  393. package/dist/mixins-De3xfjrm.cjs +0 -298
  394. package/dist/sheet-BRL07BB4.js +0 -170
  395. package/dist/sheet-BRL07BB4.js.map +0 -1
  396. package/dist/sheet-BYQJAHQn.cjs +0 -35
  397. package/dist/sheet-BYQJAHQn.cjs.map +0 -1
  398. package/dist/sheet.cjs +0 -1
  399. package/dist/sheet.js +0 -3
  400. package/dist/sheet.service-B25bsrYG.cjs +0 -1
  401. package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
  402. package/dist/sheet.service-SPQ8oLCi.js +0 -86
  403. package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
  404. package/dist/skills/dialog.md +0 -69
  405. package/dist/skills/schmancy/dialog.md +0 -69
  406. package/dist/skills/schmancy/sheet.md +0 -76
  407. package/dist/skills/sheet.md +0 -76
  408. package/dist/src-CpRNClhg.cjs.map +0 -1
  409. package/dist/src-CqdnWGgr.js.map +0 -1
  410. package/dist/theme-Hjz9sCN-.cjs +0 -181
  411. package/dist/theme.events-Cv7N4Toe.js +0 -2
  412. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  413. package/dist/theme.events-DM4H5F2d.cjs +0 -1
  414. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  415. package/dist/theme.service-BrUbGoeQ.cjs +0 -1
  416. package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
  417. package/dist/theme.service-CmbOGMA8.js.map +0 -1
  418. package/skills/schmancy/dialog.md +0 -69
  419. package/skills/schmancy/sheet.md +0 -76
  420. package/src/agent/agent-bundle.test.ts +0 -92
  421. package/src/agent/helpers.ts +0 -159
  422. package/src/agent/schmancy-skill.ts +0 -71
  423. package/src/agent/virtual-manifest.d.ts +0 -10
  424. package/src/dialog/dialog-base.mixin.ts +0 -576
  425. package/src/dialog/dialog-events.ts +0 -17
  426. package/src/dialog/dialog-service.ts +0 -494
  427. package/src/dialog/dialog.component.ts +0 -414
  428. package/src/dialog/index.ts +0 -3
  429. package/src/sheet/hook.ts +0 -40
  430. package/src/sheet/index.ts +0 -2
  431. package/src/sheet/sheet.service.ts +0 -245
  432. package/src/sheet/sheet.ts +0 -238
  433. package/types/src/agent/helpers.d.ts +0 -86
  434. package/types/src/agent/schmancy-skill.d.ts +0 -32
  435. package/types/src/dialog/dialog-base.mixin.d.ts +0 -30
  436. package/types/src/dialog/dialog-events.d.ts +0 -13
  437. package/types/src/dialog/dialog-service.d.ts +0 -91
  438. package/types/src/dialog/dialog.component.d.ts +0 -150
  439. package/types/src/dialog/index.d.ts +0 -3
  440. package/types/src/sheet/hook.d.ts +0 -5
  441. package/types/src/sheet/index.d.ts +0 -2
  442. package/types/src/sheet/sheet.d.ts +0 -29
  443. package/types/src/sheet/sheet.service.d.ts +0 -65
  444. /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
  445. /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
  446. /package/dist/{form-CSJp687X.cjs → form-B2qudx_q.cjs} +0 -0
  447. /package/dist/{form-BtwOBMZ9.js → form-CI59gad4.js} +0 -0
  448. /package/dist/{hashContent-1ARKIsx9.js → hashContent-a8uVr3xs.js} +0 -0
  449. /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-ejkBgDnN.cjs} +0 -0
  450. /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
  451. /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
  452. /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-CCiTaf_C.js} +0 -0
  453. /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-CFGiYf34.cjs} +0 -0
  454. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BXpvHN4-.js} +0 -0
  455. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-CaC-tdot.cjs} +0 -0
  456. /package/dist/{theme.interface-DnVNre4O.js → theme.interface-C_034TxG.js} +0 -0
  457. /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-DESopuZS.cjs} +0 -0
  458. /package/types/src/agent/{agent-bundle.test.d.ts → agent-entry.test.d.ts} +0 -0
@@ -1,414 +0,0 @@
1
- import { $LitElement } from '@mixins/index'
2
- import { css, html, nothing } from 'lit'
3
- import { customElement, property, queryAssignedElements } from 'lit/decorators.js'
4
- import { cursorGlow } from '../directives/cursor-glow'
5
- import { createRef, ref, type Ref } from 'lit/directives/ref.js'
6
- import { when } from 'lit/directives/when.js'
7
- import { fromEvent, tap } from 'rxjs'
8
- import { takeUntil } from 'rxjs/operators'
9
- import { DialogBase } from './dialog-base.mixin'
10
- import { DialogHereMorty, DialogWhereAreYouRicky, DialogWhereAreYouRickyEvent } from './dialog-events'
11
-
12
- /**
13
- * Unified dialog component that handles both content-only and confirm modes.
14
- *
15
- * @element schmancy-dialog
16
- * @slot default - Content slot for dialog body (used in content mode)
17
- * @slot content - Named slot for custom content in confirm mode
18
- *
19
- * @example Content mode (no buttons):
20
- * ```html
21
- * <schmancy-dialog>
22
- * <my-custom-content></my-custom-content>
23
- * </schmancy-dialog>
24
- * ```
25
- *
26
- * @example Confirm mode (with buttons):
27
- * ```html
28
- * <schmancy-dialog
29
- * title="Confirm Action"
30
- * message="Are you sure?"
31
- * confirm-text="Yes"
32
- * cancel-text="No"
33
- * ></schmancy-dialog>
34
- * ```
35
- */
36
- @customElement('schmancy-dialog')
37
- export class SchmancyDialog extends DialogBase(
38
- $LitElement(css`
39
- :host {
40
- position: fixed;
41
- z-index: var(--schmancy-overlay-z, 10000);
42
- inset: 0;
43
- display: none;
44
- --dialog-width: fit-content;
45
- }
46
-
47
- :host([active]) {
48
- display: block;
49
- }
50
-
51
-
52
- /* Luminous glow around the dialog container */
53
- .dialog {
54
- box-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
55
- border-radius: var(--schmancy-sys-shape-corner-large);
56
- }
57
-
58
- @media (prefers-reduced-motion: reduce) {
59
- .dialog { box-shadow: var(--schmancy-sys-elevation-2); }
60
- }
61
- `),
62
- ) {
63
- /**
64
- * Unique identifier for the dialog instance
65
- */
66
- @property({ type: String, reflect: true }) uid!: string
67
-
68
- /**
69
- * Dialog title (enables confirm mode when set)
70
- */
71
- @property({ type: String }) title: string | undefined = undefined
72
-
73
- /**
74
- * Dialog subtitle
75
- */
76
- @property({ type: String }) subtitle: string | undefined = undefined
77
-
78
- /**
79
- * Dialog message
80
- */
81
- @property({ type: String }) message: string | undefined = undefined
82
-
83
- /**
84
- * Text for confirm button (enables confirm mode when set with cancelText)
85
- */
86
- @property({ type: String, attribute: 'confirm-text' }) confirmText: string | undefined = undefined
87
-
88
- /**
89
- * Text for cancel button
90
- */
91
- @property({ type: String, attribute: 'cancel-text' }) cancelText: string | undefined = undefined
92
-
93
- /**
94
- * Dialog variant (affects button colors in confirm mode)
95
- */
96
- @property({ type: String }) variant: 'default' | 'danger' = 'default'
97
-
98
- /**
99
- * Whether to hide action buttons (force content mode)
100
- */
101
- @property({ type: Boolean, attribute: 'hide-actions' }) hideActions = false
102
-
103
- /**
104
- * Slotted children in the named "content" slot (confirm mode custom content)
105
- */
106
- @queryAssignedElements({ slot: 'content', flatten: true })
107
- private _contentSlotElements!: HTMLElement[]
108
-
109
- /**
110
- * Ref to the confirm mode wrapper div
111
- */
112
- private _confirmDialogRef: Ref<HTMLElement> = createRef()
113
-
114
- /**
115
- * Ref to the content mode section element
116
- */
117
- private _contentDialogRef: Ref<HTMLElement> = createRef()
118
-
119
- /**
120
- * Ref to the backdrop element for animations
121
- */
122
- private _backdropRef: Ref<HTMLElement> = createRef()
123
-
124
- /**
125
- * Ref to the drag handle element for swipe gestures
126
- */
127
- private _dragHandleRef: Ref<HTMLElement> = createRef()
128
-
129
- /**
130
- * Stable per-instance id used for ARIA labelledby/describedby wiring
131
- */
132
- private readonly _a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`
133
- private get _titleId() { return `${this._a11yId}-title` }
134
- private get _descId() { return `${this._a11yId}-desc` }
135
-
136
- /**
137
- * Return the dialog element for positioning/size measurement.
138
- * In content mode, returns the first slotted child (the actual component).
139
- * In confirm mode, returns the wrapper div.
140
- */
141
- protected getDialogElement(): HTMLElement | null {
142
- // Content mode: use the section wrapper (slotted content may be display:contents)
143
- if (this._contentDialogRef.value) return this._contentDialogRef.value
144
- // Confirm mode: use the wrapper div
145
- return this._confirmDialogRef.value ?? null
146
- }
147
-
148
- /**
149
- * Return the backdrop element for animations
150
- */
151
- protected getBackdropElement(): HTMLElement | null {
152
- return this._backdropRef.value ?? null
153
- }
154
-
155
- /**
156
- * Return the drag handle element for swipe gestures
157
- */
158
- protected getDragHandleElement(): HTMLElement | null {
159
- return this._dragHandleRef.value ?? null
160
- }
161
-
162
- /**
163
- * Check if dialog is in confirm mode (has buttons)
164
- */
165
- private get isConfirmMode(): boolean {
166
- if (this.hideActions) return false
167
- return !!(this.confirmText?.trim() && this.cancelText?.trim())
168
- }
169
-
170
- /**
171
- * Handle component connection to DOM
172
- */
173
- connectedCallback(): void {
174
- super.connectedCallback()
175
-
176
- // Listen for "where are you ricky" events
177
- fromEvent<DialogWhereAreYouRickyEvent>(window, DialogWhereAreYouRicky)
178
- .pipe(
179
- tap(e => {
180
- if (e.detail.uid === this.uid) this.announcePresence()
181
- }),
182
- takeUntil(this.disconnecting),
183
- )
184
- .subscribe()
185
- }
186
-
187
- /**
188
- * Announce this dialog's presence to the service
189
- */
190
- private announcePresence(): void {
191
- this.dispatchEvent(
192
- new CustomEvent(DialogHereMorty, {
193
- detail: { dialog: this },
194
- bubbles: true,
195
- composed: true,
196
- }),
197
- )
198
- }
199
-
200
- /**
201
- * Handle confirm action
202
- */
203
- private handleConfirm(): void {
204
- this.hide(true)
205
- this.dispatchEvent(
206
- new CustomEvent('confirm', {
207
- bubbles: true,
208
- composed: true,
209
- }),
210
- )
211
- }
212
-
213
- /**
214
- * Handle cancel/close action
215
- */
216
- private handleClose(): void {
217
- if (this.isAnimating()) return
218
- this.hide(false)
219
- this.dispatchEvent(
220
- new CustomEvent(this.isConfirmMode ? 'cancel' : 'close', {
221
- bubbles: true,
222
- composed: true,
223
- }),
224
- )
225
- }
226
-
227
- /**
228
- * Render drag handle for mobile bottom sheet
229
- */
230
- private renderDragHandle() {
231
- return html`
232
- <div ${ref(this._dragHandleRef)} class="dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none">
233
- <div class="w-10 h-1 rounded-full bg-outline-variant"></div>
234
- </div>
235
- `
236
- }
237
-
238
- render() {
239
- const isCentered = this.isCentered()
240
- const hasCustomContent = this._contentSlotElements?.length > 0
241
-
242
- // Mobile bottom sheet classes
243
- const mobileDialogClasses = {
244
- dialog: true,
245
- fixed: true,
246
- 'inset-x-0': true,
247
- 'bottom-0': true,
248
- 'w-full': true,
249
- 'max-h-[90dvh]': true,
250
- 'overflow-hidden': true,
251
- // Safe area padding for notched devices
252
- 'pb-[env(safe-area-inset-bottom)]': true,
253
- }
254
-
255
- // Desktop dialog classes
256
- const desktopDialogClasses = {
257
- dialog: true,
258
- fixed: true,
259
- 'w-[var(--dialog-width)]': true,
260
- 'max-w-[calc(100vw-2rem)]': true,
261
- 'max-h-[90dvh]': true,
262
- 'overflow-hidden': true,
263
- 'top-1/2': isCentered,
264
- 'left-1/2': isCentered,
265
- '-translate-x-1/2': isCentered,
266
- '-translate-y-1/2': isCentered,
267
- }
268
-
269
- const dialogClasses = this.isMobile ? mobileDialogClasses : desktopDialogClasses
270
-
271
- // Button classes - stack vertically on mobile
272
- const buttonContainerClasses = this.isMobile
273
- ? 'flex flex-col-reverse gap-2 w-full'
274
- : 'flex justify-end gap-3'
275
-
276
- // Confirm mode: with title/buttons
277
- if (this.isConfirmMode) {
278
- const hasTitle = !!this.title?.trim()
279
- const hasSubtitle = !!this.subtitle?.trim()
280
- const hasMessage = !!this.message?.trim()
281
- const describedBy = [hasSubtitle && this._descId + '-sub', hasMessage && this._descId + '-msg']
282
- .filter(Boolean)
283
- .join(' ') || ''
284
- return html`
285
- <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>
286
-
287
- <div
288
- ${ref(this._confirmDialogRef)}
289
- class=${this.classMap(dialogClasses)}
290
- role="alertdialog"
291
- aria-modal="true"
292
- aria-labelledby=${hasTitle ? this._titleId : nothing}
293
- aria-describedby=${describedBy || nothing}
294
- >
295
- <schmancy-surface
296
- ${cursorGlow({ radius: 250, intensity: 0.1 })}
297
- rounded=${this.isMobile ? 'top' : 'all'}
298
- type="glass"
299
- fill="all"
300
- class="overflow-hidden"
301
- >
302
- ${this.isMobile ? this.renderDragHandle() : null}
303
- <schmancy-scroll direction="vertical" hide class="p-4 pt-2">
304
- <schmancy-form @submit=${this.handleConfirm}>
305
- ${when(
306
- hasTitle,
307
- () => html`
308
- <schmancy-typography id=${this._titleId} type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
309
- ${when(
310
- hasSubtitle,
311
- () => html`
312
- <schmancy-typography id="${this._descId}-sub" type="subtitle" token="xs" class="mb-2">
313
- ${this.subtitle}
314
- </schmancy-typography>
315
- `,
316
- )}
317
- `,
318
- )}
319
- ${hasCustomContent
320
- ? html`<div class="mb-4"><slot name="content"></slot></div>`
321
- : when(
322
- hasMessage,
323
- () => html`<schmancy-typography id="${this._descId}-msg" type="body" class="mb-4">${this.message}</schmancy-typography>`,
324
- )}
325
- <div class=${buttonContainerClasses}>
326
- <schmancy-button
327
- variant="outlined"
328
- @click=${this.handleClose}
329
- class=${this.isMobile ? 'w-full' : ''}
330
- >
331
- ${this.cancelText}
332
- </schmancy-button>
333
- <schmancy-button
334
- type="submit"
335
- variant="filled"
336
- class=${this.isMobile ? 'w-full' : ''}
337
- >
338
- ${this.confirmText}
339
- </schmancy-button>
340
- </div>
341
- </schmancy-form>
342
- </schmancy-scroll>
343
- </schmancy-surface>
344
- </div>
345
- `
346
- }
347
-
348
- // Content mode: minimal, just slot
349
- return html`
350
- <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>
351
-
352
- <section ${ref(this._contentDialogRef)} class=${this.classMap(dialogClasses)} role="dialog" aria-modal="true">
353
- <schmancy-surface ${cursorGlow({ radius: 250, intensity: 0.1 })} rounded=${this.isMobile ? 'top' : 'all'} type="glass" fill="all">
354
- ${this.isMobile ? this.renderDragHandle() : null}
355
- <schmancy-scroll direction="vertical" hide class="max-h-[85dvh]">
356
- <slot></slot>
357
- </schmancy-scroll>
358
- </schmancy-surface>
359
- </section>
360
- `
361
- }
362
-
363
- /**
364
- * Static helper for confirm dialogs
365
- */
366
- static async confirm(options: {
367
- title?: string
368
- subtitle?: string
369
- message?: string
370
- confirmText?: string
371
- cancelText?: string
372
- variant?: 'default' | 'danger'
373
- position?: { x: number; y: number } | MouseEvent | TouchEvent
374
- width?: string
375
- }): Promise<boolean> {
376
- let dialog = document.querySelector('schmancy-dialog[data-static-confirm]') as SchmancyDialog
377
-
378
- if (!dialog) {
379
- dialog = document.createElement('schmancy-dialog') as SchmancyDialog
380
- dialog.setAttribute('data-static-confirm', '')
381
- document.body.appendChild(dialog)
382
- }
383
-
384
- // Set options
385
- dialog.title = options.title
386
- dialog.subtitle = options.subtitle
387
- dialog.message = options.message
388
- dialog.confirmText = options.confirmText ?? 'Confirm'
389
- dialog.cancelText = options.cancelText ?? 'Cancel'
390
- dialog.variant = options.variant ?? 'default'
391
- if (options.width) dialog.style.setProperty('--dialog-width', options.width)
392
-
393
- return dialog.show(options.position)
394
- }
395
-
396
- /**
397
- * Simple shorthand - just pass message and optionally an event
398
- */
399
- static async ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {
400
- return this.confirm({
401
- message,
402
- position: event,
403
- })
404
- }
405
- }
406
-
407
- // Alias for backward compatibility
408
- export { SchmancyDialog as ConfirmDialog }
409
-
410
- declare global {
411
- interface HTMLElementTagNameMap {
412
- 'schmancy-dialog': SchmancyDialog
413
- }
414
- }
@@ -1,3 +0,0 @@
1
- export * from './dialog-service'
2
- export * from './dialog.component'
3
- export * from './dialog-base.mixin'
package/src/sheet/hook.ts DELETED
@@ -1,40 +0,0 @@
1
- // @watch decorator
2
- //
3
- // Runs when an observed property changes, e.g. @property or @state, but before the component updates.
4
- //
5
- // To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start
6
- // watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.
7
- //
8
- // Usage:
9
- //
10
- // @watch('propName')
11
- // handlePropChange(oldValue, newValue) {
12
- // ...
13
- // }
14
- //
15
- interface WatchOptions {
16
- waitUntilFirstUpdate?: boolean
17
- }
18
-
19
- export function on(propName: string, options?: WatchOptions) {
20
- return (protoOrDescriptor: any, name: string): any => {
21
- const { willUpdate } = protoOrDescriptor
22
-
23
- options = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions
24
-
25
- protoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {
26
- willUpdate.call(this, changedProps)
27
-
28
- if (changedProps.has(propName)) {
29
- const oldValue = changedProps.get(propName)
30
- const newValue = this[propName]
31
-
32
- if (oldValue !== newValue) {
33
- if (!options?.waitUntilFirstUpdate || this.hasUpdated) {
34
- this[name](oldValue, newValue)
35
- }
36
- }
37
- }
38
- }
39
- }
40
- }
@@ -1,2 +0,0 @@
1
- export * from './sheet.service'
2
- export * from './sheet'
@@ -1,245 +0,0 @@
1
- import {
2
- delay,
3
- fromEvent,
4
- map,
5
- of,
6
- Subject,
7
- switchMap,
8
- take,
9
- tap,
10
- } from 'rxjs'
11
- import { $sounds } from '../audio'
12
- import { ComponentType } from '../area/router.types'
13
- import { discoverComponent } from '@mixins/discovery.service'
14
- import { overlayStack } from '../utils/overlay-stack'
15
- import SchmancySheet from './sheet'
16
-
17
- export enum SchmancySheetPosition {
18
- Side = 'side',
19
- Bottom = 'bottom',
20
- }
21
-
22
- export type SheetConfig = {
23
- component: ComponentType
24
- uid?: string
25
- position?: SchmancySheetPosition
26
- persist?: boolean
27
- close?: () => void
28
- lock?: boolean // Controls both ESC and overlay click dismissal
29
- onBeforeOpen?: (component: HTMLElement) => void
30
- onAfterOpen?: (component: HTMLElement) => void
31
- props?: Record<string, unknown> // Properties to pass to the component
32
- }
33
-
34
- // Keep old name for backward compatibility
35
- type BottomSheeetTarget = SheetConfig
36
-
37
- // Function to determine the position based on screen size
38
- const getPosition = (): SchmancySheetPosition => {
39
- return window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint
40
- }
41
-
42
- class BottomSheetService {
43
- bottomSheet = new Subject<BottomSheeetTarget>()
44
- // Track currently open sheets
45
- private activeSheets = new Set<string>()
46
- // To track if we've set up the popstate listener
47
- private popStateListenerActive = false
48
-
49
- constructor() {
50
- this.setupSheetOpeningLogic()
51
- this.setupPopStateListener()
52
- }
53
-
54
- /**
55
- * Sets up the main sheet opening logic
56
- */
57
- private setupSheetOpeningLogic() {
58
- this.bottomSheet
59
- .pipe(
60
- switchMap(target => {
61
- const uid = target.uid ?? `sheet-${Date.now()}`
62
-
63
- // Discover existing sheet with this uid
64
- return discoverComponent<SchmancySheet>('schmancy-sheet').pipe(
65
- map(existingSheet => {
66
- // Check if discovered sheet matches our uid
67
- const sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null
68
- return { target, existingSheet: sheet, uid }
69
- })
70
- )
71
- }),
72
- switchMap(({ target, existingSheet, uid }) => {
73
- // Discover theme container if creating new sheet
74
- if (existingSheet) {
75
- return of({ target, sheet: existingSheet, uid })
76
- }
77
-
78
- return discoverComponent<HTMLElement>('schmancy-theme').pipe(
79
- map(theme => {
80
- // Determine container - use theme or fallback to body
81
- const targetContainer = theme || document.body
82
-
83
- // Create new sheet
84
- const sheet = document.createElement('schmancy-sheet')
85
- sheet.setAttribute('uid', uid)
86
- targetContainer.appendChild(sheet)
87
-
88
- return { target, sheet: sheet as SchmancySheet, uid }
89
- })
90
- )
91
- }),
92
- tap(({ target, sheet }) => {
93
- // Configure sheet attributes
94
- if (target.lock) sheet.setAttribute('lock', 'true')
95
-
96
- const position = target.position || getPosition()
97
- sheet.setAttribute('position', position)
98
-
99
- if (target.persist) sheet.setAttribute('persist', String(target.persist))
100
-
101
- // Set dynamic z-index for proper stacking with dialogs
102
- sheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))
103
-
104
- document.body.style.overflow = 'hidden' // lock the scroll of the host
105
- }),
106
- delay(20),
107
- tap(({ target, uid }) => {
108
- // Dispatch render event - area router handles duplicate prevention
109
- window.dispatchEvent(
110
- new CustomEvent('schmancy-sheet-render', {
111
- detail: {
112
- component: target.component,
113
- uid,
114
- props: target.props
115
- },
116
- bubbles: true,
117
- composed: true,
118
- }),
119
- )
120
- }),
121
- delay(1),
122
- tap(({ sheet, uid }) => {
123
- sheet.setAttribute('open', 'true')
124
- $sounds.play('curious')
125
-
126
- // Add to active sheets tracking
127
- this.activeSheets.add(uid)
128
-
129
- // Set up close event listener
130
- fromEvent<CustomEvent>(sheet, 'close')
131
- .pipe(take(1), delay(300))
132
- .subscribe(() => {
133
- // Remove from active sheets tracking
134
- this.activeSheets.delete(uid)
135
- overlayStack.release()
136
-
137
- // Only keep sheet if persist is explicitly set to a truthy value
138
- const persistAttr = sheet.getAttribute('persist')
139
- const shouldRemove = !persistAttr || persistAttr === 'false'
140
-
141
- if (shouldRemove) {
142
- sheet.remove()
143
- }
144
-
145
- document.body.style.overflow = 'auto' // unlock the scroll of the host
146
- })
147
- }),
148
- )
149
- .subscribe()
150
- }
151
-
152
- /**
153
- * Sets up the popstate listener to handle browser back button
154
- */
155
- private setupPopStateListener() {
156
- if (this.popStateListenerActive) return
157
-
158
- fromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {
159
- // If we have active sheets, close the most recently opened one
160
- if (this.activeSheets.size > 0) {
161
- // Get the last sheet (Set maintains insertion order)
162
- const lastSheet = Array.from(this.activeSheets).pop()
163
- if (lastSheet) {
164
- this.dismiss(lastSheet)
165
-
166
- // Prevent default navigation behavior by pushing a new state
167
- // This effectively cancels out the back navigation
168
- if (event.state && event.state.schmancySheet) {
169
- history.pushState({}, '', window.location.href)
170
- }
171
- }
172
- }
173
- })
174
-
175
- this.popStateListenerActive = true
176
- }
177
-
178
- /**
179
- * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided
180
- */
181
- dismiss(uid?: string) {
182
- if (!uid && this.activeSheets.size > 0) {
183
- // Get the last sheet opened (Set maintains insertion order)
184
- const sheetsArray = Array.from(this.activeSheets)
185
- uid = sheetsArray[sheetsArray.length - 1]
186
- }
187
-
188
- if (uid) {
189
- $sounds.play('atEase')
190
- window.dispatchEvent(
191
- new CustomEvent('schmancy-sheet-dismiss', {
192
- detail: { uid },
193
- bubbles: true,
194
- composed: true,
195
- })
196
- )
197
- this.activeSheets.delete(uid)
198
- }
199
- }
200
-
201
- /**
202
- * Open a sheet with the given target configuration
203
- * @deprecated Use `push` instead for consistency with area router API
204
- */
205
- open(target: BottomSheeetTarget) {
206
- this.bottomSheet.next(target)
207
- }
208
-
209
- /**
210
- * Push a component to the sheet (recommended method)
211
- * Follows the same API pattern as area.push for consistency
212
- */
213
- push(target: BottomSheeetTarget) {
214
- this.bottomSheet.next(target)
215
- }
216
-
217
- /**
218
- * Check if a sheet is currently open by uid
219
- */
220
- isOpen(uid: string): boolean {
221
- return this.activeSheets.has(uid)
222
- }
223
-
224
- /**
225
- * Close all open sheets
226
- */
227
- closeAll() {
228
- // Copy the set to avoid modification during iteration
229
- Array.from(this.activeSheets).forEach(uid => {
230
- this.dismiss(uid)
231
- })
232
- }
233
-
234
- }
235
-
236
- /**
237
- * Bottom / side sheet service. Mounts any element as a sheet with a chosen
238
- * position (see `SchmancySheetPosition` enum).
239
- *
240
- * @service
241
- * @summary Imperative bottom / side sheet surface.
242
- * @method open({ component, position? }) - Mount an element as a sheet.
243
- * @method dismiss(id?) - Dismiss a sheet by id, or the topmost.
244
- */
245
- export const sheet = new BottomSheetService()