@mhmo91/schmancy 0.10.40 → 0.10.42
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 +27 -100
- package/dist/SchmancyElement-OG71FtNv.js +286 -0
- package/dist/{SchmancyElement-BNnyBOwk.js.map → SchmancyElement-OG71FtNv.js.map} +1 -1
- package/dist/SchmancyElement-PS1u0j1B.cjs +2 -0
- package/dist/{SchmancyElement-C41uPa6l.cjs.map → SchmancyElement-PS1u0j1B.cjs.map} +1 -1
- package/dist/agent/schmancy.agent.js +48 -213
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +10 -36
- package/dist/{area-2FrTZI_T.cjs → area-CaEI33G0.cjs} +1 -1
- package/dist/{area-2FrTZI_T.cjs.map → area-CaEI33G0.cjs.map} +1 -1
- package/dist/{area-KVDzhT4s.js → area-DtCNCb8w.js} +2 -2
- package/dist/{area-KVDzhT4s.js.map → area-DtCNCb8w.js.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{audio-EaD0Ggfh.cjs → audio-B924fI5N.cjs} +1 -1
- package/dist/{audio-EaD0Ggfh.cjs.map → audio-B924fI5N.cjs.map} +1 -1
- package/dist/{audio-D3gnp15Y.js → audio-DdN76ikW.js} +1 -1
- package/dist/{audio-D3gnp15Y.js.map → audio-DdN76ikW.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-DMmxsvUe.cjs → autocomplete-Dq3BkitV.cjs} +1 -1
- package/dist/{autocomplete-DMmxsvUe.cjs.map → autocomplete-Dq3BkitV.cjs.map} +1 -1
- package/dist/{autocomplete-DWiEqlQf.js → autocomplete-UNOknYUz.js} +3 -3
- package/dist/{autocomplete-DWiEqlQf.js.map → autocomplete-UNOknYUz.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 +3 -3
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-BeqA9_ms.js → boat-BZah1Sf9.js} +5 -7
- package/dist/{boat-BeqA9_ms.js.map → boat-BZah1Sf9.js.map} +1 -1
- package/dist/{boat-BJPl_Jti.cjs → boat-D3bEjxf8.cjs} +2 -4
- package/dist/{boat-BJPl_Jti.cjs.map → boat-D3bEjxf8.cjs.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 +2 -2
- package/dist/{busy-Cj_PV7oC.cjs → busy--WqiXKnl.cjs} +1 -1
- package/dist/{busy-Cj_PV7oC.cjs.map → busy--WqiXKnl.cjs.map} +1 -1
- package/dist/{busy-enYCTssB.js → busy-DzXyO0z6.js} +2 -2
- package/dist/{busy-enYCTssB.js.map → busy-DzXyO0z6.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-B9RfBt-n.cjs → button-CTvS5YX4.cjs} +1 -1
- package/dist/{button-B9RfBt-n.cjs.map → button-CTvS5YX4.cjs.map} +1 -1
- package/dist/{button-D6LJC-HC.js → button-DgoDfcJx.js} +2 -2
- package/dist/{button-D6LJC-HC.js.map → button-DgoDfcJx.js.map} +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +3 -3
- package/dist/{card-BHTz1GwB.js → card-C6ijJZpF.js} +2 -2
- package/dist/{card-BHTz1GwB.js.map → card-C6ijJZpF.js.map} +1 -1
- package/dist/{card-ThG_ZaQE.cjs → card-Ci3_9Dd4.cjs} +1 -1
- package/dist/{card-ThG_ZaQE.cjs.map → card-Ci3_9Dd4.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-Ce0DlAdW.js → checkbox-7vEPZuGC.js} +2 -2
- package/dist/{checkbox-Ce0DlAdW.js.map → checkbox-7vEPZuGC.js.map} +1 -1
- package/dist/{checkbox-C4zeib84.cjs → checkbox-DXKdxkXE.cjs} +1 -1
- package/dist/{checkbox-C4zeib84.cjs.map → checkbox-DXKdxkXE.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-wfJ7YtWv.cjs → chips-9eG-96_D.cjs} +1 -1
- package/dist/{chips-wfJ7YtWv.cjs.map → chips-9eG-96_D.cjs.map} +1 -1
- package/dist/{chips-BoZSpSh_.js → chips-DF7akwz7.js} +4 -4
- package/dist/{chips-BoZSpSh_.js.map → chips-DF7akwz7.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +2 -4
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +4 -6
- package/dist/connectivity.js.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-DJrdpzev.js → date-range-C13_R3OA.js} +3 -3
- package/dist/{date-range-DJrdpzev.js.map → date-range-C13_R3OA.js.map} +1 -1
- package/dist/{date-range-BHSzlwSL.cjs → date-range-Q2xj5Syc.cjs} +1 -1
- package/dist/{date-range-BHSzlwSL.cjs.map → date-range-Q2xj5Syc.cjs.map} +1 -1
- package/dist/{date-range-inline-DjRdMZ1z.js → date-range-inline-BnOD-ddB.js} +2 -2
- package/dist/{date-range-inline-DjRdMZ1z.js.map → date-range-inline-BnOD-ddB.js.map} +1 -1
- package/dist/{date-range-inline-D0I6k84h.cjs → date-range-inline-DV2c_gWM.cjs} +1 -1
- package/dist/{date-range-inline-D0I6k84h.cjs.map → date-range-inline-DV2c_gWM.cjs.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-DQNj2oaU.cjs → details-B2-jECBh.cjs} +3 -2
- package/dist/details-B2-jECBh.cjs.map +1 -0
- package/dist/{details-CY49XVfp.js → details-ByF66CyY.js} +4 -3
- package/dist/details-ByF66CyY.js.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{directives-BvRTjCFa.js → directives-BL7mzVsA.js} +3 -3
- package/dist/{directives-BvRTjCFa.js.map → directives-BL7mzVsA.js.map} +1 -1
- package/dist/{directives-BZIRQDBq.cjs → directives-DCb_LA9R.cjs} +1 -1
- package/dist/{directives-BZIRQDBq.cjs.map → directives-DCb_LA9R.cjs.map} +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-Ck2C1sKl.cjs → divider-Bv2QiOZL.cjs} +1 -1
- package/dist/{divider-Ck2C1sKl.cjs.map → divider-Bv2QiOZL.cjs.map} +1 -1
- package/dist/{divider-BeyX_C0A.js → divider-gYuz0zDU.js} +2 -2
- package/dist/{divider-BeyX_C0A.js.map → divider-gYuz0zDU.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 +2 -2
- package/dist/{expand-CUF163mg.cjs → expand-B9IUGVtc.cjs} +1 -1
- package/dist/{expand-CUF163mg.cjs.map → expand-B9IUGVtc.cjs.map} +1 -1
- package/dist/{expand-BYsSEtp6.js → expand-cZ8rfCWP.js} +3 -3
- package/dist/{expand-BYsSEtp6.js.map → expand-cZ8rfCWP.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/fab.cjs +1 -1
- package/dist/fab.js +2 -2
- package/dist/{float-OvqX0nqG.cjs → float-DkGyWSWy.cjs} +1 -1
- package/dist/{float-OvqX0nqG.cjs.map → float-DkGyWSWy.cjs.map} +1 -1
- package/dist/{float-Cgllk_H9.js → float-zn3DgXBT.js} +2 -2
- package/dist/{float-Cgllk_H9.js.map → float-zn3DgXBT.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-4GKROq2P.cjs → form-DowzVsgI.cjs} +1 -1
- package/dist/{form-4GKROq2P.cjs.map → form-DowzVsgI.cjs.map} +1 -1
- package/dist/{form-DxaV_Ose.js → form-tG7LwDm4.js} +3 -3
- package/dist/{form-DxaV_Ose.js.map → form-tG7LwDm4.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +12 -12
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{icons-sZ-LybA9.cjs → icons-BZeCloP9.cjs} +1 -1
- package/dist/{icons-sZ-LybA9.cjs.map → icons-BZeCloP9.cjs.map} +1 -1
- package/dist/{icons-CJ2mXcBi.js → icons-Dup5skuk.js} +2 -2
- package/dist/{icons-CJ2mXcBi.js.map → icons-Dup5skuk.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-DpCv-QH2.cjs → iframe-CDJjnNmo.cjs} +1 -1
- package/dist/{iframe-DpCv-QH2.cjs.map → iframe-CDJjnNmo.cjs.map} +1 -1
- package/dist/{iframe-DWvN5nGB.js → iframe-Xc3EPMZT.js} +2 -2
- package/dist/{iframe-DWvN5nGB.js.map → iframe-Xc3EPMZT.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 +34 -34
- package/dist/{input-Z-3N5JMv.cjs → input-DnmC6J1T.cjs} +1 -1
- package/dist/{input-Z-3N5JMv.cjs.map → input-DnmC6J1T.cjs.map} +1 -1
- package/dist/{input-BCCHz6tB.js → input-cTyDxW9L.js} +2 -2
- package/dist/{input-BCCHz6tB.js.map → input-cTyDxW9L.js.map} +1 -1
- package/dist/{input-chip-ChAgRCXZ.cjs → input-chip-CV91URyU.cjs} +1 -1
- package/dist/{input-chip-ChAgRCXZ.cjs.map → input-chip-CV91URyU.cjs.map} +1 -1
- package/dist/{input-chip-BOrcKH-H.js → input-chip-CYI17YOq.js} +2 -2
- package/dist/{input-chip-BOrcKH-H.js.map → input-chip-CYI17YOq.js.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 +3 -3
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +2 -2
- package/dist/{layout-DZ4dpLh9.cjs → layout-CNlZSJFU.cjs} +1 -1
- package/dist/{layout-DZ4dpLh9.cjs.map → layout-CNlZSJFU.cjs.map} +1 -1
- package/dist/{layout-CFiG3lNT.js → layout-DDxw0EwL.js} +1 -1
- package/dist/{layout-CFiG3lNT.js.map → layout-DDxw0EwL.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{lightbox-B7Y4Nij_.js → lightbox-CH-y3rYB.js} +2 -2
- package/dist/{lightbox-B7Y4Nij_.js.map → lightbox-CH-y3rYB.js.map} +1 -1
- package/dist/{lightbox-Dpwsn8Qr.cjs → lightbox-CvtqoInF.cjs} +1 -1
- package/dist/{lightbox-Dpwsn8Qr.cjs.map → lightbox-CvtqoInF.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-BhM-6dAi.cjs → list-Dl8KfxrF.cjs} +2 -2
- package/dist/{list-BhM-6dAi.cjs.map → list-Dl8KfxrF.cjs.map} +1 -1
- package/dist/{list-C5WVoIfJ.js → list-DrsawQ5R.js} +10 -3
- package/dist/{list-C5WVoIfJ.js.map → list-DrsawQ5R.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{menu-GZARYp6I.cjs → menu-BFRcTe3o.cjs} +1 -1
- package/dist/{menu-GZARYp6I.cjs.map → menu-BFRcTe3o.cjs.map} +1 -1
- package/dist/{menu-Dvi_tQgH.js → menu-CsY5lMqY.js} +3 -3
- package/dist/{menu-Dvi_tQgH.js.map → menu-CsY5lMqY.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-fIpzhVMd.cjs → mixins-BoMURWag.cjs} +2 -72
- package/dist/{mixins-fIpzhVMd.cjs.map → mixins-BoMURWag.cjs.map} +1 -1
- package/dist/{mixins-DGBI7YPO.js → mixins-bCEXbwJV.js} +3 -79
- package/dist/{mixins-DGBI7YPO.js.map → mixins-bCEXbwJV.js.map} +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 +2 -2
- package/dist/{notification-BB9OBRCr.js → notification-DFKRMmSq.js} +4 -4
- package/dist/{notification-BB9OBRCr.js.map → notification-DFKRMmSq.js.map} +1 -1
- package/dist/{notification-B6yDL91t.cjs → notification-FBf3Mb2e.cjs} +1 -1
- package/dist/{notification-B6yDL91t.cjs.map → notification-FBf3Mb2e.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-B21ImL0k.js → option-Ct0lGdH3.js} +2 -2
- package/dist/{option-B21ImL0k.js.map → option-Ct0lGdH3.js.map} +1 -1
- package/dist/{option-CJQM5I9q.cjs → option-Il1KpU8M.cjs} +1 -1
- package/dist/{option-CJQM5I9q.cjs.map → option-Il1KpU8M.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-DwJWVyk2.js → overlay-Bh8Q_R01.js} +5 -5
- package/dist/{overlay-DwJWVyk2.js.map → overlay-Bh8Q_R01.js.map} +1 -1
- package/dist/{overlay-N0trD-4u.cjs → overlay-sRXiMkjn.cjs} +1 -1
- package/dist/{overlay-N0trD-4u.cjs.map → overlay-sRXiMkjn.cjs.map} +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-DwzKhXxM.js → overlay.confirm-body-CQihsR20.js} +6 -6
- package/dist/{overlay.confirm-body-DwzKhXxM.js.map → overlay.confirm-body-CQihsR20.js.map} +1 -1
- package/dist/{overlay.confirm-body-CtXIi421.cjs → overlay.confirm-body-Jc1EuMGs.cjs} +1 -1
- package/dist/{overlay.confirm-body-CtXIi421.cjs.map → overlay.confirm-body-Jc1EuMGs.cjs.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-Dbu5uP9E.cjs → overlay.service-9Dp3g7ot.cjs} +1 -1
- package/dist/{overlay.service-Dbu5uP9E.cjs.map → overlay.service-9Dp3g7ot.cjs.map} +1 -1
- package/dist/{overlay.service-BDLi0p5M.js → overlay.service-BXPgS7ay.js} +2 -2
- package/dist/{overlay.service-BDLi0p5M.js.map → overlay.service-BXPgS7ay.js.map} +1 -1
- package/dist/{progress-B-Qg44XY.cjs → progress-CWC5XYZ_.cjs} +1 -1
- package/dist/{progress-B-Qg44XY.cjs.map → progress-CWC5XYZ_.cjs.map} +1 -1
- package/dist/{progress-CUSS1sNz.js → progress-CYLshdo2.js} +2 -2
- package/dist/{progress-CUSS1sNz.js.map → progress-CYLshdo2.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-BEtvCSS1.cjs → radio-group-6kCgOgBL.cjs} +1 -1
- package/dist/{radio-group-BEtvCSS1.cjs.map → radio-group-6kCgOgBL.cjs.map} +1 -1
- package/dist/{radio-group-AHLvrN8O.js → radio-group-bZtZHOj_.js} +2 -2
- package/dist/{radio-group-AHLvrN8O.js.map → radio-group-bZtZHOj_.js.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 +2 -2
- package/dist/{select-CGBsblDA.js → select-CU3X-PIa.js} +3 -3
- package/dist/{select-CGBsblDA.js.map → select-CU3X-PIa.js.map} +1 -1
- package/dist/{select-LWdPs7b_.cjs → select-MXsF8KsU.cjs} +1 -1
- package/dist/{select-LWdPs7b_.cjs.map → select-MXsF8KsU.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 +2 -2
- package/dist/skills/schmancy/surface.md +51 -27
- package/dist/skills/surface.md +51 -27
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-CK-5zob-.js → sound.service-B4ZmXpH9.js} +1 -1
- package/dist/{sound.service-CK-5zob-.js.map → sound.service-B4ZmXpH9.js.map} +1 -1
- package/dist/{sound.service-D2GGaBXc.cjs → sound.service-DjlMvicQ.cjs} +1 -1
- package/dist/{sound.service-D2GGaBXc.cjs.map → sound.service-DjlMvicQ.cjs.map} +1 -1
- package/dist/{splash-screen-DqPuipox.cjs → splash-screen-CN9dZcqC.cjs} +1 -1
- package/dist/{splash-screen-DqPuipox.cjs.map → splash-screen-CN9dZcqC.cjs.map} +1 -1
- package/dist/{splash-screen-BUEtjHXC.js → splash-screen-emCLYoVl.js} +2 -2
- package/dist/{splash-screen-BUEtjHXC.js.map → splash-screen-emCLYoVl.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-Dmqjtcmp.js → src-DGDTkOvC.js} +160 -252
- package/dist/src-DGDTkOvC.js.map +1 -0
- package/dist/{src-SAXA4LEH.cjs → src-DK3111z_.cjs} +7 -31
- package/dist/src-DK3111z_.cjs.map +1 -0
- package/dist/{state-BxDNox-2.cjs → state-CumAEPQH.cjs} +1 -1
- package/dist/{state-BxDNox-2.cjs.map → state-CumAEPQH.cjs.map} +1 -1
- package/dist/{state-CnZCDMT0.js → state-DMd_FUeA.js} +1 -1
- package/dist/{state-CnZCDMT0.js.map → state-DMd_FUeA.js.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +2 -2
- package/dist/{surface-CWwYD_z2.cjs → surface-DGI-FBoi.cjs} +1 -1
- package/dist/surface-DGI-FBoi.cjs.map +1 -0
- package/dist/{surface-BMdG3dKQ.js → surface-DNiYigsX.js} +2 -2
- package/dist/surface-DNiYigsX.js.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +2 -2
- package/dist/table.cjs +2 -2
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +3 -3
- package/dist/table.js.map +1 -1
- package/dist/{tabs-CDQYDc6v.js → tabs-4T_4kCf-.js} +2 -2
- package/dist/{tabs-CDQYDc6v.js.map → tabs-4T_4kCf-.js.map} +1 -1
- package/dist/{tabs-CbD9E1gd.cjs → tabs-Byxxt-AH.cjs} +1 -1
- package/dist/{tabs-CbD9E1gd.cjs.map → tabs-Byxxt-AH.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-Brgi-vD2.cjs → textarea-BwYwH9fu.cjs} +1 -1
- package/dist/{textarea-Brgi-vD2.cjs.map → textarea-BwYwH9fu.cjs.map} +1 -1
- package/dist/{textarea-MPyrMi-S.js → textarea-kkYNk1ET.js} +2 -2
- package/dist/{textarea-MPyrMi-S.js.map → textarea-kkYNk1ET.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-BMbXoqi0.cjs → theme-BG0EnzYP.cjs} +2 -2
- package/dist/{theme-BMbXoqi0.cjs.map → theme-BG0EnzYP.cjs.map} +1 -1
- package/dist/{theme-DZu-xmVp.js → theme-DwQBl6sr.js} +6 -6
- package/dist/{theme-DZu-xmVp.js.map → theme-DwQBl6sr.js.map} +1 -1
- package/dist/{theme-button-D_qGvEYs.js → theme-button-BD8anzsZ.js} +2 -2
- package/dist/{theme-button-D_qGvEYs.js.map → theme-button-BD8anzsZ.js.map} +1 -1
- package/dist/{theme-button-B0OLb-43.cjs → theme-button-DlrNoCMA.cjs} +1 -1
- package/dist/{theme-button-B0OLb-43.cjs.map → theme-button-DlrNoCMA.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.js +3 -3
- package/dist/{theme.service-7VkM-hVf.js → theme.service-Dv_55nfE.js} +1 -1
- package/dist/{theme.service-7VkM-hVf.js.map → theme.service-Dv_55nfE.js.map} +1 -1
- package/dist/{theme.service-B15FdjOS.cjs → theme.service-pjkTM209.cjs} +1 -1
- package/dist/{theme.service-B15FdjOS.cjs.map → theme.service-pjkTM209.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +2 -2
- package/dist/{typography-SZhjb_4R.js → typography-BVkU11_q.js} +2 -2
- package/dist/{typography-SZhjb_4R.js.map → typography-BVkU11_q.js.map} +1 -1
- package/dist/{typography-D4Fo1UGh.cjs → typography-aaQaIcNc.cjs} +1 -1
- package/dist/{typography-D4Fo1UGh.cjs.map → typography-aaQaIcNc.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +2 -2
- package/dist/{window-BDVyrBnk.js → window-C76zstbV.js} +7 -8
- package/dist/window-C76zstbV.js.map +1 -0
- package/dist/window-CmB9XZzT.cjs +58 -0
- package/dist/window-CmB9XZzT.cjs.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/surface.md +51 -27
- package/src/badge/badge.ts +48 -200
- package/src/boat/boat.ts +1 -3
- package/src/connectivity/connectivity-status.ts +1 -3
- package/src/details/details.ts +1 -1
- package/src/list/list.ts +1 -1
- package/src/surface/surface.styles.ts +2 -87
- package/src/surface/surface.ts +8 -8
- package/src/table/table.ts +1 -1
- package/src/theme/theme-audio-player.ts +1 -1
- package/src/window/window.ts +3 -6
- package/types/mixins/surface.mixin.d.ts +8 -14
- package/types/src/badge/badge.d.ts +15 -48
- package/types/src/surface/surface.d.ts +9 -7
- package/types/src/surface/surface.styles.d.ts +2 -14
- package/types/src/window/window.d.ts +0 -1
- package/dist/SchmancyElement-BNnyBOwk.js +0 -286
- package/dist/SchmancyElement-C41uPa6l.cjs +0 -2
- package/dist/details-CY49XVfp.js.map +0 -1
- package/dist/details-DQNj2oaU.cjs.map +0 -1
- package/dist/src-Dmqjtcmp.js.map +0 -1
- package/dist/src-SAXA4LEH.cjs.map +0 -1
- package/dist/surface-BMdG3dKQ.js.map +0 -1
- package/dist/surface-CWwYD_z2.cjs.map +0 -1
- package/dist/window-BDVyrBnk.js.map +0 -1
- package/dist/window-BbBYjm7R.cjs +0 -59
- package/dist/window-BbBYjm7R.cjs.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);let e=require(`rxjs`),t=require(`rxjs/operators`),n=require(`lit/directives/class-map.js`),r=require(`lit/directives/style-map.js`),i=require(`@lit/context`),a=require(`lit`),o=require(`@lit-labs/signals`);var s=`schmancy-discover`,c=`schmancy-discover-response`;function l(n,r=100){let i=`${n}-where-are-you`,a=`${n}-here-i-am`;return new e.Observable(n=>{let o=(0,e.fromEvent)(window,a).pipe((0,t.takeUntil)((0,e.timer)(r)),(0,t.map)(e=>e.detail.component),(0,t.defaultIfEmpty)(null)).subscribe(e=>{n.next(e),n.complete()});return window.dispatchEvent(new CustomEvent(i,{bubbles:!0,composed:!0})),()=>o.unsubscribe()})}function u(...t){return t.length===0?new e.Observable(e=>{e.next(null),e.complete()}):(0,e.race)(...t.map(e=>l(e)))}function d(n,r=150){let i=`discover-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new e.Observable(a=>{let o=(0,e.fromEvent)(window,c).pipe((0,t.takeUntil)((0,e.timer)(r)),(0,t.map)(e=>e.detail),(0,t.map)(e=>e.requestId===i?e.element:null),(0,t.take)(1),(0,t.defaultIfEmpty)(null)).subscribe(e=>{a.next(e),a.complete()});return window.dispatchEvent(new CustomEvent(s,{detail:{selector:n,requestId:i},bubbles:!0,composed:!0})),()=>o.unsubscribe()})}function f(n,r=150){let i=`discover-all-${Date.now()}-${Math.random().toString(36).slice(2)}`,a=[];return new e.Observable(o=>{let l=(0,e.fromEvent)(window,c).pipe((0,t.takeUntil)((0,e.timer)(r))).subscribe({next:e=>{e.detail.requestId===i&&a.push(e.detail.element)},complete:()=>{o.next(a),o.complete()}});return window.dispatchEvent(new CustomEvent(s,{detail:{selector:n,requestId:i},bubbles:!0,composed:!0})),()=>l.unsubscribe()})}function p(e,t=150){return/^[#.\[]/.test(e)?d(e,t):l(e,t)}var m=(0,i.createContext)(`theme-context`);function h(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}var g=a=>{class o extends a{constructor(...t){super(...t),this.disconnecting=new e.Subject}#e;#t;get locale(){return this.theme?.locale??(typeof navigator<`u`?navigator.language:`de-DE`)}get stableId(){if(this.#e)return this.#e;let e=[];for(let t=this;t?.parentElement&&e.length<5;t=t.parentElement){let n=t.tagName.toLowerCase(),r=Array.from(t.parentElement.children).filter(e=>e.tagName===t.tagName);e.unshift(r.length>1?`${n}:nth-of-type(${r.indexOf(t)+1})`:n)}let t=Array.from(e.join(`>`)).reduce((e,t)=>Math.imul(31,e)+t.charCodeAt(0)|0,0);return this.#e=`el-${Math.abs(t).toString(36)}`}get uid(){return this.getAttribute(`uid`)||(this.#t||=`el-${crypto.randomUUID()}`,this.#t)}set uid(e){e?this.setAttribute(`uid`,e):this.removeAttribute(`uid`)}dispatchScopedEvent(e,t,n={}){let{bubbles:r=!1,composed:i=!0}=n;this.dispatchEvent(new CustomEvent(`${e}::${this.uid}`,{detail:t,bubbles:r,composed:i})),this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:r,composed:i}))}classMap(e){let t={};return Object.keys(e).forEach(n=>{n.trim().split(` `).filter(Boolean).forEach(r=>{t[r]=e[n]})}),(0,n.classMap)(t)}styleMap(e){return(0,r.styleMap)(e)}connectedCallback(){super.connectedCallback(),this.setupDiscoveryResponse()}setupDiscoveryResponse(){let n=this.tagName.toLowerCase(),r=`${n}-where-are-you`,i=`${n}-here-i-am`;(0,e.fromEvent)(window,r).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(()=>{window.dispatchEvent(new CustomEvent(i,{detail:{component:this},bubbles:!0,composed:!0}))}),(0,e.fromEvent)(window,s).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(({detail:{selector:e,requestId:t}})=>{let n=null;if(e.startsWith(`#`)){let t=e.slice(1);this.id!==t&&this.uid!==t||(n=this)}!n&&this.shadowRoot&&(n=this.shadowRoot.querySelector(e)),n&&window.dispatchEvent(new CustomEvent(c,{detail:{requestId:t,element:n},bubbles:!0,composed:!0}))})}discover(e){return l(e)}disconnectedCallback(){this.disconnecting.next(!0),this.disconnecting.complete(),super.disconnectedCallback()}}return h([(0,i.consume)({context:m,subscribe:!0})],o.prototype,`theme`,void 0),o},_=(0,a.unsafeCSS)(`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--color-primary-default:var(--schmancy-sys-color-primary-default);--color-primary:var(--schmancy-sys-color-primary-default);--color-error:var(--schmancy-sys-color-error-default);--font-mono:var(--schmancy-font-family), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-x-6{inset-inline:1.5rem}.-top-12{top:-3rem}.top-0{top:0}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.top-8{top:2rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\\[-3\\.5rem\\]{bottom:-3.5rem}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-3\\.5{left:.875rem}.left-4{left:1rem}.left-\\[calc\\(100\\%\\+8px\\)\\]{left:calc(100% + 8px)}.isolate{isolation:isolate}.z-0{z-index:0}.z-5{z-index:5}.z-10{z-index:10}.z-20{z-index:20}.z-49{z-index:49}.z-50{z-index:50}.z-100{z-index:100}.z-1000{z-index:1000}.z-9998{z-index:9998}.z-\\[1000\\]{z-index:1000}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-mx-1{margin-inline:-.25rem}.-mx-2{margin-inline:-.5rem}.mx-auto{margin-inline:auto}.my-0\\.5{margin-block:.125rem}.my-4{margin-block:1rem}.-mt-2\\.5{margin-top:-.625rem}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.-mr-1{margin-right:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.-ml-2\\.5{margin-left:-.625rem}.-ml-px{margin-left:-1px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.ml-\\[0\\.38em\\]{margin-left:.38em}.ml-px{margin-left:1px}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.size-3{width:.75rem;height:.75rem}.size-5{width:1.25rem;height:1.25rem}.size-8{width:2rem;height:2rem}.size-10{width:2.5rem;height:2.5rem}.size-14{width:3.5rem;height:3.5rem}.size-24{width:6rem;height:6rem}.size-\\[18px\\]{width:18px;height:18px}.h-0\\.5{height:.125rem}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-64{height:16rem}.h-\\[90dvh\\]{height:90dvh}.h-\\[240px\\]{height:240px}.h-\\[250px\\]{height:250px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[90dvh\\]{max-height:90dvh}.max-h-\\[90vh\\]{max-height:90vh}.min-h-0{min-height:0}.min-h-12{min-height:3rem}.min-h-14{min-height:3.5rem}.min-h-\\[32px\\]{min-height:32px}.min-h-\\[36px\\]{min-height:36px}.min-h-\\[40px\\]{min-height:40px}.min-h-\\[50px\\]{min-height:50px}.min-h-\\[60px\\]{min-height:60px}.min-h-\\[400px\\]{min-height:400px}.min-h-screen{min-height:100vh}.w-0{width:0}.w-0\\.5{width:.125rem}.w-1{width:.25rem}.w-1\\.5{width:.375rem}.w-1\\/3{width:33.3333%}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-60{width:15rem}.w-\\[240px\\]{width:240px}.w-\\[250px\\]{width:250px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-14{max-width:3.5rem}.max-w-\\[90vw\\]{max-width:90vw}.max-w-\\[168px\\]{max-width:168px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[720px\\]{max-width:720px}.max-w-\\[min\\(480px\\,calc\\(100vw-2rem\\)\\)\\]{max-width:min(480px,100vw - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.min-w-0{min-width:0}.min-w-4{min-width:1rem}.min-w-14{min-width:3.5rem}.min-w-16{min-width:4rem}.min-w-\\[6px\\]{min-width:6px}.min-w-\\[16px\\]{min-width:16px}.min-w-\\[48px\\]{min-width:48px}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[140px\\]{min-width:140px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-x-1{--tw-translate-x:calc(.25rem * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[ripple_600ms_linear\\]{animation:.6s linear ripple}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-x{resize:horizontal}.resize-y{resize:vertical}.appearance-none{appearance:none}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-stretch{justify-items:stretch}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-\\[8px\\]{gap:8px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(.25rem * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[8px\\]{border-radius:8px}.rounded-\\[22px\\]{border-radius:22px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:.75rem}.rounded-t-\\[28px\\]{border-top-left-radius:28px;border-top-right-radius:28px}.rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.rounded-tr-2xl{border-top-right-radius:1rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-br-2xl{border-bottom-right-radius:1rem}.rounded-bl-2xl{border-bottom-left-radius:1rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r-4{border-right-style:var(--tw-border-style);border-right-width:4px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--schmancy-sys-color-outlineVariant\\)\\]{border-color:var(--schmancy-sys-color-outlineVariant)}.border-error-default{border-color:var(--schmancy-sys-color-error-default)}.border-info-default{border-color:var(--schmancy-sys-color-info-default)}.border-outline{border-color:var(--schmancy-sys-color-outline)}.border-outline-variant,.border-outline-variant\\/30{border-color:var(--schmancy-sys-color-outlineVariant)}@supports (color:color-mix(in lab, red, red)){.border-outline-variant\\/30{border-color:color-mix(in oklab, var(--schmancy-sys-color-outlineVariant) 30%, transparent)}}.border-outline\\/20{border-color:var(--schmancy-sys-color-outline)}@supports (color:color-mix(in lab, red, red)){.border-outline\\/20{border-color:color-mix(in oklab, var(--schmancy-sys-color-outline) 20%, transparent)}}.border-outlineVariant{border-color:var(--schmancy-sys-color-outlineVariant)}.border-primary-default{border-color:var(--schmancy-sys-color-primary-default)}.border-secondary-default{border-color:var(--schmancy-sys-color-secondary-default)}.border-success-default{border-color:var(--schmancy-sys-color-success-default)}.border-surface-container{border-color:var(--schmancy-sys-color-surface-container)}.border-surface-default{border-color:var(--schmancy-sys-color-surface-default)}.border-surface-on\\/8{border-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.border-surface-on\\/8{border-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 8%, transparent)}}.border-transparent{border-color:#0000}.border-warning-default{border-color:var(--schmancy-sys-color-warning-default)}.border-white{border-color:#fff}.bg-\\[\\#ff0000\\]{background-color:red}.bg-\\[var\\(--schmancy-sys-color-X\\)\\]{background-color:var(--schmancy-sys-color-X)}.bg-black{background-color:#000}.bg-black\\/95{background-color:oklab(0% none none/.95)}.bg-black\\/\\[0\\.07\\]{background-color:oklab(0% none none/.07)}.bg-error{background-color:var(--schmancy-sys-color-error-default)}.bg-error-container{background-color:var(--schmancy-sys-color-error-container)}.bg-error-default,.bg-error-default\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab, red, red)){.bg-error-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-error-default) 70%, transparent)}}.bg-error\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab, red, red)){.bg-error\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-error-default) 70%, transparent)}}.bg-info-container{background-color:var(--schmancy-sys-color-info-container)}.bg-info-default{background-color:var(--schmancy-sys-color-info-default)}.bg-outline{background-color:var(--schmancy-sys-color-outline)}.bg-outlineVariant{background-color:var(--schmancy-sys-color-outlineVariant)}.bg-primary{background-color:var(--schmancy-sys-color-primary-default)}.bg-primary-container,.bg-primary-container\\/20{background-color:var(--schmancy-sys-color-primary-container)}@supports (color:color-mix(in lab, red, red)){.bg-primary-container\\/20{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-container) 20%, transparent)}}.bg-primary-default,.bg-primary-default\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 70%, transparent)}}.bg-primary-on{background-color:var(--schmancy-sys-color-primary-on)}.bg-primary-onContainer{background-color:var(--schmancy-sys-color-primary-onContainer)}.bg-primary\\/40{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 40%, transparent)}}.bg-primary\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 70%, transparent)}}.bg-scrim{background-color:var(--schmancy-sys-color-scrim)}.bg-secondary{background-color:var(--schmancy-sys-color-secondary-default)}.bg-secondary-container{background-color:var(--schmancy-sys-color-secondary-container)}.bg-secondary-default,.bg-secondary-default\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 70%, transparent)}}.bg-secondary-onContainer{background-color:var(--schmancy-sys-color-secondary-onContainer)}.bg-secondary\\/15{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/15{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 15%, transparent)}}.bg-secondary\\/40{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 40%, transparent)}}.bg-secondary\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 70%, transparent)}}.bg-success{background-color:var(--schmancy-sys-color-success-default)}.bg-success-container{background-color:var(--schmancy-sys-color-success-container)}.bg-success-default,.bg-success-default\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 70%, transparent)}}.bg-success\\/10{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/10{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 10%, transparent)}}.bg-success\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 70%, transparent)}}.bg-surface-bright{background-color:var(--schmancy-sys-color-surface-bright)}.bg-surface-container,.bg-surface-container\\/10{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/10{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 10%, transparent)}}.bg-surface-container\\/20{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/20{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 20%, transparent)}}.bg-surface-container\\/85{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/85{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 85%, transparent)}}.bg-surface-containerHigh{background-color:var(--schmancy-sys-color-surface-containerHigh)}.bg-surface-containerHighest{background-color:var(--schmancy-sys-color-surface-containerHighest)}.bg-surface-containerLow{background-color:var(--schmancy-sys-color-surface-containerLow)}.bg-surface-containerLowest{background-color:var(--schmancy-sys-color-surface-containerLowest)}.bg-surface-default{background-color:var(--schmancy-sys-color-surface-default)}.bg-surface-dim{background-color:var(--schmancy-sys-color-surface-dim)}.bg-surface-high{background-color:var(--schmancy-sys-color-surface-high)}.bg-surface-highest{background-color:var(--schmancy-sys-color-surface-highest)}.bg-surface-low{background-color:var(--schmancy-sys-color-surface-low)}.bg-surface-lowest,.bg-surface-lowest\\/55{background-color:var(--schmancy-sys-color-surface-lowest)}@supports (color:color-mix(in lab, red, red)){.bg-surface-lowest\\/55{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-lowest) 55%, transparent)}}.bg-surface-on{background-color:var(--schmancy-sys-color-surface-on)}.bg-surface\\/70{background-color:var(--schmancy-sys-color-surface-default)}@supports (color:color-mix(in lab, red, red)){.bg-surface\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-default) 70%, transparent)}}.bg-tertiary{background-color:var(--schmancy-sys-color-tertiary-default)}.bg-tertiary-container{background-color:var(--schmancy-sys-color-tertiary-container)}.bg-tertiary-default,.bg-tertiary-default\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 70%, transparent)}}.bg-tertiary-onContainer{background-color:var(--schmancy-sys-color-tertiary-onContainer)}.bg-tertiary\\/40{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 40%, transparent)}}.bg-tertiary\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 70%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--schmancy-sys-color-warning-default)}.bg-warning-container{background-color:var(--schmancy-sys-color-warning-container)}.bg-warning-default,.bg-warning\\/70{background-color:var(--schmancy-sys-color-warning-default)}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-warning-default) 70%, transparent)}}.bg-white\\/15{background-color:oklab(100% 0 5.96046e-8/.15)}.bg-white\\/20{background-color:oklab(100% 0 5.96046e-8/.2)}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.from-surface-on\\/20{--tw-gradient-from:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.from-surface-on\\/20{--tw-gradient-from:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 20%, transparent)}}.from-surface-on\\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-12{padding:3rem}.px-1{padding-inline:.25rem}.px-1\\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-2\\.5{padding-inline:.625rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-5{padding-inline:1.25rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:1.75rem}.py-0\\.75{padding-block:.1875rem}.py-1{padding-block:.25rem}.py-1\\.5{padding-block:.375rem}.py-2{padding-block:.5rem}.py-2\\.5{padding-block:.625rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.ps-4{padding-inline-start:1rem}.pe-5{padding-inline-end:1.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pt-10{padding-top:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--schmancy-font-family), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5 / 2.25))}.text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,calc(1.75 / 1.25))}.text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.text-\\[8px\\]{font-size:8px}.text-\\[10px\\]{font-size:10px}.text-\\[18px\\]{font-size:18px}.leading-3{--tw-leading:calc(.25rem * 3);line-height:.75rem}.leading-4{--tw-leading:calc(.25rem * 4);line-height:1rem}.leading-5{--tw-leading:calc(.25rem * 5);line-height:1.25rem}.leading-6{--tw-leading:calc(.25rem * 6);line-height:1.5rem}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:1.25;line-height:1.25}.font-bold{--tw-font-weight:700;font-weight:700}.font-medium{--tw-font-weight:500;font-weight:500}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-\\[0\\.01em\\]{--tw-tracking:.01em;letter-spacing:.01em}.tracking-\\[0\\.1px\\]{--tw-tracking:.1px;letter-spacing:.1px}.tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-\\[\\#000\\]{color:#000}.text-error,.text-error-default{color:var(--schmancy-sys-color-error-default)}.text-error-on{color:var(--schmancy-sys-color-error-on)}.text-error-onContainer{color:var(--schmancy-sys-color-error-onContainer)}.text-info-default{color:var(--schmancy-sys-color-info-default)}.text-info-on{color:var(--schmancy-sys-color-info-on)}.text-info-onContainer{color:var(--schmancy-sys-color-info-onContainer)}.text-primary-container{color:var(--schmancy-sys-color-primary-container)}.text-primary-default{color:var(--schmancy-sys-color-primary-default)}.text-primary-on{color:var(--schmancy-sys-color-primary-on)}.text-primary-onContainer{color:var(--schmancy-sys-color-primary-onContainer)}.text-secondary-default{color:var(--schmancy-sys-color-secondary-default)}.text-secondary-on{color:var(--schmancy-sys-color-secondary-on)}.text-secondary-onContainer{color:var(--schmancy-sys-color-secondary-onContainer)}.text-success,.text-success-default{color:var(--schmancy-sys-color-success-default)}.text-success-on{color:var(--schmancy-sys-color-success-on)}.text-success-on-container,.text-success-onContainer{color:var(--schmancy-sys-color-success-onContainer)}.text-surface-on{color:var(--schmancy-sys-color-surface-on)}.text-surface-on-variant{color:var(--schmancy-sys-color-surface-onVariant)}.text-surface-on\\/40{color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.text-surface-on\\/40{color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 40%, transparent)}}.text-surface-onVariant{color:var(--schmancy-sys-color-surface-onVariant)}.text-tertiary-default{color:var(--schmancy-sys-color-tertiary-default)}.text-tertiary-on{color:var(--schmancy-sys-color-tertiary-on)}.text-tertiary-onContainer{color:var(--schmancy-sys-color-tertiary-onContainer)}.text-warning-default{color:var(--schmancy-sys-color-warning-default)}.text-warning-on{color:var(--schmancy-sys-color-warning-on)}.text-warning-onContainer{color:var(--schmancy-sys-color-warning-onContainer)}.text-white{color:#fff}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.caret-transparent{caret-color:#0000}.opacity-0{opacity:0}.opacity-1{opacity:.01}.opacity-30{opacity:.3}.opacity-38{opacity:.38}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-85{opacity:.85}.opacity-100{opacity:1}.opacity-\\[0\\.12\\]{opacity:.12}.opacity-\\[0\\.38\\]{opacity:.38}.opacity-\\[var\\(--schmancy-sys-state-disabled-opacity\\)\\]{opacity:var(--schmancy-sys-state-disabled-opacity)}.opacity-\\[var\\(--schmancy-sys-state-pressed-opacity\\)\\]{opacity:var(--schmancy-sys-state-pressed-opacity)}.shadow-1{--tw-shadow:var(--schmancy-sys-elevation-1);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[inset_0_1px_1px_0_rgba\\(255\\,255\\,255\\,0\\.2\\)\\]{--tw-shadow:inset 0 1px 1px 0 var(--tw-shadow-color,#fff3);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[inset_0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:inset 0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-overlay{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 28px 60px -20px var(--tw-shadow-color,#00000073), inset 0 1px 0 0 var(--tw-shadow-color,var(--schmancy-sys-color-surface-on))}@supports (color:color-mix(in lab, red, red)){.shadow-overlay{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 28px 60px -20px var(--tw-shadow-color,#00000073), inset 0 1px 0 0 var(--tw-shadow-color,color-mix(in srgb, var(--schmancy-sys-color-surface-on) 8%, transparent))}}.shadow-overlay{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-overlay-anchored{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 12px 28px -12px var(--tw-shadow-color,#00000059), inset 0 1px 0 0 var(--tw-shadow-color,var(--schmancy-sys-color-surface-on))}@supports (color:color-mix(in lab, red, red)){.shadow-overlay-anchored{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000014), 0 12px 28px -12px var(--tw-shadow-color,#00000059), inset 0 1px 0 0 var(--tw-shadow-color,color-mix(in srgb, var(--schmancy-sys-color-surface-on) 8%, transparent))}}.shadow-overlay-anchored{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-error-default{--tw-ring-color:var(--schmancy-sys-color-error-default)}.ring-primary,.ring-primary-default{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.ring-secondary-default{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-surface-containerLow{--tw-ring-offset-color:var(--schmancy-sys-color-surface-containerLow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.outline-offset-4{outline-offset:4px}.outline-error-default{outline-color:var(--schmancy-sys-color-error-default)}.outline-secondary-default{outline-color:var(--schmancy-sys-color-secondary-default)}.brightness-110{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\\[16px\\]{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-brightness-105{--tw-backdrop-brightness:brightness(105%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:cubic-bezier(.4, 0, 1, 1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{--tw-ease:cubic-bezier(.4, 0, .2, 1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:cubic-bezier(0, 0, .2, 1);transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-\\[opacity\\]{will-change:opacity}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:border-primary-default:is(:where(.group):hover *){border-color:var(--schmancy-sys-color-primary-default)}.group-hover\\:bg-primary-container:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-primary-container)}.group-hover\\:bg-primary-default:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-primary-default)}.group-hover\\:bg-surface-containerHighest:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-surface-containerHighest)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\\:shadow-lg:is(:where(.group):hover *){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-1\\/2:before{content:var(--tw-content);top:50%}.before\\:left-1\\/2:before{content:var(--tw-content);left:50%}.before\\:h-0:before{content:var(--tw-content);height:0}.before\\:h-\\[200\\%\\]:before{content:var(--tw-content);height:200%}.before\\:w-0:before{content:var(--tw-content);width:0}.before\\:w-\\[200\\%\\]:before{content:var(--tw-content);width:200%}.before\\:-translate-x-1\\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:-translate-y-1\\/2:before{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-current:before{content:var(--tw-content);background-color:currentColor}.before\\:opacity-0:before{content:var(--tw-content);opacity:0}.before\\:opacity-12:before{content:var(--tw-content);opacity:.12}.before\\:transition-all:before{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.before\\:duration-300:before{content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}.before\\:content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:right-3:after{content:var(--tw-content);right:.75rem}.after\\:bottom-\\[-4px\\]:after{content:var(--tw-content);bottom:-4px}.after\\:left-3:after{content:var(--tw-content);left:.75rem}.after\\:h-px:after{content:var(--tw-content);height:1px}.after\\:bg-outline-variant:after{content:var(--tw-content);background-color:var(--schmancy-sys-color-outlineVariant)}.after\\:opacity-12:after{content:var(--tw-content);opacity:.12}.focus-within\\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\\:ring-error-default:focus-within{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus-within\\:ring-secondary-default:focus-within{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus-within\\:ring-inset:focus-within{--tw-ring-inset:inset}@media (hover:hover){.hover\\:z-\\[100\\]:hover{z-index:100}.hover\\:translate-x-0:hover{--tw-translate-x:calc(.25rem * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.hover\\:border-outlineVariant:hover{border-color:var(--schmancy-sys-color-outlineVariant)}.hover\\:bg-error-container:hover{background-color:var(--schmancy-sys-color-error-container)}.hover\\:bg-error-default:hover{background-color:var(--schmancy-sys-color-error-default)}.hover\\:bg-error-on:hover{background-color:var(--schmancy-sys-color-error-on)}.hover\\:bg-info-container:hover{background-color:var(--schmancy-sys-color-info-container)}.hover\\:bg-info-default:hover{background-color:var(--schmancy-sys-color-info-default)}.hover\\:bg-info-on:hover{background-color:var(--schmancy-sys-color-info-on)}.hover\\:bg-primary-container:hover{background-color:var(--schmancy-sys-color-primary-container)}.hover\\:bg-primary-default:hover,.hover\\:bg-primary-default\\/8:hover{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary-default\\/8:hover{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 8%, transparent)}}.hover\\:bg-primary-on:hover{background-color:var(--schmancy-sys-color-primary-on)}.hover\\:bg-secondary-container:hover{background-color:var(--schmancy-sys-color-secondary-container)}.hover\\:bg-secondary-default:hover{background-color:var(--schmancy-sys-color-secondary-default)}.hover\\:bg-secondary-on:hover{background-color:var(--schmancy-sys-color-secondary-on)}.hover\\:bg-success-container:hover{background-color:var(--schmancy-sys-color-success-container)}.hover\\:bg-success-default:hover{background-color:var(--schmancy-sys-color-success-default)}.hover\\:bg-success-on:hover{background-color:var(--schmancy-sys-color-success-on)}.hover\\:bg-surface-containerHigh:hover{background-color:var(--schmancy-sys-color-surface-containerHigh)}.hover\\:bg-surface-containerHighest:hover{background-color:var(--schmancy-sys-color-surface-containerHighest)}.hover\\:bg-surface-containerLow:hover{background-color:var(--schmancy-sys-color-surface-containerLow)}.hover\\:bg-surface-high:hover{background-color:var(--schmancy-sys-color-surface-high)}.hover\\:bg-surface-on:hover,.hover\\:bg-surface-on\\/5:hover{background-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-surface-on\\/5:hover{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 5%, transparent)}}.hover\\:bg-surface-onVariant:hover{background-color:var(--schmancy-sys-color-surface-onVariant)}.hover\\:bg-warning-container:hover{background-color:var(--schmancy-sys-color-warning-container)}.hover\\:bg-warning-default:hover{background-color:var(--schmancy-sys-color-warning-default)}.hover\\:bg-warning-on:hover{background-color:var(--schmancy-sys-color-warning-on)}.hover\\:bg-white\\/25:hover{background-color:oklab(100% 0 5.96046e-8/.25)}.hover\\:bg-white\\/30:hover{background-color:oklab(100% 0 5.96046e-8/.3)}.hover\\:text-surface-on:hover{color:var(--schmancy-sys-color-surface-on)}.hover\\:opacity-8:hover{opacity:.08}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-\\[0\\.08\\]:hover{opacity:.08}.hover\\:opacity-\\[var\\(--schmancy-sys-state-hover-opacity\\)\\]:hover{opacity:var(--schmancy-sys-state-hover-opacity)}.hover\\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-xs:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:brightness-95:hover{--tw-brightness:brightness(95%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\\:brightness-\\[0\\.92\\]:hover{--tw-brightness:brightness(.92);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\\:brightness-\\[0\\.98\\]:hover{--tw-brightness:brightness(.98);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-secondary-default:focus{border-color:var(--schmancy-sys-color-secondary-default)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error-default:focus{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus\\:ring-primary-container:focus{--tw-ring-color:var(--schmancy-sys-color-primary-container)}.focus\\:ring-secondary-default:focus{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\\:z-1:focus-visible{z-index:1}.focus-visible\\:opacity-10:focus-visible,.focus-visible\\:opacity-\\[0\\.10\\]:focus-visible{opacity:.1}.focus-visible\\:opacity-\\[var\\(--schmancy-sys-state-focus-opacity\\)\\]:focus-visible{opacity:var(--schmancy-sys-state-focus-opacity)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-primary-default:focus-visible,.focus-visible\\:ring-primary-default\\/50:focus-visible{--tw-ring-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-primary-default\\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 50%, transparent)}}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-primary:focus-visible,.focus-visible\\:outline-primary-default:focus-visible{outline-color:var(--schmancy-sys-color-primary-default)}.focus-visible\\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:bg-surface-on\\/8:active{background-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.active\\:bg-surface-on\\/8:active{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 8%, transparent)}}.active\\:opacity-10:active,.active\\:opacity-\\[0\\.10\\]:active{opacity:.1}.active\\:brightness-90:active{--tw-brightness:brightness(90%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.active\\:brightness-\\[0\\.85\\]:active{--tw-brightness:brightness(.85);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}@media (prefers-reduced-motion:reduce){.motion-reduce\\:hidden{display:none}}@media (width>=40rem){.sm\\:top-2{top:.5rem}.sm\\:right-2{right:.5rem}.sm\\:bottom-\\[-3rem\\]{bottom:-3rem}.sm\\:left-4{left:1rem}.sm\\:-mx-2{margin-inline:-.5rem}.sm\\:mt-1{margin-top:.25rem}.sm\\:mt-4{margin-top:1rem}.sm\\:ml-6{margin-left:1.5rem}.sm\\:ml-10{margin-left:2.5rem}.sm\\:h-5{height:1.25rem}.sm\\:h-12{height:3rem}.sm\\:min-h-\\[40px\\]{min-height:40px}.sm\\:w-5{width:1.25rem}.sm\\:px-2{padding-inline:.5rem}.sm\\:px-3{padding-inline:.75rem}.sm\\:py-2{padding-block:.5rem}.sm\\:py-3{padding-block:.75rem}.sm\\:pb-8{padding-bottom:2rem}.sm\\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,calc(2.25 / 1.875))}}@media (width>=48rem){.md\\:top-4{top:1rem}.md\\:right-4{right:1rem}.md\\:bottom-\\[-3\\.5rem\\]{bottom:-3.5rem}.md\\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5 / 2.25))}.md\\:text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}}@media (width>=64rem){.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}}.\\[\\&\\>\\.ripple\\]\\:scale-100>.ripple{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@layer schmancy.tokens;@layer schmancy.base{:host,:root{font-family:var(--schmancy-font-family);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:host,:root{--lightningcss-light: ;--lightningcss-dark:initial}}:host,:host *,*{touch-action:pan-x pan-y}.interactive{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .4s,filter .2s}.interactive:hover{filter:brightness(1.03);box-shadow:0 4px 20px -6px var(--schmancy-sys-color-primary-default);transform:translateY(-1px)}@supports (color:color-mix(in lab, red, red)){.interactive:hover{box-shadow:0 4px 20px -6px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 18%, transparent)}}.interactive:active{filter:brightness(.96);box-shadow:none;transition-duration:.1s;transform:scale(.97)}@media (prefers-reduced-motion:reduce){.interactive{transition:filter .15s}.interactive:hover{box-shadow:none;transform:none}.interactive:active{transform:none}}}@layer schmancy.components;@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}`),v=e=>{class t extends a.LitElement{static{this.styles=[(0,a.unsafeCSS)(e),_]}}return t},y=e=>{class t extends g(v(e)){constructor(...e){super(...e),this.disconnectedCallback=()=>{super.disconnectedCallback()}}}return t},b=Symbol.for(`schmancy.state.activeHost.stack`),x=globalThis;x[b]??={stack:[void 0]};var S=x[b].stack;if(typeof Promise<`u`&&!(`k`in Promise.prototype)){Object.defineProperty(Promise.prototype,`k`,{value:!0,configurable:!1,enumerable:!1,writable:!1});let e=Promise.prototype.then;Promise.prototype.then=function(t,n){let r=S[S.length-1],i=t&&(e=>{S.push(r);try{return t(e)}finally{S.pop()}}),a=n&&(e=>{S.push(r);try{return n(e)}finally{S.pop()}});return e.call(this,i,a)}}var C={run(e,t){S.push(e);try{return t()}finally{S.pop()}},get:()=>S[S.length-1]},w=Symbol.for(`schmancy.state.activeHost.eventHost`),T=globalThis[w]??={host:void 0,scheduled:!1};function E(e){T.host=e,T.scheduled||(T.scheduled=!0,queueMicrotask(()=>{T.scheduled=!1,T.host=void 0}))}function D(){let e=C.get();return e===void 0?T.host===void 0?typeof document<`u`&&document.activeElement instanceof HTMLElement?document.activeElement:void 0:T.host:e}function O(e){return Symbol.for(`schmancy.state:${e}`)}var k=(0,o.SignalWatcher)(g(a.LitElement));function A(e){return e===`constructor`||!!e.startsWith(`_$`)}var j=new WeakSet;function M(e){let t=e.prototype;for(;t&&t!==HTMLElement.prototype&&!j.has(t);){j.add(t);let e=Object.getOwnPropertyDescriptors(t);for(let[n,r]of Object.entries(e)){if(A(n)||typeof r.value!=`function`||!r.configurable)continue;let e=r.value;Object.defineProperty(t,n,{...r,value:function(...t){return C.run(this,()=>e.apply(this,t))}})}t=Object.getPrototypeOf(t)}}var N=new WeakMap,P=class extends k{constructor(){super(),this.abortController=new AbortController,this.disconnectedSignal=this.abortController.signal,M(this.constructor)}static finalizeStyles(e){return[...super.finalizeStyles(e),_]}addEventListener(e,t,n){t==null?super.addEventListener(e,t,n):super.addEventListener(e,function(e,t){let n=N.get(t);if(n)return n;let r=function(n){C.run(e,()=>{typeof t==`function`?t.call(this,n):t.handleEvent(n)})};return N.set(t,r),r}(this,t),n)}removeEventListener(e,t,n){if(t==null)return void super.removeEventListener(e,t,n);let r=N.get(t);super.removeEventListener(e,r??t,n)}disconnectedCallback(){this.abortController.abort(),super.disconnectedCallback()}};function F(e){return t=>(M(t),customElements.define(e,t),t)}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return d}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"details-CY49XVfp.js","names":["#open$","#animateIndicator","#updateIndicatorSlot","#closeSub","#handleToggle","#handleSummaryClick","#indicatorRef","#handleIndicatorSlotChange","#contentRef","#closing","#nativeAnim","#startClose","#indicatorIsOpen","#currentAnimation"],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this.#open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this.#open$.value !== value) {\n\t\t\tthis.#open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\t#open$ = new BehaviorSubject<boolean>(false)\n\t#indicatorRef: Ref<HTMLElement> = createRef()\n\t#contentRef: Ref<HTMLDivElement> = createRef()\n\t#currentAnimation?: Animation\n\t#indicatorIsOpen = false\n\t#closing = false\n\t#closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\t#nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis.#open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this.hasOpened) {\n\t\t\t\t\t\tthis.hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis.#animateIndicator(isOpen)\n\t\t\t\t\tthis.#updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.#closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this.#open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this.#handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this.#handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this.#indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this.#handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this.#contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this.#closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this.hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\t#handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.#closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this.#nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this.#open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis.#startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by #handleToggle)\n\t}\n\n\t#handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this.#nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this.#open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by #startClose)\n\t\t\tif (newState && this.#open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\t#startClose() {\n\t\tthis.#closing = true\n\t\tthis.#closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis.#contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis.#animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this.#contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis.#closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis.#closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\t#handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this.#open$.value))\n\t\t})\n\t}\n\n\t#updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this.#open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\t#animateIndicator(isOpen: boolean) {\n\t\tif (this.#indicatorIsOpen === isOpen) return\n\t\tthis.#indicatorIsOpen = isOpen\n\n\t\tconst indicator = this.#indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis.#currentAnimation?.cancel()\n\n\t\tthis.#currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"details-DQNj2oaU.cjs","names":["#open$","#animateIndicator","#updateIndicatorSlot","#closeSub","#handleToggle","#handleSummaryClick","#indicatorRef","#handleIndicatorSlotChange","#contentRef","#closing","#nativeAnim","#startClose","#indicatorIsOpen","#currentAnimation"],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this.#open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this.#open$.value !== value) {\n\t\t\tthis.#open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\t#open$ = new BehaviorSubject<boolean>(false)\n\t#indicatorRef: Ref<HTMLElement> = createRef()\n\t#contentRef: Ref<HTMLDivElement> = createRef()\n\t#currentAnimation?: Animation\n\t#indicatorIsOpen = false\n\t#closing = false\n\t#closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\t#nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis.#open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this.hasOpened) {\n\t\t\t\t\t\tthis.hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis.#animateIndicator(isOpen)\n\t\t\t\t\tthis.#updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.#closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this.#open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this.#handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this.#handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this.#indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this.#handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this.#contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this.#closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this.hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\t#handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.#closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this.#nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this.#open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis.#startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by #handleToggle)\n\t}\n\n\t#handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this.#nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this.#open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by #startClose)\n\t\t\tif (newState && this.#open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\t#startClose() {\n\t\tthis.#closing = true\n\t\tthis.#closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis.#contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis.#animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this.#contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis.#closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis.#closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\t#handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this.#open$.value))\n\t\t})\n\t}\n\n\t#updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this.#open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\t#animateIndicator(isOpen: boolean) {\n\t\tif (this.#indicatorIsOpen === isOpen) return\n\t\tthis.#indicatorIsOpen = isOpen\n\n\t\tconst indicator = this.#indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis.#currentAnimation?.cancel()\n\n\t\tthis.#currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
|
package/dist/src-Dmqjtcmp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"src-Dmqjtcmp.js","names":[],"sources":["../src/badge/badge.ts","../src/content-drawer/drawer.service.ts","../src/content-drawer/context.ts","../src/content-drawer/events.ts","../src/content-drawer/drawer.ts","../src/content-drawer/main.ts","../src/content-drawer/sheet.ts","../src/nav-drawer/$navbar.ts","../src/nav-drawer/appbar.ts","../src/nav-drawer/content.ts","../src/nav-drawer/context.ts","../src/nav-drawer/drawer.ts","../src/nav-drawer/navbar.ts","../src/navigation-bar/navigation-bar-item.ts","../src/navigation-bar/navigation-bar.ts","../src/teleport/teleport.service.ts","../src/teleport/watcher.ts","../src/teleport/teleport.component.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyTheme } from '..'\n\n/**\n * Badge color types for predefined styles\n */\nexport type BadgeColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'error' | 'neutral' | 'surface'\n\n/**\n * Badge size variants\n */\nexport type BadgeSize = 'xs' | 'sm' | 'md' | 'lg'\n\n/**\n * Badge shape variants\n */\nexport type BadgeShape = 'rounded' | 'pill' | 'square'\n\n/**\n * @element sch-badge\n * A versatile badge component for status indicators, labels, and counts\n *\n * @slot - The content of the badge (text or HTML)\n * @slot icon - Optional icon to display before the content\n *\n * @csspart badge - The badge element container\n * @csspart content - The content container\n * @csspart icon - The icon container\n */\n@customElement('schmancy-badge')\nexport class SchmancyBadgeV2 extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: inline-flex;\n\t\tflex-shrink: 0;\n\t\twidth: fit-content;\n\t}\n\n\t/* Enhanced pulse animation for better attention-getting */\n\t@keyframes elegant-pulse {\n\t\t0%, 100% {\n\t\t\topacity: 1;\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.85;\n\t\t}\n\t}\n\n\t.animate-pulse {\n\t\tanimation: elegant-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n\t}\n`];\n\t/**\n\t * The color variant of the badge\n\t * @attr\n\t */\n\t@property({ type: String, reflect: true })\n\tcolor: BadgeColor = 'primary'\n\n\t/**\n\t * The size of the badge\n\t * @attr\n\t */\n\t@property({ type: String, reflect: true })\n\tsize: BadgeSize = 'md'\n\n\t/**\n\t * The shape of the badge\n\t * @attr\n\t */\n\t@property({ type: String, reflect: true })\n\tshape: BadgeShape = 'pill'\n\n\t/**\n\t * Whether the badge has an outlined style\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\toutlined = false\n\n\t/**\n\t * Custom icon name to display (if no icon slot is provided)\n\t * @attr\n\t */\n\t@property({ type: String })\n\ticon = ''\n\n\t/**\n\t * Whether to make the badge pulse to draw attention\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpulse = false\n\n\t/**\n\t * Convert the size to appropriate Tailwind classes for the badge container\n\t * Using harmonious padding ratios based on golden ratio principles\n\t * Refined for more elegant proportions\n\t */\n\tprivate getSizeClasses(): string {\n\t\tswitch (this.size) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'text-xs py-0.75 px-1.5 gap-0.5 leading-none'\n\t\t\tcase 'sm':\n\t\t\t\treturn 'text-xs py-1.5 px-2.5 gap-0.5 tracking-wide leading-none'\n\t\t\tcase 'lg':\n\t\t\t\treturn 'text-base py-2 px-4 gap-1 tracking-wide'\n\t\t\tcase 'md':\n\t\t\tdefault:\n\t\t\t\treturn 'text-sm py-1.5 px-3 gap-0.5'\n\t\t}\n\t}\n\n\t/**\n\t * Get shape classes based on selected shape\n\t */\n\tprivate getShapeClasses(): string {\n\t\tswitch (this.shape) {\n\t\t\tcase 'square':\n\t\t\t\treturn 'rounded'\n\t\t\tcase 'rounded':\n\t\t\t\treturn 'rounded-md'\n\t\t\tcase 'pill':\n\t\t\tdefault:\n\t\t\t\treturn 'rounded-full'\n\t\t}\n\t}\n\n\t/**\n\t * Get icon size based on badge size with harmonious proportions\n\t * Using golden ratio-inspired proportions relative to text size\n\t */\n\tprivate getIconSizeClass(): string {\n\t\tswitch (this.size) {\n\t\t\tcase 'xs': return 'text-xs'\n\t\t\tcase 'sm': return 'text-sm'\n\t\t\tcase 'lg': return 'text-lg'\n\t\t\tcase 'md':\n\t\t\tdefault: return 'text-sm'\n\t\t}\n\t}\n\n\t/**\n\t * Get additional styling for specific sizes\n\t */\n\tprivate getExoticStyles(): Record<string, string> {\n\t\tconst styles: Record<string, string> = {}\n\n\t\tif (this.size === 'lg') {\n\t\t\tstyles.letterSpacing = '0.03em'\n\t\t\tstyles.fontWeight = '500'\n\t\t}\n\n\t\tif (this.size === 'sm') {\n\t\t\tstyles.letterSpacing = '0.02em'\n\t\t}\n\n\t\treturn styles\n\t}\n\n\t/**\n\t * Get background and text colors based on selected color variant\n\t * Enhanced for more elegant color combinations with refined contrasts\n\t */\n\tprivate getColorStyles() {\n\t\tconst colors: Record<BadgeColor, { bg: string; text: string; border?: string }> = {\n\t\t\tprimary: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.container} 92%, ${SchmancyTheme.sys.color.primary.default} 8%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.primary.default : SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 90%, ${SchmancyTheme.sys.color.surface.highest} 10%)` : undefined,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.secondary.container} 95%, ${SchmancyTheme.sys.color.secondary.default} 5%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.secondary.default : SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.secondary.default} 85%, ${SchmancyTheme.sys.color.surface.highest} 15%)` : undefined,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.container} 94%, ${SchmancyTheme.sys.color.tertiary.default} 6%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.tertiary.default : SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 88%, ${SchmancyTheme.sys.color.surface.highest} 12%)` : undefined,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.success.container} 90%, ${SchmancyTheme.sys.color.success.default} 10%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.success.default : SchmancyTheme.sys.color.success.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 85%, ${SchmancyTheme.sys.color.surface.bright} 15%)` : undefined,\n\t\t\t},\n\t\t\twarning: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.container} 85%, ${SchmancyTheme.sys.color.tertiary.default} 15%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.tertiary.default : SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.surface.highest} 10%)` : undefined,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.error.container} 92%, ${SchmancyTheme.sys.color.error.default} 8%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.error.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 88%, ${SchmancyTheme.sys.color.surface.bright} 12%)` : undefined,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.surface.high} 95%, ${SchmancyTheme.sys.color.outline} 5%)`,\n\t\t\t\ttext: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.surface.on} 95%, ${SchmancyTheme.sys.color.surface.default} 5%)` : SchmancyTheme.sys.color.surface.on,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.outline} 85%, ${SchmancyTheme.sys.color.surface.highest} 15%)` : undefined,\n\t\t\t},\n\t\t\tsurface: {\n\t\t\t\tbg: this.outlined ? 'transparent' : SchmancyTheme.sys.color.surface.high,\n\t\t\t\ttext: SchmancyTheme.sys.color.surface.on,\n\t\t\t\tborder: this.outlined ? SchmancyTheme.sys.color.outline : undefined,\n\t\t\t},\n\t\t}\n\n\t\treturn colors[this.color]\n\t}\n\n\trender() {\n\t\tconst sizeClasses = this.getSizeClasses()\n\t\tconst shapeClasses = this.getShapeClasses()\n\t\tconst colorStyles = this.getColorStyles()\n\t\tconst iconSizeClass = this.getIconSizeClass()\n\t\tconst exoticStyles = this.getExoticStyles()\n\n\t\tconst badgeClasses = {\n\t\t\t'inline-flex items-center justify-center font-medium': true,\n\t\t\t'transition-all duration-200 ease-in-out': true,\n\t\t\t[sizeClasses]: true,\n\t\t\t[shapeClasses]: true,\n\t\t\t'animate-pulse': this.pulse,\n\t\t\t'border border-solid': this.outlined,\n\t\t\t'shadow-sm': !this.outlined && this.size === 'sm',\n\t\t\t'shadow': !this.outlined && this.size === 'md',\n\t\t\t'shadow-md': !this.outlined && this.size === 'lg',\n\t\t\t'hover:brightness-95 hover:-translate-y-px': this.outlined,\n\t\t\t'hover:brightness-[0.98]': !this.outlined,\n\t\t}\n\n\t\t// Refined styles for a more elegant look (only CSS that can't be done with Tailwind)\n\t\tconst styles = {\n\t\t\tborderColor: colorStyles.border,\n\t\t\tbackdropFilter: this.outlined ? 'blur(4px)' : undefined,\n\t\t\tboxShadow: this.size === 'lg' && !this.outlined ? '0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.1)' : undefined,\n\t\t\t...exoticStyles,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tpart=\"badge\"\n\t\t\t\tclass=\"${this.classMap(badgeClasses)}\"\n\t\t\t\tstyle=\"${this.styleMap(styles)}\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: colorStyles.bg,\n\t\t\t\t\tcolor: colorStyles.text,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<!-- Icon slot or named icon -->\n\t\t\t\t<slot name=\"icon\">\n\t\t\t\t\t${this.icon\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<div part=\"icon\" class=\"shrink-0 flex items-center justify-center leading-none\">\n\t\t\t\t\t\t\t\t\t<schmancy-icon class=\"${iconSizeClass} flex items-center justify-center\">${this.icon}</schmancy-icon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- Content with proper spacing from icon -->\n\t\t\t\t<div part=\"content\" class=\"flex items-center leading-none tracking-[0.01em] ${this.icon ? 'ml-[0.38em]' : ''}\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-badge': SchmancyBadgeV2,\n\t\t'schmancy-badge': SchmancyBadgeV2\n\t}\n}\n\n\n// Register the component with the legacy tag name for backward compatibility\n@customElement('sch-badge')\nexport class ScBadgeV2 extends SchmancyBadgeV2 {}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { BehaviorSubject, Subject, concatMap, delay, of, tap } from 'rxjs'\nimport { ComponentType } from '../area/router.types'\n\n// type DrawerAction = 'dismiss' | 'render' | 'push'\ntype TRef = Element | Window\ntype TRenderRequest = ComponentType\nexport type TRenderCustomEvent = CustomEvent<{\n\tcomponent: TRenderRequest\n\ttitle?: string\n\tstate?: Record<string, unknown>\n\tparams?: Record<string, unknown>\n\tprops?: Record<string, unknown>\n}>\n\nexport type DrawerPushOptions = {\n\tcomponent: ComponentType\n\tstate?: Record<string, unknown>\n\tparams?: Record<string, unknown>\n\tprops?: Record<string, unknown>\n}\n\ntype DrawerCommand =\n\t| { action: 'dismiss'; ref: TRef }\n\t| { action: 'render'; ref: TRef; component: TRenderRequest; title?: string }\n\t| { action: 'push'; ref: TRef; component: ComponentType; state?: Record<string, unknown>; params?: Record<string, unknown>; props?: Record<string, unknown> }\n\nclass DrawerService {\n\tprivate $drawer = new Subject<DrawerCommand>()\n\tprivate pushCounter = 0\n\tprivate isDismissing$ = new BehaviorSubject<boolean>(false)\n\n\tconstructor() {\n\t\t// Use concatMap to queue commands and process them sequentially\n\t\tthis.$drawer.pipe(\n\t\t\tconcatMap(command => {\n\t\t\t\tswitch (command.action) {\n\t\t\t\t\tcase 'dismiss':\n\t\t\t\t\t\treturn of(command).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tthis.isDismissing$.next(true)\n\t\t\t\t\t\t\t\tthis.dispatchToggleEvent(command.ref, 'close')\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t// Wait for dismiss animation (250ms from sheet.ts)\n\t\t\t\t\t\t\tdelay(300),\n\t\t\t\t\t\t\ttap(() => this.isDismissing$.next(false))\n\t\t\t\t\t\t)\n\t\t\t\t\tcase 'render':\n\t\t\t\t\t\treturn of(command).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tthis.dispatchToggleEvent(command.ref, 'open')\n\t\t\t\t\t\t\t\tthis.dispatchRenderEvent(command.ref, command.component, command.title)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\tcase 'push':\n\t\t\t\t\t\treturn of(command).pipe(\n\t\t\t\t\t\t\ttap(() => this.handlePush(command.ref, command.component, command.state, command.params, command.props))\n\t\t\t\t\t\t)\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn of(null)\n\t\t\t\t}\n\t\t\t})\n\t\t).subscribe()\n\t}\n\n\tprivate dispatchToggleEvent(ref: TRef, state: 'open' | 'close') {\n\t\tref.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\tdetail: { state },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t})\n\t\t)\n\t}\n\n\tprivate dispatchRenderEvent(\n\t\tref: TRef,\n\t\tcomponent: TRenderRequest,\n\t\ttitle?: string,\n\t\tstate?: Record<string, unknown>,\n\t\tparams?: Record<string, unknown>,\n\t\tprops?: Record<string, unknown>\n\t) {\n\t\tref.dispatchEvent(\n\t\t\tnew CustomEvent('schmancy-content-drawer-render', {\n\t\t\t\tdetail: { component, title, state, params, props },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t})\n\t\t)\n\t}\n\n\tdimiss(ref: TRef) {\n\t\tthis.$drawer.next({\n\t\t\taction: 'dismiss',\n\t\t\tref: ref,\n\t\t})\n\t}\n\n\trender(ref: TRef, component: TRenderRequest, title?: string) {\n\t\tref.dispatchEvent(new CustomEvent('custom-event'))\n\t\tthis.$drawer.next({\n\t\t\taction: 'render',\n\t\t\tref: ref,\n\t\t\tcomponent: component,\n\t\t\ttitle,\n\t\t})\n\t}\n\n\tprivate handlePush(\n\t\tref: TRef,\n\t\tcomponent: ComponentType,\n\t\tstate?: Record<string, unknown>,\n\t\tparams?: Record<string, unknown>,\n\t\tprops?: Record<string, unknown>\n\t) {\n\t\t// Auto-increment counter to make every push unique\n\t\t// Area router uses distinctUntilChanged on component+state+params+props\n\t\t// Without this, pushing same component with same props gets silently blocked\n\t\tconst enhancedState = {\n\t\t\t...state,\n\t\t\t_drawerPushId: ++this.pushCounter\n\t\t}\n\n\t\tthis.dispatchToggleEvent(ref, 'open')\n\t\tthis.dispatchRenderEvent(ref, component, undefined, enhancedState, params, props)\n\t}\n\n\t/**\n\t * Push a component to the content drawer\n\t * Every push is guaranteed to render (auto-incremented unique ID prevents deduplication)\n\t * @param options - Component configuration object with optional state/params/props\n\t * @example\n\t * schmancyContentDrawer.push({\n\t * component: myComponent,\n\t * props: { id: '123' }\n\t * })\n\t */\n\tpush(options: DrawerPushOptions): void {\n\t\tthis.$drawer.next({\n\t\t\taction: 'push',\n\t\t\tref: window,\n\t\t\t...options,\n\t\t})\n\t}\n}\n\n/**\n * Content-drawer service. Mounts any element inside the right-hand content\n * drawer of a `<schmancy-content-drawer>` layout.\n *\n * @service\n * @summary Imperative content-drawer (right-side navigation panel).\n * @method render({ component, ...options }) - Mount an element in the drawer.\n * @method close() - Close the drawer.\n */\nexport const schmancyContentDrawer = new DrawerService()","import { createContext } from '@lit/context'\nexport type TSchmancyContentDrawerSheetMode = 'push' | 'overlay'\nexport const SchmancyContentDrawerSheetMode = createContext<TSchmancyContentDrawerSheetMode>('push')\n\nexport type TSchmancyContentDrawerSheetState = 'open' | 'close'\nexport const SchmancyContentDrawerSheetState = createContext<TSchmancyContentDrawerSheetState>('close')\n\nexport const SchmancyContentDrawerID = createContext<string>(Math.floor(Math.random() * Date.now()).toString())\nexport const SchmancyContentDrawerMaxHeight = createContext<string>('100%')\nexport const SchmancyContentDrawerMinWidth = createContext<{\n\tmain: number\n\tsheet: number\n}>({})\n","/**\n * Internal event protocol between `<schmancy-content-drawer>` and its child\n * `<schmancy-content-drawer-sheet>`. Bubbling + composed so the parent can\n * listen on itself even when the child is in a deeper shadow tree.\n */\nexport const OVERLAY_DISMISS_EVENT = 'schmancy-content-drawer-overlay-dismiss'\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, merge, startWith, Subscription, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, TRenderCustomEvent, area } from '..'\nimport { show } from '../overlay/overlay.service'\nimport { OVERLAY_DISMISS_EVENT } from './events'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n/**\n * @element schmancy-content-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-content-drawer')\nexport class SchmancyContentDrawer extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tinset: 0;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`]\n\n\t/**\n\t * The minimum width of the sheet\n\t * @attr\tminWidth\n\t * @type {number}\n\t * @memberof SchmancyContentDrawer\n\t */\n\n\t@provide({ context: SchmancyContentDrawerMinWidth })\n\tminWidth: typeof SchmancyContentDrawerMinWidth.__context__ = {\n\t\tmain: 360,\n\t\tsheet: 576,\n\t}\n\n\t/**\n\t * The state of the sheet\n\t * @attr open\n\t * @type {TSchmancyContentDrawerSheetState}\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetState })\n\t@property()\n\topen: TSchmancyContentDrawerSheetState\n\n\t/**\n\t * The mode of the sheet\n\t * @type {TSchmancyContentDrawerSheetMode}\n\t * @memberof SchmancyContentDrawer\n\t * @protected\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetMode })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@provide({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID = Math.floor(Math.random() * Date.now()).toString()\n\n\t@provide({ context: SchmancyContentDrawerMaxHeight })\n\tmaxHeight = '100%'\n\n\t@queryAssignedElements({ flatten: true })\n\tassignedElements!: HTMLElement[]\n\n\tfirstUpdated(): void {\n\t\tthis.setupResizeListener()\n\t\tthis.setupToggleListener()\n\t\tthis.setupRenderListener()\n\t}\n\n\tprivate setupResizeListener() {\n\t\tmerge(\n\t\t\tfromEvent<CustomEvent>(window, 'resize'),\n\t\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerResize)\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tdebounceTime(100),\n\t\t\t\tmap(() => this.clientWidth || window.innerWidth),\n\t\t\t\tmap(width => width >= this.minWidth.main + this.minWidth.sheet),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(() => this.updateMaxHeight()),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(isLargeScreen => this.updateMode(isLargeScreen))\n\t}\n\n\tprivate setupToggleListener() {\n\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerToggle)\n\t\t\t.pipe(\n\t\t\t\ttap(event => event.stopPropagation()),\n\t\t\t\tmap(event => event.detail.state),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\tthis.open = state\n\t\t\t})\n\t}\n\n\tprivate setupRenderListener() {\n\t\tfromEvent<TRenderCustomEvent>(window, 'schmancy-content-drawer-render')\n\t\t\t.pipe(\n\t\t\t\ttap(event => event.stopPropagation()),\n\t\t\t\tmap(event => event.detail),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(detail => this.handleRender(detail))\n\n\t\t// Child `<schmancy-content-drawer-sheet>` requests overlay dismissal\n\t\t// via a bubbling event; the drawer owns the subscription.\n\t\tfromEvent<CustomEvent>(this, OVERLAY_DISMISS_EVENT)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => this.dismissOverlay())\n\t}\n\n\tprivate updateMaxHeight() {\n\t\tthis.maxHeight = `${window.innerHeight - this.getOffsetTop(this)}px`\n\t\tthis.style.setProperty('max-height', this.maxHeight)\n\t}\n\n\tprivate updateMode(isLargeScreen: boolean) {\n\t\tif (isLargeScreen) {\n\t\t\tthis.mode = 'push'\n\t\t\tthis.open = 'open'\n\t\t} else {\n\t\t\tthis.mode = 'overlay'\n\t\t\tthis.open = 'close'\n\t\t}\n\t}\n\n\tprivate overlaySubscription: Subscription | null = null\n\n\tprivate handleRender(detail: TRenderCustomEvent['detail']) {\n\t\tif (this.mode === 'push') {\n\t\t\tarea.push({\n\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\tcomponent: detail.component,\n\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\tstate: detail.state,\n\t\t\t\tparams: detail.params,\n\t\t\t\tprops: detail.props,\n\t\t\t})\n\t\t} else if (this.mode === 'overlay') {\n\t\t\t// `show()` mounts the same component as a modal overlay; subscription\n\t\t\t// = lifecycle, so dropping the previous one closes any prior modal\n\t\t\t// before opening the next.\n\t\t\tthis.overlaySubscription?.unsubscribe()\n\t\t\tthis.overlaySubscription = show(detail.component, { props: detail.props })\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe({ complete: () => { this.overlaySubscription = null } })\n\t\t}\n\t}\n\n\tprivate dismissOverlay() {\n\t\tthis.overlaySubscription?.unsubscribe()\n\t\tthis.overlaySubscription = null\n\t}\n\n\tgetOffsetTop(element: HTMLElement | null) {\n\t\tlet offsetTop = 0\n\t\twhile (element) {\n\t\t\toffsetTop += element.offsetTop\n\t\t\telement = element.offsetParent as HTMLElement | null\n\t\t}\n\t\treturn offsetTop\n\t}\n\n\tprotected render() {\n\t\tif (!this.mode || !this.open) return nothing\n\n\t\tconst gridClasses = [\n\t\t\t'grid h-full',\n\t\t\t'grid-flow-col auto-cols-max',\n\t\t\t'grid-rows-[1fr]',\n\t\t\t'justify-items-stretch items-stretch',\n\t\t\tthis.mode === 'overlay' ? 'grid-cols-[1fr]' : 'grid-cols-[auto_1fr]'\n\t\t].join(' ')\n\n\t\treturn html`\n\t\t\t<div class=${gridClasses}>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer': SchmancyContentDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { PropertyValueMap, css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyEvents } from '..'\nimport {\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetMode,\n} from './context'\nimport { when } from 'lit/directives/when.js'\n\n@customElement('schmancy-content-drawer-main')\nexport class SchmancyContentDrawerMain extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`]\n\n\t@property({ type: Number })\n\tminWidth: number\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight: string\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) this.drawerMinWidth.main = this.minWidth\n\t\telse this.minWidth = this.drawerMinWidth.main\n\t}\n\n\tprotected update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\t\tsuper.update(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\tthis.drawerMinWidth.main = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t}\n\t}\n\n\trender() {\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\tconst gridClasses = [\n\t\t\t'grid h-full relative overflow-scroll',\n\t\t\t'grid-flow-col auto-cols-max',\n\t\t\t'grid-rows-[1fr]',\n\t\t\t'items-stretch justify-items-stretch',\n\t\t\tthis.mode === 'push' ? 'grid-cols-[auto_1fr]' : 'grid-cols-[1fr]'\n\t\t].join(' ')\n\n\t\treturn html`\n\t\t\t<section class=\"relative inset-0 h-full\">\n\t\t\t\t<div class=${gridClasses}>\n\t\t\t\t\t<section style=${this.styleMap(styles)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</section>\n\t\t\t\t</div>\n\t\t\t\t${when(\n\t\t\t\t\tthis.mode === 'push',\n\t\t\t\t\t() => html` <schmancy-divider class=\"absolute right-0 top-0\" orientation=\"vertical\"></schmancy-divider>`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-main': SchmancyContentDrawerMain\n\t}\n}\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { Observable, takeUntil } from 'rxjs'\nimport { SchmancyEvents } from '..'\nimport { OVERLAY_DISMISS_EVENT } from './events'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n// --- 1) Removed the custom animate import\n// import { animate } from '@packages/anime-beta-master'\n\n@customElement('schmancy-content-drawer-sheet')\nexport class SchmancyContentDrawerSheet extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\toverflow: scroll;\n\t}\n`]\n\n\t@property({ type: Number })\n\tminWidth\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerSheetState, subscribe: true })\n\t@state()\n\tstate: TSchmancyContentDrawerSheetState\n\n\t@consume({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID\n\n\t@query('#sheet') sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true, slot: undefined }) defaultSlot!: HTMLElement[]\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) {\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t} else {\n\t\t\tthis.minWidth = this.drawerMinWidth.sheet\n\t\t}\n\t}\n\n\tupdated(changedProperties: Map<string, unknown>) {\n\t\tsuper.updated(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\t// If the 'minWidth' property changed\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t} else if (changedProperties.has('state') || changedProperties.has('mode')) {\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\t// Overlay open logic if needed\n\t\t\t\t\t// this.open()\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tthis.requestOverlayDismiss()\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\tthis.open()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Open the sheet by sliding it into view.\n\t */\n\topen() {\n\t\t// \"onBegin\" logic from the old `animate(...)`\n\t\tif (this.mode === 'overlay') {\n\t\t\tthis.sheet.style.position = 'fixed'\n\t\t} else {\n\t\t\tthis.sheet.style.position = 'relative'\n\t\t}\n\t\tthis.sheet.style.display = 'block'\n\n\t\t// --- 2) Use native Web Animations API ---\n\t\tthis.sheet.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'translateX(100%)' },\n\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 250,\n\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t},\n\t\t)\n\t\t// No return is needed if you don't rely on the result\n\t}\n\n\t/**\n\t * Ask the parent `<schmancy-content-drawer>` to dismiss any modal overlay\n\t * it currently owns. Bubbling so the parent catches it on itself.\n\t */\n\tprivate requestOverlayDismiss() {\n\t\tthis.dispatchEvent(new CustomEvent(OVERLAY_DISMISS_EVENT, { bubbles: true, composed: true }))\n\t}\n\n\t/**\n\t * Close everything (parent's modal overlay + the sheet itself, in\n\t * parallel).\n\t */\n\tcloseAll() {\n\t\tthis.requestOverlayDismiss()\n\t\tthis.closeSheet().pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\t/**\n\t * Slide the sheet out of view + hide it.\n\t * Return an Observable so we can merge it with other close operations.\n\t */\n\tcloseSheet() {\n\t\t// --- 2) Use native Web Animations API and wrap in an Observable ---\n\t\treturn new Observable<void>(observer => {\n\t\t\tconst animation = this.sheet.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(100%)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 250,\n\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tanimation.onfinish = () => {\n\t\t\t\t// \"onComplete\" logic\n\t\t\t\tthis.sheet.style.display = 'none'\n\t\t\t\tobserver.next()\n\t\t\t\tobserver.complete()\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected render() {\n\t\tconst sheetClasses = {\n\t\t\t\"block h-full w-full\": this.mode === 'push',\n\t\t\t'absolute z-50': this.mode === 'overlay',\n\t\t\t'opacity-1': this.mode === 'overlay' && this.state === 'open',\n\t\t}\n\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"sheet\" class=\"${this.classMap(sheetClasses)}\" style=${this.styleMap(styles)}>\n\t\t\t\t<schmancy-area class=\"h-full w-full\" name=\"${this.schmancyContentDrawerID}\">\n\t\t\t\t\t<slot name=\"placeholder\"></slot>\n\t\t\t\t</schmancy-area>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-sheet': SchmancyContentDrawerSheet\n\t}\n}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { debounceTime, Subject } from 'rxjs'\n\nclass Drawer {\n\tprivate $drawer = new Subject<{\n\t\tself: HTMLElement\n\t\tstate: boolean\n\t}>()\n\tconstructor() {\n\t\tthis.$drawer.pipe(debounceTime(10)).subscribe(data => {\n\t\t\tif (data.state) {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'open',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'close',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n\topen(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: true,\n\t\t})\n\t}\n\tclose(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: false,\n\t\t})\n\t}\n}\n\nexport const schmancyNavDrawer = new Drawer()\nconst $drawer = schmancyNavDrawer\n\nexport { $drawer }\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-nav-drawer-appbar\n * @slot - The default slot\n */\n@customElement('schmancy-nav-drawer-appbar')\nexport class SchmancyDrawerAppbar extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmin-width: 0;\n\t}\n`];\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-appbar': SchmancyDrawerAppbar\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-nav-drawer-content')\nexport class SchmancyNavigationDrawerContent extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tinset: 0;\n\t\toverflow-y: auto;\n\t}\n`]\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'scroll')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\tthis.parentElement.dispatchEvent(new CustomEvent('scroll', { detail: e, bubbles: true, composed: true }))\n\t\t\t})\n\t}\n\trender() {\n\t\treturn html` <slot></slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-content': SchmancyNavigationDrawerContent\n\t}\n}\n","import { createContext } from '@lit/context'\nexport type TSchmancyDrawerNavbarMode = 'push' | 'overlay' | undefined\nexport const SchmancyDrawerNavbarMode = createContext<TSchmancyDrawerNavbarMode>('push')\n\nexport type TSchmancyDrawerNavbarState = 'open' | 'close' | undefined\nexport const SchmancyDrawerNavbarState = createContext<TSchmancyDrawerNavbarState>('close')\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents } from '..'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n/**\n * @element schmancy-nav-drawer\n * @slot - The content slot\n */\n@customElement('schmancy-nav-drawer')\nexport class SchmancyNavigationDrawer extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t\tgrid-template-rows: 1fr;\n\t\tflex-grow: 1;\n\t\theight: 100%;\n\t\toverflow: hidden;\n\t\t/* Initially hide the component until it's ready */\n\t\tvisibility: hidden;\n\t}\n\n\t:host([data-ready]) {\n\t\tvisibility: visible;\n\t}\n\n\t:host([fullscreen]) {\n\t\tgrid-template-columns: 1fr;\n\t}\n`]\n\n\t@property({ type: Boolean, reflect: true })\n\tfullscreen: boolean = false\n\n\t/**\n\t * The breakpoint for the sidebar based on Tailwind CSS breakpoints.\n\t * Accepts: \"sm\", \"md\", \"lg\", or \"xl\".\n\t */\n\t@property({ type: String, attribute: 'breakpoint' })\n\tbreakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\tprivate static BREAKPOINTS: Record<'sm' | 'md' | 'lg' | 'xl', number> = {\n\t\tsm: 640,\n\t\tmd: 768,\n\t\tlg: 1024,\n\t\txl: 1280,\n\t}\n\n\t@provide({ context: SchmancyDrawerNavbarMode })\n\t@state()\n\tmode: TSchmancyDrawerNavbarMode\n\n\t@provide({ context: SchmancyDrawerNavbarState })\n\t@property()\n\topen: TSchmancyDrawerNavbarState\n\n\tfirstUpdated() {\n\t\tthis.updateState(window.innerWidth)\n\t\tthis.setAttribute('data-ready', '')\n\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tmap(event => (event.target as Window).innerWidth),\n\t\t\t\tmap(width => width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(isLargeScreen => {\n\t\t\t\tif (isLargeScreen) {\n\t\t\t\t\tthis.mode = 'push'\n\t\t\t\t\tthis.open = 'open'\n\t\t\t\t} else {\n\t\t\t\t\tthis.mode = 'overlay'\n\t\t\t\t\tthis.open = 'close'\n\t\t\t\t}\n\t\t\t})\n\n\t\tfromEvent(window, 'fullscreen').pipe(\n\t\t\ttap((event: Event) => {\n\t\t\t\tconst customEvent = event as CustomEvent\n\t\t\t\tthis.fullscreen = customEvent.detail\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\tfromEvent(window, SchmancyEvents.NavDrawer_toggle)\n\t\t\t.pipe(\n\t\t\t\ttap((event: CustomEvent) => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap((event: CustomEvent) => event.detail.state),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdebounceTime(10),\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\t// Handle 'toggle' state\n\t\t\t\tif (state === 'toggle') {\n\t\t\t\t\tstate = this.open === 'open' ? 'close' : 'open'\n\t\t\t\t}\n\t\t\t\tif (this.mode === 'push' && state === 'close') return\n\t\t\t\tthis.open = state\n\t\t\t})\n\t}\n\n\tprivate updateState(width: number) {\n\t\tconst isLargeScreen = width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]\n\t\tthis.mode = isLargeScreen ? 'push' : 'overlay'\n\t\tthis.open = isLargeScreen ? 'open' : 'close'\n\t}\n\n\tprotected render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer': SchmancyNavigationDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { SchmancyEvents, SchmancyTheme, color } from '..'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n// Animation configuration constants.\nconst ANIMATION_EASING = 'cubic-bezier(0.5, 0.01, 0.25, 1)'\nconst OVERLAY_ANIM_DURATION_OPEN = 200\nconst OVERLAY_ANIM_DURATION_CLOSE = 150\nconst NAV_ANIM_DURATION = 200\n\n@customElement('schmancy-nav-drawer-navbar')\nexport class SchmancyNavigationDrawerSidebar extends SchmancyElement {\n\t// Consume context values. Renamed from \"state\" to \"drawerState\" to avoid confusion.\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tmode!: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tdrawerState!: TSchmancyDrawerNavbarState\n\n\t@query('#overlay') overlay!: HTMLElement\n\t@query('nav') nav!: HTMLElement\n\n\t@property({ type: String }) width = '220px'\n\t@state() private initialized = false\n\n\t/**\n\t * firstUpdated()\n\t * Set initial styles based on the current mode and consumed state.\n\t */\n\tfirstUpdated() {\n\t\tif (this.mode === 'overlay') {\n\t\t\tif (this.drawerState === 'close') {\n\t\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t\t\tthis.overlay.style.display = 'none'\n\t\t\t} else if (this.drawerState === 'open') {\n\t\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\t\tthis.overlay.style.display = 'block'\n\t\t\t\tthis.overlay.style.opacity = '0.4'\n\t\t\t}\n\t\t} else if (this.mode === 'push') {\n\t\t\t// In push mode, the nav is always visible and the overlay hidden.\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t\tthis.initialized = true\n\t}\n\n\t/**\n\t * updated()\n\t * Trigger animations when either the consumed mode or state changes.\n\t */\n\tupdated(changedProperties: Map<string, unknown>) {\n\t\tif (!this.initialized) return\n\n\t\tif (changedProperties.has('drawerState') || changedProperties.has('mode')) {\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.drawerState === 'open') {\n\t\t\t\t\t// Animate only if the nav isn’t already open.\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\t\tthis.openOverlay()\n\t\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t\t}\n\t\t\t\t} else if (this.drawerState === 'close') {\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(-100%)') {\n\t\t\t\t\t\tthis.hideNavDrawer()\n\t\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t}\n\t\t\t\tif (this.overlay.style.display !== 'none') {\n\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Animate the overlay to fade in.\n\t */\n\topenOverlay() {\n\t\tthis.overlay.style.display = 'block'\n\t\tthis.overlay.animate([{ opacity: 0 }, { opacity: 0.4 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_OPEN,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\t/**\n\t * Animate the overlay to fade out, then hide it.\n\t */\n\tcloseOverlay() {\n\t\tconst animation = this.overlay.animate([{ opacity: 0.4 }, { opacity: 0 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_CLOSE,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t}\n\tshowNavDrawer() {\n\t\t// Use computed style if needed, but here we directly update inline style after animation.\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(-100%)' }, { transform: 'translateX(0)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t}\n\t}\n\n\thideNavDrawer() {\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t}\n\t}\n\n\t/**\n\t * Handle overlay click events by dispatching a custom event\n\t * to close the navigation drawer.\n\t */\n\tprivate handleOverlayClick() {\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\tdetail: { state: 'close' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected render() {\n\t\tconst sidebarClasses = {\n\t\t\t'max-w-[360px] w-fit h-full overflow-auto': true,\n\t\t\tblock: this.mode === 'push',\n\t\t\t'fixed inset-0 z-50': this.mode === 'overlay',\n\t\t}\n\t\tconst overlayClass = {\n\t\t\t'fixed inset-0 z-49 hidden': true,\n\t\t}\n\t\tconst styleMap = {\n\t\t\twidth: this.width,\n\t\t}\n\n\t\treturn html`\n\t\t\t<nav\n\t\t\t\tstyle=${this.styleMap(styleMap)}\n\t\t\t\tclass=\"${this.classMap({ ...sidebarClasses })}\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.containerLowest,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</nav>\n\t\t\t<div\n\t\t\t\tid=\"overlay\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.scrim,\n\t\t\t\t})}\n\t\t\t\t@click=${this.handleOverlayClick}\n\t\t\t\tclass=\"${this.classMap({ ...overlayClass })}\"\n\t\t\t></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-navbar': SchmancyNavigationDrawerSidebar\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyTheme } from '..'\nimport { BehaviorSubject, fromEvent, merge, timer } from 'rxjs'\nimport { takeUntil, tap, filter } from 'rxjs/operators'\n\n/**\n * `<schmancy-navigation-bar-item>` component\n *\n * Individual navigation item for use within a navigation bar.\n * Represents a single destination with an icon and optional label following Material Design 3 specifications.\n *\n * @element schmancy-navigation-bar-item\n * @slot icon - Slot for custom icon content\n * @slot - Default slot for custom content\n *\n * @fires bar-item-click - When the item is clicked\n * @fires focus - When the item receives focus\n * @fires blur - When the item loses focus\n *\n * @example\n * <schmancy-navigation-bar-item icon=\"home\" label=\"Home\" active></schmancy-navigation-bar-item>\n *\n * @example\n * <schmancy-navigation-bar-item label=\"Custom\">\n * <span slot=\"icon\">🏠</span>\n * </schmancy-navigation-bar-item>\n */\n@customElement('schmancy-navigation-bar-item')\nexport class SchmancyNavigationBarItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: flex;\n\t\tflex: 1;\n\t\tmin-width: 48px;\n\t\tmax-width: 168px;\n\t\tuser-select: none;\n\t\t-webkit-tap-highlight-color: transparent;\n\t}\n\n\t:host([disabled]) {\n\t\tpointer-events: none;\n\t}\n\n\tbutton {\n\t\tfont-family: inherit;\n\t\tborder: none;\n\t\tbackground: none;\n\t\twidth: 100%;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\ttext-align: center;\n\t\tcolor: inherit;\n\t}\n\n\tbutton:focus {\n\t\toutline: none;\n\t}\n\n\tbutton:focus-visible {\n\t\toutline: 2px solid var(--focus-color);\n\t\toutline-offset: 2px;\n\t\tborder-radius: 8px;\n\t}\n\n\t/* Ripple animation */\n\t@keyframes ripple {\n\t\tto {\n\t\t\ttransform: scale(4);\n\t\t\topacity: 0;\n\t\t}\n\t}\n\n\t.ripple-effect {\n\t\tposition: absolute;\n\t\tborder-radius: 50%;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tbackground-color: currentColor;\n\t\topacity: 0.25;\n\t\tanimation: ripple 0.6s ease-out;\n\t\tpointer-events: none;\n\t}\n`];\n\t/**\n\t * Icon name for the navigation item (Material Symbols Outlined)\n\t */\n\t@property({ type: String })\n\ticon = ''\n\n\t/**\n\t * Label text for the navigation item\n\t */\n\t@property({ type: String })\n\tlabel = ''\n\n\t/**\n\t * Badge content (can be a number or short text)\n\t */\n\t@property({ type: String })\n\tbadge = ''\n\n\t/**\n\t * Observable for active state\n\t */\n\tprivate active$ = new BehaviorSubject<boolean>(false)\n\n\t/**\n\t * Whether this item is currently active/selected\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tget active() { return this.active$.value }\n\tset active(value: boolean) { this.active$.next(value) }\n\n\t/**\n\t * Whether this item is disabled\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled = false\n\n\t/**\n\t * Whether to hide labels (controlled by parent navigation bar)\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\thideLabels = false\n\n\t/**\n\t * Track ripple effects\n\t */\n\t@state()\n\tprivate ripples: { x: number; y: number; id: number }[] = []\n\n\t/**\n\t * Add ripple effect (immediate, no debounce)\n\t */\n\tprivate addRippleEffect = (event: MouseEvent) => {\n\t\tif (this.disabled) return\n\n\t\t// Find the icon indicator div for ripple positioning\n\t\tconst indicatorDiv = this.shadowRoot?.querySelector('.w-16.h-8')\n\t\tif (indicatorDiv) {\n\t\t\tconst rect = indicatorDiv.getBoundingClientRect()\n\t\t\tconst ripple = {\n\t\t\t\tx: event.clientX - rect.left,\n\t\t\t\ty: event.clientY - rect.top,\n\t\t\t\tid: Date.now()\n\t\t\t}\n\t\t\tthis.ripples = [...this.ripples, ripple]\n\n\t\t\t// Remove ripple after animation\n\t\t\ttimer(600).pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis.ripples = this.ripples.filter(r => r.id !== ripple.id)\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t).subscribe()\n\t\t}\n\t}\n\n\t/**\n\t * Handle click events with RxJS\n\t */\n\tprivate handleClick = (event: MouseEvent) => {\n\t\tif (this.disabled) {\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\treturn\n\t\t}\n\n\t\t// Add ripple immediately\n\t\tthis.addRippleEffect(event)\n\n\t\t// Navigation event is handled in connectedCallback\n\t}\n\n\t/**\n\t * Handle keyboard events for accessibility (non-Enter/Space keys)\n\t */\n\tprivate handleKeyDown = (event: KeyboardEvent) => {\n\t\tif (this.disabled) return\n\n\t\t// Enter and Space are handled by the RxJS stream\n\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\tevent.preventDefault()\n\t\t\t// Keyboard activation is handled in connectedCallback\n\t\t}\n\t}\n\n\t/**\n\t * Method called by parent to set active state\n\t */\n\tsetActive(isActive: boolean) {\n\t\tthis.active = isActive\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Subscribe to active state changes\n\t\tthis.active$.pipe(\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe(() => {\n\t\t\tthis.requestUpdate()\n\t\t})\n\n\t\t// Set up navigation event stream\n\t\tthis.setupNavigationStream()\n\t}\n\n\t/**\n\t * Set up RxJS stream for navigation events\n\t */\n\tprivate setupNavigationStream() {\n\t\tconst button = this.shadowRoot?.querySelector('button')\n\t\tif (!button) return\n\n\t\t// Create click stream\n\t\tconst click$ = fromEvent<MouseEvent>(button, 'click').pipe(\n\t\t\tfilter(() => !this.disabled)\n\t\t)\n\n\t\t// Create keyboard activation stream (Enter/Space)\n\t\tconst keyActivation$ = fromEvent<KeyboardEvent>(button, 'keydown').pipe(\n\t\t\tfilter(() => !this.disabled),\n\t\t\tfilter(event => event.key === 'Enter' || event.key === ' '),\n\t\t\ttap(event => event.preventDefault())\n\t\t)\n\n\t\t// Merge click and keyboard streams for instant navigation\n\t\tmerge(click$, keyActivation$).pipe(\n\t\t\ttap(() => {\n\t\t\t\t// Dispatch navigation event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('bar-item-click', {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\ticon: this.icon,\n\t\t\t\t\t\tlabel: this.label,\n\t\t\t\t\t\tactive: this.active\n\t\t\t\t\t},\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true\n\t\t\t\t}))\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\t}\n\n\t/**\n\t * Format badge content for display\n\t */\n\tprivate formatBadge(badge: string): string {\n\t\t// Convert to number if possible\n\t\tconst num = Number(badge)\n\t\tif (!isNaN(num)) {\n\t\t\t// Show 99+ for large numbers\n\t\t\treturn num > 99 ? '99+' : String(num)\n\t\t}\n\t\t// For text badges, limit to 3 characters\n\t\treturn badge.slice(0, 3)\n\t}\n\n\tprotected firstUpdated() {\n\t\t// Set up navigation stream after first render when button is available\n\t\tthis.setupNavigationStream()\n\t}\n\n\tprotected render() {\n\t\tconst hasSlotContent = this.querySelector('[slot]') || (this.textContent?.trim() && !this.label)\n\t\tconst badgeText = this.badge ? this.formatBadge(this.badge) : ''\n\t\tconst showBadgeText = badgeText && badgeText !== '0'\n\n\t\t// Check for custom icon slot content\n\t\tconst hasCustomIcon = this.querySelector('[slot=\"icon\"]')\n\n\t\t// Main container classes - now the clickable area\n\t\tconst containerClasses = {\n\t\t\t'relative flex flex-col items-center justify-center': true,\n\t\t\t'flex-1 min-w-[48px] max-w-[168px]': true, // Fill available space\n\t\t\t'py-2 px-1 cursor-pointer': !this.disabled,\n\t\t\t'transition-all duration-200': true,\n\t\t\t'hover:bg-surface-containerHigh': !this.disabled && !this.active,\n\t\t\t'cursor-not-allowed opacity-38': this.disabled,\n\t\t\t'outline-none': true,\n\t\t\t'focus-visible:outline-2 focus-visible:outline-offset-2': true\n\t\t}\n\n\t\t// Icon indicator - just visual, not clickable\n\t\tconst indicatorClasses = {\n\t\t\t'w-16 h-8 rounded-2xl': true,\n\t\t\t'flex items-center justify-center': true,\n\t\t\t'transition-all duration-200': true,\n\t\t\t'bg-secondary-container': this.active,\n\t\t\t'group-hover:bg-surface-containerHighest': !this.active && !this.disabled,\n\t\t\t'relative overflow-hidden': true\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'text-xs font-medium leading-4 mt-1': true,\n\t\t\t'text-center max-w-full': true,\n\t\t\t'overflow-hidden text-ellipsis whitespace-nowrap': true,\n\t\t\t'transition-all duration-200': true\n\t\t}\n\n\t\tconst badgeClasses = {\n\t\t\t'absolute top-0 right-3': true,\n\t\t\t'min-w-[6px] h-1.5': !showBadgeText,\n\t\t\t'min-w-[16px] h-4': showBadgeText,\n\t\t\t'rounded-full': !showBadgeText,\n\t\t\t'rounded-lg': showBadgeText,\n\t\t\t'flex items-center justify-center': showBadgeText,\n\t\t\t'px-1': showBadgeText,\n\t\t\t'transition-all duration-200': true,\n\t\t\t'z-10': true\n\t\t}\n\n\t\t// Determine colors\n\t\tconst containerColors = this.active\n\t\t\t? {\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.onVariant\n\t\t\t }\n\n\t\t// Set CSS variables for focus state\n\t\tconst styleVars = {\n\t\t\t'--focus-color': SchmancyTheme.sys.color.primary.default\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=${this.classMap(containerClasses)}\n\t\t\t\t@click=${this.handleClick}\n\t\t\t\t@keydown=${this.handleKeyDown}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\taria-pressed=${this.active}\n\t\t\t\taria-label=${this.label || 'Navigation item'}\n\t\t\t\tstyle=${this.styleMap({\n\t\t\t\t\t...styleVars,\n\t\t\t\t\t'outline-color': 'var(--focus-color)'\n\t\t\t\t})}\n\t\t\t\t${color(containerColors)}\n\t\t\t>\n\t\t\t\t<!-- Icon with indicator background -->\n\t\t\t\t<div class=${this.classMap(indicatorClasses)}>\n\t\t\t\t\t<!-- Ripple effects -->\n\t\t\t\t\t${this.ripples.map(\n\t\t\t\t\t\tripple => html`\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclass=\"ripple-effect\"\n\t\t\t\t\t\t\t\tstyle=${this.styleMap({\n\t\t\t\t\t\t\t\t\tleft: `${ripple.x}px`,\n\t\t\t\t\t\t\t\t\ttop: `${ripple.y}px`,\n\t\t\t\t\t\t\t\t\ttransform: 'translate(-50%, -50%)'\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t></span>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\n\t\t\t\t\t${hasCustomIcon\n\t\t\t\t\t\t? html`<slot name=\"icon\"></slot>`\n\t\t\t\t\t\t: this.icon\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-icon\n\t\t\t\t\t\t\t\t\t\t.fill=${this.active ? 1 : 0}\n\t\t\t\t\t\t\t\t\t\tclass=\"relative z-10 flex items-center justify-center transition-all duration-200\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"--schmancy-icon-size: 24px;\"\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.icon}\n\t\t\t\t\t\t\t\t\t</schmancy-icon>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: hasSlotContent\n\t\t\t\t\t\t\t\t? html`<slot></slot>`\n\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Label below icon -->\n\t\t\t\t${!this.hideLabels && this.label ? html`\n\t\t\t\t\t<span class=${this.classMap(labelClasses)}>${this.label}</span>\n\t\t\t\t` : ''}\n\n\t\t\t\t<!-- Badge -->\n\t\t\t\t${showBadgeText ? html`\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=${this.classMap(badgeClasses)}\n\t\t\t\t\t\taria-label=\"${badgeText} notifications\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.error.default,\n\t\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.error.on\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"text-[10px] font-medium leading-none\">${badgeText}</span>\n\t\t\t\t\t</span>\n\t\t\t\t` : this.badge ? html`\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=${this.classMap(badgeClasses)}\n\t\t\t\t\t\taria-label=\"Has notifications\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.error.default\n\t\t\t\t\t\t})}\n\t\t\t\t\t></span>\n\t\t\t\t` : ''}\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-navigation-bar-item': SchmancyNavigationBarItem\n\t}\n}","import { SchmancyElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyEvents, SchmancyTheme } from '..'\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs'\nimport { takeUntil, throttleTime, tap, pairwise, map, filter } from 'rxjs/operators'\nimport type { SchmancyNavigationBarItem } from './navigation-bar-item'\nimport { theme } from '../theme/theme.service'\n\n/** Height of the navigation bar in pixels */\nconst NAV_BAR_HEIGHT = 80\n\n/** Mobile breakpoint - matches md: in Tailwind (max-width for mobile) */\nconst MOBILE_BREAKPOINT = '(max-width: 767px)'\n\n/**\n * `<schmancy-navigation-bar>` component\n *\n * A horizontal navigation component following Material Design 3 specifications.\n * Navigation bars provide access to between 3-7 primary destinations.\n * Automatically hides in fullscreen mode when triggered via schmancyTheme.next({ fullscreen: true }).\n *\n * **IMPORTANT**: This component includes `z-10` by default (consistent with navigation-rail).\n * The consumer is responsible for positioning the navigation bar in their layout.\n * For typical bottom-fixed positioning, add: `class=\"fixed bottom-0 left-0 right-0\"`.\n *\n * @element schmancy-navigation-bar\n * @slot - Default slot for navigation bar items\n *\n * @fires navigation-change - When an item is selected\n *\n * @example\n * <!-- Fixed at bottom (typical usage) -->\n * <schmancy-navigation-bar activeIndex=\"0\" class=\"fixed bottom-0 left-0 right-0\">\n * <schmancy-navigation-bar-item icon=\"home\" label=\"Home\"></schmancy-navigation-bar-item>\n * <schmancy-navigation-bar-item icon=\"search\" label=\"Search\"></schmancy-navigation-bar-item>\n * <schmancy-navigation-bar-item icon=\"favorite\" label=\"Favorites\"></schmancy-navigation-bar-item>\n * <schmancy-navigation-bar-item icon=\"settings\" label=\"Settings\"></schmancy-navigation-bar-item>\n * </schmancy-navigation-bar>\n *\n * @example\n * <!-- Within a container (demo/mockup usage) -->\n * <div class=\"flex flex-col h-screen\">\n * <main class=\"flex-1\">Content</main>\n * <schmancy-navigation-bar activeIndex=\"0\">\n * <schmancy-navigation-bar-item icon=\"home\" label=\"Home\"></schmancy-navigation-bar-item>\n * </schmancy-navigation-bar>\n * </div>\n */\n@customElement('schmancy-navigation-bar')\nexport class SchmancyNavigationBar extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\ttransition: transform 0.3s ease-in-out;\n\t}\n\n\t:host([hide-on-scroll]) {\n\t\ttransition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t}\n\n\t/* Support 3-7 items with equal distribution */\n\t::slotted(schmancy-navigation-bar-item) {\n\t\tflex: 1;\n\t\tmax-width: 168px; /* Prevent items from being too wide */\n\t}\n\n\t/* Accessibility focus indicators */\n\t:host(:focus-within) {\n\t\toutline: 2px solid var(--schmancy-sys-color-primary);\n\t\toutline-offset: -2px;\n\t}\n`];\n\t/**\n\t * Observable for active index state\n\t */\n\tprivate activeIndex$ = new BehaviorSubject<number>(-1)\n\n\t/**\n\t * Currently active item index\n\t * @default -1\n\t */\n\t@property({ type: Number })\n\tget activeIndex() { return this.activeIndex$.value }\n\tset activeIndex(value: number) { this.activeIndex$.next(value) }\n\n\t/**\n\t * Hide labels and show only icons\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\thideLabels = false\n\n\t/**\n\t * Elevation level for the navigation bar\n\t * @default 2\n\t */\n\t@property({ type: Number, reflect: true })\n\televation = 2\n\n\t/**\n\t * Hide navigation bar on scroll down, show on scroll up\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\thideOnScroll = false\n\n\n\t/**\n\t * Current focused item index for keyboard navigation\n\t */\n\t@state()\n\tprivate focusedIndex = -1\n\n\t/**\n\t * Whether the navigation bar is hidden due to scrolling\n\t */\n\t@state()\n\tprivate isHiddenByScroll = false\n\n\t/**\n\t * Whether the navigation bar is hidden due to fullscreen mode\n\t */\n\t@state()\n\tprivate isFullscreen = false\n\n\t/**\n\t * Get all navigation bar items from the slot\n\t */\n\tprivate getItems(): SchmancyNavigationBarItem[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null\n\t\tif (!slot) return []\n\t\treturn slot.assignedElements({ flatten: true })\n\t\t\t.filter((el): el is SchmancyNavigationBarItem =>\n\t\t\t\tel.tagName.toLowerCase() === 'schmancy-navigation-bar-item'\n\t\t\t)\n\t}\n\n\t/**\n\t * Minimum scroll threshold before triggering hide/show\n\t */\n\tprivate readonly SCROLL_THRESHOLD = 10\n\n\t/**\n\t * Media query for mobile detection\n\t */\n\tprivate mobileMediaQuery: MediaQueryList | null = null\n\n\t/**\n\t * Subject to track visibility state changes\n\t */\n\tprivate visibility$ = new Subject<boolean>()\n\n\t/**\n\t * Check if on mobile viewport\n\t */\n\tprivate isMobileViewport(): boolean {\n\t\treturn this.mobileMediaQuery?.matches ?? false\n\t}\n\n\t/**\n\t * Update bottom offset for schmancy-page/fullHeight consumers\n\t */\n\tprivate updateBottomOffset() {\n\t\tconst shouldSetOffset = !this.isFullscreen && this.isMobileViewport()\n\t\ttheme.setBottomOffset(shouldSetOffset ? NAV_BAR_HEIGHT : 0)\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set up mobile media query\n\t\tthis.mobileMediaQuery = window.matchMedia(MOBILE_BREAKPOINT)\n\n\t\t// Listen to viewport changes\n\t\tfromEvent<MediaQueryListEvent>(this.mobileMediaQuery, 'change').pipe(\n\t\t\ttap(() => this.updateBottomOffset()),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Subscribe to fullscreen observable\n\t\ttheme.fullscreen$.pipe(\n\t\t\ttap(isFullscreen => {\n\t\t\t\tthis.isFullscreen = isFullscreen\n\t\t\t\tthis.visibility$.next(!this.isFullscreen && !this.isHiddenByScroll)\n\t\t\t\tthis.updateBottomOffset()\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Initial offset update\n\t\tthis.updateBottomOffset()\n\n\t\t// Listen to bar-item-click events using RxJS\n\t\tfromEvent(this, 'bar-item-click').pipe(\n\t\t\ttap((event: Event) => this.handleItemClick(event as CustomEvent)),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Listen to keydown events using RxJS\n\t\tfromEvent(this, 'keydown').pipe(\n\t\t\ttap((event: Event) => this.handleKeyDown(event as KeyboardEvent)),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Subscribe to active index changes\n\t\tthis.activeIndex$.pipe(\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe(index => {\n\t\t\tthis.updateActiveStates(index)\n\t\t})\n\n\t\t// Set up scroll listener if hideOnScroll is enabled\n\t\tif (this.hideOnScroll) {\n\t\t\tthis.setupScrollListener()\n\t\t}\n\n\t\tthis.updateItems()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\t// Clear offset when nav bar is removed\n\t\ttheme.setBottomOffset(0)\n\t\tthis.mobileMediaQuery = null\n\t}\n\n\t/**\n\t * Set up RxJS-based scroll listener\n\t */\n\tprivate setupScrollListener() {\n\t\t// Create scroll observable\n\t\tfromEvent(window, 'scroll').pipe(\n\t\t\tthrottleTime(100), // Throttle for performance\n\t\t\tmap(() => window.scrollY),\n\t\t\tpairwise(), // Get pairs of [previous, current] scroll positions\n\t\t\tfilter(([prev, curr]) => Math.abs(curr - prev) > this.SCROLL_THRESHOLD), // Only react if scrolled enough\n\t\t\ttap(([prev, curr]) => {\n\t\t\t\tconst scrollingDown = curr > prev\n\t\t\t\tconst scrollingUp = curr < prev\n\t\t\t\tconst previousHiddenState = this.isHiddenByScroll\n\n\t\t\t\t// Hide when scrolling down, show when scrolling up\n\t\t\t\tif (scrollingDown && !this.isHiddenByScroll) {\n\t\t\t\t\tthis.isHiddenByScroll = true\n\t\t\t\t} else if (scrollingUp && this.isHiddenByScroll) {\n\t\t\t\t\tthis.isHiddenByScroll = false\n\t\t\t\t}\n\n\t\t\t\t// Always show when near top\n\t\t\t\tif (curr <= this.SCROLL_THRESHOLD) {\n\t\t\t\t\tthis.isHiddenByScroll = false\n\t\t\t\t}\n\n\t\t\t\t// Update visibility if scroll state changed\n\t\t\t\tif (previousHiddenState !== this.isHiddenByScroll) {\n\t\t\t\t\tthis.visibility$.next(!this.isHiddenByScroll && !this.isFullscreen)\n\t\t\t\t}\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\t}\n\n\n\t/**\n\t * Handle item click events\n\t */\n\tprivate handleItemClick = (event: CustomEvent) => {\n\t\tconst items = this.getItems()\n\t\tconst clickedItem = event.target as HTMLElement\n\t\tconst index = items.findIndex(it => it === clickedItem)\n\n\t\tif (index === -1) return\n\n\t\t// Clicking the already-active item toggles the sidebar\n\t\tif (this.activeIndex === index) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\tdetail: { state: 'toggle' },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t\treturn\n\t\t}\n\n\t\tconst oldIndex = this.activeIndex\n\t\t// Setting activeIndex will trigger the BehaviorSubject\n\t\tthis.activeIndex = index\n\n\t\t// Emit navigation change event\n\t\tthis.dispatchEvent(new CustomEvent('navigation-change', {\n\t\t\tdetail: {\n\t\t\t\toldIndex,\n\t\t\t\tnewIndex: index,\n\t\t\t\titem: clickedItem\n\t\t\t},\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\t/**\n\t * Handle keyboard navigation\n\t */\n\tprivate handleKeyDown = (event: KeyboardEvent) => {\n\t\tconst items = this.getItems()\n\t\tconst currentIndex = this.focusedIndex === -1 ? this.activeIndex : this.focusedIndex\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (currentIndex > 0) {\n\t\t\t\t\tthis.focusItem(currentIndex - 1)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowRight':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (currentIndex < items.length - 1) {\n\t\t\t\t\tthis.focusItem(currentIndex + 1)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focusItem(0)\n\t\t\t\tbreak\n\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focusItem(items.length - 1)\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (this.focusedIndex !== -1) {\n\t\t\t\t\titems[this.focusedIndex]?.click()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Focus a specific item by index\n\t */\n\tprivate focusItem(index: number) {\n\t\tconst items = this.getItems()\n\t\tif (items[index]) {\n\t\t\tthis.focusedIndex = index\n\t\t\t;(items[index] as HTMLElement).focus()\n\t\t}\n\t}\n\n\t/**\n\t * Update the list of navigation items\n\t */\n\tprivate updateItems() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tif (slot) {\n\t\t\tconst handleSlotChange = () => {\n\t\t\t\t// Update active states when slot content changes\n\t\t\t\tthis.updateActiveStates(this.activeIndex)\n\t\t\t}\n\t\t\tslot.addEventListener('slotchange', handleSlotChange)\n\t\t\thandleSlotChange() // Initial update\n\t\t}\n\t}\n\n\n\t/**\n\t * Add a boat item to the navigation bar\n\t * @param config Configuration for the boat item\n\t * @returns The created or existing navigation bar item element\n\t */\n\tpublic addBoatItem(config: { id: string; title: string; icon?: string }) {\n\t\t// Check if item already exists\n\t\tconst existingItem = this.querySelector(`[value=\"${config.id}\"]`) as HTMLElement\n\t\tif (existingItem) {\n\t\t\t// Item already exists, just return it\n\t\t\treturn existingItem\n\t\t}\n\n\t\t// Create new item\n\t\tconst item = document.createElement('schmancy-navigation-bar-item')\n\t\titem.setAttribute('value', config.id)\n\t\titem.innerHTML = `\n\t\t\t<schmancy-icon>${config.icon || 'widgets'}</schmancy-icon>\n\t\t\t<span>${config.title}</span>\n\t\t`\n\t\tthis.appendChild(item)\n\t\treturn item\n\t}\n\n\t/**\n\t * Update active states on all items\n\t */\n\tprivate updateActiveStates(activeIndex: number) {\n\t\tconst items = this.getItems()\n\t\titems.forEach((item, index) => {\n\t\t\t// Use setActive method to trigger item's reactive update\n\t\t\titem.setActive(index === activeIndex)\n\t\t\titem.hideLabels = this.hideLabels\n\t\t\t// Set tabindex for accessibility\n\t\t\titem.tabIndex = index === activeIndex ? 0 : -1\n\t\t})\n\t}\n\n\tupdated(changedProperties: Map<string, unknown>) {\n\t\tsuper.updated(changedProperties)\n\n\t\tif (changedProperties.has('hideLabels')) {\n\t\t\t// Only update hide labels, active state is handled by the BehaviorSubject\n\t\t\tthis.updateActiveStates(this.activeIndex)\n\t\t}\n\n\t\tif (changedProperties.has('hideOnScroll')) {\n\t\t\tif (this.hideOnScroll && !changedProperties.get('hideOnScroll')) {\n\t\t\t\t// hideOnScroll was just enabled\n\t\t\t\tthis.setupScrollListener()\n\t\t\t} else if (!this.hideOnScroll) {\n\t\t\t\t// hideOnScroll was disabled, reset hidden state\n\t\t\t\tthis.isHiddenByScroll = false\n\t\t\t\t// Update visibility since we're now visible\n\t\t\t\tthis.visibility$.next(!this.isFullscreen)\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected render() {\n\t\t// Determine if the bar should be visually hidden\n\t\tconst isVisuallyHidden = this.isFullscreen || this.isHiddenByScroll\n\n\t\tconst containerClasses = {\n\t\t\t'h-20': true, // 80px height\n\t\t\t'flex items-center justify-around': true,\n\t\t\t'px-2 py-3 box-border': true,\n\t\t\t'transition-all duration-300 ease-in-out': true,\n\t\t\t'z-10': true, // Consistent with navigation-rail z-index\n\t\t\t// Elevation shadows\n\t\t\t'shadow-none': this.elevation === 0,\n\t\t\t'shadow-sm': this.elevation === 1,\n\t\t\t'shadow-md': this.elevation === 2,\n\t\t\t'shadow-lg': this.elevation === 3,\n\t\t\t'shadow-xl': this.elevation === 4,\n\t\t\t'shadow-2xl': this.elevation === 5,\n\t\t}\n\n\t\t// Apply transform for hide/show animation\n\t\tconst transformStyle = isVisuallyHidden ? 'translateY(100%)' : 'translateY(0)'\n\n\t\treturn html`\n\t\t\t<nav\n\t\t\t\tclass=${this.classMap(containerClasses)}\n\t\t\t\trole=\"navigation\"\n\t\t\t\taria-label=\"Main navigation\"\n\t\t\t\taria-hidden=${isVisuallyHidden}\n\t\t\t\tstyle=\"transform: ${transformStyle};\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</nav>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-navigation-bar': SchmancyNavigationBar\n\t}\n}","import { bufferTime, concatMap, filter, fromEvent, map, of, Subject, take, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from './teleport.component'\n\nexport type WhereAreYouRickyEvent = CustomEvent<{\n\tid: string\n\tcallerID: number\n}>\n\nexport const WhereAreYouRicky = 'whereAreYouRicky'\n\nexport type HereMortyEvent = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nexport type FLIP_REQUEST = {\n\tfrom: {\n\t\trect: DOMRect\n\t\telement?: HTMLElement\n\t}\n\tto: {\n\t\trect: DOMRect\n\t\telement: HTMLElement\n\t}\n\tstagger?: number\n\thost: HTMLElement\n}\nexport const HereMorty = 'hereMorty'\n\nclass Teleportation {\n\tactiveTeleportations = new Map<string, DOMRect>()\n\tflipRequests = new Subject<FLIP_REQUEST>()\n\n\tconstructor() {\n\t\tthis.flipRequests\n\t\t\t.pipe(\n\t\t\t\tbufferTime(1),\n\t\t\t\tmap(requests =>\n\t\t\t\t\trequests.map(({ from, to, host }, i) => ({\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tto,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\ti,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t\tconcatMap(requests => zip(requests.map(request => of(this.flip(request))))),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tfind = (component: SchmancyTeleportation) => {\n\t\treturn zip([\n\t\t\tfromEvent<HereMortyEvent>(window, HereMorty).pipe(\n\t\t\t\tfilter(\n\t\t\t\t\te =>\n\t\t\t\t\t\t!!e.detail.component.uuid &&\n\t\t\t\t\t\t!!component.id &&\n\t\t\t\t\t\te.detail.component.id === component.id &&\n\t\t\t\t\t\te.detail.component.uuid !== component.uuid,\n\t\t\t\t),\n\t\t\t\tmap(e => e.detail.component),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\tof(component).pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent<WhereAreYouRickyEvent['detail']>(WhereAreYouRicky, {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tid: component.id,\n\t\t\t\t\t\t\t\tcallerID: component.uuid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(0),\n\t\t)\n\t}\n\n\tflip = (request: {\n\t\tfrom: {\n\t\t\trect: DOMRect\n\t\t}\n\t\tto: {\n\t\t\telement: HTMLElement\n\t\t\trect: DOMRect\n\t\t}\n\t\thost: HTMLElement\n\t\ti: number\n\t}) => {\n\t\tconst { from, to } = request\n\n\t\t// Prepare the element for animation\n\t\tconst originalZIndex = to.element.style.zIndex\n\t\tto.element.style.transformOrigin = 'top left'\n\t\tto.element.style.setProperty('visibility', 'visible')\n\t\tto.element.style.zIndex = '1000'\n\n\t\t// \"onBegin\" logic goes here (since Web Animations doesn't have onBegin).\n\t\t// If you had more logic, place it here:\n\n\t\t// Calculate starting and ending transforms\n\t\tconst startX = from.rect.left - to.rect.left\n\t\tconst startY = from.rect.top - to.rect.top\n\t\tconst startScaleX = from.rect.width / to.rect.width\n\t\tconst startScaleY = from.rect.height / to.rect.height\n\n\t\t// Create keyframes\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: `translate(${startX}px, ${startY}px) scale(${startScaleX}, ${startScaleY})`,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'translate(0, 0) scale(1, 1)',\n\t\t\t},\n\t\t]\n\n\t\t// Use native Web Animations API\n\t\tconst animation = to.element.animate(keyframes, {\n\t\t\tduration: 250,\n\t\t\tdelay: 10, // if desired\n\t\t\t// Approximate 'inOutQuad' via a cubic-bezier easing.\n\t\t\t// You can adjust these values to taste, or use a standard one:\n\t\t\teasing: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n\t\t\t// or simply 'ease-in-out'\n\t\t})\n\n\t\t// \"onComplete\" logic goes here\n\t\tanimation.onfinish = () => {\n\t\t\tto.element.style.zIndex = originalZIndex\n\t\t\tto.element.style.transformOrigin = ''\n\t\t\t// If you have additional cleanup, place it here\n\t\t}\n\t}\n}\n\nexport const teleport = new Teleportation()\nexport default teleport\n","import { Observable, interval } from 'rxjs'\nimport { distinctUntilChanged, map, take } from 'rxjs/operators'\n\n// Function to monitor element's bounding client rect\nexport function watchElementRect(element: Element): Observable<DOMRectReadOnly> {\n\treturn interval(50).pipe(\n\t\t// startWith(true),\n\t\tmap(() => element.getBoundingClientRect()),\n\t\tdistinctUntilChanged(\n\t\t\t(prev, curr) =>\n\t\t\t\tprev.width === curr.width &&\n\t\t\t\tprev.height === curr.height &&\n\t\t\t\tprev.top === curr.top &&\n\t\t\t\tprev.right === curr.right &&\n\t\t\t\tprev.bottom === curr.bottom &&\n\t\t\t\tprev.left === curr.left,\n\t\t),\n\t\ttake(1),\n\t)\n}\n","import { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { filter, fromEvent, merge, of, takeUntil, tap, throwIfEmpty } from 'rxjs'\nimport { FINDING_MORTIES, FINDING_MORTIES_EVENT, HERE_RICKY, HERE_RICKY_EVENT } from '..'\nimport {\n\tHereMorty,\n\tHereMortyEvent,\n\tWhereAreYouRicky,\n\tWhereAreYouRickyEvent,\n\tdefault as teleport,\n\tdefault as teleportationService,\n} from './teleport.service'\nimport { watchElementRect } from './watcher'\nimport { SchmancyElement } from '@mixins/index'\n@customElement('schmancy-teleport')\nexport class SchmancyTeleportation extends SchmancyElement {\n\tstatic styles = [css``]\n\n\t/**\n\t * @attr {string} uuid - The component tag to teleport\n\t * @readonly\n\t */\n\t@property({ type: Number, reflect: true }) uuid = Math.floor(Math.random() * Date.now())\n\n\t/**\n\t * @attr {string} id - The component tag to teleport\n\t * @required\n\t */\n\t@property({ type: String }) id!: string\n\n\t@property({ type: Number }) delay = 0\n\n\tdebugging = Boolean(import.meta.env.DEV)\n\n\tget slottedChildren() {\n\t\tconst slot = this.shadowRoot.querySelector('slot')\n\t\treturn slot.assignedElements({ flatten: true })\n\t}\n\n\tconnectedCallback(): void {\n\t\tif (this.id === undefined) throw new Error('id is required')\n\t\tsuper.connectedCallback()\n\t\tmerge(\n\t\t\tfromEvent<FINDING_MORTIES_EVENT>(window, FINDING_MORTIES).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent<HERE_RICKY_EVENT['detail']>(HERE_RICKY, {\n\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<WhereAreYouRickyEvent>(window, WhereAreYouRicky).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: e => {\n\t\t\t\t\t\tif (e.detail.id === this.id && this.uuid && e.detail.callerID !== this.uuid) {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent<HereMortyEvent['detail']>(HereMorty, {\n\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\tasync firstUpdated() {\n\t\tof(teleportationService.activeTeleportations.get(this.id))\n\t\t\t.pipe(\n\t\t\t\tfilter(a => !!a),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tthrowIfEmpty(),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: domRect => {\n\t\t\t\t\tconsole.count('teleport')\n\t\t\t\t\tthis.style.setProperty('visibility', 'hidden')\n\t\t\t\t\t// teleport.flipRequests.next({ from: component, to: this, stagger: 0 })\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t\tteleport.flipRequests.next({\n\t\t\t\t\t\t\t\t\tfrom: {\n\t\t\t\t\t\t\t\t\t\trect: domRect,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tto: {\n\t\t\t\t\t\t\t\t\t\trect: e,\n\t\t\t\t\t\t\t\t\t\telement: this.slottedChildren[0] as HTMLElement,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.style.setProperty('visibility', 'visible')\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tcomplete: () => {},\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-teleport': SchmancyTeleportation\n\t}\n}\n"],"mappings":"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"}
|