@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.
- package/custom-elements.json +17 -220
- package/dist/agent/schmancy.agent.js +3770 -4600
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +6 -211
- package/dist/{area-ZupIezvU.cjs → area-CSQdhCBF.cjs} +1 -1
- package/dist/{area-ZupIezvU.cjs.map → area-CSQdhCBF.cjs.map} +1 -1
- package/dist/{area-DHVANBbr.js → area-D5haQE-J.js} +1 -1
- package/dist/{area-DHVANBbr.js.map → area-D5haQE-J.js.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-B_bJXUjm.cjs} +1 -1
- package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-B_bJXUjm.cjs.map} +1 -1
- package/dist/{autocomplete-pHvsyfbH.js → autocomplete-DtyjZJ1E.js} +2 -2
- package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-DtyjZJ1E.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +2 -2
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-IyEtsNI4.cjs → boat-BJLCp-Hv.cjs} +1 -1
- package/dist/{boat-IyEtsNI4.cjs.map → boat-BJLCp-Hv.cjs.map} +1 -1
- package/dist/{boat-_Yv3M6YM.js → boat-MT8bRT8u.js} +2 -2
- package/dist/{boat-_Yv3M6YM.js.map → boat-MT8bRT8u.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-Ck2IXJ4r.js → busy-6BqWGryX.js} +1 -1
- package/dist/{busy-Ck2IXJ4r.js.map → busy-6BqWGryX.js.map} +1 -1
- package/dist/{busy-CjM39APN.cjs → busy-DSF2E-zy.cjs} +1 -1
- package/dist/{busy-CjM39APN.cjs.map → busy-DSF2E-zy.cjs.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +3 -3
- package/dist/{card-DUWZmMHc.js → card-CvuVha-W.js} +1 -1
- package/dist/{card-DUWZmMHc.js.map → card-CvuVha-W.js.map} +1 -1
- package/dist/{card-DIxDuuth.cjs → card-DnKnaHzf.cjs} +1 -1
- package/dist/{card-DIxDuuth.cjs.map → card-DnKnaHzf.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.js +1 -1
- package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-D3u8Wm9r.cjs} +1 -1
- package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-D3u8Wm9r.cjs.map} +1 -1
- package/dist/{checkbox-DPS1mWG-.js → checkbox-QDRsE8cp.js} +1 -1
- package/dist/{checkbox-DPS1mWG-.js.map → checkbox-QDRsE8cp.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-UoFbwmlG.cjs → chips-CMoQzop1.cjs} +1 -1
- package/dist/{chips-UoFbwmlG.cjs.map → chips-CMoQzop1.cjs.map} +1 -1
- package/dist/{chips-BnnXQSA-.js → chips-Dy9vx8JS.js} +4 -4
- package/dist/{chips-BnnXQSA-.js.map → chips-Dy9vx8JS.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{code-highlight-CMilN0B8.cjs → code-highlight-Ddp0oZnm.cjs} +1 -1
- package/dist/{code-highlight-CMilN0B8.cjs.map → code-highlight-Ddp0oZnm.cjs.map} +1 -1
- package/dist/{code-highlight-kFUJ1Eet.js → code-highlight-DtE2-ObF.js} +1 -1
- package/dist/{code-highlight-kFUJ1Eet.js.map → code-highlight-DtE2-ObF.js.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
- package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
- package/dist/date-range-B2NuihKA.cjs +131 -0
- package/dist/date-range-B2NuihKA.cjs.map +1 -0
- package/dist/{date-range-DOstCIg8.js → date-range-Boesjlic.js} +99 -113
- package/dist/date-range-Boesjlic.js.map +1 -0
- package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-BI6_4Ahl.cjs} +1 -1
- package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-BI6_4Ahl.cjs.map} +1 -1
- package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-DBuND2pc.js} +1 -1
- package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-DBuND2pc.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-BJBbZOO6.cjs → details-BRs_z5-k.cjs} +1 -1
- package/dist/{details-BJBbZOO6.cjs.map → details-BRs_z5-k.cjs.map} +1 -1
- package/dist/{details-DPc5GxPa.js → details-BrGrUTGC.js} +2 -2
- package/dist/{details-DPc5GxPa.js.map → details-BrGrUTGC.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-DPT3XnG5.cjs → divider-BOxQ2T9h.cjs} +1 -1
- package/dist/{divider-DPT3XnG5.cjs.map → divider-BOxQ2T9h.cjs.map} +1 -1
- package/dist/{divider-BvJsmSPH.js → divider-W3TiDasp.js} +1 -1
- package/dist/{divider-BvJsmSPH.js.map → divider-W3TiDasp.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{expand-CTqBWVXo.cjs → expand-CnccBF91.cjs} +1 -1
- package/dist/{expand-CTqBWVXo.cjs.map → expand-CnccBF91.cjs.map} +1 -1
- package/dist/{expand-BMzocdtj.js → expand-Pu8fZ0jZ.js} +2 -2
- package/dist/{expand-BMzocdtj.js.map → expand-Pu8fZ0jZ.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-h_cuxRII.cjs → extra-B8IPs6gG.cjs} +1 -1
- package/dist/{extra-h_cuxRII.cjs.map → extra-B8IPs6gG.cjs.map} +1 -1
- package/dist/{extra-BeHlUhzv.js → extra-DxEWs41z.js} +1 -1
- package/dist/{extra-BeHlUhzv.js.map → extra-DxEWs41z.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{float-CwVBs11k.cjs → float-BRKa-P6Z.cjs} +1 -1
- package/dist/{float-CwVBs11k.cjs.map → float-BRKa-P6Z.cjs.map} +1 -1
- package/dist/{float-CTc1xxqH.js → float-WCVdp3um.js} +1 -1
- package/dist/{float-CTc1xxqH.js.map → float-WCVdp3um.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-CSJp687X.cjs.map → form-B2qudx_q.cjs.map} +1 -1
- package/dist/{form-BtwOBMZ9.js.map → form-CI59gad4.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-1ARKIsx9.js.map → hashContent-a8uVr3xs.js.map} +1 -1
- package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-ejkBgDnN.cjs.map} +1 -1
- package/dist/{icons-BbCVrcas.js → icons-C0ufCcdp.js} +2 -2
- package/dist/{icons-BbCVrcas.js.map → icons-C0ufCcdp.js.map} +1 -1
- package/dist/{icons-qEQW4pjM.cjs → icons-DXEbmg-O.cjs} +1 -1
- package/dist/{icons-qEQW4pjM.cjs.map → icons-DXEbmg-O.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-D6HTruav.cjs → iframe-C6RVODkW.cjs} +1 -1
- package/dist/{iframe-D6HTruav.cjs.map → iframe-C6RVODkW.cjs.map} +1 -1
- package/dist/{iframe-BJfDIEJf.js → iframe-c9lGxw7x.js} +1 -1
- package/dist/{iframe-BJfDIEJf.js.map → iframe-c9lGxw7x.js.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +72 -76
- package/dist/{input-U26axtcs.cjs → input-B4HM-9-H.cjs} +1 -1
- package/dist/{input-U26axtcs.cjs.map → input-B4HM-9-H.cjs.map} +1 -1
- package/dist/{input-LTK3cctF.js → input-Pmj_bH37.js} +1 -1
- package/dist/{input-LTK3cctF.js.map → input-Pmj_bH37.js.map} +1 -1
- package/dist/{input-chip-Ch-aCs3c.js → input-chip-BIGgd_7w.js} +1 -1
- package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BIGgd_7w.js.map} +1 -1
- package/dist/{input-chip-CADXt0X5.cjs → input-chip-BoDisY6c.cjs} +1 -1
- package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-BoDisY6c.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +2 -2
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/{layout-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
- package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
- package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
- package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-DbYUSfVl.cjs → lightbox-DK1vDKm3.cjs} +1 -1
- package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-DK1vDKm3.cjs.map} +1 -1
- package/dist/{lightbox-DqG2z3Cn.js → lightbox-K1eJTYXP.js} +2 -2
- package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-K1eJTYXP.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CLX4sSAw.cjs → list-CEuVqAxN.cjs} +1 -1
- package/dist/{list-CLX4sSAw.cjs.map → list-CEuVqAxN.cjs.map} +1 -1
- package/dist/{list-D6-_E5ZD.js → list-Ds0Nv1y5.js} +1 -1
- package/dist/{list-D6-_E5ZD.js.map → list-Ds0Nv1y5.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
- package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
- package/dist/{mailbox-Ct6iYe-4.cjs → mailbox-CDWqbVvZ.cjs} +58 -58
- package/dist/mailbox-CDWqbVvZ.cjs.map +1 -0
- package/dist/{mailbox-DsPII8HR.js → mailbox-DD2How0H.js} +112 -101
- package/dist/mailbox-DD2How0H.js.map +1 -0
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-Dhy3ta9v.js → map-1uwxxvBa.js} +1 -1
- package/dist/{map-Dhy3ta9v.js.map → map-1uwxxvBa.js.map} +1 -1
- package/dist/{map-WXeVkx2K.cjs → map-BrBSrIqg.cjs} +1 -1
- package/dist/{map-WXeVkx2K.cjs.map → map-BrBSrIqg.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/menu-Bly30Nje.cjs +23 -0
- package/dist/menu-Bly30Nje.cjs.map +1 -0
- package/dist/menu-L8MK1ma5.js +62 -0
- package/dist/menu-L8MK1ma5.js.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-B34UxxCe.js +627 -0
- package/dist/{mixins-CcIWET41.js.map → mixins-B34UxxCe.js.map} +1 -1
- package/dist/mixins-CAb0b03r.cjs +298 -0
- package/dist/{mixins-De3xfjrm.cjs.map → mixins-CAb0b03r.cjs.map} +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-D_PQjBSf.cjs → notification-7fSbk8hm.cjs} +1 -1
- package/dist/{notification-D_PQjBSf.cjs.map → notification-7fSbk8hm.cjs.map} +1 -1
- package/dist/{notification-CVLqQ8c_.js → notification-DB25M-qo.js} +2 -2
- package/dist/{notification-CVLqQ8c_.js.map → notification-DB25M-qo.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-rm4HebVs.js → option-DDHa25k5.js} +1 -1
- package/dist/{option-rm4HebVs.js.map → option-DDHa25k5.js.map} +1 -1
- package/dist/{option-DDU_goh1.cjs → option-HF9Xqbuq.cjs} +1 -1
- package/dist/{option-DDU_goh1.cjs.map → option-HF9Xqbuq.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-CCiTaf_C.js.map} +1 -1
- package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-CFGiYf34.cjs.map} +1 -1
- package/dist/overlay.cjs +5 -53
- package/dist/overlay.cjs.map +1 -1
- package/dist/overlay.confirm-body-BDG94R0x.js +104 -0
- package/dist/overlay.confirm-body-BDG94R0x.js.map +1 -0
- package/dist/overlay.confirm-body-b4Nx_OVf.cjs +49 -0
- package/dist/overlay.confirm-body-b4Nx_OVf.cjs.map +1 -0
- package/dist/overlay.js +120 -360
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.service-BUCuZa6V.js +146 -0
- package/dist/overlay.service-BUCuZa6V.js.map +1 -0
- package/dist/overlay.service-CRHZZY9F.cjs +1 -0
- package/dist/overlay.service-CRHZZY9F.cjs.map +1 -0
- package/dist/page.cjs +1 -1
- package/dist/page.js +4 -4
- package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-C4jb-OdM.js} +1 -1
- package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-C4jb-OdM.js.map} +1 -1
- package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-WEx4CscR.cjs} +1 -1
- package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-WEx4CscR.cjs.map} +1 -1
- package/dist/payment-card-form.cjs +1 -1
- package/dist/payment-card-form.js +1 -1
- package/dist/{progress-U3LQkpM2.cjs → progress-54R4QRgW.cjs} +1 -1
- package/dist/{progress-U3LQkpM2.cjs.map → progress-54R4QRgW.cjs.map} +1 -1
- package/dist/{progress-BRerM5Bn.js → progress-CqOyMM4i.js} +1 -1
- package/dist/{progress-BRerM5Bn.js.map → progress-CqOyMM4i.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +1 -1
- package/dist/{radio-group-BZ2WoOXJ.js → radio-group-B4zbBIZF.js} +1 -1
- package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-B4zbBIZF.js.map} +1 -1
- package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-BJqZpYVy.cjs} +1 -1
- package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-BJqZpYVy.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-BXpvHN4-.js.map} +1 -1
- package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-CaC-tdot.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-qL-HkMdP.js → scroll-CYm6Krus.js} +1 -1
- package/dist/{scroll-qL-HkMdP.js.map → scroll-CYm6Krus.js.map} +1 -1
- package/dist/{scroll-DJTjNIT_.cjs → scroll-iSRovYYt.cjs} +1 -1
- package/dist/{scroll-DJTjNIT_.cjs.map → scroll-iSRovYYt.cjs.map} +1 -1
- package/dist/{select-CnPXUeSf.js → select-1WHseXP6.js} +2 -2
- package/dist/{select-CnPXUeSf.js.map → select-1WHseXP6.js.map} +1 -1
- package/dist/{select-BvA7v-gL.cjs → select-DiQHtQJN.cjs} +1 -1
- package/dist/{select-BvA7v-gL.cjs.map → select-DiQHtQJN.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/INDEX.md +2 -2
- package/dist/skills/SKILL.md +13 -9
- package/dist/skills/schmancy/INDEX.md +2 -2
- package/dist/skills/schmancy/SKILL.md +13 -9
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-C8JCqX5L.js → splash-screen-BwvtKMdN.js} +1 -1
- package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-BwvtKMdN.js.map} +1 -1
- package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-CJL8DGDe.cjs} +1 -1
- package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-CJL8DGDe.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-CpRNClhg.cjs → src-Bwr2NR0A.cjs} +13 -13
- package/dist/src-Bwr2NR0A.cjs.map +1 -0
- package/dist/{src-CqdnWGgr.js → src-UaZeROcW.js} +164 -162
- package/dist/src-UaZeROcW.js.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-Du2Y4vXd.cjs → surface-DE5iuI8e.cjs} +1 -1
- package/dist/{surface-Du2Y4vXd.cjs.map → surface-DE5iuI8e.cjs.map} +1 -1
- package/dist/{surface-C8jQy8Ym.js → surface-DPUkQ3OL.js} +1 -1
- package/dist/{surface-C8jQy8Ym.js.map → surface-DPUkQ3OL.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-Cyahh9Q6.js → tabs-B2XEQPQl.js} +1 -1
- package/dist/{tabs-Cyahh9Q6.js.map → tabs-B2XEQPQl.js.map} +1 -1
- package/dist/{tabs-0RfeCa00.cjs → tabs-CsDQ72Qk.cjs} +1 -1
- package/dist/{tabs-0RfeCa00.cjs.map → tabs-CsDQ72Qk.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CXCcTVnf.js → textarea-C_ps0lL-.js} +1 -1
- package/dist/{textarea-CXCcTVnf.js.map → textarea-C_ps0lL-.js.map} +1 -1
- package/dist/{textarea-jqRrLxmo.cjs → textarea-aeAP9cDG.cjs} +1 -1
- package/dist/{textarea-jqRrLxmo.cjs.map → textarea-aeAP9cDG.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-DAYTVw13.cjs +181 -0
- package/dist/{theme-Hjz9sCN-.cjs.map → theme-DAYTVw13.cjs.map} +1 -1
- package/dist/{theme-2KZW2Rfs.js → theme-DAx1iRNr.js} +3 -4
- package/dist/{theme-2KZW2Rfs.js.map → theme-DAx1iRNr.js.map} +1 -1
- package/dist/{theme-button-9uF1eoHz.js → theme-button-BrHkzCtj.js} +1 -1
- package/dist/{theme-button-9uF1eoHz.js.map → theme-button-BrHkzCtj.js.map} +1 -1
- package/dist/{theme-button-C7QIbke1.cjs → theme-button-LsMKY_N_.cjs} +1 -1
- package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-LsMKY_N_.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-C_034TxG.js.map} +1 -1
- package/dist/{theme.interface-D9l33b-M.cjs.map → theme.interface-DESopuZS.cjs.map} +1 -1
- package/dist/theme.js +5 -6
- package/dist/theme.service-Cfk88qHK.cjs +1 -0
- package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
- package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
- package/dist/theme.service-DIUo1mBP.js.map +1 -0
- package/dist/timeline.cjs +1 -1
- package/dist/timeline.js +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-hp-DnFf5.js → utils-BzFQfaIr.js} +1 -1
- package/dist/{utils-hp-DnFf5.js.map → utils-BzFQfaIr.js.map} +1 -1
- package/dist/{utils-Cr-YO4Np.cjs → utils-oLBkMvor.cjs} +1 -1
- package/dist/{utils-Cr-YO4Np.cjs.map → utils-oLBkMvor.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-DtUOWiAj.cjs → window-BJrKS6Zr.cjs} +1 -1
- package/dist/{window-DtUOWiAj.cjs.map → window-BJrKS6Zr.cjs.map} +1 -1
- package/dist/{window-C7yY9yp5.js → window-CyDuTN80.js} +3 -3
- package/dist/{window-C7yY9yp5.js.map → window-CyDuTN80.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/INDEX.md +2 -2
- package/skills/schmancy/SKILL.md +13 -9
- package/src/content-drawer/drawer.ts +24 -7
- package/src/content-drawer/events.ts +6 -0
- package/src/content-drawer/sheet.ts +13 -12
- package/src/date-range/date-range-dialog.ts +4 -4
- package/src/date-range/date-range.ts +35 -53
- package/src/index.ts +0 -2
- package/src/mailbox/email-editor.ts +17 -18
- package/src/mailbox/email-template-picker.ts +19 -13
- package/src/menu/menu-item.ts +7 -2
- package/src/menu/menu.ts +24 -20
- package/types/src/content-drawer/drawer.d.ts +2 -0
- package/types/src/content-drawer/events.d.ts +6 -0
- package/types/src/content-drawer/sheet.d.ts +6 -5
- package/types/src/date-range/date-range.d.ts +1 -5
- package/types/src/index.d.ts +0 -2
- package/types/src/mailbox/email-template-picker.d.ts +7 -7
- package/types/src/menu/menu-item.d.ts +1 -0
- package/types/src/menu/menu.d.ts +9 -7
- package/dist/date-range-BIyrzTRZ.cjs +0 -131
- package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
- package/dist/date-range-DOstCIg8.js.map +0 -1
- package/dist/dialog-service-DI9PPy4H.js +0 -193
- package/dist/dialog-service-DI9PPy4H.js.map +0 -1
- package/dist/dialog-service-DJd5L0f5.cjs +0 -1
- package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
- package/dist/dialog.cjs +0 -89
- package/dist/dialog.cjs.map +0 -1
- package/dist/dialog.js +0 -419
- package/dist/dialog.js.map +0 -1
- package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
- package/dist/mailbox-DsPII8HR.js.map +0 -1
- package/dist/menu-Bhd3EapX.js +0 -56
- package/dist/menu-Bhd3EapX.js.map +0 -1
- package/dist/menu-Cg2aaDjs.cjs +0 -23
- package/dist/menu-Cg2aaDjs.cjs.map +0 -1
- package/dist/mixins-CcIWET41.js +0 -627
- package/dist/mixins-De3xfjrm.cjs +0 -298
- package/dist/sheet-BRL07BB4.js +0 -170
- package/dist/sheet-BRL07BB4.js.map +0 -1
- package/dist/sheet-BYQJAHQn.cjs +0 -35
- package/dist/sheet-BYQJAHQn.cjs.map +0 -1
- package/dist/sheet.cjs +0 -1
- package/dist/sheet.js +0 -3
- package/dist/sheet.service-B25bsrYG.cjs +0 -1
- package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
- package/dist/sheet.service-SPQ8oLCi.js +0 -86
- package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
- package/dist/skills/dialog.md +0 -69
- package/dist/skills/schmancy/dialog.md +0 -69
- package/dist/skills/schmancy/sheet.md +0 -76
- package/dist/skills/sheet.md +0 -76
- package/dist/src-CpRNClhg.cjs.map +0 -1
- package/dist/src-CqdnWGgr.js.map +0 -1
- package/dist/theme-Hjz9sCN-.cjs +0 -181
- package/dist/theme.events-Cv7N4Toe.js +0 -2
- package/dist/theme.events-Cv7N4Toe.js.map +0 -1
- package/dist/theme.events-DM4H5F2d.cjs +0 -1
- package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
- package/dist/theme.service-BrUbGoeQ.cjs +0 -1
- package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
- package/dist/theme.service-CmbOGMA8.js.map +0 -1
- package/skills/schmancy/dialog.md +0 -69
- package/skills/schmancy/sheet.md +0 -76
- package/src/dialog/dialog-base.mixin.ts +0 -576
- package/src/dialog/dialog-events.ts +0 -17
- package/src/dialog/dialog-service.ts +0 -494
- package/src/dialog/dialog.component.ts +0 -414
- package/src/dialog/index.ts +0 -3
- package/src/sheet/hook.ts +0 -40
- package/src/sheet/index.ts +0 -2
- package/src/sheet/sheet.service.ts +0 -245
- package/src/sheet/sheet.ts +0 -238
- package/types/src/dialog/dialog-base.mixin.d.ts +0 -30
- package/types/src/dialog/dialog-events.d.ts +0 -13
- package/types/src/dialog/dialog-service.d.ts +0 -91
- package/types/src/dialog/dialog.component.d.ts +0 -150
- package/types/src/dialog/index.d.ts +0 -3
- package/types/src/sheet/hook.d.ts +0 -5
- package/types/src/sheet/index.d.ts +0 -2
- package/types/src/sheet/sheet.d.ts +0 -29
- package/types/src/sheet/sheet.service.d.ts +0 -65
- /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
- /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
- /package/dist/{form-CSJp687X.cjs → form-B2qudx_q.cjs} +0 -0
- /package/dist/{form-BtwOBMZ9.js → form-CI59gad4.js} +0 -0
- /package/dist/{hashContent-1ARKIsx9.js → hashContent-a8uVr3xs.js} +0 -0
- /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-ejkBgDnN.cjs} +0 -0
- /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
- /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
- /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-CCiTaf_C.js} +0 -0
- /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-CFGiYf34.cjs} +0 -0
- /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BXpvHN4-.js} +0 -0
- /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-CaC-tdot.cjs} +0 -0
- /package/dist/{theme.interface-DnVNre4O.js → theme.interface-C_034TxG.js} +0 -0
- /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-DESopuZS.cjs} +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
|
-
}
|
package/src/dialog/index.ts
DELETED
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
|
-
}
|
package/src/sheet/index.ts
DELETED
|
@@ -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()
|