@mhmo91/schmancy 0.9.12 → 0.9.14
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/README.md +34 -0
- package/custom-elements.json +236 -0
- package/dist/agent/flow-CaPi2G8y.js.map +1 -0
- package/dist/agent/schmancy.agent.js +36474 -0
- package/dist/agent/schmancy.agent.js.map +1 -0
- package/dist/agent/schmancy.manifest.json +7027 -0
- package/dist/agent/vendor-highlight-CHJZQQB7.js +2178 -0
- package/dist/agent/vendor-highlight-CHJZQQB7.js.map +1 -0
- package/dist/agent/vendor-jsqr-r7GNh4P3.js +10212 -0
- package/dist/agent/vendor-jsqr-r7GNh4P3.js.map +1 -0
- package/dist/agent/vendor-material-color-Be96dpGE.js +3309 -0
- package/dist/agent/vendor-material-color-Be96dpGE.js.map +1 -0
- package/dist/{animation-Bcwh107v.cjs.map → animation-CQRdLgzX.cjs.map} +1 -1
- package/dist/{animation-CXKSuUoE.js.map → animation-hXFClrIn.js.map} +1 -1
- package/dist/{area-CBjmKtN-.cjs → area-DBjAhgjP.cjs} +2 -2
- package/dist/area-DBjAhgjP.cjs.map +1 -0
- package/dist/{area-CjX0Ckh9.js → area-Dr4I9R2p.js} +23 -35
- package/dist/area-Dr4I9R2p.js.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +3 -2
- package/dist/{audio-DUVz7Ars.cjs → audio-Dvr-RBzE.cjs} +1 -1
- package/dist/{audio-DUVz7Ars.cjs.map → audio-Dvr-RBzE.cjs.map} +1 -1
- package/dist/{audio-C7TzWI8M.js → audio-ql6nvY0y.js} +1 -1
- package/dist/{audio-C7TzWI8M.js.map → audio-ql6nvY0y.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-ppoaK_GD.js → autocomplete-CgWUCUU-.js} +3 -3
- package/dist/{autocomplete-ppoaK_GD.js.map → autocomplete-CgWUCUU-.js.map} +1 -1
- package/dist/{autocomplete-WQxz4VGO.cjs → autocomplete-EM0jE7X2.cjs} +1 -1
- package/dist/{autocomplete-WQxz4VGO.cjs.map → autocomplete-EM0jE7X2.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-C-T9RDiG.cjs → boat-BjYJI1HS.cjs} +1 -1
- package/dist/{boat-C-T9RDiG.cjs.map → boat-BjYJI1HS.cjs.map} +1 -1
- package/dist/{boat-C4JnoakD.js → boat-Dw8TmOzN.js} +4 -4
- package/dist/{boat-C4JnoakD.js.map → boat-Dw8TmOzN.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-BMRUS_Ns.cjs → busy-BmiumJpB.cjs} +1 -1
- package/dist/{busy-BMRUS_Ns.cjs.map → busy-BmiumJpB.cjs.map} +1 -1
- package/dist/{busy-DuV4A5PX.js → busy-D2hP3fOy.js} +1 -1
- package/dist/{busy-DuV4A5PX.js.map → busy-D2hP3fOy.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +4 -4
- package/dist/button.js.map +1 -1
- package/dist/{card-DBjGfCxi.cjs → card-BslSqOsf.cjs} +1 -1
- package/dist/{card-DBjGfCxi.cjs.map → card-BslSqOsf.cjs.map} +1 -1
- package/dist/{card-DzXRouJC.js → card-CEdgK9nb.js} +2 -2
- package/dist/{card-DzXRouJC.js.map → card-CEdgK9nb.js.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-BwuhSBDG.js → checkbox-Br84TiCs.js} +2 -2
- package/dist/{checkbox-BwuhSBDG.js.map → checkbox-Br84TiCs.js.map} +1 -1
- package/dist/{checkbox-BibOr-sJ.cjs → checkbox-DtcFMgZL.cjs} +1 -1
- package/dist/{checkbox-BibOr-sJ.cjs.map → checkbox-DtcFMgZL.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-DiB2BfTQ.js → chips-BNYOweGm.js} +5 -5
- package/dist/{chips-DiB2BfTQ.js.map → chips-BNYOweGm.js.map} +1 -1
- package/dist/{chips-D5QvIKt6.cjs → chips-DoCu5YQb.cjs} +1 -1
- package/dist/{chips-D5QvIKt6.cjs.map → chips-DoCu5YQb.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/chunk-BM5alsTp.js +18 -0
- package/dist/chunk-CncqDLb2.cjs +1 -0
- package/dist/{code-highlight-B5_zONzv.js → code-highlight-BgExKEto.js} +1 -1
- package/dist/{code-highlight-B5_zONzv.js.map → code-highlight-BgExKEto.js.map} +1 -1
- package/dist/{code-highlight-Q2x2hrWg.cjs → code-highlight-zSYcSfCz.cjs} +1 -1
- package/dist/{code-highlight-Q2x2hrWg.cjs.map → code-highlight-zSYcSfCz.cjs.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{components-CjLqW8Jp.js → components-DjKNS9R_.js} +1 -1
- package/dist/{components-CjLqW8Jp.js.map → components-DjKNS9R_.js.map} +1 -1
- package/dist/{components-jfFxyq6z.cjs → components-TJT8-tva.cjs} +1 -1
- package/dist/{components-jfFxyq6z.cjs.map → components-TJT8-tva.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +2 -2
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/context-CAYQh-mx.cjs +1 -0
- package/dist/{context-BRtGc7PP.cjs.map → context-CAYQh-mx.cjs.map} +1 -1
- package/dist/context-D8Q66KPe.js +3 -0
- package/dist/{context-DgD3c6q-.js.map → context-D8Q66KPe.js.map} +1 -1
- package/dist/{cursor-glow-C2YRrB8Z.js → cursor-glow-BydlDInj.js} +1 -1
- package/dist/{cursor-glow-C2YRrB8Z.js.map → cursor-glow-BydlDInj.js.map} +1 -1
- package/dist/{cursor-glow-82y5h3E4.cjs → cursor-glow-Duw9jHmh.cjs} +1 -1
- package/dist/{cursor-glow-82y5h3E4.cjs.map → cursor-glow-Duw9jHmh.cjs.map} +1 -1
- package/dist/{date-range-DF5ROfrb.cjs → date-range-CIWYm3eS.cjs} +1 -1
- package/dist/{date-range-DF5ROfrb.cjs.map → date-range-CIWYm3eS.cjs.map} +1 -1
- package/dist/{date-range-inline-LLC3Y0mi.cjs → date-range-inline-B9Dp2z6C.cjs} +1 -1
- package/dist/{date-range-inline-LLC3Y0mi.cjs.map → date-range-inline-B9Dp2z6C.cjs.map} +1 -1
- package/dist/{date-range-inline-B_g1YXu3.js.map → date-range-inline-CpKG6qt2.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-Dcy8GSov.js → date-range-sGkC0KF3.js} +4 -4
- package/dist/{date-range-Dcy8GSov.js.map → date-range-sGkC0KF3.js.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-aQRihOO4.cjs → delay-Bu4WMQlV.cjs} +1 -1
- package/dist/{delay-aQRihOO4.cjs.map → delay-Bu4WMQlV.cjs.map} +1 -1
- package/dist/{delay-B7TvigGw.js → delay-DwX65fSc.js} +4 -4
- package/dist/{delay-B7TvigGw.js.map → delay-DwX65fSc.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-Cs8yStsJ.cjs → details-B8p62xmR.cjs} +1 -1
- package/dist/{details-Cs8yStsJ.cjs.map → details-B8p62xmR.cjs.map} +1 -1
- package/dist/{details-DfYDNHuv.js → details-CCW52lzz.js} +5 -5
- package/dist/{details-DfYDNHuv.js.map → details-CCW52lzz.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-service-DXLGSshF.cjs → dialog-service-CzDO08Gy.cjs} +1 -1
- package/dist/{dialog-service-DXLGSshF.cjs.map → dialog-service-CzDO08Gy.cjs.map} +1 -1
- package/dist/{dialog-service-CCFGpU7a.js → dialog-service-DH-tjPuE.js} +2 -2
- package/dist/{dialog-service-CCFGpU7a.js.map → dialog-service-DH-tjPuE.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +5 -5
- package/dist/directives.cjs +1 -1
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js +5 -5
- package/dist/directives.js.map +1 -1
- package/dist/discovery.cjs +1 -1
- package/dist/{divider-DE9pcMw3.js → divider-CbEWg3G_.js} +1 -1
- package/dist/{divider-DE9pcMw3.js.map → divider-CbEWg3G_.js.map} +1 -1
- package/dist/{divider-DY4ocl-Z.cjs → divider-JyyFw_3J.cjs} +1 -1
- package/dist/{divider-DY4ocl-Z.cjs.map → divider-JyyFw_3J.cjs.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 +2 -2
- package/dist/{expand-Cuu9u0j5.cjs → expand-BmwIPNjq.cjs} +1 -1
- package/dist/{expand-Cuu9u0j5.cjs.map → expand-BmwIPNjq.cjs.map} +1 -1
- package/dist/{expand-Cwis2Y6U.js → expand-bFa_qVDT.js} +4 -4
- package/dist/{expand-Cwis2Y6U.js.map → expand-bFa_qVDT.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-DRIgrdHx.cjs → extra-BUgyMgjl.cjs} +1 -1
- package/dist/{extra-DRIgrdHx.cjs.map → extra-BUgyMgjl.cjs.map} +1 -1
- package/dist/{extra-DoxLBpZ-.js → extra-HwbaUnCD.js} +1 -1
- package/dist/{extra-DoxLBpZ-.js.map → extra-HwbaUnCD.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/float-BQwhfibw.cjs +1 -0
- package/dist/{float-I4wePTk7.cjs.map → float-BQwhfibw.cjs.map} +1 -1
- package/dist/{float-2aPqW2lz.js → float-D5ezUurt.js} +1 -1
- package/dist/{float-2aPqW2lz.js.map → float-D5ezUurt.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/flow-BGkHnOnd.js +386 -0
- package/dist/{flow-BPDtbhLe.js.map → flow-BGkHnOnd.js.map} +1 -1
- package/dist/{flow-Dn9AZktE.cjs.map → flow-ClAJ6Qby.cjs.map} +1 -1
- package/dist/{form-C1qS9uvS.js.map → form-rCZqoAoK.js.map} +1 -1
- package/dist/{form-CzD0JLxM.cjs → form-wI58M85H.cjs} +1 -1
- package/dist/{form-CzD0JLxM.cjs.map → form-wI58M85H.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{hashContent-BUqULUiZ.js.map → hashContent-B2IntJQf.js.map} +1 -1
- package/dist/{hashContent-CI39BY-_.cjs.map → hashContent-CahnEuut.cjs.map} +1 -1
- package/dist/{icons-UOqapID2.cjs → icons-B6V3nZ4-.cjs} +1 -1
- package/dist/{icons-UOqapID2.cjs.map → icons-B6V3nZ4-.cjs.map} +1 -1
- package/dist/{icons-DDQBxhDC.js → icons-C5-DIjet.js} +2 -2
- package/dist/{icons-DDQBxhDC.js.map → icons-C5-DIjet.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-CMTUyiz1.js → iframe-BXBsuLwt.js} +1 -1
- package/dist/{iframe-CMTUyiz1.js.map → iframe-BXBsuLwt.js.map} +1 -1
- package/dist/{iframe-FZCULDVM.cjs → iframe-C7sHg7RC.cjs} +1 -1
- package/dist/{iframe-FZCULDVM.cjs.map → iframe-C7sHg7RC.cjs.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 +53 -52
- package/dist/{input-DIuyi3Gm.cjs → input-BGNZlfL8.cjs} +1 -1
- package/dist/{input-DIuyi3Gm.cjs.map → input-BGNZlfL8.cjs.map} +1 -1
- package/dist/{input-HzweUBSn.js → input-Bc3bVISm.js} +1 -1
- package/dist/{input-HzweUBSn.js.map → input-Bc3bVISm.js.map} +1 -1
- package/dist/{input-chip-Bt2Lzi-2.js → input-chip-CiG61y-N.js} +1 -1
- package/dist/{input-chip-Bt2Lzi-2.js.map → input-chip-CiG61y-N.js.map} +1 -1
- package/dist/{input-chip-nghCxe9L.cjs → input-chip-p24lkYtY.cjs} +1 -1
- package/dist/{input-chip-nghCxe9L.cjs.map → input-chip-p24lkYtY.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/{intersection-C0JuW_7U.js.map → intersection-BrXp4YTO.js.map} +1 -1
- package/dist/{intersection-MvbRovUz.cjs → intersection-DqBqnpgh.cjs} +1 -1
- package/dist/{intersection-MvbRovUz.cjs.map → intersection-DqBqnpgh.cjs.map} +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-DHt4hK1n.cjs → layout-B0_IXfov.cjs} +1 -1
- package/dist/{layout-DHt4hK1n.cjs.map → layout-B0_IXfov.cjs.map} +1 -1
- package/dist/{layout-PZCF3kwl.cjs → layout-CTfRXQoz.cjs} +1 -1
- package/dist/{layout-PZCF3kwl.cjs.map → layout-CTfRXQoz.cjs.map} +1 -1
- package/dist/{layout-BUq6VVj0.js → layout-Cqghi_rx.js} +2 -2
- package/dist/{layout-BUq6VVj0.js.map → layout-Cqghi_rx.js.map} +1 -1
- package/dist/{layout-BE2ld1IY.js → layout-fjM1DWlF.js} +1 -1
- package/dist/{layout-BE2ld1IY.js.map → layout-fjM1DWlF.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/lazy-BDNnH_r7.cjs +1 -0
- package/dist/lazy-BDNnH_r7.cjs.map +1 -0
- package/dist/lazy-D6R5N5v4.js +13 -0
- package/dist/lazy-D6R5N5v4.js.map +1 -0
- package/dist/{lightbox-CbAbyhzE.cjs → lightbox-BWKTzA03.cjs} +1 -1
- package/dist/{lightbox-CbAbyhzE.cjs.map → lightbox-BWKTzA03.cjs.map} +1 -1
- package/dist/{lightbox-p_uYC9Hy.js → lightbox-CnCTvqSu.js} +3 -3
- package/dist/{lightbox-p_uYC9Hy.js.map → lightbox-CnCTvqSu.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-DG1shv4_.js → list-BpjKUOzM.js} +2 -2
- package/dist/{list-DG1shv4_.js.map → list-BpjKUOzM.js.map} +1 -1
- package/dist/{list-pvbKwpnz.cjs → list-CMWHu6cV.cjs} +1 -1
- package/dist/{list-pvbKwpnz.cjs.map → list-CMWHu6cV.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BLb2kIHg.js → litElement.mixin-BnNYZ24e.js} +1 -1
- package/dist/{litElement.mixin-BLb2kIHg.js.map → litElement.mixin-BnNYZ24e.js.map} +1 -1
- package/dist/{litElement.mixin-Bx9Avv0M.cjs → litElement.mixin-CtQOmwq6.cjs} +1 -1
- package/dist/{litElement.mixin-Bx9Avv0M.cjs.map → litElement.mixin-CtQOmwq6.cjs.map} +1 -1
- package/dist/{magnetic-Dj52WplI.js → magnetic-BhXebqF3.js} +2 -2
- package/dist/{magnetic-Dj52WplI.js.map → magnetic-BhXebqF3.js.map} +1 -1
- package/dist/{magnetic-aBBnj_vk.cjs → magnetic-CVXEkYTA.cjs} +1 -1
- package/dist/{magnetic-aBBnj_vk.cjs.map → magnetic-CVXEkYTA.cjs.map} +1 -1
- package/dist/{mailbox-BCRplIro.js → mailbox-CHIpxS3W.js} +5 -5
- package/dist/{mailbox-BCRplIro.js.map → mailbox-CHIpxS3W.js.map} +1 -1
- package/dist/{mailbox-CZevIxwZ.cjs → mailbox-Tg1CROVz.cjs} +1 -1
- package/dist/{mailbox-CZevIxwZ.cjs.map → mailbox-Tg1CROVz.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-BUcxWqBH.js → map-YY1Q4FWO.js} +1 -1
- package/dist/{map-BUcxWqBH.js.map → map-YY1Q4FWO.js.map} +1 -1
- package/dist/{map-C6kDkAju.cjs → map-Z_dsu-dv.cjs} +1 -1
- package/dist/{map-C6kDkAju.cjs.map → map-Z_dsu-dv.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-BleltblR.js → menu-BIBUgS1T.js} +2 -2
- package/dist/{menu-BleltblR.js.map → menu-BIBUgS1T.js.map} +1 -1
- package/dist/{menu-DhmDz_js.cjs → menu-DS8Iz4fJ.cjs} +1 -1
- package/dist/{menu-DhmDz_js.cjs.map → menu-DS8Iz4fJ.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -2
- 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-DvrozLTu.js → notification-ChAvNXf3.js} +3 -3
- package/dist/notification-ChAvNXf3.js.map +1 -0
- package/dist/{notification-BT84PlwC.cjs → notification-DPUkuifB.cjs} +1 -1
- package/dist/notification-DPUkuifB.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-EEYkHd44.js → option-Ci7C8xxh.js} +1 -1
- package/dist/{option-EEYkHd44.js.map → option-Ci7C8xxh.js.map} +1 -1
- package/dist/{option-y5FY8sz-.cjs → option-OIp0joyN.cjs} +1 -1
- package/dist/{option-y5FY8sz-.cjs.map → option-OIp0joyN.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-J_eJCUTX.cjs.map → overlay-stack-7bs4ZNnh.cjs.map} +1 -1
- package/dist/{overlay-stack-BJt_r6aZ.js.map → overlay-stack-DXPYHPhk.js.map} +1 -1
- package/dist/overlay.cjs +130 -0
- package/dist/overlay.cjs.map +1 -0
- package/dist/overlay.js +570 -0
- package/dist/overlay.js.map +1 -0
- package/dist/page.cjs +1 -1
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +4 -4
- package/dist/{progress-B1if5cWu.cjs → progress-32Cad1NX.cjs} +1 -1
- package/dist/{progress-B1if5cWu.cjs.map → progress-32Cad1NX.cjs.map} +1 -1
- package/dist/{progress-B8nfhvrc.js → progress-DGkwPgDX.js} +1 -1
- package/dist/{progress-B8nfhvrc.js.map → progress-DGkwPgDX.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{provide-BEMtticm.js → provide-BuzyBLGj.js} +1 -1
- package/dist/{provide-BEMtticm.js.map → provide-BuzyBLGj.js.map} +1 -1
- package/dist/{provide-BbFbvIEk.cjs → provide-MvHcXKzT.cjs} +1 -1
- package/dist/{provide-BbFbvIEk.cjs.map → provide-MvHcXKzT.cjs.map} +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +1 -1
- package/dist/{radio-group-DKXbC-jL.js → radio-group-B72sYGnS.js} +1 -1
- package/dist/{radio-group-DKXbC-jL.js.map → radio-group-B72sYGnS.js.map} +1 -1
- package/dist/{radio-group-DafTK0PB.cjs → radio-group-B7DuNxUq.cjs} +1 -1
- package/dist/{radio-group-DafTK0PB.cjs.map → radio-group-B7DuNxUq.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/{reduced-motion-DR32yKEO.cjs → reduced-motion-9RjNnhIg.cjs} +1 -1
- package/dist/{reduced-motion-DR32yKEO.cjs.map → reduced-motion-9RjNnhIg.cjs.map} +1 -1
- package/dist/{reduced-motion-B83yZbcO.js.map → reduced-motion-BZTLqAyl.js.map} +1 -1
- package/dist/{rxjs-utils-CN9fv8Xq.js → rxjs-utils-CKTnEKUH.js} +1 -1
- package/dist/{rxjs-utils-CN9fv8Xq.js.map → rxjs-utils-CKTnEKUH.js.map} +1 -1
- package/dist/{rxjs-utils-Vn6DCKgL.cjs → rxjs-utils-DJbZRjp3.cjs} +1 -1
- package/dist/{rxjs-utils-Vn6DCKgL.cjs.map → rxjs-utils-DJbZRjp3.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-pdsp_9bT.js → scroll-CdmXRXh2.js} +1 -1
- package/dist/{scroll-pdsp_9bT.js.map → scroll-CdmXRXh2.js.map} +1 -1
- package/dist/{scroll-C6Hub5gG.cjs → scroll-V1rAZ9fK.cjs} +1 -1
- package/dist/{scroll-C6Hub5gG.cjs.map → scroll-V1rAZ9fK.cjs.map} +1 -1
- package/dist/{search-BlGJ6uJv.js.map → search-CvUZRLF1.js.map} +1 -1
- package/dist/{search-C8eAOzBm.cjs.map → search-CwMav5QB.cjs.map} +1 -1
- package/dist/{select-Zg9UqtCA.cjs → select-DFxoBgEf.cjs} +1 -1
- package/dist/{select-Zg9UqtCA.cjs.map → select-DFxoBgEf.cjs.map} +1 -1
- package/dist/{select-_Qkleofb.js → select-wFDKDLQI.js} +2 -2
- package/dist/{select-_Qkleofb.js.map → select-wFDKDLQI.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-7LWVKgW9.cjs → sheet-DdlZhnDG.cjs} +2 -2
- package/dist/{sheet-7LWVKgW9.cjs.map → sheet-DdlZhnDG.cjs.map} +1 -1
- package/dist/{sheet-N9TET_t_.js → sheet-LFVo5iN4.js} +4 -4
- package/dist/{sheet-N9TET_t_.js.map → sheet-LFVo5iN4.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-P2CkJW86.cjs → sheet.service-BfNDB0K0.cjs} +1 -1
- package/dist/{sheet.service-P2CkJW86.cjs.map → sheet.service-BfNDB0K0.cjs.map} +1 -1
- package/dist/{sheet.service-DCe4FOkQ.js → sheet.service-DQE7-_wq.js} +3 -3
- package/dist/{sheet.service-DCe4FOkQ.js.map → sheet.service-DQE7-_wq.js.map} +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/INDEX.md +1 -1
- package/dist/skills/overlay.md +200 -0
- package/dist/skills/schmancy/INDEX.md +1 -1
- package/dist/skills/schmancy/overlay.md +200 -0
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{sound.service-BjSoGjmT.cjs → sound.service-BEN6Xjy_.cjs} +1 -1
- package/dist/{sound.service-BjSoGjmT.cjs.map → sound.service-BEN6Xjy_.cjs.map} +1 -1
- package/dist/{sound.service-cdkw3Wkv.js → sound.service-DWZe6swU.js} +1 -1
- package/dist/{sound.service-cdkw3Wkv.js.map → sound.service-DWZe6swU.js.map} +1 -1
- package/dist/{splash-screen-BUKRc46i.cjs → splash-screen-C9HqX2nR.cjs} +1 -1
- package/dist/{splash-screen-BUKRc46i.cjs.map → splash-screen-C9HqX2nR.cjs.map} +1 -1
- package/dist/{splash-screen-B5Sgz7eG.js → splash-screen-COg3Z6n8.js} +1 -1
- package/dist/{splash-screen-B5Sgz7eG.js.map → splash-screen-COg3Z6n8.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-59eVZMmI.js → src-C7niWYur.js} +51 -51
- package/dist/src-C7niWYur.js.map +1 -0
- package/dist/{src-r2bV-AFk.cjs → src-I4M33WK2.cjs} +3 -3
- package/dist/src-I4M33WK2.cjs.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +3 -3
- package/dist/{store-CO4nJyGj.cjs → store-CjFHCSDb.cjs} +1 -1
- package/dist/{store-CO4nJyGj.cjs.map → store-CjFHCSDb.cjs.map} +1 -1
- package/dist/{store-Bmj6rvZY.js.map → store-CjzZDQt8.js.map} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +1 -1
- package/dist/{surface-BL6YlaS3.js → surface-0XM4DBaT.js} +2 -2
- package/dist/{surface-BL6YlaS3.js.map → surface-0XM4DBaT.js.map} +1 -1
- package/dist/{surface-B-y5Zzmz.cjs → surface-B6DA01kL.cjs} +1 -1
- package/dist/{surface-B-y5Zzmz.cjs.map → surface-B6DA01kL.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{surface.mixin-CSKqQH-0.cjs → surface.mixin-DxOi-xo0.cjs} +1 -1
- package/dist/{surface.mixin-CSKqQH-0.cjs.map → surface.mixin-DxOi-xo0.cjs.map} +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/{table-CzcIcVFc.cjs → table-B-DsOqzT.cjs} +2 -2
- package/dist/{table-CzcIcVFc.cjs.map → table-B-DsOqzT.cjs.map} +1 -1
- package/dist/{table-B0-Pi4G5.js → table-hBEZRxM_.js} +3 -3
- package/dist/{table-B0-Pi4G5.js.map → table-hBEZRxM_.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-D-VbZiFu.js → tabs-C7r4TqcX.js} +2 -2
- package/dist/{tabs-D-VbZiFu.js.map → tabs-C7r4TqcX.js.map} +1 -1
- package/dist/{tabs-CzC8kJyY.cjs → tabs-DZaLZUBy.cjs} +1 -1
- package/dist/{tabs-CzC8kJyY.cjs.map → tabs-DZaLZUBy.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Bh58QnlW.cjs +2 -0
- package/dist/{tailwind.mixin-ZzkXQTFA.cjs.map → tailwind.mixin-Bh58QnlW.cjs.map} +1 -1
- package/dist/tailwind.mixin-H5Pn7vSJ.js +219 -0
- package/dist/{tailwind.mixin-BCz3GEpw.js.map → tailwind.mixin-H5Pn7vSJ.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CgB6XptL.cjs → textarea-B2544vx9.cjs} +1 -1
- package/dist/{textarea-CgB6XptL.cjs.map → textarea-B2544vx9.cjs.map} +1 -1
- package/dist/{textarea-ZopeteYQ.js → textarea-CS-KdSLz.js} +1 -1
- package/dist/{textarea-ZopeteYQ.js.map → textarea-CS-KdSLz.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-C7As-iVa.js → theme-Cq_c9IO3.js} +7 -7
- package/dist/{theme-C7As-iVa.js.map → theme-Cq_c9IO3.js.map} +1 -1
- package/dist/{theme-D9bRCDs9.cjs → theme-DU5yXaV-.cjs} +1 -1
- package/dist/{theme-D9bRCDs9.cjs.map → theme-DU5yXaV-.cjs.map} +1 -1
- package/dist/{theme-button-D2nMfwSr.cjs → theme-button-CPujUbgV.cjs} +1 -1
- package/dist/{theme-button-D2nMfwSr.cjs.map → theme-button-CPujUbgV.cjs.map} +1 -1
- package/dist/{theme-button-BDXtIhZC.js → theme-button-OJl2ma0u.js} +1 -1
- package/dist/{theme-button-BDXtIhZC.js.map → theme-button-OJl2ma0u.js.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.events-EznKK2Y0.cjs.map → theme.events-DakXxZeP.cjs.map} +1 -1
- package/dist/{theme.events-Bw3mYjUA.js.map → theme.events-NuihzD_p.js.map} +1 -1
- package/dist/{theme.interface-Cyqv5XWY.js.map → theme.interface-Buged9Cg.js.map} +1 -1
- package/dist/{theme.interface-CCE3L1ql.cjs.map → theme.interface-DTwkuAKJ.cjs.map} +1 -1
- package/dist/theme.js +5 -5
- package/dist/{theme.service-ETiKUwVy.cjs → theme.service-DxJPUGlu.cjs} +1 -1
- package/dist/{theme.service-ETiKUwVy.cjs.map → theme.service-DxJPUGlu.cjs.map} +1 -1
- package/dist/{theme.service-_qP5WvB9.js → theme.service-cOfPrtfe.js} +2 -2
- package/dist/{theme.service-_qP5WvB9.js.map → theme.service-cOfPrtfe.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +1 -1
- package/dist/{tslib.es6-PMITL0Z3.cjs.map → tslib.es6-Cnt75pb6.cjs.map} +1 -1
- package/dist/{tslib.es6-vJQZBGJO.js.map → tslib.es6-DMzzJKHV.js.map} +1 -1
- package/dist/{typewriter-DaTkMEHc.js → typewriter-DyN7xa0n.js} +5 -5
- package/dist/{typewriter-DaTkMEHc.js.map → typewriter-DyN7xa0n.js.map} +1 -1
- package/dist/{typewriter-BjuFsiR3.cjs → typewriter-LK0S4NEr.cjs} +1 -1
- package/dist/{typewriter-BjuFsiR3.cjs.map → typewriter-LK0S4NEr.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-C8PD8So2.cjs → utils-2qrmPb78.cjs} +1 -1
- package/dist/{utils-C8PD8So2.cjs.map → utils-2qrmPb78.cjs.map} +1 -1
- package/dist/{utils-DVuCPDfw.js → utils-xBXLvebz.js} +3 -3
- package/dist/{utils-DVuCPDfw.js.map → utils-xBXLvebz.js.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +5 -5
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-DPSIGCUq.js → window-BWecg8Ih.js} +6 -6
- package/dist/{window-DPSIGCUq.js.map → window-BWecg8Ih.js.map} +1 -1
- package/dist/{window-DAWRoXo1.cjs → window-Cjv2GqSN.cjs} +1 -1
- package/dist/{window-DAWRoXo1.cjs.map → window-Cjv2GqSN.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +15 -3
- package/skills/schmancy/INDEX.md +1 -1
- package/skills/schmancy/overlay.md +200 -0
- package/src/agent/agent-bundle.test.ts +92 -0
- package/src/agent/agent-entry.ts +17 -0
- package/src/agent/helpers.ts +161 -0
- package/src/agent/index.ts +1 -0
- package/src/agent/schmancy-skill.ts +71 -0
- package/src/agent/virtual-manifest.d.ts +10 -0
- package/src/area/area.service.ts +11 -0
- package/src/content-drawer/drawer.service.ts +9 -0
- package/src/dialog/dialog-service.ts +11 -1
- package/src/notification/notification-service.ts +11 -1
- package/src/overlay/index.ts +15 -0
- package/src/overlay/overlay.animations.ts +137 -0
- package/src/overlay/overlay.component.ts +452 -0
- package/src/overlay/overlay.confirm-body.ts +149 -0
- package/src/overlay/overlay.gestures.ts +131 -0
- package/src/overlay/overlay.layout.ts +76 -0
- package/src/overlay/overlay.service.ts +299 -0
- package/src/overlay/overlay.stack.ts +171 -0
- package/src/overlay/overlay.types.ts +146 -0
- package/src/sheet/sheet.service.ts +10 -0
- package/src/theme/theme.service.ts +11 -1
- package/types/src/agent/agent-bundle.test.d.ts +1 -0
- package/types/src/agent/agent-entry.d.ts +4 -0
- package/types/src/agent/helpers.d.ts +87 -0
- package/types/src/agent/index.d.ts +1 -0
- package/types/src/agent/schmancy-skill.d.ts +33 -0
- package/types/src/area/area.service.d.ts +11 -0
- package/types/src/content-drawer/drawer.service.d.ts +9 -0
- package/types/src/dialog/dialog-service.d.ts +11 -1
- package/types/src/notification/notification-service.d.ts +11 -1
- package/types/src/overlay/index.d.ts +5 -0
- package/types/src/overlay/overlay.animations.d.ts +26 -0
- package/types/src/overlay/overlay.component.d.ts +48 -0
- package/types/src/overlay/overlay.confirm-body.d.ts +42 -0
- package/types/src/overlay/overlay.gestures.d.ts +39 -0
- package/types/src/overlay/overlay.layout.d.ts +48 -0
- package/types/src/overlay/overlay.service.d.ts +62 -0
- package/types/src/overlay/overlay.stack.d.ts +25 -0
- package/types/src/overlay/overlay.types.d.ts +122 -0
- package/types/src/sheet/sheet.service.d.ts +9 -0
- package/types/src/theme/theme.service.d.ts +11 -0
- package/dist/area-CBjmKtN-.cjs.map +0 -1
- package/dist/area-CjX0Ckh9.js.map +0 -1
- package/dist/chunk-BCfY8kxB.cjs +0 -1
- package/dist/context-BRtGc7PP.cjs +0 -1
- package/dist/context-DgD3c6q-.js +0 -3
- package/dist/float-I4wePTk7.cjs +0 -1
- package/dist/notification-BT84PlwC.cjs.map +0 -1
- package/dist/notification-DvrozLTu.js.map +0 -1
- package/dist/src-59eVZMmI.js.map +0 -1
- package/dist/src-r2bV-AFk.cjs.map +0 -1
- package/dist/tailwind.mixin-BCz3GEpw.js +0 -219
- package/dist/tailwind.mixin-ZzkXQTFA.cjs +0 -2
- /package/dist/{flow-BPDtbhLe.js → agent/flow-CaPi2G8y.js} +0 -0
- /package/dist/{chunk-C_1VqBVD.js → agent/rolldown-runtime-DsMetpgY.js} +0 -0
- /package/dist/{animation-Bcwh107v.cjs → animation-CQRdLgzX.cjs} +0 -0
- /package/dist/{animation-CXKSuUoE.js → animation-hXFClrIn.js} +0 -0
- /package/dist/{date-range-inline-B_g1YXu3.js → date-range-inline-CpKG6qt2.js} +0 -0
- /package/dist/{flow-Dn9AZktE.cjs → flow-ClAJ6Qby.cjs} +0 -0
- /package/dist/{form-C1qS9uvS.js → form-rCZqoAoK.js} +0 -0
- /package/dist/{hashContent-BUqULUiZ.js → hashContent-B2IntJQf.js} +0 -0
- /package/dist/{hashContent-CI39BY-_.cjs → hashContent-CahnEuut.cjs} +0 -0
- /package/dist/{intersection-C0JuW_7U.js → intersection-BrXp4YTO.js} +0 -0
- /package/dist/{overlay-stack-J_eJCUTX.cjs → overlay-stack-7bs4ZNnh.cjs} +0 -0
- /package/dist/{overlay-stack-BJt_r6aZ.js → overlay-stack-DXPYHPhk.js} +0 -0
- /package/dist/{reduced-motion-B83yZbcO.js → reduced-motion-BZTLqAyl.js} +0 -0
- /package/dist/{search-BlGJ6uJv.js → search-CvUZRLF1.js} +0 -0
- /package/dist/{search-C8eAOzBm.cjs → search-CwMav5QB.cjs} +0 -0
- /package/dist/{store-Bmj6rvZY.js → store-CjzZDQt8.js} +0 -0
- /package/dist/{theme.events-EznKK2Y0.cjs → theme.events-DakXxZeP.cjs} +0 -0
- /package/dist/{theme.events-Bw3mYjUA.js → theme.events-NuihzD_p.js} +0 -0
- /package/dist/{theme.interface-Cyqv5XWY.js → theme.interface-Buged9Cg.js} +0 -0
- /package/dist/{theme.interface-CCE3L1ql.cjs → theme.interface-DTwkuAKJ.cjs} +0 -0
- /package/dist/{tslib.es6-PMITL0Z3.cjs → tslib.es6-Cnt75pb6.cjs} +0 -0
- /package/dist/{tslib.es6-vJQZBGJO.js → tslib.es6-DMzzJKHV.js} +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit'
|
|
2
|
+
import type { Observable } from 'rxjs'
|
|
3
|
+
import type { ComponentType } from '../area/router.types'
|
|
4
|
+
import type { THistoryStrategy } from '../area/router.types'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* What the caller is showing. Flat union — `typeof`-discriminated at runtime.
|
|
8
|
+
* Reuses area's `ComponentType` (class | tag name | HTMLElement | lazy loader)
|
|
9
|
+
* and adds Lit `TemplateResult` for inline templates.
|
|
10
|
+
*
|
|
11
|
+
* The common case is one positional arg: `show(MyEditor)`, `show(html\`...\`)`,
|
|
12
|
+
* `show(el)`, `show('my-tag')`, `show(lazy(() => import('./x')))`.
|
|
13
|
+
*/
|
|
14
|
+
export type Content = ComponentType | TemplateResult
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Anchor hint for positioning. When provided, the layout engine tries to
|
|
18
|
+
* anchor the overlay near this point via Floating UI / CSS Anchor Positioning.
|
|
19
|
+
* Falls back to centered / sheet if the anchored position can't fit.
|
|
20
|
+
*
|
|
21
|
+
* `MouseEvent | TouchEvent` — idiomatic: pass the event that triggered the show.
|
|
22
|
+
* `HTMLElement` — anchor to the element's bounding box (menus, tooltips).
|
|
23
|
+
* `{ x, y }` — explicit coordinates (rare; for programmatic positioning).
|
|
24
|
+
*/
|
|
25
|
+
export type Anchor = MouseEvent | HTMLElement | { x: number; y: number }
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* How the overlay should behave. All optional; the system handles every
|
|
29
|
+
* layout decision itself.
|
|
30
|
+
*/
|
|
31
|
+
export interface ShowOptions {
|
|
32
|
+
/** Props to merge into the mounted component. Only meaningful when
|
|
33
|
+
* `content` is a class, tag, or lazy loader. */
|
|
34
|
+
props?: Record<string, unknown>
|
|
35
|
+
|
|
36
|
+
/** Anchor hint — triggers anchored layout (the novel default) when passed.
|
|
37
|
+
* Pass the MouseEvent that opened the overlay. */
|
|
38
|
+
anchor?: Anchor
|
|
39
|
+
|
|
40
|
+
/** Default `true`. `false` blocks Esc / backdrop click / swipe / popstate.
|
|
41
|
+
* Programmatic dismiss (sub.unsubscribe / dismissAll) always works. */
|
|
42
|
+
dismissable?: boolean
|
|
43
|
+
|
|
44
|
+
/** Default `false`. Keep DOM between successive shows with the same
|
|
45
|
+
* content — reuse cached mount instead of reconstructing. */
|
|
46
|
+
persist?: boolean
|
|
47
|
+
|
|
48
|
+
/** Standard web-platform cancellation input. Composes with fetch,
|
|
49
|
+
* addEventListener, getUserMedia, etc. When signal aborts, overlay
|
|
50
|
+
* dismisses (same as unsubscribe). */
|
|
51
|
+
signal?: AbortSignal
|
|
52
|
+
|
|
53
|
+
/** Rare escape hatch. Defaults: `false` for anchored, `true` for
|
|
54
|
+
* centered/sheet. Setting `modal: true` on an anchored overlay forces
|
|
55
|
+
* <dialog>.showModal() semantics (focus trap + background inert) —
|
|
56
|
+
* use for destructive-confirm menus. */
|
|
57
|
+
modal?: boolean
|
|
58
|
+
|
|
59
|
+
/** Default `'push'`. Same vocabulary as `area.push()`.
|
|
60
|
+
* - `'push'` — new history entry; back dismisses, forward re-opens.
|
|
61
|
+
* - `'replace'` — replace current entry; back skips the overlay.
|
|
62
|
+
* - `'silent'` — no history; for tooltips / transient / ephemeral UI. */
|
|
63
|
+
historyStrategy?: THistoryStrategy
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Resolved layout. Pure output of the dispatch engine; callers never pick.
|
|
68
|
+
* - `'centered'` — native <dialog>.showModal(), focus-trapped.
|
|
69
|
+
* - `'anchored'` — popover="auto" + CSS Anchor Positioning / Floating UI,
|
|
70
|
+
* non-modal, background stays interactive.
|
|
71
|
+
* - `'sheet'` — native <dialog>.showModal() as a bottom sheet,
|
|
72
|
+
* swipe-to-dismiss, safe-area aware.
|
|
73
|
+
*/
|
|
74
|
+
export type OverlayLayout = 'centered' | 'anchored' | 'sheet'
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Read-only snapshot of an active overlay. Emitted as part of the
|
|
78
|
+
* `openOverlays$` stream for stack introspection.
|
|
79
|
+
*/
|
|
80
|
+
export interface OverlayEntry {
|
|
81
|
+
/** Internal id (auto-generated uuid). Exposed for debugging / devtools.
|
|
82
|
+
* Not a public identifier — callers use the Subscription for identity. */
|
|
83
|
+
readonly id: string
|
|
84
|
+
/** The mounted `<schmancy-overlay>` element. Escape hatch for DOM access. */
|
|
85
|
+
readonly element: HTMLElement
|
|
86
|
+
/** Current layout, chosen by the dispatch engine. */
|
|
87
|
+
readonly layout: OverlayLayout
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Reason the overlay closed. Emitted on the internal close-event `detail`
|
|
92
|
+
* for consumers who need to distinguish user-dismiss from programmatic
|
|
93
|
+
* dismiss from form submission.
|
|
94
|
+
*/
|
|
95
|
+
export type CloseReason =
|
|
96
|
+
| 'structured' // content dispatched CustomEvent('close', { detail })
|
|
97
|
+
| 'native-submit' // <form method="dialog"> committed a returnValue
|
|
98
|
+
| 'escape' // user pressed Escape
|
|
99
|
+
| 'backdrop' // user clicked outside the overlay
|
|
100
|
+
| 'swipe' // user swiped a bottom sheet down
|
|
101
|
+
| 'popstate' // user hit back button / hardware back
|
|
102
|
+
| 'light-dismiss' // popover light-dismiss (clicked outside anchored overlay)
|
|
103
|
+
| 'programmatic' // sub.unsubscribe() / dismissAll()
|
|
104
|
+
| 'abort' // AbortSignal aborted
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Options for confirm() / danger() / ask() sugar.
|
|
108
|
+
*/
|
|
109
|
+
export interface OverlayConfirmOptions {
|
|
110
|
+
title?: string
|
|
111
|
+
subtitle?: string
|
|
112
|
+
message?: string
|
|
113
|
+
/** Default `'Confirm'`. */
|
|
114
|
+
confirmText?: string
|
|
115
|
+
/** Default `'Cancel'`. */
|
|
116
|
+
cancelText?: string
|
|
117
|
+
/** `'danger'` flips the confirm button to destructive styling and
|
|
118
|
+
* sets `role="alertdialog"`. */
|
|
119
|
+
variant?: 'default' | 'danger'
|
|
120
|
+
/** Anchor hint — same semantics as `show()`. */
|
|
121
|
+
anchor?: Anchor
|
|
122
|
+
/** Standard cancellation input. */
|
|
123
|
+
signal?: AbortSignal
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Options for prompt() sugar.
|
|
128
|
+
*/
|
|
129
|
+
export interface OverlayPromptOptions extends OverlayConfirmOptions {
|
|
130
|
+
label?: string
|
|
131
|
+
defaultValue?: string
|
|
132
|
+
placeholder?: string
|
|
133
|
+
inputType?: 'text' | 'email' | 'number' | 'password' | 'url' | 'tel'
|
|
134
|
+
/** Optional HTML5 validation pattern applied to the input. */
|
|
135
|
+
pattern?: string
|
|
136
|
+
required?: boolean
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Signature of the primary verb — declared here for consumption by the
|
|
141
|
+
* service and the skill docs. Cold Observable; subscription IS the lifecycle.
|
|
142
|
+
*/
|
|
143
|
+
export type ShowFn = <T = void>(
|
|
144
|
+
content: Content,
|
|
145
|
+
options?: ShowOptions,
|
|
146
|
+
) => Observable<T | undefined>
|
|
@@ -232,4 +232,14 @@ class BottomSheetService {
|
|
|
232
232
|
}
|
|
233
233
|
|
|
234
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
|
+
*/
|
|
235
245
|
export const sheet = new BottomSheetService()
|
|
@@ -514,7 +514,17 @@ class ThemeService {
|
|
|
514
514
|
}
|
|
515
515
|
}
|
|
516
516
|
|
|
517
|
-
|
|
517
|
+
/**
|
|
518
|
+
* Theme singleton. Reads and mutates the active theme (scheme, source color,
|
|
519
|
+
* locale); persists the user's scheme choice. Components subscribe via
|
|
520
|
+
* `theme.theme$` for changes.
|
|
521
|
+
*
|
|
522
|
+
* @service
|
|
523
|
+
* @summary Theme service — active scheme, source color, locale.
|
|
524
|
+
* @method next({ scheme?, source?, locale? }) - Update theme state.
|
|
525
|
+
* @method theme$ - Observable<TSchmancyTheme>; emits on every theme change.
|
|
526
|
+
* @method toggle() - Toggle between light and dark schemes.
|
|
527
|
+
*/
|
|
518
528
|
export const theme = ThemeService.getInstance()
|
|
519
529
|
export const schmancyTheme = theme // Alias for convenience
|
|
520
530
|
export default theme
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './agent-entry';
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import manifest from 'virtual:schmancy-manifest';
|
|
2
|
+
export type Manifest = typeof manifest;
|
|
3
|
+
export type ElementEntry = {
|
|
4
|
+
kind: 'class';
|
|
5
|
+
name: string;
|
|
6
|
+
tagName?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
summary?: string;
|
|
9
|
+
attributes?: Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
type?: {
|
|
13
|
+
text?: string;
|
|
14
|
+
};
|
|
15
|
+
default?: string;
|
|
16
|
+
values?: string[];
|
|
17
|
+
}>;
|
|
18
|
+
events?: Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
type?: {
|
|
22
|
+
text?: string;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
25
|
+
slots?: Array<{
|
|
26
|
+
name: string;
|
|
27
|
+
description?: string;
|
|
28
|
+
}>;
|
|
29
|
+
cssProperties?: Array<{
|
|
30
|
+
name: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
}>;
|
|
33
|
+
cssParts?: Array<{
|
|
34
|
+
name: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
}>;
|
|
37
|
+
whenToUse?: string;
|
|
38
|
+
platformPrimitive?: {
|
|
39
|
+
tag: string;
|
|
40
|
+
mode?: string;
|
|
41
|
+
note?: string;
|
|
42
|
+
};
|
|
43
|
+
contexts?: {
|
|
44
|
+
provides?: string[];
|
|
45
|
+
consumes?: string[];
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export type ServiceEntry = {
|
|
49
|
+
kind: 'variable';
|
|
50
|
+
name: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
summary?: string;
|
|
53
|
+
service: true;
|
|
54
|
+
methods?: Array<{
|
|
55
|
+
signature: string;
|
|
56
|
+
summary?: string;
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
export declare function help(tag?: string): unknown;
|
|
60
|
+
export declare function tokens(): string[];
|
|
61
|
+
export declare function platformPrimitive(tag: string): ElementEntry['platformPrimitive'] | null;
|
|
62
|
+
export declare function registeredTags(): string[];
|
|
63
|
+
export declare function a11yAudit(): Array<{
|
|
64
|
+
tag: string;
|
|
65
|
+
role: string | null;
|
|
66
|
+
ariaLabel: string | null;
|
|
67
|
+
hasShadowRoot: boolean;
|
|
68
|
+
formAssociated: boolean;
|
|
69
|
+
}>;
|
|
70
|
+
export type Capabilities = {
|
|
71
|
+
popover: boolean;
|
|
72
|
+
declarativeShadowDom: boolean;
|
|
73
|
+
scopedRegistries: boolean;
|
|
74
|
+
trustedTypes: boolean;
|
|
75
|
+
cssRegisteredProperties: boolean;
|
|
76
|
+
elementInternalsAria: boolean;
|
|
77
|
+
formAssociated: boolean;
|
|
78
|
+
adoptedStyleSheets: boolean;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Runtime feature probe. Tells an agent which platform capabilities the
|
|
82
|
+
* current sandbox exposes, so it can adapt without assuming the sandbox CSP
|
|
83
|
+
* or browser version. Every check is feature-detect, not UA-sniff.
|
|
84
|
+
*/
|
|
85
|
+
export declare function capabilities(): Capabilities;
|
|
86
|
+
export declare function manifestUrl(): string;
|
|
87
|
+
export { manifest };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './schmancy-skill';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { a11yAudit, capabilities, help, manifest, platformPrimitive, registeredTags, tokens } from './helpers';
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
schmancy?: {
|
|
5
|
+
manifest: typeof manifest;
|
|
6
|
+
manifestUrl: string;
|
|
7
|
+
help: typeof help;
|
|
8
|
+
tokens: typeof tokens;
|
|
9
|
+
platformPrimitive: typeof platformPrimitive;
|
|
10
|
+
registeredTags: typeof registeredTags;
|
|
11
|
+
a11yAudit: typeof a11yAudit;
|
|
12
|
+
capabilities: typeof capabilities;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
declare const SchmancySkill_base: CustomElementConstructor & import("../../mixins/constructor").Constructor<import("lit").LitElement> & import("../../mixins/constructor").Constructor<import("../../mixins/baseElement").IBaseMixin>;
|
|
17
|
+
/**
|
|
18
|
+
* Self-describing runtime helper. Drop `<schmancy-skill></schmancy-skill>`
|
|
19
|
+
* once on a page and `window.schmancy.help('schmancy-button')` returns the
|
|
20
|
+
* machine-readable entry for any tag. Renders nothing.
|
|
21
|
+
*
|
|
22
|
+
* @element schmancy-skill
|
|
23
|
+
*/
|
|
24
|
+
export declare class SchmancySkill extends SchmancySkill_base {
|
|
25
|
+
connectedCallback(): void;
|
|
26
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
27
|
+
}
|
|
28
|
+
declare global {
|
|
29
|
+
interface HTMLElementTagNameMap {
|
|
30
|
+
'schmancy-skill': SchmancySkill;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -130,5 +130,16 @@ declare class AreaService implements AreaSubscription {
|
|
|
130
130
|
*/
|
|
131
131
|
getRoute(areaName: string): ActiveRoute | undefined;
|
|
132
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Area router singleton. Drives named `<schmancy-area>` outlets in the DOM
|
|
135
|
+
* — imperative push / pop, URL-synced, state-restoring. Pair with
|
|
136
|
+
* `lazy(() => import('./view'))` for code-split routes.
|
|
137
|
+
*
|
|
138
|
+
* @service
|
|
139
|
+
* @summary Imperative outlet-based router for `<schmancy-area>` elements.
|
|
140
|
+
* @method push({ area, component, params?, state? }) - Navigate an area to a component.
|
|
141
|
+
* @method pop(areaName) - Pop the top entry off an area's stack.
|
|
142
|
+
* @method current$(areaName) - Observable of the active route state for an area.
|
|
143
|
+
*/
|
|
133
144
|
export declare const area: AreaService;
|
|
134
145
|
export default area;
|
|
@@ -36,5 +36,14 @@ declare class DrawerService {
|
|
|
36
36
|
*/
|
|
37
37
|
push(options: DrawerPushOptions): void;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Content-drawer service. Mounts any element inside the right-hand content
|
|
41
|
+
* drawer of a `<schmancy-content-drawer>` layout.
|
|
42
|
+
*
|
|
43
|
+
* @service
|
|
44
|
+
* @summary Imperative content-drawer (right-side navigation panel).
|
|
45
|
+
* @method render({ component, ...options }) - Mount an element in the drawer.
|
|
46
|
+
* @method close() - Close the drawer.
|
|
47
|
+
*/
|
|
39
48
|
export declare const schmancyContentDrawer: DrawerService;
|
|
40
49
|
export {};
|
|
@@ -67,7 +67,17 @@ export declare class DialogService {
|
|
|
67
67
|
private getDefaultPosition;
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
* Global dialog utility
|
|
70
|
+
* Global dialog utility. Imperative modal API — open any element as a dialog,
|
|
71
|
+
* or use the built-in `confirm` / `ask` / `danger` prompts. Returns Promises
|
|
72
|
+
* that resolve when the user picks an action.
|
|
73
|
+
*
|
|
74
|
+
* @service
|
|
75
|
+
* @summary Imperative modal dialogs and built-in confirm/ask/danger prompts.
|
|
76
|
+
* @method confirm(options: DialogOptions) - Built-in confirm prompt. Returns Promise<boolean>.
|
|
77
|
+
* @method ask(message, event?) - One-line yes/no prompt anchored to the triggering event.
|
|
78
|
+
* @method danger(options) - Destructive-action confirm styled with the error palette.
|
|
79
|
+
* @method component(element, options?) - Open any element as a modal.
|
|
80
|
+
* @method dismiss(id?) - Dismiss a dialog by id, or the topmost dialog.
|
|
71
81
|
*/
|
|
72
82
|
export declare const $dialog: {
|
|
73
83
|
confirm: (options: DialogOptions) => Promise<boolean>;
|
|
@@ -64,7 +64,17 @@ export declare class NotificationService {
|
|
|
64
64
|
persistent(message: string, options?: Partial<Omit<NotificationOptions, 'message' | 'duration'>>): string;
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
* Global notification utility -
|
|
67
|
+
* Global notification (toast) utility. Fire-and-forget API for success,
|
|
68
|
+
* error, info, and warning toasts, plus a low-level `show` for custom
|
|
69
|
+
* notifications.
|
|
70
|
+
*
|
|
71
|
+
* @service
|
|
72
|
+
* @summary Toast notifications — success, error, info, warning.
|
|
73
|
+
* @method show(options: NotificationOptions) - Low-level; show any NotificationOptions.
|
|
74
|
+
* @method success(message, options?) - Green success toast.
|
|
75
|
+
* @method error(message, options?) - Red error toast.
|
|
76
|
+
* @method info(message, options?) - Blue informational toast.
|
|
77
|
+
* @method warning(message, options?) - Amber warning toast.
|
|
68
78
|
*/
|
|
69
79
|
export declare const $notify: {
|
|
70
80
|
/**
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './overlay.component';
|
|
2
|
+
export * from './overlay.confirm-body';
|
|
3
|
+
export * from './overlay.service';
|
|
4
|
+
export type { Anchor, CloseReason, Content, OverlayConfirmOptions, OverlayEntry, OverlayLayout, OverlayPromptOptions, ShowFn, ShowOptions, } from './overlay.types';
|
|
5
|
+
export { lazy } from '../area/lazy';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { OverlayLayout } from './overlay.types';
|
|
2
|
+
/**
|
|
3
|
+
* WAAPI keyframes + options per layout + direction.
|
|
4
|
+
*
|
|
5
|
+
* One animation vocabulary — no per-element bespoke keyframes. Aligns
|
|
6
|
+
* with the `animation` skill (spring physics presets). Honors
|
|
7
|
+
* `prefers-reduced-motion` by collapsing transforms to opacity-only.
|
|
8
|
+
*
|
|
9
|
+
* Returns `null` when reduced-motion is active and only opacity change
|
|
10
|
+
* is needed — the caller sets style directly.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Shape matches both DOM `AnimationEffectTiming` and
|
|
14
|
+
* `KeyframeAnimationOptions` so it passes structural checks in both
|
|
15
|
+
* older and newer `lib.dom.d.ts` vintages.
|
|
16
|
+
*/
|
|
17
|
+
export interface AnimationSpec {
|
|
18
|
+
keyframes: Keyframe[];
|
|
19
|
+
options: {
|
|
20
|
+
duration: number;
|
|
21
|
+
easing: string;
|
|
22
|
+
fill?: FillMode;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare function backdropAnimation(direction: 'in' | 'out'): AnimationSpec;
|
|
26
|
+
export declare function surfaceAnimation(layout: OverlayLayout, direction: 'in' | 'out'): AnimationSpec;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import type { CloseReason, Content, OverlayLayout, ShowOptions } from './overlay.types';
|
|
3
|
+
declare const SchmancyOverlay_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
4
|
+
/**
|
|
5
|
+
* The single overlay element. Hosts a native `<dialog>` in its shadow
|
|
6
|
+
* root for centered/sheet layouts; for anchored, we stay modeless by
|
|
7
|
+
* using `<dialog>` with .show() (non-modal) + explicit positioning.
|
|
8
|
+
*
|
|
9
|
+
* Public lifecycle: the service calls `open()` to mount content and
|
|
10
|
+
* animate in, `close(reason)` to animate out and dismiss. The element
|
|
11
|
+
* dispatches `overlay-close` when closed; the service listens and
|
|
12
|
+
* resolves the caller's Observable.
|
|
13
|
+
*/
|
|
14
|
+
export declare class SchmancyOverlay extends SchmancyOverlay_base {
|
|
15
|
+
layout: OverlayLayout;
|
|
16
|
+
dismissable: boolean;
|
|
17
|
+
modal: boolean;
|
|
18
|
+
private _dialog;
|
|
19
|
+
private _surface;
|
|
20
|
+
/** Close trigger for the service; emits the reason + detail payload. */
|
|
21
|
+
private readonly _closed$;
|
|
22
|
+
private _mounted;
|
|
23
|
+
private _closing;
|
|
24
|
+
/** Service subscribes to this to know when the overlay dismissed. */
|
|
25
|
+
get closed$(): import('rxjs').Observable<{
|
|
26
|
+
reason: CloseReason;
|
|
27
|
+
result?: unknown;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Mount content and animate in. Called by the service after the
|
|
31
|
+
* element is attached to the DOM. Returns a promise that resolves
|
|
32
|
+
* when the entrance animation completes.
|
|
33
|
+
*/
|
|
34
|
+
open(content: Content, options: ShowOptions): Promise<void>;
|
|
35
|
+
/** Play exit animations then close the native dialog. */
|
|
36
|
+
close(reason: CloseReason, result?: unknown): Promise<void>;
|
|
37
|
+
private wireCloseTriggers;
|
|
38
|
+
private positionAnchored;
|
|
39
|
+
private playEnterAnimations;
|
|
40
|
+
private playExitAnimations;
|
|
41
|
+
protected render(): TemplateResult;
|
|
42
|
+
}
|
|
43
|
+
declare global {
|
|
44
|
+
interface HTMLElementTagNameMap {
|
|
45
|
+
'schmancy-overlay': SchmancyOverlay;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
declare const SchmancyOverlayPromptBody_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
3
|
+
/**
|
|
4
|
+
* Internal body component used by the `confirm()` / `prompt()` sugar.
|
|
5
|
+
*
|
|
6
|
+
* Minimal, dependency-free — plain HTML buttons / input so this file
|
|
7
|
+
* doesn't need to import schmancy-form / schmancy-button (avoids the
|
|
8
|
+
* risk of circular module graphs during early imports of $overlay).
|
|
9
|
+
*
|
|
10
|
+
* Emits a `close` CustomEvent with the typed result; the overlay picks
|
|
11
|
+
* that up as the primary return channel. For custom-styled confirms,
|
|
12
|
+
* callers pass their own component to `show()`.
|
|
13
|
+
*/
|
|
14
|
+
export declare class SchmancyOverlayPromptBody extends SchmancyOverlayPromptBody_base {
|
|
15
|
+
heading?: string;
|
|
16
|
+
subtitle?: string;
|
|
17
|
+
message?: string;
|
|
18
|
+
confirmText: string;
|
|
19
|
+
cancelText: string;
|
|
20
|
+
variant: 'default' | 'danger';
|
|
21
|
+
/** Presence of `mode` switches between confirm (boolean) and prompt (string). */
|
|
22
|
+
mode: 'confirm' | 'prompt';
|
|
23
|
+
label?: string;
|
|
24
|
+
defaultValue: string;
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
inputType: string;
|
|
27
|
+
pattern?: string;
|
|
28
|
+
required: boolean;
|
|
29
|
+
private _input?;
|
|
30
|
+
firstUpdated(): void;
|
|
31
|
+
private dismiss;
|
|
32
|
+
private handleCancel;
|
|
33
|
+
private handleConfirm;
|
|
34
|
+
private handleSubmit;
|
|
35
|
+
protected render(): TemplateResult;
|
|
36
|
+
}
|
|
37
|
+
declare global {
|
|
38
|
+
interface HTMLElementTagNameMap {
|
|
39
|
+
'schmancy-overlay-prompt-body': SchmancyOverlayPromptBody;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* Swipe-to-dismiss gesture for sheet-layout overlays.
|
|
4
|
+
*
|
|
5
|
+
* RxJS-native (rxjs skill principle 3: every async source is an Observable).
|
|
6
|
+
* Returns an Observable that emits `'dismiss'` when the gesture passes the
|
|
7
|
+
* distance/velocity threshold. Caller maps emissions to teardown.
|
|
8
|
+
*
|
|
9
|
+
* Thresholds are policy constants, not magic numbers.
|
|
10
|
+
*/
|
|
11
|
+
/** Distance beyond which the gesture dismisses, in px. */
|
|
12
|
+
export declare const DISMISS_DISTANCE_PX = 80;
|
|
13
|
+
/** Distance beyond which the gesture dismisses, as a fraction of sheet height. */
|
|
14
|
+
export declare const DISMISS_DISTANCE_FRACTION = 0.3;
|
|
15
|
+
/** Velocity beyond which the gesture dismisses, in px per ms. */
|
|
16
|
+
export declare const DISMISS_VELOCITY_PX_PER_MS = 0.5;
|
|
17
|
+
/** Drag only starts if touchstart is within this top-px band (unless a drag handle is used). */
|
|
18
|
+
export declare const DRAG_START_TOP_PX = 40;
|
|
19
|
+
/** Snap-back spring duration when gesture doesn't pass threshold. */
|
|
20
|
+
export declare const SNAP_BACK_MS = 300;
|
|
21
|
+
export interface SwipeInputs {
|
|
22
|
+
/** The surface element to track gestures on. */
|
|
23
|
+
surface: HTMLElement;
|
|
24
|
+
/** Optional drag handle. When provided, drag can start from anywhere on
|
|
25
|
+
* the handle; without it, drag must start in the top DRAG_START_TOP_PX band. */
|
|
26
|
+
dragHandle?: HTMLElement | null;
|
|
27
|
+
/** Completes the gesture stream (component disconnect / layout change). */
|
|
28
|
+
until$: Observable<unknown>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns an Observable that emits exactly once when the user commits to
|
|
32
|
+
* dismissing the sheet (threshold passed). The gesture is owned by the
|
|
33
|
+
* caller — teardown fires on unsubscribe.
|
|
34
|
+
*
|
|
35
|
+
* During an in-progress drag, the surface's `transform` is updated
|
|
36
|
+
* directly for 1:1 tracking. On release-but-not-dismissed, the surface
|
|
37
|
+
* snaps back via a CSS transition.
|
|
38
|
+
*/
|
|
39
|
+
export declare function swipeToDismiss$(inputs: SwipeInputs): Observable<'dismiss'>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Anchor, OverlayLayout } from './overlay.types';
|
|
2
|
+
/**
|
|
3
|
+
* Layout dispatch engine — pure function of (anchor, content, viewport).
|
|
4
|
+
* No DOM access, no side effects — testable with synthetic inputs.
|
|
5
|
+
*
|
|
6
|
+
* Thresholds are policy constants, not magic numbers. Changes are visible
|
|
7
|
+
* as named-constant diffs, not hidden in inline literals (state skill:
|
|
8
|
+
* "thresholds ARE the policy").
|
|
9
|
+
*/
|
|
10
|
+
/** Below this viewport width, every overlay becomes a bottom sheet. */
|
|
11
|
+
export declare const NARROW_VIEWPORT_PX = 640;
|
|
12
|
+
/** Content taller than this fraction of viewport height → sheet. */
|
|
13
|
+
export declare const TALL_CONTENT_FRACTION = 0.8;
|
|
14
|
+
/** Content wider than this fraction of viewport width → sheet. */
|
|
15
|
+
export declare const WIDE_CONTENT_FRACTION = 0.9;
|
|
16
|
+
/** Floating UI / CSS anchor-positioning safety padding. */
|
|
17
|
+
export declare const ANCHOR_FIT_PADDING_PX = 16;
|
|
18
|
+
export interface LayoutInputs {
|
|
19
|
+
anchor?: Anchor;
|
|
20
|
+
content: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
};
|
|
24
|
+
viewport: {
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
/** `matchMedia('(pointer: coarse)').matches` at call time. */
|
|
28
|
+
isCoarsePointer: boolean;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Priority order:
|
|
33
|
+
* 1. viewport / content forces sheet
|
|
34
|
+
* 2. anchor provided → anchored (the novel default)
|
|
35
|
+
* 3. fallback → centered
|
|
36
|
+
*
|
|
37
|
+
* Floating UI's `flip` + `shift` + `size` middleware handles "anchor
|
|
38
|
+
* doesn't fit initially" — it returns a fitting position rather than
|
|
39
|
+
* rejecting. So step 2 does NOT branch on "does the anchor fit?";
|
|
40
|
+
* Floating UI's output IS the answer. If content is genuinely too
|
|
41
|
+
* large for any anchored position, step 1 already routed to sheet.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveLayout(inputs: LayoutInputs): OverlayLayout;
|
|
44
|
+
/**
|
|
45
|
+
* Read the current viewport + pointer inputs. Separated so tests can
|
|
46
|
+
* substitute synthetic inputs and the `resolveLayout` fn stays pure.
|
|
47
|
+
*/
|
|
48
|
+
export declare function readViewport(): LayoutInputs['viewport'];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import type { CloseReason, OverlayConfirmOptions, Content, OverlayEntry, OverlayPromptOptions, ShowOptions } from './overlay.types';
|
|
3
|
+
/**
|
|
4
|
+
* Public read-only stream of the current overlay stack. Subscribe to
|
|
5
|
+
* observe stack changes — e.g. to update a breadcrumb, show a "close
|
|
6
|
+
* all" button, or gate another action while any overlay is open.
|
|
7
|
+
*
|
|
8
|
+
* Emits synchronously with the current snapshot on subscribe. Never
|
|
9
|
+
* completes — the caller owns teardown via `takeUntil(this.disconnecting)`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const openOverlays$: Observable<readonly OverlayEntry[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Open an overlay containing `content`. Returns a cold Observable — the
|
|
14
|
+
* overlay mounts on subscribe and dismisses on unsubscribe. Emits at
|
|
15
|
+
* most one value (the result from content's `close` event) then completes.
|
|
16
|
+
*
|
|
17
|
+
* The subscription IS the overlay lifecycle. `takeUntil(this.disconnecting)`
|
|
18
|
+
* on the caller's side means the overlay auto-dismisses when the caller
|
|
19
|
+
* unmounts — no handles to track, no leaks.
|
|
20
|
+
*
|
|
21
|
+
* **Anchored is the novel default.** When triggered by a user event, pass
|
|
22
|
+
* it as `anchor` — the overlay blooms from the point of attention. Falls
|
|
23
|
+
* back to centered or sheet when the viewport / content makes that the
|
|
24
|
+
* better layout (see overlay.layout.ts).
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* show(MyEditor, { props: { id }, anchor: event })
|
|
28
|
+
* .pipe(takeUntil(this.disconnecting))
|
|
29
|
+
* .subscribe(saved => saved && this.store.persist(saved))
|
|
30
|
+
*/
|
|
31
|
+
export declare function show<T = void>(content: Content, options?: ShowOptions): Observable<T | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* Yes/no confirmation dialog. Returns a Promise that resolves with the
|
|
34
|
+
* user's choice. `variant: 'danger'` flips to destructive styling and
|
|
35
|
+
* `role="alertdialog"`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function confirm(options?: OverlayConfirmOptions): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Input prompt dialog. Returns the entered string, or `null` if the user
|
|
40
|
+
* cancels or dismisses.
|
|
41
|
+
*/
|
|
42
|
+
export declare function prompt(options?: OverlayPromptOptions): Promise<string | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Subscribe to custom events emitted from any currently-open overlay
|
|
45
|
+
* whose content matches `tagName`. Inspired by `area.on(name)` — keyed
|
|
46
|
+
* by tag name (stable across HMR / lazy chunks) rather than a uid or
|
|
47
|
+
* class reference.
|
|
48
|
+
*
|
|
49
|
+
* The returned Observable never completes on its own — the caller owns
|
|
50
|
+
* teardown via `takeUntil(this.disconnecting)`. During gaps where no
|
|
51
|
+
* matching overlay is open, no events are emitted; when an instance
|
|
52
|
+
* mounts, events flow.
|
|
53
|
+
*
|
|
54
|
+
* Stacked instances of the same content merge their event streams.
|
|
55
|
+
*/
|
|
56
|
+
export declare function overlayEvents<E extends Event = CustomEvent>(tagName: string, eventName: string): Observable<E>;
|
|
57
|
+
/**
|
|
58
|
+
* Close every currently-open overlay. LIFO order. Imperative — use for
|
|
59
|
+
* app-level flows like logout or route reset.
|
|
60
|
+
*/
|
|
61
|
+
export declare function dismissAll(): void;
|
|
62
|
+
export type { CloseReason };
|