@mhmo91/schmancy 0.10.36 → 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 +54 -31
- package/dist/SchmancyElement-BNnyBOwk.js +286 -0
- package/dist/{SchmancyElement-C3CpdNsi.js.map → SchmancyElement-BNnyBOwk.js.map} +1 -1
- package/dist/SchmancyElement-C41uPa6l.cjs +2 -0
- package/dist/{SchmancyElement-BBzRWB1w.cjs.map → SchmancyElement-C41uPa6l.cjs.map} +1 -1
- package/dist/agent/schmancy.agent.js +2432 -2361
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +4 -22
- package/dist/area-2FrTZI_T.cjs +21 -0
- package/dist/area-2FrTZI_T.cjs.map +1 -0
- package/dist/{area-BA96mwFY.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-D52h1jAT.js → audio-D3gnp15Y.js} +1 -1
- package/dist/{audio-D52h1jAT.js.map → audio-D3gnp15Y.js.map} +1 -1
- package/dist/{audio-B_jT9Xr7.cjs → audio-EaD0Ggfh.cjs} +1 -1
- package/dist/{audio-B_jT9Xr7.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-CI4QJXAN.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-_N1x5U_3.js → boat-DmyG7y1V.js} +4 -4
- package/dist/{boat-_N1x5U_3.js.map → boat-DmyG7y1V.js.map} +1 -1
- package/dist/{boat-I4B1UNMc.cjs → boat-dB1_qLm0.cjs} +1 -1
- package/dist/{boat-I4B1UNMc.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-BIUonyPk.cjs → busy-Cj_PV7oC.cjs} +1 -1
- package/dist/{busy-BIUonyPk.cjs.map → busy-Cj_PV7oC.cjs.map} +1 -1
- package/dist/{busy-CCB3qKnh.js → busy-enYCTssB.js} +2 -2
- package/dist/{busy-CCB3qKnh.js.map → busy-enYCTssB.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-C89bPnHt.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-CFsCgJKZ.js → card-BHTz1GwB.js} +16 -16
- package/dist/card-BHTz1GwB.js.map +1 -0
- package/dist/{card-BO93_oxQ.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-CFUBUFtW.cjs → checkbox-C4zeib84.cjs} +2 -2
- package/dist/{checkbox-CFUBUFtW.cjs.map → checkbox-C4zeib84.cjs.map} +1 -1
- package/dist/{checkbox-Bh7q0djq.js → checkbox-Ce0DlAdW.js} +6 -6
- package/dist/{checkbox-Bh7q0djq.js.map → checkbox-Ce0DlAdW.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BfzpsyV1.cjs → chips-B1jui8Pe.cjs} +3 -3
- package/dist/chips-B1jui8Pe.cjs.map +1 -0
- package/dist/{chips-6YaoRmeG.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-N-A249O9.cjs → date-range-BUaPgbTZ.cjs} +2 -2
- package/dist/date-range-BUaPgbTZ.cjs.map +1 -0
- package/dist/{date-range-CEo_Kjqw.js → date-range-NTpoA1in.js} +4 -4
- package/dist/date-range-NTpoA1in.js.map +1 -0
- package/dist/{date-range-inline-DFopysWF.cjs → date-range-inline-D0I6k84h.cjs} +1 -1
- package/dist/{date-range-inline-DFopysWF.cjs.map → date-range-inline-D0I6k84h.cjs.map} +1 -1
- package/dist/{date-range-inline-BwialV9j.js → date-range-inline-DjRdMZ1z.js} +2 -2
- package/dist/{date-range-inline-BwialV9j.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-GtpfI2hA.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-CvYGSW_a.cjs → directives-Bb0S1DKZ.cjs} +4 -4
- package/dist/directives-Bb0S1DKZ.cjs.map +1 -0
- package/dist/{directives-C2dXgpCY.js → directives-Bfm1lkoy.js} +30 -23
- package/dist/directives-Bfm1lkoy.js.map +1 -0
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-D0pGX2VB.js → divider-BeyX_C0A.js} +2 -2
- package/dist/{divider-D0pGX2VB.js.map → divider-BeyX_C0A.js.map} +1 -1
- package/dist/{divider-rNsWCvMi.cjs → divider-Ck2C1sKl.cjs} +1 -1
- package/dist/{divider-rNsWCvMi.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-FcKAzJta.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-CQ1WEp3M.js → float-Cgllk_H9.js} +2 -2
- package/dist/{float-CQ1WEp3M.js.map → float-Cgllk_H9.js.map} +1 -1
- package/dist/{float-CDjgxWyy.cjs → float-OvqX0nqG.cjs} +1 -1
- package/dist/{float-CDjgxWyy.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-H24puioV.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-DBxfN91B.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-BDVElN8z.js → iframe-DWvN5nGB.js} +11 -11
- package/dist/iframe-DWvN5nGB.js.map +1 -0
- package/dist/{iframe-CG-z9qev.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 +37 -37
- package/dist/{input-Bt_o4sYo.js → input-BCCHz6tB.js} +7 -7
- package/dist/input-BCCHz6tB.js.map +1 -0
- package/dist/{input-B14Nn6xD.cjs → input-Z-3N5JMv.cjs} +2 -2
- package/dist/input-Z-3N5JMv.cjs.map +1 -0
- package/dist/{input-chip-DEqO0DXc.js → input-chip-BOrcKH-H.js} +2 -2
- package/dist/{input-chip-DEqO0DXc.js.map → input-chip-BOrcKH-H.js.map} +1 -1
- package/dist/{input-chip-ugYu9Fn9.cjs → input-chip-ChAgRCXZ.cjs} +1 -1
- package/dist/{input-chip-ugYu9Fn9.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-BJ_43VrH.js → layout-CFiG3lNT.js} +1 -1
- package/dist/{layout-BJ_43VrH.js.map → layout-CFiG3lNT.js.map} +1 -1
- package/dist/{layout-DF9ZaQ-b.cjs → layout-DZ4dpLh9.cjs} +1 -1
- package/dist/{layout-DF9ZaQ-b.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-ZmuoBBFT.js → lightbox-B7Y4Nij_.js} +2 -2
- package/dist/lightbox-B7Y4Nij_.js.map +1 -0
- package/dist/{lightbox-B47Zoqv-.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-CaSWrlG2.cjs → list-BhM-6dAi.cjs} +1 -1
- package/dist/{list-CaSWrlG2.cjs.map → list-BhM-6dAi.cjs.map} +1 -1
- package/dist/{list-C47xzld_.js → list-C5WVoIfJ.js} +2 -2
- package/dist/{list-C47xzld_.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-8RObM6Ie.js → menu-CBAAJoHu.js} +3 -3
- package/dist/{menu-8RObM6Ie.js.map → menu-CBAAJoHu.js.map} +1 -1
- package/dist/{menu-Jpsy85SX.cjs → menu-DFQjJk3H.cjs} +1 -1
- package/dist/{menu-Jpsy85SX.cjs.map → menu-DFQjJk3H.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-DTzfFVyv.js → mixins-DGBI7YPO.js} +11 -11
- package/dist/mixins-DGBI7YPO.js.map +1 -0
- package/dist/{mixins-DPdzC9ZH.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-Ccktcj9H.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-CkMxwBqU.js → option-B21ImL0k.js} +2 -2
- package/dist/{option-CkMxwBqU.js.map → option-B21ImL0k.js.map} +1 -1
- package/dist/{option-0aNiVB3Q.cjs → option-CJQM5I9q.cjs} +1 -1
- package/dist/{option-0aNiVB3Q.cjs.map → option-CJQM5I9q.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-H3Wt_dgQ.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-Dxn_wNm3.js → overlay.confirm-body-CPqqPNks.js} +10 -10
- package/dist/overlay.confirm-body-CPqqPNks.js.map +1 -0
- package/dist/{overlay.confirm-body-CR9xaqOE.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-DEj3rfRr.cjs.map → overlay.service-DU1nqh6A.cjs.map} +1 -1
- package/dist/{overlay.service-C46kOtUi.js → overlay.service-KTgBxjFb.js} +4 -4
- package/dist/{overlay.service-C46kOtUi.js.map → overlay.service-KTgBxjFb.js.map} +1 -1
- package/dist/{progress-zs18GR6C.cjs → progress-B-Qg44XY.cjs} +1 -1
- package/dist/{progress-zs18GR6C.cjs.map → progress-B-Qg44XY.cjs.map} +1 -1
- package/dist/{progress-BK7gSq8j.js → progress-CUSS1sNz.js} +2 -2
- package/dist/{progress-BK7gSq8j.js.map → progress-CUSS1sNz.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-1HCpzRUB.js → radio-group-AHLvrN8O.js} +7 -7
- package/dist/radio-group-AHLvrN8O.js.map +1 -0
- package/dist/{radio-group-DbYlyPc-.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-CEyhNtZ2.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 +17 -11
- package/dist/skills/overlay.md +14 -7
- package/dist/skills/schmancy/SKILL.md +17 -11
- package/dist/skills/schmancy/overlay.md +14 -7
- package/dist/skills/schmancy/steps.md +68 -34
- package/dist/skills/steps.md +68 -34
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-DO4SmUUT.js → sound.service-CK-5zob-.js} +4 -3
- package/dist/sound.service-CK-5zob-.js.map +1 -0
- package/dist/{sound.service-G_8GV_6L.cjs → sound.service-D2GGaBXc.cjs} +1 -1
- package/dist/sound.service-D2GGaBXc.cjs.map +1 -0
- package/dist/{splash-screen-B1mM4_xz.js → splash-screen-BUEtjHXC.js} +13 -13
- package/dist/splash-screen-BUEtjHXC.js.map +1 -0
- package/dist/{splash-screen-cbz4bxjB.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-tncsWsTY.js → src-CIqAj3Eh.js} +45 -45
- package/dist/src-CIqAj3Eh.js.map +1 -0
- package/dist/{src-czeiuT1m.cjs → src-CYqBQTyt.cjs} +6 -6
- package/dist/src-CYqBQTyt.cjs.map +1 -0
- package/dist/{state-Cx0aoL5e.cjs → state-BxDNox-2.cjs} +1 -1
- package/dist/{state-Cx0aoL5e.cjs.map → state-BxDNox-2.cjs.map} +1 -1
- package/dist/{state-DJDp3N7J.js → state-CnZCDMT0.js} +9 -9
- package/dist/{state-DJDp3N7J.js.map → state-CnZCDMT0.js.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +35 -19
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +96 -73
- package/dist/steps.js.map +1 -1
- package/dist/{surface-CYBl8_a3.js → surface-BMdG3dKQ.js} +2 -2
- package/dist/{surface-CYBl8_a3.js.map → surface-BMdG3dKQ.js.map} +1 -1
- package/dist/{surface-C3cxTcJD.cjs → surface-CWwYD_z2.cjs} +1 -1
- package/dist/{surface-C3cxTcJD.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-DHy93Q3N.js → tabs-CDQYDc6v.js} +2 -2
- package/dist/{tabs-DHy93Q3N.js.map → tabs-CDQYDc6v.js.map} +1 -1
- package/dist/{tabs-ORQ_Zd43.cjs → tabs-CbD9E1gd.cjs} +1 -1
- package/dist/{tabs-ORQ_Zd43.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-DHIMt-ly.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-CJpjkqHr.cjs → theme-BMbXoqi0.cjs} +1 -1
- package/dist/{theme-CJpjkqHr.cjs.map → theme-BMbXoqi0.cjs.map} +1 -1
- package/dist/{theme-CgI9PRco.js → theme-DZu-xmVp.js} +5 -5
- package/dist/{theme-CgI9PRco.js.map → theme-DZu-xmVp.js.map} +1 -1
- package/dist/{theme-button--FuBkuVr.cjs → theme-button-B0OLb-43.cjs} +1 -1
- package/dist/{theme-button--FuBkuVr.cjs.map → theme-button-B0OLb-43.cjs.map} +1 -1
- package/dist/{theme-button-D-FXb3oO.js → theme-button-D_qGvEYs.js} +2 -2
- package/dist/{theme-button-D-FXb3oO.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-BfTK1Wtl.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-CxA3sx9B.cjs → typography-D4Fo1UGh.cjs} +3 -3
- package/dist/{typography-CxA3sx9B.cjs.map → typography-D4Fo1UGh.cjs.map} +1 -1
- package/dist/{typography-BEGLfHwz.js → typography-SZhjb_4R.js} +9 -9
- package/dist/{typography-BEGLfHwz.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-B_n4P9az.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 +17 -11
- package/skills/schmancy/overlay.md +14 -7
- package/skills/schmancy/steps.md +68 -34
- 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 +193 -118
- 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/steps/index.ts +1 -1
- package/src/steps/schmancy-step.ts +91 -65
- package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
- package/src/steps/steps.context.ts +5 -4
- package/src/steps/steps.test.ts +120 -0
- 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 +17 -7
- 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/steps/index.d.ts +1 -1
- package/types/src/steps/schmancy-step.d.ts +8 -23
- package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
- package/types/src/steps/steps.context.d.ts +2 -1
- package/types/src/steps/steps.test.d.ts +2 -0
- 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/SchmancyElement-BBzRWB1w.cjs +0 -2
- package/dist/SchmancyElement-C3CpdNsi.js +0 -284
- package/dist/area-BA96mwFY.js.map +0 -1
- package/dist/area-DtyQDdOF.cjs +0 -21
- package/dist/area-DtyQDdOF.cjs.map +0 -1
- package/dist/autocomplete-Bts5Jwwr.cjs +0 -115
- package/dist/autocomplete-Bts5Jwwr.cjs.map +0 -1
- package/dist/autocomplete-CI4QJXAN.js.map +0 -1
- package/dist/button-C89bPnHt.js.map +0 -1
- package/dist/button-CkwQH-g3.cjs +0 -62
- package/dist/button-CkwQH-g3.cjs.map +0 -1
- package/dist/card-BO93_oxQ.cjs.map +0 -1
- package/dist/card-CFsCgJKZ.js.map +0 -1
- package/dist/chips-6YaoRmeG.js.map +0 -1
- package/dist/chips-BfzpsyV1.cjs.map +0 -1
- package/dist/date-range-CEo_Kjqw.js.map +0 -1
- package/dist/date-range-N-A249O9.cjs.map +0 -1
- package/dist/details-BLRPV8sY.cjs +0 -164
- package/dist/details-BLRPV8sY.cjs.map +0 -1
- package/dist/details-GtpfI2hA.js.map +0 -1
- package/dist/directives-C2dXgpCY.js.map +0 -1
- package/dist/directives-CvYGSW_a.cjs.map +0 -1
- package/dist/expand-FcKAzJta.js.map +0 -1
- package/dist/expand-tffQHGbZ.cjs +0 -141
- package/dist/expand-tffQHGbZ.cjs.map +0 -1
- package/dist/form-H24puioV.js.map +0 -1
- package/dist/form-VYhbbir3.cjs +0 -27
- package/dist/form-VYhbbir3.cjs.map +0 -1
- package/dist/icons-B_a1HStW.cjs +0 -24
- package/dist/icons-B_a1HStW.cjs.map +0 -1
- package/dist/icons-DBxfN91B.js.map +0 -1
- package/dist/iframe-BDVElN8z.js.map +0 -1
- package/dist/iframe-CG-z9qev.cjs.map +0 -1
- package/dist/input-B14Nn6xD.cjs.map +0 -1
- package/dist/input-Bt_o4sYo.js.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-B47Zoqv-.cjs.map +0 -1
- package/dist/lightbox-ZmuoBBFT.js.map +0 -1
- package/dist/mixins-DPdzC9ZH.cjs.map +0 -1
- package/dist/mixins-DTzfFVyv.js.map +0 -1
- package/dist/notification-Ccktcj9H.js.map +0 -1
- package/dist/notification-DSkB-sn0.cjs +0 -24
- package/dist/notification-DSkB-sn0.cjs.map +0 -1
- package/dist/overlay-BS-ta-zq.cjs +0 -58
- package/dist/overlay-BS-ta-zq.cjs.map +0 -1
- package/dist/overlay-H3Wt_dgQ.js.map +0 -1
- package/dist/overlay.confirm-body-CR9xaqOE.cjs.map +0 -1
- package/dist/overlay.confirm-body-Dxn_wNm3.js.map +0 -1
- package/dist/overlay.service-DEj3rfRr.cjs +0 -1
- package/dist/radio-group-1HCpzRUB.js.map +0 -1
- package/dist/radio-group-DbYlyPc-.cjs.map +0 -1
- package/dist/select-B-SSmUDe.cjs +0 -56
- package/dist/select-B-SSmUDe.cjs.map +0 -1
- package/dist/select-CEyhNtZ2.js.map +0 -1
- package/dist/sound.service-DO4SmUUT.js.map +0 -1
- package/dist/sound.service-G_8GV_6L.cjs.map +0 -1
- package/dist/splash-screen-B1mM4_xz.js.map +0 -1
- package/dist/splash-screen-cbz4bxjB.cjs.map +0 -1
- package/dist/src-czeiuT1m.cjs.map +0 -1
- package/dist/src-tncsWsTY.js.map +0 -1
- package/dist/textarea-CEUaDURR.cjs +0 -43
- package/dist/textarea-CEUaDURR.cjs.map +0 -1
- package/dist/textarea-DHIMt-ly.js.map +0 -1
- package/dist/theme.service-BfTK1Wtl.js.map +0 -1
- package/dist/theme.service-Dg7LO0Qz.cjs +0 -1
- package/dist/theme.service-Dg7LO0Qz.cjs.map +0 -1
- package/dist/window-B_n4P9az.js.map +0 -1
- package/dist/window-Vl1u1-EG.cjs +0 -59
- package/dist/window-Vl1u1-EG.cjs.map +0 -1
|
@@ -77,13 +77,13 @@ export default class SchmancySplashScreen extends SchmancyElement {
|
|
|
77
77
|
*/
|
|
78
78
|
@property({ type: Boolean, attribute: 'initially-hidden' }) initiallyHidden = false
|
|
79
79
|
|
|
80
|
-
@state() private
|
|
80
|
+
@state() private visible = true
|
|
81
81
|
|
|
82
82
|
connectedCallback() {
|
|
83
83
|
super.connectedCallback()
|
|
84
84
|
|
|
85
85
|
if (this.initiallyHidden) {
|
|
86
|
-
this.
|
|
86
|
+
this.visible = false
|
|
87
87
|
return
|
|
88
88
|
}
|
|
89
89
|
|
|
@@ -93,7 +93,7 @@ export default class SchmancySplashScreen extends SchmancyElement {
|
|
|
93
93
|
zip(readySignal$, minTimer$)
|
|
94
94
|
.pipe(
|
|
95
95
|
take(1),
|
|
96
|
-
tap(() => this.
|
|
96
|
+
tap(() => this.dismiss()),
|
|
97
97
|
takeUntil(this.disconnecting),
|
|
98
98
|
)
|
|
99
99
|
.subscribe()
|
|
@@ -111,11 +111,11 @@ export default class SchmancySplashScreen extends SchmancyElement {
|
|
|
111
111
|
* Force the splash to show again (e.g. between route transitions).
|
|
112
112
|
*/
|
|
113
113
|
public show(): void {
|
|
114
|
-
this.
|
|
114
|
+
this.visible = true
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
private
|
|
118
|
-
this.
|
|
117
|
+
private dismiss(): void {
|
|
118
|
+
this.visible = false
|
|
119
119
|
this.dispatchEvent(
|
|
120
120
|
new CustomEvent<void>('schmancy-splash-done', {
|
|
121
121
|
bubbles: true,
|
|
@@ -128,10 +128,10 @@ export default class SchmancySplashScreen extends SchmancyElement {
|
|
|
128
128
|
return html`
|
|
129
129
|
<div
|
|
130
130
|
class="splash-layer"
|
|
131
|
-
aria-hidden=${!this.
|
|
131
|
+
aria-hidden=${!this.visible}
|
|
132
132
|
style=${styleMap({
|
|
133
|
-
opacity: this.
|
|
134
|
-
pointerEvents: this.
|
|
133
|
+
opacity: this.visible ? '1' : '0',
|
|
134
|
+
pointerEvents: this.visible ? 'auto' : 'none',
|
|
135
135
|
})}
|
|
136
136
|
>
|
|
137
137
|
<slot name="splash"></slot>
|
|
@@ -139,8 +139,8 @@ export default class SchmancySplashScreen extends SchmancyElement {
|
|
|
139
139
|
<div
|
|
140
140
|
class="content-layer"
|
|
141
141
|
style=${styleMap({
|
|
142
|
-
opacity: this.
|
|
143
|
-
pointerEvents: this.
|
|
142
|
+
opacity: this.visible ? '0' : '1',
|
|
143
|
+
pointerEvents: this.visible ? 'none' : 'auto',
|
|
144
144
|
})}
|
|
145
145
|
>
|
|
146
146
|
<slot></slot>
|
package/src/state/index.ts
CHANGED
|
@@ -155,7 +155,7 @@ export interface BaseAPI<NS extends string, T, S extends StorageBackend> {
|
|
|
155
155
|
* current value. Exposed on the type so a state can be passed to
|
|
156
156
|
* `<schmancy-context provides={[…]}>` without casts. Not for end-user
|
|
157
157
|
* code — the leading underscore signals "internal API". */
|
|
158
|
-
|
|
158
|
+
isolatedInstance(): { destroy(): void } & Record<string | symbol, unknown>
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
export interface SyncState<NS extends string, T, S extends SyncStorage>
|
|
@@ -219,12 +219,12 @@ function detectKind(value: unknown): RuntimeKind {
|
|
|
219
219
|
// who arrived first.
|
|
220
220
|
const CLAIMED_KEY = Symbol.for('schmancy.state.claimed')
|
|
221
221
|
const INSTANCES_KEY = Symbol.for('schmancy.state.instances')
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
const claimed =
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
const instances =
|
|
222
|
+
const claimedSlot = (globalThis as { [CLAIMED_KEY]?: Set<string> })
|
|
223
|
+
claimedSlot[CLAIMED_KEY] ??= new Set<string>()
|
|
224
|
+
const claimed = claimedSlot[CLAIMED_KEY]!
|
|
225
|
+
const instancesSlot = (globalThis as { [INSTANCES_KEY]?: Map<string, unknown> })
|
|
226
|
+
instancesSlot[INSTANCES_KEY] ??= new Map<string, unknown>()
|
|
227
|
+
const instances = instancesSlot[INSTANCES_KEY]!
|
|
228
228
|
|
|
229
229
|
// ---------------------------------------------------------------------------
|
|
230
230
|
// Context resolution.
|
|
@@ -245,11 +245,11 @@ const instances = __instancesSlot[INSTANCES_KEY]!
|
|
|
245
245
|
// cache keys are DOM elements (process-global), but the cache itself must
|
|
246
246
|
// also be shared.
|
|
247
247
|
const CACHE_KEY = Symbol.for('schmancy.state.hostResolverCache')
|
|
248
|
-
const
|
|
248
|
+
const cacheSlot = (globalThis as {
|
|
249
249
|
[CACHE_KEY]?: WeakMap<HTMLElement, Map<string, unknown>>
|
|
250
250
|
})
|
|
251
|
-
|
|
252
|
-
const hostResolverCache =
|
|
251
|
+
cacheSlot[CACHE_KEY] ??= new WeakMap<HTMLElement, Map<string, unknown>>()
|
|
252
|
+
const hostResolverCache = cacheSlot[CACHE_KEY]!
|
|
253
253
|
|
|
254
254
|
function resolveContextual(namespace: string, fallback: unknown): unknown {
|
|
255
255
|
const host = resolveActiveHost()
|
|
@@ -436,7 +436,7 @@ interface CreateInstanceOptions {
|
|
|
436
436
|
* it does NOT claim the namespace in `claimed`, it does NOT route reads
|
|
437
437
|
* or writes through `resolveContextual` (so it can serve as the
|
|
438
438
|
* resolution target without recursion), and it does NOT expose
|
|
439
|
-
* `
|
|
439
|
+
* `isolatedInstance` (you only isolate the global). */
|
|
440
440
|
isolated?: boolean
|
|
441
441
|
}
|
|
442
442
|
|
|
@@ -578,7 +578,7 @@ function createInstance(args: CreateInstanceArgs, options: CreateInstanceOptions
|
|
|
578
578
|
|
|
579
579
|
// Hook used by `<schmancy-context>` to mint a per-context copy seeded
|
|
580
580
|
// with the current value. Internal: not part of the public State<> type.
|
|
581
|
-
instance.
|
|
581
|
+
instance.isolatedInstance = (): unknown =>
|
|
582
582
|
createInstance(
|
|
583
583
|
{ namespace, initial: signal.get(), storage: 'memory' },
|
|
584
584
|
{ isolated: true },
|
|
@@ -51,7 +51,7 @@ export interface StateTemplate {
|
|
|
51
51
|
* per-context copy seeded with the current value, sharing nothing with the
|
|
52
52
|
* global instance. The returned object exposes `destroy()` so the context
|
|
53
53
|
* element can flush + close on disconnect. */
|
|
54
|
-
|
|
54
|
+
isolatedInstance(): { destroy(): void } & Record<string | symbol, unknown>;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
export class SchmancyContext extends SchmancyElement {
|
|
@@ -63,12 +63,12 @@ export class SchmancyContext extends SchmancyElement {
|
|
|
63
63
|
|
|
64
64
|
// Per-mount records. Keep both the provider (so we can release it on
|
|
65
65
|
// disconnect) and the isolated instance (so we can destroy it).
|
|
66
|
-
private
|
|
66
|
+
private scoped: Array<{
|
|
67
67
|
isolated: { destroy(): void };
|
|
68
68
|
provider: ContextProvider<Context<unknown, unknown>>;
|
|
69
69
|
}> = [];
|
|
70
70
|
|
|
71
|
-
private
|
|
71
|
+
private publishEventTargetAsHost = (e: Event): void => {
|
|
72
72
|
// Publish the deepest event target (across shadow boundaries) rather
|
|
73
73
|
// than `this`. The downstream `ContextRequestEvent` will be dispatched
|
|
74
74
|
// from this host and must bubble up through `<schmancy-context>` to
|
|
@@ -87,28 +87,28 @@ export class SchmancyContext extends SchmancyElement {
|
|
|
87
87
|
override connectedCallback(): void {
|
|
88
88
|
super.connectedCallback();
|
|
89
89
|
for (const tmpl of this.provides) {
|
|
90
|
-
const isolated = tmpl.
|
|
90
|
+
const isolated = tmpl.isolatedInstance();
|
|
91
91
|
const ctx = createContext<unknown>(stateContextKey(tmpl.namespace));
|
|
92
92
|
// ContextProvider auto-wires via the host's ReactiveControllerHost
|
|
93
93
|
// interface (LitElement satisfies it). It listens for
|
|
94
94
|
// `context-request` events and responds with `isolated` for any
|
|
95
95
|
// requester whose `event.context === ctx`.
|
|
96
96
|
const provider = new ContextProvider(this, { context: ctx, initialValue: isolated });
|
|
97
|
-
this.
|
|
97
|
+
this.scoped.push({ isolated, provider });
|
|
98
98
|
}
|
|
99
99
|
for (const type of EVENT_TYPES) {
|
|
100
|
-
this.addEventListener(type, this.
|
|
100
|
+
this.addEventListener(type, this.publishEventTargetAsHost, { capture: true });
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
override disconnectedCallback(): void {
|
|
105
105
|
for (const type of EVENT_TYPES) {
|
|
106
|
-
this.removeEventListener(type, this.
|
|
106
|
+
this.removeEventListener(type, this.publishEventTargetAsHost, { capture: true });
|
|
107
107
|
}
|
|
108
|
-
for (const entry of this.
|
|
108
|
+
for (const entry of this.scoped) {
|
|
109
109
|
entry.isolated.destroy();
|
|
110
110
|
}
|
|
111
|
-
this.
|
|
111
|
+
this.scoped = [];
|
|
112
112
|
super.disconnectedCallback();
|
|
113
113
|
}
|
|
114
114
|
|
package/src/steps/index.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { consume } from '@lit/context'
|
|
2
|
+
import { SchmancyElement } from '@mixins/index'
|
|
2
3
|
import { css, html } from 'lit'
|
|
3
|
-
import { customElement, property, state } from 'lit/decorators.js'
|
|
4
|
+
import { customElement, property, queryAssignedNodes, state } from 'lit/decorators.js'
|
|
4
5
|
import { when } from 'lit/directives/when.js'
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { SchmancyElement } from '@mixins/index'
|
|
6
|
+
import { takeUntil } from 'rxjs/operators'
|
|
7
|
+
import { StepsController, stepsContext } from './steps.context'
|
|
8
8
|
|
|
9
9
|
@customElement('schmancy-step')
|
|
10
10
|
export class SchmancyStep extends SchmancyElement {
|
|
11
11
|
static styles = [css`
|
|
12
12
|
:host {
|
|
13
|
-
display:
|
|
14
|
-
/* Base display is just grid, flex properties will be applied dynamically */
|
|
13
|
+
display: block;
|
|
15
14
|
transition: all 0.2s ease-in-out;
|
|
16
15
|
}
|
|
17
16
|
`]
|
|
@@ -23,18 +22,11 @@ export class SchmancyStep extends SchmancyElement {
|
|
|
23
22
|
*/
|
|
24
23
|
@property({ type: Number }) position = 1
|
|
25
24
|
|
|
26
|
-
@property({ type: String })
|
|
25
|
+
@property({ type: String }) label = ''
|
|
27
26
|
@property({ type: String }) description = ''
|
|
28
27
|
|
|
29
|
-
// NEW: Allow a step to be explicitly marked as complete.
|
|
30
28
|
@property({ type: Boolean, reflect: true }) completed = false
|
|
31
29
|
|
|
32
|
-
/**
|
|
33
|
-
* NEW: Lock API to disable users from going back.
|
|
34
|
-
* When set to true, clicking on a previous (completed) step is ignored.
|
|
35
|
-
*/
|
|
36
|
-
@property({ type: Boolean }) lockBack = false
|
|
37
|
-
|
|
38
30
|
/**
|
|
39
31
|
* Consume the shared StepsController from context.
|
|
40
32
|
*/
|
|
@@ -47,80 +39,71 @@ export class SchmancyStep extends SchmancyElement {
|
|
|
47
39
|
@state()
|
|
48
40
|
private currentStep = 1
|
|
49
41
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
@state()
|
|
43
|
+
private hasContent = false
|
|
44
|
+
|
|
45
|
+
@queryAssignedNodes({ flatten: true })
|
|
46
|
+
private assignedNodes!: Node[]
|
|
54
47
|
|
|
55
48
|
connectedCallback() {
|
|
56
49
|
super.connectedCallback()
|
|
50
|
+
this.steps.currentStep$
|
|
51
|
+
.pipe(takeUntil(this.disconnecting))
|
|
52
|
+
.subscribe(step => {
|
|
53
|
+
this.currentStep = step
|
|
54
|
+
this.updateFlexProperties()
|
|
55
|
+
})
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
firstUpdated() {
|
|
60
|
-
// Subscribe to updates from the container's StepsController.
|
|
61
|
-
// Context is guaranteed to be available after first render
|
|
62
|
-
this.subscription = this.steps.currentStep$.subscribe(step => {
|
|
63
|
-
this.currentStep = step
|
|
64
|
-
// When the current step changes, update the flex properties
|
|
65
|
-
this.updateFlexProperties()
|
|
66
|
-
})
|
|
67
|
-
// Initial update of flex properties
|
|
68
59
|
this.updateFlexProperties()
|
|
69
60
|
}
|
|
70
61
|
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
|
|
62
|
+
private onSlotChange() {
|
|
63
|
+
this.hasContent = this.assignedNodes.some(
|
|
64
|
+
n => n.nodeType === Node.ELEMENT_NODE || (n.nodeType === Node.TEXT_NODE && n.textContent?.trim() !== ''),
|
|
65
|
+
)
|
|
66
|
+
this.updateFlexProperties()
|
|
74
67
|
}
|
|
75
68
|
|
|
76
|
-
/**
|
|
77
|
-
* Update the host element's flex properties based on active state
|
|
78
|
-
*/
|
|
79
69
|
private updateFlexProperties() {
|
|
80
70
|
const isActive = this.position === this.currentStep
|
|
81
|
-
|
|
82
|
-
if (isActive) {
|
|
83
|
-
// Apply flex-grow when active
|
|
84
|
-
this.style.flex = '1 1 auto'
|
|
85
|
-
} else {
|
|
86
|
-
// Make it shrink when not active
|
|
87
|
-
this.style.flex = '0 0 auto'
|
|
88
|
-
}
|
|
71
|
+
this.style.flex = isActive && this.hasContent ? '1 1 auto' : '0 0 auto'
|
|
89
72
|
}
|
|
90
73
|
|
|
91
|
-
/**
|
|
92
|
-
* Compute visual status for styling purposes. Note that if a step is explicitly
|
|
93
|
-
* marked as completed, it always appears as complete even if it's active.
|
|
94
|
-
*/
|
|
95
74
|
get status(): 'complete' | 'current' | 'upcoming' {
|
|
96
75
|
if (this.completed || this.position < this.currentStep) return 'complete'
|
|
97
76
|
if (this.position === this.currentStep) return 'current'
|
|
98
77
|
return 'upcoming'
|
|
99
78
|
}
|
|
100
79
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
* With lockBack enabled, clicking on a previous step is ignored.
|
|
104
|
-
*/
|
|
105
|
-
private _onStepClick(_e: Event) {
|
|
106
|
-
// If lockBack is enabled and the user attempts to go back, do nothing.
|
|
107
|
-
if (this.lockBack && this.position < this.currentStep) {
|
|
108
|
-
return
|
|
109
|
-
}
|
|
80
|
+
private onStepClick() {
|
|
81
|
+
if (this.steps.lockBack && this.position < this.currentStep) return
|
|
110
82
|
if (this.status !== 'upcoming') {
|
|
111
83
|
this.steps.setStep(this.position)
|
|
112
84
|
}
|
|
113
85
|
}
|
|
114
86
|
|
|
87
|
+
private onStepKeydown(e: KeyboardEvent) {
|
|
88
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
89
|
+
e.preventDefault()
|
|
90
|
+
this.onStepClick()
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
115
94
|
render() {
|
|
116
|
-
// Determine if the step is currently active.
|
|
117
95
|
const isActive = this.position === this.currentStep
|
|
118
|
-
|
|
119
|
-
// Use computed status for visual styling.
|
|
120
96
|
const isComplete = this.status === 'complete'
|
|
121
97
|
const isUpcoming = this.status === 'upcoming'
|
|
98
|
+
const navigable = !isUpcoming && !(this.steps.lockBack && this.position < this.currentStep)
|
|
122
99
|
|
|
123
|
-
|
|
100
|
+
if (this.hasContent) {
|
|
101
|
+
return this.renderContentRow(isActive, isComplete, isUpcoming, navigable)
|
|
102
|
+
}
|
|
103
|
+
return this.renderRailRow(isActive, isComplete, isUpcoming, navigable)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
private renderContentRow(isActive: boolean, isComplete: boolean, isUpcoming: boolean, navigable: boolean) {
|
|
124
107
|
const connectorClasses = {
|
|
125
108
|
'bg-tertiary-default': isComplete,
|
|
126
109
|
'bg-outlineVariant': !isComplete,
|
|
@@ -139,22 +122,19 @@ export class SchmancyStep extends SchmancyElement {
|
|
|
139
122
|
'text-surface-onVariant': isUpcoming,
|
|
140
123
|
}
|
|
141
124
|
|
|
142
|
-
|
|
143
|
-
const clickableClass = isActive || isComplete ? 'cursor-pointer' : ''
|
|
125
|
+
const clickableClass = navigable ? 'cursor-pointer' : ''
|
|
144
126
|
|
|
145
127
|
return html`
|
|
146
128
|
<li class="relative">
|
|
147
|
-
<!-- Connector line - responsive positioning -->
|
|
148
129
|
<div
|
|
149
130
|
class="absolute top-8 left-3 sm:left-4 -ml-px w-0.5 transition-colors duration-200 ${this.classMap(connectorClasses)}"
|
|
150
131
|
style="height: calc(100% + var(--steps-gap, 0px))"
|
|
151
132
|
aria-hidden="true"
|
|
152
133
|
></div>
|
|
153
134
|
|
|
154
|
-
<!-- Step Button/Label - adjusted padding for mobile -->
|
|
155
135
|
<button
|
|
156
136
|
type="button"
|
|
157
|
-
@click=${this.
|
|
137
|
+
@click=${this.onStepClick}
|
|
158
138
|
class="relative flex items-center group transition-all duration-200 hover:scale-[1.02] ${clickableClass} ${isActive ? 'bg-primary-container/20 -mx-1 sm:-mx-2 px-1 sm:px-2 py-2 sm:py-3 rounded-lg' : 'py-1 sm:py-2'}"
|
|
159
139
|
>
|
|
160
140
|
<span class="flex items-center h-10 sm:h-12">
|
|
@@ -181,7 +161,7 @@ export class SchmancyStep extends SchmancyElement {
|
|
|
181
161
|
|
|
182
162
|
<span class="flex flex-col items-start justify-center min-w-0 ml-3 sm:ml-6">
|
|
183
163
|
<schmancy-typography type="title" token="md">
|
|
184
|
-
<span class="transition-colors duration-200 ${this.classMap(textClasses)}">${this.
|
|
164
|
+
<span class="transition-colors duration-200 ${this.classMap(textClasses)}">${this.label}</span>
|
|
185
165
|
</schmancy-typography>
|
|
186
166
|
${when(
|
|
187
167
|
this.description,
|
|
@@ -194,18 +174,64 @@ export class SchmancyStep extends SchmancyElement {
|
|
|
194
174
|
</span>
|
|
195
175
|
</button>
|
|
196
176
|
|
|
197
|
-
<!-- Render step content if the step is active - responsive spacing -->
|
|
198
177
|
${when(
|
|
199
178
|
isActive,
|
|
200
179
|
() => html`
|
|
201
180
|
<div class="ml-6 sm:ml-10 mt-3 sm:mt-4 pb-6 sm:pb-8 transition-all duration-300 ease-out">
|
|
202
|
-
|
|
181
|
+
<slot @slotchange=${this.onSlotChange}></slot>
|
|
203
182
|
</div>
|
|
204
183
|
`,
|
|
205
184
|
)}
|
|
185
|
+
${when(!isActive, () => html`<slot @slotchange=${this.onSlotChange} style="display:none"></slot>`)}
|
|
206
186
|
</li>
|
|
207
187
|
`
|
|
208
188
|
}
|
|
189
|
+
|
|
190
|
+
private renderRailRow(isActive: boolean, isComplete: boolean, _isUpcoming: boolean, navigable: boolean) {
|
|
191
|
+
const isLast = !this.nextElementSibling?.matches('schmancy-step')
|
|
192
|
+
const labelClass = isActive
|
|
193
|
+
? 'text-primary-default'
|
|
194
|
+
: isComplete
|
|
195
|
+
? 'text-surface-on'
|
|
196
|
+
: 'text-surface-on-variant'
|
|
197
|
+
|
|
198
|
+
const dotClass = [
|
|
199
|
+
'relative z-10 w-3 h-3 rounded-full shrink-0 transition-colors duration-300',
|
|
200
|
+
isComplete || isActive ? 'bg-primary-default' : 'bg-outline',
|
|
201
|
+
isActive ? 'ring-2 ring-offset-2 ring-offset-surface-containerLow ring-primary-default' : '',
|
|
202
|
+
].join(' ')
|
|
203
|
+
|
|
204
|
+
return html`
|
|
205
|
+
<div
|
|
206
|
+
class="relative flex items-center gap-4 rounded-lg -mx-2 px-2 py-3 transition-colors duration-200 ${
|
|
207
|
+
navigable
|
|
208
|
+
? 'cursor-pointer hover:bg-primary-default/8 focus-visible:ring-2 focus-visible:ring-primary-default'
|
|
209
|
+
: ''
|
|
210
|
+
}"
|
|
211
|
+
role=${navigable ? 'button' : 'presentation'}
|
|
212
|
+
tabindex=${navigable ? '0' : '-1'}
|
|
213
|
+
aria-current=${isActive ? 'step' : 'false'}
|
|
214
|
+
aria-label=${navigable ? `Go back to ${this.label}` : this.label}
|
|
215
|
+
@click=${this.onStepClick}
|
|
216
|
+
@keydown=${this.onStepKeydown}
|
|
217
|
+
>
|
|
218
|
+
${when(
|
|
219
|
+
!isLast,
|
|
220
|
+
() => html`
|
|
221
|
+
<div
|
|
222
|
+
class="absolute left-3.5 top-1/2 w-px h-full transition-colors duration-300 ${
|
|
223
|
+
isComplete ? 'bg-primary-default' : 'bg-outline'
|
|
224
|
+
}"
|
|
225
|
+
aria-hidden="true"
|
|
226
|
+
></div>
|
|
227
|
+
`,
|
|
228
|
+
)}
|
|
229
|
+
<div class=${dotClass} aria-hidden="true"></div>
|
|
230
|
+
<schmancy-typography type="label" token="lg" class=${labelClass}>${this.label}</schmancy-typography>
|
|
231
|
+
</div>
|
|
232
|
+
<slot @slotchange=${this.onSlotChange} style="display:none"></slot>
|
|
233
|
+
`
|
|
234
|
+
}
|
|
209
235
|
}
|
|
210
236
|
|
|
211
237
|
declare global {
|
|
@@ -12,12 +12,11 @@ import { StepsController, stepsContext } from './steps.context'
|
|
|
12
12
|
*/
|
|
13
13
|
export type SchmancyStepsChangeEvent = CustomEvent<{ value: number }>
|
|
14
14
|
|
|
15
|
-
@customElement('schmancy-steps
|
|
16
|
-
export class
|
|
15
|
+
@customElement('schmancy-steps')
|
|
16
|
+
export class SchmancySteps extends SchmancyElement {
|
|
17
17
|
static styles = [css`
|
|
18
18
|
:host {
|
|
19
19
|
display: block;
|
|
20
|
-
overflow: auto;
|
|
21
20
|
}
|
|
22
21
|
`]
|
|
23
22
|
|
|
@@ -27,23 +26,27 @@ export class SchmancyStepsContainer extends SchmancyElement {
|
|
|
27
26
|
stepsController = this.controller
|
|
28
27
|
|
|
29
28
|
@property({ type: Number, reflect: true })
|
|
30
|
-
set
|
|
29
|
+
set value(v: number) {
|
|
31
30
|
const oldValue = this.controller.currentStep
|
|
32
|
-
if (oldValue !==
|
|
33
|
-
this.controller.setStep(
|
|
31
|
+
if (oldValue !== v) {
|
|
32
|
+
this.controller.setStep(v)
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
get
|
|
36
|
+
get value(): number {
|
|
38
37
|
return this.controller.currentStep
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
/**
|
|
42
|
-
*
|
|
43
|
-
* @default 4
|
|
41
|
+
* Block back-navigation for the whole stepper.
|
|
44
42
|
*/
|
|
45
|
-
@property({ type:
|
|
46
|
-
|
|
43
|
+
@property({ type: Boolean, reflect: true })
|
|
44
|
+
set lockBack(v: boolean) {
|
|
45
|
+
this.controller.lockBack = v
|
|
46
|
+
}
|
|
47
|
+
get lockBack(): boolean {
|
|
48
|
+
return this.controller.lockBack
|
|
49
|
+
}
|
|
47
50
|
|
|
48
51
|
connectedCallback() {
|
|
49
52
|
super.connectedCallback()
|
|
@@ -54,8 +57,6 @@ export class SchmancyStepsContainer extends SchmancyElement {
|
|
|
54
57
|
distinctUntilChanged(),
|
|
55
58
|
tap(step => {
|
|
56
59
|
this.requestUpdate()
|
|
57
|
-
// Use dispatchScopedEvent with bubbles: false to prevent collision
|
|
58
|
-
// with 'change' events bubbling up from inputs inside steps
|
|
59
60
|
this.dispatchScopedEvent('change', { value: step }, { bubbles: false })
|
|
60
61
|
}),
|
|
61
62
|
takeUntil(this.disconnecting),
|
|
@@ -64,39 +65,18 @@ export class SchmancyStepsContainer extends SchmancyElement {
|
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
/**
|
|
67
|
-
* Handle change events
|
|
68
|
-
* This prevents form inputs inside steps from triggering the parent's @change handler.
|
|
68
|
+
* Handle change events — stop propagation of bubbled events from children.
|
|
69
69
|
*/
|
|
70
70
|
private handleChange = (e: Event) => {
|
|
71
|
-
// Only stop propagation if the event is NOT from this component
|
|
72
|
-
// (i.e., it's bubbling up from a child element like an input)
|
|
73
71
|
if (e.target !== this) {
|
|
74
72
|
e.stopPropagation()
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
|
|
78
76
|
render() {
|
|
79
|
-
const gapClass = `gap-${this.gap}`
|
|
80
|
-
const gapRem =
|
|
81
|
-
{
|
|
82
|
-
0: '0',
|
|
83
|
-
1: '0.25rem',
|
|
84
|
-
2: '0.5rem',
|
|
85
|
-
3: '0.75rem',
|
|
86
|
-
4: '1rem',
|
|
87
|
-
5: '1.25rem',
|
|
88
|
-
6: '1.5rem',
|
|
89
|
-
8: '2rem',
|
|
90
|
-
10: '2.5rem',
|
|
91
|
-
12: '3rem',
|
|
92
|
-
16: '4rem',
|
|
93
|
-
20: '5rem',
|
|
94
|
-
24: '6rem',
|
|
95
|
-
}[this.gap] || '1rem'
|
|
96
|
-
|
|
97
77
|
return html`
|
|
98
|
-
<nav
|
|
99
|
-
<ol
|
|
78
|
+
<nav aria-label="Progress" @change=${this.handleChange}>
|
|
79
|
+
<ol role="list" style="display:contents">
|
|
100
80
|
<slot></slot>
|
|
101
81
|
</ol>
|
|
102
82
|
</nav>
|
|
@@ -106,6 +86,6 @@ export class SchmancyStepsContainer extends SchmancyElement {
|
|
|
106
86
|
|
|
107
87
|
declare global {
|
|
108
88
|
interface HTMLElementTagNameMap {
|
|
109
|
-
'schmancy-steps
|
|
89
|
+
'schmancy-steps': SchmancySteps
|
|
110
90
|
}
|
|
111
91
|
}
|
|
@@ -2,18 +2,19 @@ import { createContext } from '@lit/context'
|
|
|
2
2
|
import { BehaviorSubject } from 'rxjs'
|
|
3
3
|
|
|
4
4
|
export class StepsController {
|
|
5
|
-
private
|
|
5
|
+
private stepSubject = new BehaviorSubject(1)
|
|
6
|
+
lockBack = false
|
|
6
7
|
|
|
7
8
|
get currentStep$() {
|
|
8
|
-
return this.
|
|
9
|
+
return this.stepSubject.asObservable()
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
get currentStep() {
|
|
12
|
-
return this.
|
|
13
|
+
return this.stepSubject.value
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
setStep(step: number) {
|
|
16
|
-
this.
|
|
17
|
+
this.stepSubject.next(step)
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
|