@mhmo91/schmancy 0.10.37 → 0.10.38
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 +39 -0
- package/dist/{SchmancyElement-CDT2q1lA.js → SchmancyElement-BNnyBOwk.js} +9 -7
- package/dist/{SchmancyElement-CDT2q1lA.js.map → SchmancyElement-BNnyBOwk.js.map} +1 -1
- package/dist/{SchmancyElement-BHfQg3Tj.cjs → SchmancyElement-C41uPa6l.cjs} +2 -2
- package/dist/{SchmancyElement-BHfQg3Tj.cjs.map → SchmancyElement-C41uPa6l.cjs.map} +1 -1
- package/dist/agent/schmancy.agent.js +2329 -2297
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/area-2FrTZI_T.cjs +21 -0
- package/dist/area-2FrTZI_T.cjs.map +1 -0
- package/dist/{area-KtULlxuA.js → area-KVDzhT4s.js} +4 -4
- package/dist/area-KVDzhT4s.js.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +2 -2
- package/dist/{audio-zIJVTo_V.js → audio-D3gnp15Y.js} +1 -1
- package/dist/{audio-zIJVTo_V.js.map → audio-D3gnp15Y.js.map} +1 -1
- package/dist/{audio-CUMAv9D_.cjs → audio-EaD0Ggfh.cjs} +1 -1
- package/dist/{audio-CUMAv9D_.cjs.map → audio-EaD0Ggfh.cjs.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/autocomplete-DMmxsvUe.cjs +115 -0
- package/dist/autocomplete-DMmxsvUe.cjs.map +1 -0
- package/dist/{autocomplete-DIScyo8Q.js → autocomplete-DWiEqlQf.js} +96 -96
- package/dist/autocomplete-DWiEqlQf.js.map +1 -0
- 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-BHPqSqJd.js → boat-DmyG7y1V.js} +4 -4
- package/dist/{boat-BHPqSqJd.js.map → boat-DmyG7y1V.js.map} +1 -1
- package/dist/{boat-OBZ77exO.cjs → boat-dB1_qLm0.cjs} +1 -1
- package/dist/{boat-OBZ77exO.cjs.map → boat-dB1_qLm0.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +3 -3
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +4 -4
- package/dist/breadcrumb.js.map +1 -1
- package/dist/{busy-BJNsKSCM.cjs → busy-Cj_PV7oC.cjs} +1 -1
- package/dist/{busy-BJNsKSCM.cjs.map → busy-Cj_PV7oC.cjs.map} +1 -1
- package/dist/{busy-Dut78y4L.js → busy-enYCTssB.js} +2 -2
- package/dist/{busy-Dut78y4L.js.map → busy-enYCTssB.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-kcpPQavY.js → button-BQSOVnHn.js} +10 -9
- package/dist/button-BQSOVnHn.js.map +1 -0
- package/dist/button-WRmXlNyw.cjs +62 -0
- package/dist/button-WRmXlNyw.cjs.map +1 -0
- package/dist/button.cjs +6 -6
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +17 -16
- package/dist/button.js.map +1 -1
- package/dist/{card-DxSKxCid.js → card-BHTz1GwB.js} +16 -16
- package/dist/card-BHTz1GwB.js.map +1 -0
- package/dist/{card-BLxPLqdQ.cjs → card-ThG_ZaQE.cjs} +3 -3
- package/dist/card-ThG_ZaQE.cjs.map +1 -0
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-BCLkhp5G.cjs → checkbox-C4zeib84.cjs} +2 -2
- package/dist/{checkbox-BCLkhp5G.cjs.map → checkbox-C4zeib84.cjs.map} +1 -1
- package/dist/{checkbox-B1wiM3Dv.js → checkbox-Ce0DlAdW.js} +6 -6
- package/dist/{checkbox-B1wiM3Dv.js.map → checkbox-Ce0DlAdW.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-C9dS1WKn.cjs → chips-B1jui8Pe.cjs} +3 -3
- package/dist/chips-B1jui8Pe.cjs.map +1 -0
- package/dist/{chips-vWmwqQed.js → chips-DAy6v93f.js} +20 -19
- package/dist/chips-DAy6v93f.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +3 -3
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
- package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
- package/dist/{date-range-BV6HuvLw.cjs → date-range-BUaPgbTZ.cjs} +2 -2
- package/dist/date-range-BUaPgbTZ.cjs.map +1 -0
- package/dist/{date-range-D3ge1b4c.js → date-range-NTpoA1in.js} +4 -4
- package/dist/date-range-NTpoA1in.js.map +1 -0
- package/dist/{date-range-inline-DpYgdLRv.cjs → date-range-inline-D0I6k84h.cjs} +1 -1
- package/dist/{date-range-inline-DpYgdLRv.cjs.map → date-range-inline-D0I6k84h.cjs.map} +1 -1
- package/dist/{date-range-inline-DuWQaWps.js → date-range-inline-DjRdMZ1z.js} +2 -2
- package/dist/{date-range-inline-DuWQaWps.js.map → date-range-inline-DjRdMZ1z.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-C-GZaq3j.js → details-CY49XVfp.js} +43 -35
- package/dist/details-CY49XVfp.js.map +1 -0
- package/dist/details-DQNj2oaU.cjs +164 -0
- package/dist/details-DQNj2oaU.cjs.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{directives-D_l1E5H6.cjs → directives-Bb0S1DKZ.cjs} +3 -3
- package/dist/directives-Bb0S1DKZ.cjs.map +1 -0
- package/dist/{directives-DyS51FUh.js → directives-Bfm1lkoy.js} +6 -8
- package/dist/directives-Bfm1lkoy.js.map +1 -0
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-nQffE0AD.js → divider-BeyX_C0A.js} +2 -2
- package/dist/{divider-nQffE0AD.js.map → divider-BeyX_C0A.js.map} +1 -1
- package/dist/{divider-CBnAmHMZ.cjs → divider-Ck2C1sKl.cjs} +1 -1
- package/dist/{divider-CBnAmHMZ.cjs.map → divider-Ck2C1sKl.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-DvTb-UPR.js → expand-BYsSEtp6.js} +53 -53
- package/dist/expand-BYsSEtp6.js.map +1 -0
- package/dist/expand-CUF163mg.cjs +141 -0
- package/dist/expand-CUF163mg.cjs.map +1 -0
- 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-C-Ko0Le3.js → float-Cgllk_H9.js} +2 -2
- package/dist/{float-C-Ko0Le3.js.map → float-Cgllk_H9.js.map} +1 -1
- package/dist/{float-C17xgMT1.cjs → float-OvqX0nqG.cjs} +1 -1
- package/dist/{float-C17xgMT1.cjs.map → float-OvqX0nqG.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/form-4GKROq2P.cjs +27 -0
- package/dist/form-4GKROq2P.cjs.map +1 -0
- package/dist/{form-DA0hUu2h.js → form-DxaV_Ose.js} +39 -39
- package/dist/form-DxaV_Ose.js.map +1 -0
- package/dist/form.cjs +3 -3
- package/dist/form.cjs.map +1 -1
- package/dist/form.js +34 -34
- package/dist/form.js.map +1 -1
- package/dist/gravity-6pL6CfIr.cjs.map +1 -1
- package/dist/gravity-sVK3zGBF.js.map +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{icons-C6UfxmHZ.js → icons-CJ2mXcBi.js} +9 -9
- package/dist/icons-CJ2mXcBi.js.map +1 -0
- package/dist/icons-sZ-LybA9.cjs +24 -0
- package/dist/icons-sZ-LybA9.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BTjZfYyh.js → iframe-DWvN5nGB.js} +11 -11
- package/dist/iframe-DWvN5nGB.js.map +1 -0
- package/dist/{iframe-wuYT2xFz.cjs → iframe-DpCv-QH2.cjs} +7 -7
- package/dist/iframe-DpCv-QH2.cjs.map +1 -0
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +35 -35
- package/dist/{input-B_4g2ulO.js → input-BCCHz6tB.js} +7 -7
- package/dist/input-BCCHz6tB.js.map +1 -0
- package/dist/{input-BrDiIT60.cjs → input-Z-3N5JMv.cjs} +2 -2
- package/dist/input-Z-3N5JMv.cjs.map +1 -0
- package/dist/{input-chip-BlWhOruv.js → input-chip-BOrcKH-H.js} +2 -2
- package/dist/{input-chip-BlWhOruv.js.map → input-chip-BOrcKH-H.js.map} +1 -1
- package/dist/{input-chip-B-XWh4aE.cjs → input-chip-ChAgRCXZ.cjs} +1 -1
- package/dist/{input-chip-B-XWh4aE.cjs.map → input-chip-ChAgRCXZ.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +3 -3
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +2 -2
- package/dist/{layout-Dxit9enO.js → layout-CFiG3lNT.js} +1 -1
- package/dist/{layout-Dxit9enO.js.map → layout-CFiG3lNT.js.map} +1 -1
- package/dist/{layout-BhyIcEVu.cjs → layout-DZ4dpLh9.cjs} +1 -1
- package/dist/{layout-BhyIcEVu.cjs.map → layout-DZ4dpLh9.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/lazy-BaAiIUru.js +19 -0
- package/dist/lazy-BaAiIUru.js.map +1 -0
- package/dist/lazy-C-7a4FAe.cjs +1 -0
- package/dist/lazy-C-7a4FAe.cjs.map +1 -0
- package/dist/{lightbox-D85XAAuC.js → lightbox-B7Y4Nij_.js} +2 -2
- package/dist/lightbox-B7Y4Nij_.js.map +1 -0
- package/dist/{lightbox-CVBogswK.cjs → lightbox-Dpwsn8Qr.cjs} +1 -1
- package/dist/lightbox-Dpwsn8Qr.cjs.map +1 -0
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-nVjLskgx.cjs → list-BhM-6dAi.cjs} +1 -1
- package/dist/{list-nVjLskgx.cjs.map → list-BhM-6dAi.cjs.map} +1 -1
- package/dist/{list-DOF_yVn5.js → list-C5WVoIfJ.js} +2 -2
- package/dist/{list-DOF_yVn5.js.map → list-C5WVoIfJ.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/magnetic-DKtc4umC.cjs.map +1 -1
- package/dist/magnetic-DaOOv5Dz.js.map +1 -1
- package/dist/{menu-QrAK5Uu9.js → menu-CBAAJoHu.js} +3 -3
- package/dist/{menu-QrAK5Uu9.js.map → menu-CBAAJoHu.js.map} +1 -1
- package/dist/{menu-DqmNjLgY.cjs → menu-DFQjJk3H.cjs} +1 -1
- package/dist/{menu-DqmNjLgY.cjs.map → menu-DFQjJk3H.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-De1zjyhy.js → mixins-DGBI7YPO.js} +11 -11
- package/dist/mixins-DGBI7YPO.js.map +1 -0
- package/dist/{mixins-DxHpyMHA.cjs → mixins-fIpzhVMd.cjs} +1 -1
- package/dist/mixins-fIpzhVMd.cjs.map +1 -0
- 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 +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +11 -10
- package/dist/navigation-rail.js.map +1 -1
- package/dist/notification-B6yDL91t.cjs +24 -0
- package/dist/notification-B6yDL91t.cjs.map +1 -0
- package/dist/{notification-BtAK7NK8.js → notification-BB9OBRCr.js} +22 -22
- package/dist/notification-BB9OBRCr.js.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-DHwA0miA.js → option-B21ImL0k.js} +2 -2
- package/dist/{option-DHwA0miA.js.map → option-B21ImL0k.js.map} +1 -1
- package/dist/{option-DnSPa8ro.cjs → option-CJQM5I9q.cjs} +1 -1
- package/dist/{option-DnSPa8ro.cjs.map → option-CJQM5I9q.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-Del1sBEB.js → overlay-CWsihJ-E.js} +75 -67
- package/dist/overlay-CWsihJ-E.js.map +1 -0
- package/dist/overlay-DkIX9Ig3.cjs +58 -0
- package/dist/overlay-DkIX9Ig3.cjs.map +1 -0
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-DSONXUzl.js → overlay.confirm-body-CPqqPNks.js} +10 -10
- package/dist/overlay.confirm-body-CPqqPNks.js.map +1 -0
- package/dist/{overlay.confirm-body-BV9umTAl.cjs → overlay.confirm-body-DwTfiNlV.cjs} +3 -3
- package/dist/overlay.confirm-body-DwTfiNlV.cjs.map +1 -0
- package/dist/overlay.js +4 -4
- package/dist/overlay.service-DU1nqh6A.cjs +1 -0
- package/dist/{overlay.service-XLlrsSdA.cjs.map → overlay.service-DU1nqh6A.cjs.map} +1 -1
- package/dist/{overlay.service-BTp5Oq7f.js → overlay.service-KTgBxjFb.js} +4 -4
- package/dist/{overlay.service-BTp5Oq7f.js.map → overlay.service-KTgBxjFb.js.map} +1 -1
- package/dist/{progress-DUbTL9g9.cjs → progress-B-Qg44XY.cjs} +1 -1
- package/dist/{progress-DUbTL9g9.cjs.map → progress-B-Qg44XY.cjs.map} +1 -1
- package/dist/{progress-DYA83CFU.js → progress-CUSS1sNz.js} +2 -2
- package/dist/{progress-DYA83CFU.js.map → progress-CUSS1sNz.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-DxX0iJBo.js → radio-group-AHLvrN8O.js} +7 -7
- package/dist/radio-group-AHLvrN8O.js.map +1 -0
- package/dist/{radio-group-B-ORNtvR.cjs → radio-group-BEtvCSS1.cjs} +2 -2
- package/dist/radio-group-BEtvCSS1.cjs.map +1 -0
- 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-BWpV2iv-.cjs +56 -0
- package/dist/select-BWpV2iv-.cjs.map +1 -0
- package/dist/{select-C7gkA-ab.js → select-Cawz88lG.js} +46 -46
- package/dist/select-Cawz88lG.js.map +1 -0
- 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/SKILL.md +3 -0
- package/dist/skills/overlay.md +14 -7
- package/dist/skills/schmancy/SKILL.md +3 -0
- package/dist/skills/schmancy/overlay.md +14 -7
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-O0232os6.js → sound.service-CK-5zob-.js} +4 -3
- package/dist/sound.service-CK-5zob-.js.map +1 -0
- package/dist/{sound.service-C7FDY_yD.cjs → sound.service-D2GGaBXc.cjs} +1 -1
- package/dist/sound.service-D2GGaBXc.cjs.map +1 -0
- package/dist/{splash-screen-jfE47xl0.js → splash-screen-BUEtjHXC.js} +13 -13
- package/dist/splash-screen-BUEtjHXC.js.map +1 -0
- package/dist/{splash-screen-DIS4odDr.cjs → splash-screen-DqPuipox.cjs} +6 -6
- package/dist/splash-screen-DqPuipox.cjs.map +1 -0
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-BP3h-9d9.js → src-CIqAj3Eh.js} +45 -45
- package/dist/src-CIqAj3Eh.js.map +1 -0
- package/dist/{src-Um_pzb-U.cjs → src-CYqBQTyt.cjs} +6 -6
- package/dist/src-CYqBQTyt.cjs.map +1 -0
- package/dist/{state-Bj0M9a6T.cjs → state-BxDNox-2.cjs} +1 -1
- package/dist/{state-Bj0M9a6T.cjs.map → state-BxDNox-2.cjs.map} +1 -1
- package/dist/{state-DscWQpoM.js → state-CnZCDMT0.js} +9 -9
- package/dist/{state-DscWQpoM.js.map → state-CnZCDMT0.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-B4Wn4SOO.js → surface-BMdG3dKQ.js} +2 -2
- package/dist/{surface-B4Wn4SOO.js.map → surface-BMdG3dKQ.js.map} +1 -1
- package/dist/{surface-DRq6cVW6.cjs → surface-CWwYD_z2.cjs} +1 -1
- package/dist/{surface-DRq6cVW6.cjs.map → surface-CWwYD_z2.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +4 -4
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +11 -11
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +2 -2
- package/dist/{tabs-CnQPo-XS.js → tabs-CDQYDc6v.js} +2 -2
- package/dist/{tabs-CnQPo-XS.js.map → tabs-CDQYDc6v.js.map} +1 -1
- package/dist/{tabs-Ca_fbHPW.cjs → tabs-CbD9E1gd.cjs} +1 -1
- package/dist/{tabs-Ca_fbHPW.cjs.map → tabs-CbD9E1gd.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 +43 -0
- package/dist/textarea-Brgi-vD2.cjs.map +1 -0
- package/dist/{textarea-BvqENhTW.js → textarea-MPyrMi-S.js} +4 -4
- package/dist/textarea-MPyrMi-S.js.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-BSwJ2YZo.cjs → theme-BMbXoqi0.cjs} +1 -1
- package/dist/{theme-BSwJ2YZo.cjs.map → theme-BMbXoqi0.cjs.map} +1 -1
- package/dist/{theme-BV0EzHQ1.js → theme-DZu-xmVp.js} +5 -5
- package/dist/{theme-BV0EzHQ1.js.map → theme-DZu-xmVp.js.map} +1 -1
- package/dist/{theme-button-C6fpUzPM.cjs → theme-button-B0OLb-43.cjs} +1 -1
- package/dist/{theme-button-C6fpUzPM.cjs.map → theme-button-B0OLb-43.cjs.map} +1 -1
- package/dist/{theme-button-O_xNCgI7.js → theme-button-D_qGvEYs.js} +2 -2
- package/dist/{theme-button-O_xNCgI7.js.map → theme-button-D_qGvEYs.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +3 -3
- package/dist/{theme.service-DwLhhOmP.js → theme.service-7VkM-hVf.js} +15 -11
- package/dist/theme.service-7VkM-hVf.js.map +1 -0
- package/dist/theme.service-B15FdjOS.cjs +1 -0
- package/dist/theme.service-B15FdjOS.cjs.map +1 -0
- package/dist/tree.cjs +4 -4
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +8 -8
- package/dist/tree.js.map +1 -1
- package/dist/{typography-opFYuUYS.cjs → typography-D4Fo1UGh.cjs} +3 -3
- package/dist/{typography-opFYuUYS.cjs.map → typography-D4Fo1UGh.cjs.map} +1 -1
- package/dist/{typography-Dtdooaic.js → typography-SZhjb_4R.js} +9 -9
- package/dist/{typography-Dtdooaic.js.map → typography-SZhjb_4R.js.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-ConcHirJ.js → window-BDVyrBnk.js} +101 -100
- package/dist/window-BDVyrBnk.js.map +1 -0
- package/dist/window-BbBYjm7R.cjs +59 -0
- package/dist/window-BbBYjm7R.cjs.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/SKILL.md +3 -0
- package/skills/schmancy/overlay.md +14 -7
- package/src/area/area.component.ts +1 -1
- package/src/area/area.service.test.ts +2 -2
- package/src/area/area.service.ts +1 -1
- package/src/area/lazy.ts +87 -83
- package/src/audio/sound.service.ts +3 -3
- package/src/breadcrumb/breadcrumb.ts +2 -2
- package/src/button/button.ts +11 -11
- package/src/button/icon-button.ts +18 -18
- package/src/card/card.ts +16 -16
- package/src/content-drawer/drawer.ts +6 -6
- package/src/details/details.ts +55 -55
- package/src/directives/ai-badge.ts +2 -1
- package/src/directives/animate-text.ts +2 -1
- package/src/directives/art/art.directive.ts +2 -1
- package/src/directives/battery.ts +2 -1
- package/src/directives/confirm-click.ts +5 -3
- package/src/directives/cursor-glow.ts +2 -1
- package/src/directives/cycle-text.ts +2 -1
- package/src/directives/depth-of-field.ts +2 -1
- package/src/directives/drag.ts +4 -2
- package/src/directives/fyi.ts +2 -1
- package/src/directives/gravity.ts +2 -1
- package/src/directives/hummingbird.ts +2 -1
- package/src/directives/intersect.ts +3 -2
- package/src/directives/liquid.ts +2 -1
- package/src/directives/living-border.ts +2 -1
- package/src/directives/long-press.ts +2 -1
- package/src/directives/magnetic.ts +2 -1
- package/src/directives/missed-punch.ts +2 -1
- package/src/directives/nebula.ts +6 -5
- package/src/directives/overflow-within.ts +2 -1
- package/src/directives/reveal.ts +2 -1
- package/src/directives/urgent.ts +2 -1
- package/src/directives/working-snake.ts +2 -1
- package/src/expand/expand-root.component.ts +27 -27
- package/src/expand/expand.component.ts +48 -48
- package/src/form/fields/autocomplete/autocomplete.ts +154 -154
- package/src/form/fields/checkbox/checkbox.ts +4 -4
- package/src/form/fields/chips/chips.ts +2 -2
- package/src/form/fields/chips/filter-chip.ts +15 -15
- package/src/form/fields/date-range/date-range.ts +2 -2
- package/src/form/fields/input/input.ts +12 -12
- package/src/form/fields/radio-group/radio-button.ts +2 -2
- package/src/form/fields/radio-group/radio-group.ts +3 -3
- package/src/form/fields/select/select.ts +56 -56
- package/src/form/fields/switch/switch.ts +10 -10
- package/src/form/fields/textarea/textarea.ts +2 -2
- package/src/form/form-summary.ts +33 -33
- package/src/form/form.ts +45 -45
- package/src/icons/icon.ts +10 -8
- package/src/iframe/iframe.ts +11 -11
- package/src/lightbox/flip-directive.ts +2 -1
- package/src/lightbox/lightbox.directive.ts +2 -1
- package/src/nav-drawer/navbar.ts +3 -3
- package/src/navigation-rail/navigation-rail.ts +10 -10
- package/src/notification/notification.ts +22 -22
- package/src/overlay/overlay.component.ts +106 -83
- package/src/overlay/overlay.confirm-body.ts +4 -4
- package/src/overlay/overlay.service.ts +3 -3
- package/src/overlay/overlay.types.ts +4 -2
- package/src/splash-screen/splash-screen.ts +11 -11
- package/src/state/index.ts +12 -12
- package/src/state/schmancy-context.ts +9 -9
- package/src/teleport/teleport.component.ts +2 -2
- package/src/theme/theme.service.ts +17 -17
- package/src/tree/tree.ts +7 -7
- package/src/typography/typography.ts +7 -7
- package/src/window/window-manager.ts +20 -20
- package/src/window/window.ts +100 -100
- package/types/mixins/SchmancyElement.d.ts +3 -2
- package/types/mixins/formField.mixin.d.ts +1 -1
- package/types/src/area/area.service.d.ts +1 -1
- package/types/src/area/lazy.d.ts +0 -6
- package/types/src/audio/sound.service.d.ts +1 -2
- package/types/src/breadcrumb/breadcrumb.d.ts +1 -1
- package/types/src/button/button.d.ts +3 -3
- package/types/src/button/icon-button.d.ts +6 -7
- package/types/src/card/card.d.ts +5 -5
- package/types/src/content-drawer/drawer.d.ts +1 -1
- package/types/src/details/details.d.ts +2 -21
- package/types/src/directives/ai-badge.d.ts +2 -2
- package/types/src/directives/animate-text.d.ts +2 -2
- package/types/src/directives/art/art.directive.d.ts +2 -2
- package/types/src/directives/battery.d.ts +2 -2
- package/types/src/directives/confirm-click.d.ts +2 -2
- package/types/src/directives/cursor-glow.d.ts +2 -2
- package/types/src/directives/cycle-text.d.ts +2 -2
- package/types/src/directives/depth-of-field.d.ts +2 -2
- package/types/src/directives/drag.d.ts +4 -4
- package/types/src/directives/fyi.d.ts +2 -2
- package/types/src/directives/gravity.d.ts +2 -2
- package/types/src/directives/hummingbird.d.ts +2 -2
- package/types/src/directives/intersect.d.ts +2 -2
- package/types/src/directives/liquid.d.ts +2 -2
- package/types/src/directives/living-border.d.ts +2 -2
- package/types/src/directives/long-press.d.ts +2 -2
- package/types/src/directives/magnetic.d.ts +2 -2
- package/types/src/directives/missed-punch.d.ts +2 -2
- package/types/src/directives/nebula.d.ts +2 -2
- package/types/src/directives/overflow-within.d.ts +2 -2
- package/types/src/directives/reveal.d.ts +2 -2
- package/types/src/directives/urgent.d.ts +2 -2
- package/types/src/directives/working-snake.d.ts +2 -2
- package/types/src/expand/expand-root.component.d.ts +8 -8
- package/types/src/expand/expand.component.d.ts +11 -11
- package/types/src/form/fields/autocomplete/autocomplete.d.ts +29 -29
- package/types/src/form/fields/checkbox/checkbox.d.ts +1 -1
- package/types/src/form/fields/chips/chips.d.ts +1 -1
- package/types/src/form/fields/chips/filter-chip.d.ts +1 -2
- package/types/src/form/fields/input/input.d.ts +3 -3
- package/types/src/form/fields/radio-group/radio-button.d.ts +1 -1
- package/types/src/form/fields/radio-group/radio-group.d.ts +1 -1
- package/types/src/form/fields/select/select.d.ts +8 -8
- package/types/src/form/fields/switch/switch.d.ts +3 -3
- package/types/src/form/fields/textarea/textarea.d.ts +1 -1
- package/types/src/form/form-summary.d.ts +7 -7
- package/types/src/form/form.d.ts +11 -11
- package/types/src/icons/icon.d.ts +2 -2
- package/types/src/iframe/iframe.d.ts +3 -3
- package/types/src/lightbox/flip-directive.d.ts +2 -2
- package/types/src/lightbox/lightbox.directive.d.ts +2 -2
- package/types/src/nav-drawer/navbar.d.ts +1 -1
- package/types/src/navigation-rail/navigation-rail.d.ts +2 -2
- package/types/src/notification/notification.d.ts +8 -8
- package/types/src/overlay/overlay.component.d.ts +16 -16
- package/types/src/overlay/overlay.confirm-body.d.ts +1 -1
- package/types/src/overlay/overlay.types.d.ts +4 -2
- package/types/src/splash-screen/splash-screen.d.ts +2 -2
- package/types/src/state/index.d.ts +1 -1
- package/types/src/state/schmancy-context.d.ts +3 -3
- package/types/src/teleport/teleport.component.d.ts +1 -1
- package/types/src/theme/theme.service.d.ts +1 -4
- package/types/src/tree/tree.d.ts +3 -3
- package/types/src/typography/typography.d.ts +1 -1
- package/types/src/window/window-manager.d.ts +2 -2
- package/types/src/window/window.d.ts +20 -20
- package/dist/area-KtULlxuA.js.map +0 -1
- package/dist/area-fdKhYB6T.cjs +0 -21
- package/dist/area-fdKhYB6T.cjs.map +0 -1
- package/dist/autocomplete-DEZk6wBD.cjs +0 -115
- package/dist/autocomplete-DEZk6wBD.cjs.map +0 -1
- package/dist/autocomplete-DIScyo8Q.js.map +0 -1
- package/dist/button-DzlHLjWO.cjs +0 -62
- package/dist/button-DzlHLjWO.cjs.map +0 -1
- package/dist/button-kcpPQavY.js.map +0 -1
- package/dist/card-BLxPLqdQ.cjs.map +0 -1
- package/dist/card-DxSKxCid.js.map +0 -1
- package/dist/chips-C9dS1WKn.cjs.map +0 -1
- package/dist/chips-vWmwqQed.js.map +0 -1
- package/dist/date-range-BV6HuvLw.cjs.map +0 -1
- package/dist/date-range-D3ge1b4c.js.map +0 -1
- package/dist/details-C-GZaq3j.js.map +0 -1
- package/dist/details-Dp5rLIWk.cjs +0 -164
- package/dist/details-Dp5rLIWk.cjs.map +0 -1
- package/dist/directives-D_l1E5H6.cjs.map +0 -1
- package/dist/directives-DyS51FUh.js.map +0 -1
- package/dist/expand-DvTb-UPR.js.map +0 -1
- package/dist/expand-mlP_3XWz.cjs +0 -141
- package/dist/expand-mlP_3XWz.cjs.map +0 -1
- package/dist/form-CwPHcQYB.cjs +0 -27
- package/dist/form-CwPHcQYB.cjs.map +0 -1
- package/dist/form-DA0hUu2h.js.map +0 -1
- package/dist/icons-C6UfxmHZ.js.map +0 -1
- package/dist/icons-CW3-oMSb.cjs +0 -24
- package/dist/icons-CW3-oMSb.cjs.map +0 -1
- package/dist/iframe-BTjZfYyh.js.map +0 -1
- package/dist/iframe-wuYT2xFz.cjs.map +0 -1
- package/dist/input-B_4g2ulO.js.map +0 -1
- package/dist/input-BrDiIT60.cjs.map +0 -1
- package/dist/lazy-CayEFyC3.cjs +0 -1
- package/dist/lazy-CayEFyC3.cjs.map +0 -1
- package/dist/lazy-D-bO2r4m.js +0 -13
- package/dist/lazy-D-bO2r4m.js.map +0 -1
- package/dist/lightbox-CVBogswK.cjs.map +0 -1
- package/dist/lightbox-D85XAAuC.js.map +0 -1
- package/dist/mixins-De1zjyhy.js.map +0 -1
- package/dist/mixins-DxHpyMHA.cjs.map +0 -1
- package/dist/notification-BtAK7NK8.js.map +0 -1
- package/dist/notification-DYzbUb5C.cjs +0 -24
- package/dist/notification-DYzbUb5C.cjs.map +0 -1
- package/dist/overlay-BVkqZmoS.cjs +0 -58
- package/dist/overlay-BVkqZmoS.cjs.map +0 -1
- package/dist/overlay-Del1sBEB.js.map +0 -1
- package/dist/overlay.confirm-body-BV9umTAl.cjs.map +0 -1
- package/dist/overlay.confirm-body-DSONXUzl.js.map +0 -1
- package/dist/overlay.service-XLlrsSdA.cjs +0 -1
- package/dist/radio-group-B-ORNtvR.cjs.map +0 -1
- package/dist/radio-group-DxX0iJBo.js.map +0 -1
- package/dist/select-B9uj_u-s.cjs +0 -56
- package/dist/select-B9uj_u-s.cjs.map +0 -1
- package/dist/select-C7gkA-ab.js.map +0 -1
- package/dist/sound.service-C7FDY_yD.cjs.map +0 -1
- package/dist/sound.service-O0232os6.js.map +0 -1
- package/dist/splash-screen-DIS4odDr.cjs.map +0 -1
- package/dist/splash-screen-jfE47xl0.js.map +0 -1
- package/dist/src-BP3h-9d9.js.map +0 -1
- package/dist/src-Um_pzb-U.cjs.map +0 -1
- package/dist/textarea-BvqENhTW.js.map +0 -1
- package/dist/textarea-qr7oL8oU.cjs +0 -43
- package/dist/textarea-qr7oL8oU.cjs.map +0 -1
- package/dist/theme.service-DwLhhOmP.js.map +0 -1
- package/dist/theme.service-kn9MC025.cjs +0 -1
- package/dist/theme.service-kn9MC025.cjs.map +0 -1
- package/dist/window-BSAemI9J.cjs +0 -59
- package/dist/window-BSAemI9J.cjs.map +0 -1
- package/dist/window-ConcHirJ.js.map +0 -1
|
@@ -735,8 +735,8 @@ class SoundService {
|
|
|
735
735
|
)
|
|
736
736
|
|
|
737
737
|
/** BehaviorSubject for current theme name (for debugging/display) */
|
|
738
|
-
|
|
739
|
-
public readonly themeName$ = this
|
|
738
|
+
readonly #themeName$ = new BehaviorSubject<string>('default')
|
|
739
|
+
public readonly themeName$ = this.#themeName$.asObservable()
|
|
740
740
|
|
|
741
741
|
// Getters for synchronous access
|
|
742
742
|
get theme(): SoundTheme | null {
|
|
@@ -758,7 +758,7 @@ class SoundService {
|
|
|
758
758
|
private constructor() {
|
|
759
759
|
// Subscribe to theme changes to update theme name
|
|
760
760
|
this.theme$.subscribe(theme => {
|
|
761
|
-
this
|
|
761
|
+
this.#themeName$.next(theme?.name ?? 'default')
|
|
762
762
|
})
|
|
763
763
|
}
|
|
764
764
|
|
|
@@ -45,12 +45,12 @@ export class SchmancyBreadcrumb extends SchmancyElement {
|
|
|
45
45
|
// separator is visually present without affecting the accessible name.
|
|
46
46
|
return html`
|
|
47
47
|
<nav role="navigation">
|
|
48
|
-
<slot @slotchange=${() => this.
|
|
48
|
+
<slot @slotchange=${() => this.insertSeparators()}></slot>
|
|
49
49
|
</nav>
|
|
50
50
|
`
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
private
|
|
53
|
+
private insertSeparators() {
|
|
54
54
|
const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null
|
|
55
55
|
if (!slot) return
|
|
56
56
|
const items = slot.assignedElements({ flatten: true })
|
package/src/button/button.ts
CHANGED
|
@@ -71,7 +71,7 @@ export class SchmancyButton extends SchmancyElement {
|
|
|
71
71
|
* while a submit is in flight. Stays focusable; disabled buttons drop from
|
|
72
72
|
* the tab order and are unreachable to AT (WCAG 2.2 AA).
|
|
73
73
|
*/
|
|
74
|
-
private
|
|
74
|
+
private formBusyObserver?: MutationObserver
|
|
75
75
|
|
|
76
76
|
constructor() {
|
|
77
77
|
super()
|
|
@@ -128,20 +128,20 @@ export class SchmancyButton extends SchmancyElement {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
sync()
|
|
131
|
-
this.
|
|
132
|
-
this.
|
|
131
|
+
this.formBusyObserver = new MutationObserver(sync)
|
|
132
|
+
this.formBusyObserver.observe(form, { attributes: true, attributeFilter: ['aria-busy'] })
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
override disconnectedCallback(): void {
|
|
136
|
-
this.
|
|
137
|
-
this.
|
|
136
|
+
this.formBusyObserver?.disconnect()
|
|
137
|
+
this.formBusyObserver = undefined
|
|
138
138
|
super.disconnectedCallback()
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
@query('[part="base"]', true)
|
|
142
142
|
private nativeElement!: HTMLElement
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
#ariaLabel!: string
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
147
|
* The variant of the button.
|
|
@@ -208,8 +208,8 @@ export class SchmancyButton extends SchmancyElement {
|
|
|
208
208
|
public disabled = false
|
|
209
209
|
|
|
210
210
|
public override set ariaLabel(value: string) {
|
|
211
|
-
const oldVal = this
|
|
212
|
-
this
|
|
211
|
+
const oldVal = this.#ariaLabel
|
|
212
|
+
this.#ariaLabel = value
|
|
213
213
|
|
|
214
214
|
if (this.hasAttribute('aria-label')) {
|
|
215
215
|
this.removeAttribute('aria-label')
|
|
@@ -219,7 +219,7 @@ export class SchmancyButton extends SchmancyElement {
|
|
|
219
219
|
|
|
220
220
|
@property({ attribute: 'aria-label' })
|
|
221
221
|
public override get ariaLabel() {
|
|
222
|
-
return this
|
|
222
|
+
return this.#ariaLabel
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
@queryAssignedElements({
|
|
@@ -293,7 +293,7 @@ export class SchmancyButton extends SchmancyElement {
|
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
// Prevent default behavior when the component is disabled.
|
|
296
|
-
private
|
|
296
|
+
private preventDefault(event: Event) {
|
|
297
297
|
event.preventDefault()
|
|
298
298
|
event.stopPropagation()
|
|
299
299
|
}
|
|
@@ -429,7 +429,7 @@ export class SchmancyButton extends SchmancyElement {
|
|
|
429
429
|
class="${this.classMap(classes)}"
|
|
430
430
|
tabindex=${this.disabled ? '-1' : '0'}
|
|
431
431
|
aria-disabled=${this.disabled}
|
|
432
|
-
@click=${this.disabled ? this.
|
|
432
|
+
@click=${this.disabled ? this.preventDefault : undefined}
|
|
433
433
|
>
|
|
434
434
|
${when(!this.disabled, () => html`<div class="${this.classMap(stateLayerClasses)}"></div>`)}
|
|
435
435
|
<slot name="prefix"></slot>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SchmancyElement } from '@mixins/index'
|
|
2
|
-
import { css, html, LitElement
|
|
2
|
+
import { css, html, LitElement } from 'lit'
|
|
3
3
|
import { customElement, property, query, state } from 'lit/decorators.js'
|
|
4
4
|
import { ifDefined } from 'lit/directives/if-defined.js'
|
|
5
5
|
import { when } from 'lit/directives/when.js'
|
|
@@ -50,7 +50,7 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
50
50
|
@query('[part="base"]', true)
|
|
51
51
|
private nativeElement!: HTMLElement
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
#ariaLabel!: string
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* The size of the icon.
|
|
@@ -123,31 +123,31 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
123
123
|
// no slotchange ever fires), or a nested <schmancy-icon> element.
|
|
124
124
|
// `textContent` flattens through all three.
|
|
125
125
|
@state()
|
|
126
|
-
private
|
|
126
|
+
private capturedIcon?: string
|
|
127
127
|
|
|
128
|
-
private
|
|
128
|
+
private observer?: MutationObserver
|
|
129
129
|
|
|
130
130
|
connectedCallback(): void {
|
|
131
131
|
super.connectedCallback()
|
|
132
|
-
this.
|
|
133
|
-
this.
|
|
134
|
-
this.
|
|
132
|
+
this.captureIcon()
|
|
133
|
+
this.observer = new MutationObserver(() => this.captureIcon())
|
|
134
|
+
this.observer.observe(this, { childList: true, characterData: true, subtree: true })
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
disconnectedCallback(): void {
|
|
138
138
|
super.disconnectedCallback()
|
|
139
|
-
this.
|
|
139
|
+
this.observer?.disconnect()
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
private
|
|
142
|
+
private captureIcon(): void {
|
|
143
143
|
if (this.icon || this.text) return
|
|
144
|
-
this.
|
|
144
|
+
this.capturedIcon = this.textContent?.trim() || undefined
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
// Manage aria-label manually so that we can always use our internal property.
|
|
148
148
|
public override set ariaLabel(value: string) {
|
|
149
|
-
const oldVal = this
|
|
150
|
-
this
|
|
149
|
+
const oldVal = this.#ariaLabel
|
|
150
|
+
this.#ariaLabel = value
|
|
151
151
|
|
|
152
152
|
if (this.hasAttribute('aria-label')) {
|
|
153
153
|
this.removeAttribute('aria-label')
|
|
@@ -157,7 +157,7 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
157
157
|
|
|
158
158
|
@property({ attribute: 'aria-label' })
|
|
159
159
|
public override get ariaLabel() {
|
|
160
|
-
return this
|
|
160
|
+
return this.#ariaLabel
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
/** Sets focus in the button. */
|
|
@@ -175,12 +175,12 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
// Prevent default behavior when the component is disabled.
|
|
178
|
-
private
|
|
178
|
+
private preventDefault(event: Event) {
|
|
179
179
|
event.preventDefault()
|
|
180
180
|
event.stopPropagation()
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
protected firstUpdated(
|
|
183
|
+
protected firstUpdated(): void {
|
|
184
184
|
// Add any first-update logic here if needed.
|
|
185
185
|
}
|
|
186
186
|
|
|
@@ -236,14 +236,14 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
236
236
|
class="${this.classMap(classes)}"
|
|
237
237
|
tabindex=${this.disabled ? '-1' : '0'}
|
|
238
238
|
aria-disabled=${this.disabled}
|
|
239
|
-
@click=${this.disabled ? this.
|
|
239
|
+
@click=${this.disabled ? this.preventDefault : undefined}
|
|
240
240
|
>
|
|
241
241
|
${when(!this.disabled, () => html`<div class="absolute inset-0 ${this.classMap(stateLayerClasses)}"></div>`)}
|
|
242
242
|
${this.text
|
|
243
243
|
? html`<slot></slot>`
|
|
244
244
|
: html`
|
|
245
245
|
<slot style="display:none"></slot>
|
|
246
|
-
<schmancy-icon class=${iconSizeClass}>${this.icon || this.
|
|
246
|
+
<schmancy-icon class=${iconSizeClass}>${this.icon || this.capturedIcon}</schmancy-icon>
|
|
247
247
|
`
|
|
248
248
|
}
|
|
249
249
|
</a>
|
|
@@ -266,7 +266,7 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
266
266
|
? html`<slot></slot>`
|
|
267
267
|
: html`
|
|
268
268
|
<slot style="display:none"></slot>
|
|
269
|
-
<schmancy-icon class=${iconSizeClass}>${this.icon || this.
|
|
269
|
+
<schmancy-icon class=${iconSizeClass}>${this.icon || this.capturedIcon}</schmancy-icon>
|
|
270
270
|
`
|
|
271
271
|
}
|
|
272
272
|
</button>
|
package/src/card/card.ts
CHANGED
|
@@ -156,18 +156,18 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
156
156
|
|
|
157
157
|
connectedCallback() {
|
|
158
158
|
super.connectedCallback()
|
|
159
|
-
this.
|
|
159
|
+
this.updateAriaAttributes()
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
updated(changedProperties: Map<string, unknown>) {
|
|
163
163
|
super.updated(changedProperties)
|
|
164
164
|
if (changedProperties.has('interactive') || changedProperties.has('disabled')) {
|
|
165
|
-
this.
|
|
165
|
+
this.updateAriaAttributes()
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
// Consolidate ARIA attribute updates
|
|
170
|
-
private
|
|
170
|
+
private updateAriaAttributes() {
|
|
171
171
|
const isInteractive = this.interactive && !this.disabled
|
|
172
172
|
|
|
173
173
|
if (isInteractive) {
|
|
@@ -184,7 +184,7 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
// Shared ripple creation logic
|
|
187
|
-
private
|
|
187
|
+
private addRipple(x: number, y: number) {
|
|
188
188
|
const id = this.nextRippleId++
|
|
189
189
|
this.ripples = [...this.ripples, { x, y, id }]
|
|
190
190
|
|
|
@@ -195,7 +195,7 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
// Shared navigation logic
|
|
198
|
-
private
|
|
198
|
+
private navigate() {
|
|
199
199
|
if (!this.href) return
|
|
200
200
|
|
|
201
201
|
if (this.target === '_blank') {
|
|
@@ -206,9 +206,9 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
// Combined action trigger (ripple + navigate + event)
|
|
209
|
-
private
|
|
210
|
-
this.
|
|
211
|
-
this.
|
|
209
|
+
private triggerAction(x: number, y: number) {
|
|
210
|
+
this.addRipple(x, y)
|
|
211
|
+
this.navigate()
|
|
212
212
|
|
|
213
213
|
this.dispatchEvent(
|
|
214
214
|
new CustomEvent('schmancy-click', {
|
|
@@ -223,7 +223,7 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
223
223
|
if (this.disabled || !this.interactive) return
|
|
224
224
|
|
|
225
225
|
const rect = this.getBoundingClientRect()
|
|
226
|
-
this.
|
|
226
|
+
this.triggerAction(e.clientX - rect.left, e.clientY - rect.top)
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
private handleKeyDown = (e: KeyboardEvent) => {
|
|
@@ -231,22 +231,22 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
231
231
|
|
|
232
232
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
233
233
|
e.preventDefault()
|
|
234
|
-
this.
|
|
234
|
+
this.setPressed(true)
|
|
235
235
|
|
|
236
236
|
// Simulate click at center
|
|
237
237
|
const rect = this.getBoundingClientRect()
|
|
238
|
-
this.
|
|
238
|
+
this.triggerAction(rect.width / 2, rect.height / 2)
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
private handleKeyUp = (e: KeyboardEvent) => {
|
|
243
243
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
244
|
-
this.
|
|
244
|
+
this.setPressed(false)
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
|
|
248
248
|
// Consolidate pressed state management
|
|
249
|
-
private
|
|
249
|
+
private setPressed(pressed: boolean) {
|
|
250
250
|
this.pressed = pressed
|
|
251
251
|
if (pressed) {
|
|
252
252
|
this.setAttribute('pressed', '')
|
|
@@ -257,11 +257,11 @@ export default class SchmancyCard extends SchmancyElement {
|
|
|
257
257
|
|
|
258
258
|
private handleMouseDown = () => {
|
|
259
259
|
if (this.disabled || !this.interactive) return
|
|
260
|
-
this.
|
|
260
|
+
this.setPressed(true)
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
private handleMouseUp = () => this.
|
|
264
|
-
private handleMouseLeave = () => this.
|
|
263
|
+
private handleMouseUp = () => this.setPressed(false)
|
|
264
|
+
private handleMouseLeave = () => this.setPressed(false)
|
|
265
265
|
|
|
266
266
|
protected render() {
|
|
267
267
|
const isInteractive = this.interactive && !this.disabled
|
|
@@ -139,7 +139,7 @@ export class SchmancyContentDrawer extends SchmancyElement {
|
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
private
|
|
142
|
+
private overlaySubscription: Subscription | null = null
|
|
143
143
|
|
|
144
144
|
private handleRender(detail: TRenderCustomEvent['detail']) {
|
|
145
145
|
if (this.mode === 'push') {
|
|
@@ -155,16 +155,16 @@ export class SchmancyContentDrawer extends SchmancyElement {
|
|
|
155
155
|
// `show()` mounts the same component as a modal overlay; subscription
|
|
156
156
|
// = lifecycle, so dropping the previous one closes any prior modal
|
|
157
157
|
// before opening the next.
|
|
158
|
-
this.
|
|
159
|
-
this.
|
|
158
|
+
this.overlaySubscription?.unsubscribe()
|
|
159
|
+
this.overlaySubscription = show(detail.component, { props: detail.props })
|
|
160
160
|
.pipe(takeUntil(this.disconnecting))
|
|
161
|
-
.subscribe({ complete: () => { this.
|
|
161
|
+
.subscribe({ complete: () => { this.overlaySubscription = null } })
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
private dismissOverlay() {
|
|
166
|
-
this.
|
|
167
|
-
this.
|
|
166
|
+
this.overlaySubscription?.unsubscribe()
|
|
167
|
+
this.overlaySubscription = null
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
getOffsetTop(element: HTMLElement | null) {
|
package/src/details/details.ts
CHANGED
|
@@ -133,11 +133,11 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
133
133
|
|
|
134
134
|
@property({ type: Boolean, reflect: true })
|
|
135
135
|
get open() {
|
|
136
|
-
return this
|
|
136
|
+
return this.#open$.value
|
|
137
137
|
}
|
|
138
138
|
set open(value: boolean) {
|
|
139
|
-
if (this
|
|
140
|
-
this
|
|
139
|
+
if (this.#open$.value !== value) {
|
|
140
|
+
this.#open$.next(value)
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -162,16 +162,16 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
162
162
|
@property({ attribute: 'content-padding' })
|
|
163
163
|
contentPadding = 'p-3'
|
|
164
164
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
165
|
+
#open$ = new BehaviorSubject<boolean>(false)
|
|
166
|
+
#indicatorRef: Ref<HTMLElement> = createRef()
|
|
167
|
+
#contentRef: Ref<HTMLDivElement> = createRef()
|
|
168
|
+
#currentAnimation?: Animation
|
|
169
|
+
#indicatorIsOpen = false
|
|
170
|
+
#closing = false
|
|
171
|
+
#closeSub?: Subscription
|
|
172
172
|
|
|
173
173
|
/** True when browser handles close animation natively via ::details-content */
|
|
174
|
-
|
|
174
|
+
#nativeAnim =
|
|
175
175
|
typeof CSS !== 'undefined' &&
|
|
176
176
|
!!CSS.supports?.('selector(::details-content)') &&
|
|
177
177
|
!!CSS.supports?.('interpolate-size', 'allow-keywords')
|
|
@@ -180,7 +180,7 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
180
180
|
* Lazy rendering: tracks if content has ever been opened.
|
|
181
181
|
* Once true, content stays rendered (even when closed) for smooth animations.
|
|
182
182
|
*/
|
|
183
|
-
@state() private
|
|
183
|
+
@state() private hasOpened = false
|
|
184
184
|
|
|
185
185
|
constructor() {
|
|
186
186
|
super()
|
|
@@ -191,15 +191,15 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
191
191
|
connectedCallback() {
|
|
192
192
|
super.connectedCallback()
|
|
193
193
|
|
|
194
|
-
this
|
|
194
|
+
this.#open$
|
|
195
195
|
.pipe(
|
|
196
196
|
distinctUntilChanged(),
|
|
197
197
|
tap(isOpen => {
|
|
198
|
-
if (isOpen && !this.
|
|
199
|
-
this.
|
|
198
|
+
if (isOpen && !this.hasOpened) {
|
|
199
|
+
this.hasOpened = true
|
|
200
200
|
}
|
|
201
|
-
this
|
|
202
|
-
this
|
|
201
|
+
this.#animateIndicator(isOpen)
|
|
202
|
+
this.#updateIndicatorSlot()
|
|
203
203
|
}),
|
|
204
204
|
takeUntil(this.disconnecting),
|
|
205
205
|
)
|
|
@@ -208,11 +208,11 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
208
208
|
|
|
209
209
|
disconnectedCallback() {
|
|
210
210
|
super.disconnectedCallback()
|
|
211
|
-
this
|
|
211
|
+
this.#closeSub?.unsubscribe()
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
render() {
|
|
215
|
-
const isOpen = this
|
|
215
|
+
const isOpen = this.#open$.value
|
|
216
216
|
|
|
217
217
|
const detailsClasses = this.classMap({
|
|
218
218
|
'w-full rounded-xl transition-shadow duration-200 ease-out': true,
|
|
@@ -240,15 +240,15 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
240
240
|
})
|
|
241
241
|
|
|
242
242
|
return html`
|
|
243
|
-
<details ?open=${isOpen} @toggle=${this
|
|
244
|
-
<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
|
|
243
|
+
<details ?open=${isOpen} @toggle=${this.#handleToggle} class=${detailsClasses}>
|
|
244
|
+
<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}>
|
|
245
245
|
${!this.hideIndicator
|
|
246
246
|
? html`
|
|
247
247
|
<span
|
|
248
|
-
${ref(this
|
|
248
|
+
${ref(this.#indicatorRef)}
|
|
249
249
|
class="flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100"
|
|
250
250
|
>
|
|
251
|
-
<slot name="indicator" @slotchange=${this
|
|
251
|
+
<slot name="indicator" @slotchange=${this.#handleIndicatorSlotChange}>
|
|
252
252
|
<svg
|
|
253
253
|
width="20"
|
|
254
254
|
height="20"
|
|
@@ -278,13 +278,13 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
278
278
|
</summary>
|
|
279
279
|
|
|
280
280
|
<div
|
|
281
|
-
${ref(this
|
|
281
|
+
${ref(this.#contentRef)}
|
|
282
282
|
class="content-wrapper"
|
|
283
|
-
data-open=${isOpen && !this
|
|
283
|
+
data-open=${isOpen && !this.#closing}
|
|
284
284
|
aria-hidden=${isOpen ? 'false' : 'true'}
|
|
285
285
|
>
|
|
286
286
|
<div class="content-inner">
|
|
287
|
-
${this.
|
|
287
|
+
${this.hasOpened
|
|
288
288
|
? html`
|
|
289
289
|
<div class=${contentClasses}>
|
|
290
290
|
<slot></slot>
|
|
@@ -298,7 +298,7 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
298
298
|
`
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
|
|
301
|
+
#handleSummaryClick(e: MouseEvent) {
|
|
302
302
|
if ((e.target as HTMLElement).closest('[slot="actions"]')) {
|
|
303
303
|
e.preventDefault()
|
|
304
304
|
return
|
|
@@ -307,23 +307,23 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
307
307
|
e.preventDefault()
|
|
308
308
|
return
|
|
309
309
|
}
|
|
310
|
-
if (this
|
|
310
|
+
if (this.#closing) {
|
|
311
311
|
e.preventDefault()
|
|
312
312
|
return
|
|
313
313
|
}
|
|
314
314
|
|
|
315
315
|
// Native animated path (Chromium 131+): browser handles everything via CSS
|
|
316
|
-
if (this
|
|
316
|
+
if (this.#nativeAnim) return
|
|
317
317
|
|
|
318
318
|
// Fallback: manually animate close via CSS transition, then close native details
|
|
319
|
-
if (this
|
|
319
|
+
if (this.#open$.value) {
|
|
320
320
|
e.preventDefault()
|
|
321
|
-
this
|
|
321
|
+
this.#startClose()
|
|
322
322
|
}
|
|
323
|
-
// If closed, let native open happen (handled by
|
|
323
|
+
// If closed, let native open happen (handled by #handleToggle)
|
|
324
324
|
}
|
|
325
325
|
|
|
326
|
-
|
|
326
|
+
#handleToggle(e: Event) {
|
|
327
327
|
e.stopPropagation()
|
|
328
328
|
|
|
329
329
|
const ownDetails = this.shadowRoot?.querySelector('details')
|
|
@@ -331,15 +331,15 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
331
331
|
|
|
332
332
|
const newState = ownDetails.open
|
|
333
333
|
|
|
334
|
-
if (this
|
|
334
|
+
if (this.#nativeAnim) {
|
|
335
335
|
// Native path: handle both open and close
|
|
336
|
-
if (this
|
|
336
|
+
if (this.#open$.value !== newState) {
|
|
337
337
|
this.open = newState
|
|
338
338
|
this.dispatchScopedEvent('toggle', { open: newState })
|
|
339
339
|
}
|
|
340
340
|
} else {
|
|
341
|
-
// Fallback path: only handle OPEN (close is driven by
|
|
342
|
-
if (newState && this
|
|
341
|
+
// Fallback path: only handle OPEN (close is driven by #startClose)
|
|
342
|
+
if (newState && this.#open$.value !== newState) {
|
|
343
343
|
this.open = newState
|
|
344
344
|
this.dispatchScopedEvent('toggle', { open: newState })
|
|
345
345
|
}
|
|
@@ -350,25 +350,25 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
350
350
|
* Fallback close: trigger CSS grid+opacity transition, then close native <details>.
|
|
351
351
|
* The CSS transition (400ms) handles the visual collapse — no WAAPI needed.
|
|
352
352
|
*/
|
|
353
|
-
|
|
354
|
-
this
|
|
355
|
-
this
|
|
353
|
+
#startClose() {
|
|
354
|
+
this.#closing = true
|
|
355
|
+
this.#closeSub?.unsubscribe()
|
|
356
356
|
|
|
357
357
|
// Immediately collapse the grid wrapper via DOM attribute
|
|
358
|
-
this.
|
|
358
|
+
this.#contentRef.value?.setAttribute('data-open', 'false')
|
|
359
359
|
|
|
360
360
|
// Animate indicator immediately
|
|
361
|
-
this
|
|
361
|
+
this.#animateIndicator(false)
|
|
362
362
|
|
|
363
363
|
// After CSS transition completes, close native details and update state
|
|
364
|
-
const wrapper = this.
|
|
364
|
+
const wrapper = this.#contentRef.value
|
|
365
365
|
if (!wrapper) return
|
|
366
366
|
|
|
367
|
-
this
|
|
367
|
+
this.#closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(
|
|
368
368
|
filter(e => e.propertyName === 'grid-template-rows'),
|
|
369
369
|
take(1),
|
|
370
370
|
tap(() => {
|
|
371
|
-
this
|
|
371
|
+
this.#closing = false
|
|
372
372
|
this.open = false
|
|
373
373
|
this.dispatchScopedEvent('toggle', { open: false })
|
|
374
374
|
}),
|
|
@@ -376,33 +376,33 @@ export default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {
|
|
|
376
376
|
).subscribe()
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
-
|
|
379
|
+
#handleIndicatorSlotChange(e: Event) {
|
|
380
380
|
const slot = e.target as HTMLSlotElement
|
|
381
381
|
slot.assignedElements().forEach(el => {
|
|
382
|
-
el.setAttribute('data-open', String(this
|
|
382
|
+
el.setAttribute('data-open', String(this.#open$.value))
|
|
383
383
|
})
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
|
|
386
|
+
#updateIndicatorSlot() {
|
|
387
387
|
const slot = this.shadowRoot?.querySelector('slot[name="indicator"]') as HTMLSlotElement | null
|
|
388
388
|
if (slot) {
|
|
389
389
|
slot.assignedElements().forEach(el => {
|
|
390
|
-
el.setAttribute('data-open', String(this
|
|
390
|
+
el.setAttribute('data-open', String(this.#open$.value))
|
|
391
391
|
})
|
|
392
392
|
}
|
|
393
393
|
}
|
|
394
394
|
|
|
395
395
|
/** Idempotent indicator rotation — skips if already at target state */
|
|
396
|
-
|
|
397
|
-
if (this
|
|
398
|
-
this
|
|
396
|
+
#animateIndicator(isOpen: boolean) {
|
|
397
|
+
if (this.#indicatorIsOpen === isOpen) return
|
|
398
|
+
this.#indicatorIsOpen = isOpen
|
|
399
399
|
|
|
400
|
-
const indicator = this.
|
|
400
|
+
const indicator = this.#indicatorRef.value
|
|
401
401
|
if (!indicator || reducedMotion$.value) return
|
|
402
402
|
|
|
403
|
-
this
|
|
403
|
+
this.#currentAnimation?.cancel()
|
|
404
404
|
|
|
405
|
-
this
|
|
405
|
+
this.#currentAnimation = indicator.animate(
|
|
406
406
|
[
|
|
407
407
|
{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },
|
|
408
408
|
{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },
|
|
@@ -56,7 +56,8 @@ class AnimateTextDirective extends AsyncDirective {
|
|
|
56
56
|
private disconnecting$ = new Subject<void>()
|
|
57
57
|
private initialized = false
|
|
58
58
|
|
|
59
|
-
render(
|
|
59
|
+
render(options: AnimateTextOptions) {
|
|
60
|
+
void options
|
|
60
61
|
return noChange
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -36,7 +36,9 @@ class ConfirmClickDirective extends Directive {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
render(
|
|
39
|
+
render(callback: () => void, options?: ConfirmClickOptions) {
|
|
40
|
+
void callback
|
|
41
|
+
void options
|
|
40
42
|
return undefined
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -105,11 +107,11 @@ class ConfirmClickDirective extends Directive {
|
|
|
105
107
|
const timeout = options.timeout ?? 3000
|
|
106
108
|
|
|
107
109
|
// Read the host's icon — reuse it so the user sees the same action "armed"
|
|
108
|
-
const iconButton = element as HTMLElement & { icon?: string;
|
|
110
|
+
const iconButton = element as HTMLElement & { icon?: string; ['capturedIcon']?: string }
|
|
109
111
|
const hostIcon =
|
|
110
112
|
options.icon ??
|
|
111
113
|
iconButton.icon ??
|
|
112
|
-
iconButton
|
|
114
|
+
iconButton['capturedIcon'] ??
|
|
113
115
|
element.textContent?.trim() ??
|
|
114
116
|
'warning'
|
|
115
117
|
|