@mhmo91/schmancy 0.10.42 → 0.10.43
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 +264 -79
- package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
- package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
- package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
- package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
- package/dist/agent/schmancy.agent.js +4031 -3891
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +215 -58
- package/dist/animation-CCOIW4wJ.cjs.map +1 -1
- package/dist/animation-DCznELuT.js.map +1 -1
- package/dist/area-CbajcnmJ.cjs +21 -0
- package/dist/area-CbajcnmJ.cjs.map +1 -0
- package/dist/{area-DtCNCb8w.js → area-MxLAyWgV.js} +22 -22
- package/dist/area-MxLAyWgV.js.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{audio-DdN76ikW.js → audio-B_0PGwYC.js} +1 -1
- package/dist/audio-B_0PGwYC.js.map +1 -0
- package/dist/{audio-B924fI5N.cjs → audio-CpwrIaw-.cjs} +1 -1
- package/dist/audio-CpwrIaw-.cjs.map +1 -0
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/autocomplete-CILzaDB7.cjs +115 -0
- package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
- package/dist/{autocomplete-UNOknYUz.js → autocomplete-DV9RxCun.js} +113 -113
- package/dist/autocomplete-DV9RxCun.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.cjs.map +1 -1
- package/dist/avatar.js +4 -4
- package/dist/avatar.js.map +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-BZah1Sf9.js → boat-DoZGgQ0P.js} +5 -5
- package/dist/{boat-BZah1Sf9.js.map → boat-DoZGgQ0P.js.map} +1 -1
- package/dist/{boat-D3bEjxf8.cjs → boat-sg0cWO8a.cjs} +2 -2
- package/dist/{boat-D3bEjxf8.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +32 -31
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +33 -32
- package/dist/breadcrumb.js.map +1 -1
- package/dist/busy-Brs-TDh9.cjs +133 -0
- package/dist/busy-Brs-TDh9.cjs.map +1 -0
- package/dist/busy-g4LoQmhB.js +172 -0
- package/dist/busy-g4LoQmhB.js.map +1 -0
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-CTvS5YX4.cjs → button-Cml67Y_d.cjs} +41 -32
- package/dist/button-Cml67Y_d.cjs.map +1 -0
- package/dist/{button-DgoDfcJx.js → button-DWANpZfD.js} +43 -34
- package/dist/button-DWANpZfD.js.map +1 -0
- package/dist/button.cjs +40 -33
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +42 -35
- package/dist/button.js.map +1 -1
- package/dist/calendar-2dJrw9pR.cjs +58 -0
- package/dist/calendar-2dJrw9pR.cjs.map +1 -0
- package/dist/calendar-kCe5LaBa.js +434 -0
- package/dist/calendar-kCe5LaBa.js.map +1 -0
- package/dist/calendar.cjs +1 -0
- package/dist/calendar.js +2 -0
- package/dist/{card-C6ijJZpF.js → card-CS_hYJbz.js} +136 -136
- package/dist/card-CS_hYJbz.js.map +1 -0
- package/dist/card-d0KhTnx5.cjs +177 -0
- package/dist/card-d0KhTnx5.cjs.map +1 -0
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-7vEPZuGC.js → checkbox-Bjp7kWuE.js} +2 -2
- package/dist/{checkbox-7vEPZuGC.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
- package/dist/{checkbox-DXKdxkXE.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
- package/dist/{checkbox-DXKdxkXE.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-9eG-96_D.cjs → chips-BHBVkxsa.cjs} +142 -153
- package/dist/chips-BHBVkxsa.cjs.map +1 -0
- package/dist/{chips-DF7akwz7.js → chips-DACeW7YL.js} +127 -138
- package/dist/chips-DACeW7YL.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +53 -35
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +55 -37
- package/dist/connectivity.js.map +1 -1
- 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-CVAWMdar.cjs +138 -0
- package/dist/date-range-CVAWMdar.cjs.map +1 -0
- package/dist/date-range-D2NZU5Yg.js +433 -0
- package/dist/date-range-D2NZU5Yg.js.map +1 -0
- package/dist/{date-range-inline-DV2c_gWM.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
- package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
- package/dist/{date-range-inline-BnOD-ddB.js → date-range-inline-D6Ozerzw.js} +3 -5
- package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
- 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 +2 -2
- package/dist/dayjs.min-CvRZTfam.cjs +1 -0
- package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
- package/dist/dayjs.min-DnELezPs.js +296 -0
- package/dist/dayjs.min-DnELezPs.js.map +1 -0
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +3 -3
- package/dist/{details-ByF66CyY.js → details-Ct1_GwKr.js} +104 -93
- package/dist/details-Ct1_GwKr.js.map +1 -0
- package/dist/{details-B2-jECBh.cjs → details-D4fVOaj4.cjs} +109 -98
- package/dist/details-D4fVOaj4.cjs.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{directives-DCb_LA9R.cjs → directives-B2VxfwRL.cjs} +1 -1
- package/dist/directives-B2VxfwRL.cjs.map +1 -0
- package/dist/{directives-BL7mzVsA.js → directives-Dj8jlv-Q.js} +3 -3
- package/dist/directives-Dj8jlv-Q.js.map +1 -0
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
- package/dist/discovery.service-DZFxtRwW.js.map +1 -1
- package/dist/divider-B3v33OnX.cjs +57 -0
- package/dist/divider-B3v33OnX.cjs.map +1 -0
- package/dist/divider-BJHW3q11.js +89 -0
- package/dist/divider-BJHW3q11.js.map +1 -0
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +40 -40
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +41 -41
- package/dist/dropdown.js.map +1 -1
- package/dist/{expand-cZ8rfCWP.js → expand-BT8mOu8Q.js} +103 -97
- package/dist/expand-BT8mOu8Q.js.map +1 -0
- package/dist/expand-D0YdR9nR.cjs +147 -0
- package/dist/expand-D0YdR9nR.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.cjs.map +1 -1
- package/dist/fab.js +2 -2
- package/dist/fab.js.map +1 -1
- package/dist/{float-DkGyWSWy.cjs → float-BPQlDyai.cjs} +1 -1
- package/dist/{float-DkGyWSWy.cjs.map → float-BPQlDyai.cjs.map} +1 -1
- package/dist/{float-zn3DgXBT.js → float-BQcxj3i_.js} +2 -2
- package/dist/{float-zn3DgXBT.js.map → float-BQcxj3i_.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-DowzVsgI.cjs → form-CoWFnClb.cjs} +8 -13
- package/dist/form-CoWFnClb.cjs.map +1 -0
- package/dist/{form-tG7LwDm4.js → form-hC2LvCHX.js} +10 -15
- package/dist/form-hC2LvCHX.js.map +1 -0
- package/dist/form.cjs +12 -13
- package/dist/form.cjs.map +1 -1
- package/dist/form.js +23 -24
- 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/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
- package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
- package/dist/icons-BeGKDZ-k.cjs +22 -0
- package/dist/icons-BeGKDZ-k.cjs.map +1 -0
- package/dist/{icons-Dup5skuk.js → icons-DEJnIxml.js} +20 -22
- package/dist/icons-DEJnIxml.js.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-CDJjnNmo.cjs → iframe-BkSukM9C.cjs} +9 -9
- package/dist/iframe-BkSukM9C.cjs.map +1 -0
- package/dist/{iframe-Xc3EPMZT.js → iframe-V3S-bwEY.js} +10 -10
- package/dist/iframe-V3S-bwEY.js.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 +61 -60
- package/dist/{input-cTyDxW9L.js → input-CPFCSQld.js} +3 -10
- package/dist/input-CPFCSQld.js.map +1 -0
- package/dist/{input-DnmC6J1T.cjs → input-DSfwfhhj.cjs} +2 -9
- package/dist/input-DSfwfhhj.cjs.map +1 -0
- package/dist/input-chip-BUuFJUky.cjs +129 -0
- package/dist/input-chip-BUuFJUky.cjs.map +1 -0
- package/dist/{input-chip-CYI17YOq.js → input-chip-C3a1fwKB.js} +87 -104
- package/dist/input-chip-C3a1fwKB.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +5 -1
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +8 -4
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +28 -28
- package/dist/kbd.cjs.map +1 -1
- package/dist/kbd.js +29 -29
- package/dist/kbd.js.map +1 -1
- package/dist/{layout-CNlZSJFU.cjs → layout-CdyHy_oX.cjs} +1 -1
- package/dist/layout-CdyHy_oX.cjs.map +1 -0
- package/dist/{layout-DDxw0EwL.js → layout-k6fOkpif.js} +1 -1
- package/dist/layout-k6fOkpif.js.map +1 -0
- package/dist/layout.cjs +26 -26
- package/dist/layout.cjs.map +1 -1
- package/dist/layout.js +27 -27
- package/dist/layout.js.map +1 -1
- package/dist/lazy-BaAiIUru.js.map +1 -1
- package/dist/lazy-C-7a4FAe.cjs.map +1 -1
- package/dist/{lightbox-CH-y3rYB.js → lightbox-DIG0VLOK.js} +8 -14
- package/dist/lightbox-DIG0VLOK.js.map +1 -0
- package/dist/{lightbox-CvtqoInF.cjs → lightbox-E5rgd-hu.cjs} +7 -13
- package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/list-BRz0rDSH.cjs +47 -0
- package/dist/list-BRz0rDSH.cjs.map +1 -0
- package/dist/{list-DrsawQ5R.js → list-NrOYDPBo.js} +42 -35
- package/dist/list-NrOYDPBo.js.map +1 -0
- 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-CsY5lMqY.js → menu-B1Ei9SVj.js} +12 -12
- package/dist/menu-B1Ei9SVj.js.map +1 -0
- package/dist/{menu-BFRcTe3o.cjs → menu-Duvl66Nl.cjs} +10 -10
- package/dist/menu-Duvl66Nl.cjs.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-BoMURWag.cjs → mixins-Cjn20BQH.cjs} +42 -100
- package/dist/mixins-Cjn20BQH.cjs.map +1 -0
- package/dist/{mixins-bCEXbwJV.js → mixins-q4KAL8Xr.js} +42 -100
- package/dist/mixins-q4KAL8Xr.js.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 +2 -4
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +3 -5
- package/dist/navigation-rail.js.map +1 -1
- package/dist/{notification-DFKRMmSq.js → notification-COhUhUCr.js} +5 -7
- package/dist/notification-COhUhUCr.js.map +1 -0
- package/dist/{notification-FBf3Mb2e.cjs → notification-DsdA_MJe.cjs} +2 -4
- package/dist/notification-DsdA_MJe.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-Ct0lGdH3.js → option-BIzgTbXz.js} +20 -20
- package/dist/option-BIzgTbXz.js.map +1 -0
- package/dist/option-C5hhqR2z.cjs +43 -0
- package/dist/option-C5hhqR2z.cjs.map +1 -0
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-sRXiMkjn.cjs → overlay-BzgF8P7i.cjs} +48 -41
- package/dist/overlay-BzgF8P7i.cjs.map +1 -0
- package/dist/{overlay-Bh8Q_R01.js → overlay-LoRRemny.js} +52 -45
- package/dist/overlay-LoRRemny.js.map +1 -0
- package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
- package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-CQihsR20.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
- package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
- package/dist/{overlay.confirm-body-Jc1EuMGs.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
- package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-BXPgS7ay.js → overlay.service-BuUeti6X.js} +2 -2
- package/dist/overlay.service-BuUeti6X.js.map +1 -0
- package/dist/{overlay.service-9Dp3g7ot.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
- package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
- package/dist/{progress-CYLshdo2.js → progress-D7n3SKAO.js} +50 -50
- package/dist/progress-D7n3SKAO.js.map +1 -0
- package/dist/progress-DsCnFsH5.cjs +51 -0
- package/dist/progress-DsCnFsH5.cjs.map +1 -0
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-6kCgOgBL.cjs → radio-group-CaAjg9UV.cjs} +1 -1
- package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
- package/dist/{radio-group-bZtZHOj_.js → radio-group-Drpl6Pl8.js} +2 -2
- package/dist/radio-group-Drpl6Pl8.js.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +4 -2
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +5 -3
- package/dist/range.js.map +1 -1
- package/dist/reduced-motion-D-L12p7G.js.map +1 -1
- package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
- package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
- package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/search-DPKoC-dT.cjs.map +1 -1
- package/dist/search-MvIBA93K.js.map +1 -1
- package/dist/{select-CU3X-PIa.js → select-CTXkrrVZ.js} +13 -13
- package/dist/select-CTXkrrVZ.js.map +1 -0
- package/dist/select-DcLcpPCh.cjs +56 -0
- package/dist/select-DcLcpPCh.cjs.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +37 -33
- package/dist/skeleton.cjs.map +1 -1
- package/dist/skeleton.js +38 -34
- package/dist/skeleton.js.map +1 -1
- package/dist/skills/schmancy/surface.md +38 -22
- package/dist/skills/surface.md +38 -22
- package/dist/slider.cjs +31 -31
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +32 -32
- package/dist/slider.js.map +1 -1
- package/dist/{sound.service-B4ZmXpH9.js → sound.service-AJwuk3yr.js} +1 -1
- package/dist/sound.service-AJwuk3yr.js.map +1 -0
- package/dist/{sound.service-DjlMvicQ.cjs → sound.service-CVsxhQkX.cjs} +1 -1
- package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
- package/dist/{splash-screen-emCLYoVl.js → splash-screen-DANfqvlo.js} +23 -26
- package/dist/splash-screen-DANfqvlo.js.map +1 -0
- package/dist/splash-screen-K74cgU6S.cjs +38 -0
- package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-DGDTkOvC.js → src-DAtcPmCb.js} +173 -175
- package/dist/src-DAtcPmCb.js.map +1 -0
- package/dist/src-DuRvYagm.cjs +237 -0
- package/dist/src-DuRvYagm.cjs.map +1 -0
- package/dist/{state-CumAEPQH.cjs → state-BWQiqN6I.cjs} +1 -1
- package/dist/state-BWQiqN6I.cjs.map +1 -0
- package/dist/{state-DMd_FUeA.js → state-DBA_gzJO.js} +1 -1
- package/dist/state-DBA_gzJO.js.map +1 -0
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +20 -12
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +21 -13
- package/dist/steps.js.map +1 -1
- package/dist/surface-COBvWWFb.cjs +7 -0
- package/dist/surface-COBvWWFb.cjs.map +1 -0
- package/dist/{surface-DNiYigsX.js → surface-DXk1X1tL.js} +9 -9
- package/dist/{surface-DNiYigsX.js.map → surface-DXk1X1tL.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +13 -4
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +14 -5
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +4 -10
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +5 -11
- package/dist/table.js.map +1 -1
- package/dist/{tabs-4T_4kCf-.js → tabs-BYhFWnsx.js} +7 -7
- package/dist/tabs-BYhFWnsx.js.map +1 -0
- package/dist/{tabs-Byxxt-AH.cjs → tabs-CJwB0fr0.cjs} +6 -6
- package/dist/tabs-CJwB0fr0.cjs.map +1 -0
- 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-kkYNk1ET.js → textarea-BjDx1w2g.js} +37 -41
- package/dist/textarea-BjDx1w2g.js.map +1 -0
- package/dist/{textarea-BwYwH9fu.cjs → textarea-CGgznhd6.cjs} +36 -40
- package/dist/textarea-CGgznhd6.cjs.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-BG0EnzYP.cjs → theme-BVul7lHS.cjs} +6 -6
- package/dist/{theme-BG0EnzYP.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
- package/dist/{theme-DwQBl6sr.js → theme-Dvm5J8nh.js} +11 -11
- package/dist/{theme-DwQBl6sr.js.map → theme-Dvm5J8nh.js.map} +1 -1
- package/dist/{theme-button-BD8anzsZ.js → theme-button-Bko5ohFP.js} +2 -2
- package/dist/{theme-button-BD8anzsZ.js.map → theme-button-Bko5ohFP.js.map} +1 -1
- package/dist/{theme-button-DlrNoCMA.cjs → theme-button-YLY7zR1c.cjs} +1 -1
- package/dist/{theme-button-DlrNoCMA.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
- package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
- package/dist/theme.js +4 -4
- package/dist/{theme.service-Dv_55nfE.js → theme.service-D94nm7Bf.js} +1 -1
- package/dist/theme.service-D94nm7Bf.js.map +1 -0
- package/dist/{theme.service-pjkTM209.cjs → theme.service-h2fXQq7x.cjs} +1 -1
- package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +14 -14
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +15 -15
- package/dist/tree.js.map +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.js +19 -2
- package/dist/types.js.map +1 -1
- package/dist/typewriter.cjs.map +1 -1
- package/dist/typewriter.js.map +1 -1
- package/dist/typography-ByF2k5yW.js +358 -0
- package/dist/typography-ByF2k5yW.js.map +1 -0
- package/dist/typography-Cfav17it.cjs +282 -0
- package/dist/typography-Cfav17it.cjs.map +1 -0
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/utils-DIXndz6Q.cjs.map +1 -0
- package/dist/utils-dSPH7Oh9.js.map +1 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/dist/visually-hidden.cjs +13 -13
- package/dist/visually-hidden.cjs.map +1 -1
- package/dist/visually-hidden.js +14 -14
- package/dist/visually-hidden.js.map +1 -1
- package/dist/window-Br1OmpL-.cjs +67 -0
- package/dist/window-Br1OmpL-.cjs.map +1 -0
- package/dist/{window-C76zstbV.js → window-CCmN4but.js} +24 -15
- package/dist/window-CCmN4but.js.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/surface.md +38 -22
- package/src/area/area.component.ts +249 -163
- package/src/area/area.service.test.ts +994 -1006
- package/src/area/area.service.ts +76 -72
- package/src/area/index.ts +7 -7
- package/src/area/lazy.ts +39 -42
- package/src/area/route.component.ts +54 -52
- package/src/area/router.types.ts +7 -7
- package/src/audio/emotional-sounds.ts +880 -801
- package/src/audio/sound.service.ts +26 -5
- package/src/avatar/avatar.ts +4 -4
- package/src/badge/badge.ts +15 -12
- package/src/badge/index.ts +1 -1
- package/src/boat/boat.ts +1 -1
- package/src/breadcrumb/breadcrumb.ts +37 -32
- package/src/busy/busy.ts +15 -12
- package/src/busy/index.ts +2 -2
- package/src/busy/spinner.ts +132 -119
- package/src/button/button.test.ts +5 -1
- package/src/button/button.ts +113 -72
- package/src/button/icon-button.ts +64 -46
- package/src/button/index.ts +2 -2
- package/src/calendar/calendar.test.ts +504 -0
- package/src/calendar/calendar.ts +587 -0
- package/src/calendar/index.ts +2 -0
- package/src/card/actions.ts +11 -9
- package/src/card/card.ts +79 -77
- package/src/card/content.ts +8 -6
- package/src/card/index.ts +4 -4
- package/src/card/media.ts +50 -50
- package/src/chips/assist-chip.ts +1 -1
- package/src/chips/chips.ts +1 -1
- package/src/chips/filter-chip.ts +1 -1
- package/src/chips/index.ts +1 -1
- package/src/chips/input-chip.ts +1 -1
- package/src/chips/suggestion-chip.ts +1 -1
- package/src/connectivity/connectivity-status.ts +90 -62
- package/src/content-drawer/drawer.service.ts +47 -36
- package/src/content-drawer/drawer.ts +31 -18
- package/src/content-drawer/index.ts +5 -5
- package/src/content-drawer/main.ts +9 -7
- package/src/content-drawer/sheet.ts +8 -6
- package/src/date-range-inline/date-range-inline.ts +523 -522
- package/src/date-range-inline/index.ts +2 -2
- package/src/delay/index.ts +1 -1
- package/src/details/details.ts +119 -105
- package/src/details/index.ts +1 -1
- package/src/directives/ai-badge.ts +1 -5
- package/src/directives/animate-text.ts +43 -31
- package/src/directives/art/effects/howl.ts +1 -4
- package/src/directives/art/effects/samwa.ts +11 -5
- package/src/directives/art/effects/snow.ts +1 -2
- package/src/directives/battery.ts +21 -12
- package/src/directives/confirm-click.ts +9 -17
- package/src/directives/cursor-glow.ts +1 -1
- package/src/directives/cycle-text.ts +7 -21
- package/src/directives/drag.ts +50 -45
- package/src/directives/fyi.ts +1 -6
- package/src/directives/gravity.ts +10 -8
- package/src/directives/hummingbird.ts +256 -107
- package/src/directives/index.ts +29 -29
- package/src/directives/intersect.ts +11 -11
- package/src/directives/layout.ts +25 -36
- package/src/directives/liquid.ts +4 -10
- package/src/directives/living-border.ts +7 -5
- package/src/directives/long-press.ts +2 -1
- package/src/directives/magnetic.ts +7 -6
- package/src/directives/nebula.ts +34 -28
- package/src/directives/overflow-within.ts +18 -20
- package/src/directives/reduced-motion.ts +9 -9
- package/src/directives/reveal.ts +193 -195
- package/src/directives/ripple.ts +9 -7
- package/src/directives/urgent.ts +3 -1
- package/src/directives/working-snake.ts +1 -1
- package/src/discovery/discovery.service.ts +198 -210
- package/src/discovery/index.ts +1 -1
- package/src/divider/divider.ts +49 -47
- package/src/divider/index.ts +1 -1
- package/src/dropdown/dropdown-content.ts +42 -40
- package/src/dropdown/index.ts +2 -2
- package/src/expand/expand-root.component.ts +70 -61
- package/src/expand/expand.component.ts +48 -43
- package/src/fab/fab.test.ts +1 -2
- package/src/fab/fab.ts +2 -4
- package/src/form/fields/autocomplete/autocomplete.scss +6 -2
- package/src/form/fields/autocomplete/autocomplete.ts +712 -724
- package/src/form/fields/autocomplete/index.ts +1 -1
- package/src/form/fields/checkbox/checkbox.ts +1 -4
- package/src/form/fields/chips/assist-chip.ts +69 -72
- package/src/form/fields/chips/chips.ts +14 -15
- package/src/form/fields/chips/filter-chip.ts +36 -32
- package/src/form/fields/chips/index.ts +5 -5
- package/src/form/fields/chips/input-chip.ts +130 -142
- package/src/form/fields/chips/suggestion-chip.ts +69 -72
- package/src/form/fields/date-range/date-range-dialog.ts +141 -194
- package/src/form/fields/date-range/date-range-helpers.ts +63 -64
- package/src/form/fields/date-range/date-range.test.ts +359 -122
- package/src/form/fields/date-range/date-range.ts +319 -395
- package/src/form/fields/date-range/index.ts +2 -2
- package/src/form/fields/input/index.ts +8 -8
- package/src/form/fields/input/input.scss +30 -26
- package/src/form/fields/input/input.test.ts +4 -1
- package/src/form/fields/input/input.ts +4 -20
- package/src/form/fields/radio-group/index.ts +2 -2
- package/src/form/fields/radio-group/radio-button.ts +8 -8
- package/src/form/fields/radio-group/radio-group.ts +4 -1
- package/src/form/fields/range/range.ts +3 -1
- package/src/form/fields/select/index.ts +2 -2
- package/src/form/fields/select/select.ts +51 -45
- package/src/form/fields/switch/switch.ts +13 -7
- package/src/form/fields/textarea/index.ts +1 -1
- package/src/form/fields/textarea/textarea.ts +44 -49
- package/src/form/form-summary.ts +15 -14
- package/src/form/form.test.ts +0 -1
- package/src/form/form.ts +11 -23
- package/src/icons/icon.ts +25 -25
- package/src/icons/index.ts +1 -1
- package/src/iframe/iframe.ts +11 -9
- package/src/index.ts +1 -0
- package/src/json/json.ts +9 -2
- package/src/kbd/kbd.ts +30 -28
- package/src/layout/scroll/index.ts +1 -1
- package/src/layout/scroll/scroll.ts +54 -54
- package/src/lightbox/lightbox-service.ts +27 -18
- package/src/lightbox/lightbox.directive.ts +2 -1
- package/src/lightbox/lightbox.ts +21 -38
- package/src/list/index.ts +3 -3
- package/src/list/list-item.ts +32 -26
- package/src/list/list.ts +13 -8
- package/src/menu/index.ts +2 -2
- package/src/menu/menu-item.ts +7 -5
- package/src/menu/menu.ts +8 -6
- package/src/nav-drawer/appbar.ts +9 -7
- package/src/nav-drawer/content.ts +10 -8
- package/src/nav-drawer/drawer.ts +29 -25
- package/src/nav-drawer/index.ts +6 -6
- package/src/navigation-bar/index.ts +2 -2
- package/src/navigation-bar/navigation-bar-item.ts +127 -118
- package/src/navigation-bar/navigation-bar.ts +103 -91
- package/src/navigation-rail/index.ts +2 -2
- package/src/navigation-rail/navigation-rail.ts +21 -22
- package/src/notification/index.ts +6 -6
- package/src/notification/notification-service.ts +1 -2
- package/src/notification/notification.scss +5 -1
- package/src/notification/notification.ts +1 -3
- package/src/notification/notify.ts +204 -207
- package/src/option/index.ts +1 -1
- package/src/option/option.ts +26 -25
- package/src/overlay/overlay.animations.ts +4 -14
- package/src/overlay/overlay.component.ts +110 -131
- package/src/overlay/overlay.confirm-body.ts +26 -48
- package/src/overlay/overlay.gestures.ts +8 -10
- package/src/overlay/overlay.layout.ts +1 -4
- package/src/overlay/overlay.positioning.ts +4 -15
- package/src/overlay/overlay.service.ts +9 -24
- package/src/overlay/overlay.stack.test.ts +4 -1
- package/src/overlay/overlay.stack.ts +4 -4
- package/src/overlay/overlay.types.ts +11 -20
- package/src/progress/index.ts +1 -1
- package/src/progress/progress.ts +135 -133
- package/src/rxjs-utils/index.ts +6 -6
- package/src/rxjs-utils/waitForElement.ts +20 -20
- package/src/rxjs-utils/waitForElementAll.ts +21 -21
- package/src/rxjs-utils/waitForElements.ts +27 -27
- package/src/rxjs-utils/waitForElementsAll.ts +27 -29
- package/src/rxjs-utils/waitUntil.ts +7 -12
- package/src/skeleton/skeleton.ts +39 -33
- package/src/slider/index.ts +2 -2
- package/src/slider/slide.ts +14 -12
- package/src/slider/slider.ts +24 -22
- package/src/splash-screen/index.ts +1 -1
- package/src/splash-screen/splash-screen.ts +26 -27
- package/src/state/active-host.ts +4 -5
- package/src/state/index.ts +34 -53
- package/src/state/persist.ts +14 -11
- package/src/state/schmancy-context.ts +88 -88
- package/src/state/state.test-d.ts +3 -13
- package/src/state/state.test.ts +1 -4
- package/src/steps/index.ts +3 -3
- package/src/steps/schmancy-step.ts +41 -31
- package/src/steps/schmancy-steps.ts +7 -5
- package/src/surface/index.ts +1 -1
- package/src/surface/surface.styles.ts +53 -104
- package/src/surface/surface.ts +10 -8
- package/src/table/index.ts +2 -2
- package/src/table/row.ts +1 -4
- package/src/table/table.ts +2 -5
- package/src/tabs/index.ts +2 -2
- package/src/tabs/tabs-group.ts +8 -6
- package/src/teleport/index.ts +2 -2
- package/src/test-utils/a11y.ts +1 -3
- package/src/theme/index.ts +17 -17
- package/src/theme/theme-audio-player.ts +18 -16
- package/src/theme/theme-controller-boat.ts +1 -1
- package/src/theme/theme-controller.ts +36 -32
- package/src/theme/theme.component.ts +5 -9
- package/src/theme/theme.events.ts +1 -1
- package/src/theme/theme.format.ts +7 -7
- package/src/theme/theme.service.ts +453 -468
- package/src/theme/theme.style.css +78 -23
- package/src/theme-button/index.ts +1 -1
- package/src/tooltip/tooltip.directive.ts +1 -1
- package/src/tree/index.ts +1 -1
- package/src/tree/tree.ts +24 -16
- package/src/types/surface.ts +38 -44
- package/src/typewriter/typewriter.directive.ts +30 -39
- package/src/typography/typography.ts +289 -269
- package/src/utils/animation.ts +2 -8
- package/src/utils/index.ts +6 -6
- package/src/utils/number.ts +480 -517
- package/src/utils/overlay-stack.ts +1 -3
- package/src/utils/search.ts +5 -9
- package/src/visually-hidden/visually-hidden.ts +15 -13
- package/src/window/window-manager.ts +6 -1
- package/src/window/window-position.ts +7 -5
- package/src/window/window.ts +143 -108
- package/types/src/calendar/calendar.d.ts +108 -0
- package/types/src/calendar/calendar.test.d.ts +1 -0
- package/types/src/calendar/index.d.ts +2 -0
- package/types/src/directives/cursor-glow.d.ts +1 -1
- package/types/src/directives/hummingbird.d.ts +3 -3
- package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
- package/types/src/form/fields/date-range/date-range.d.ts +35 -66
- package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
- package/types/src/form/fields/date-range/index.d.ts +1 -1
- package/types/src/index.d.ts +1 -0
- package/types/src/surface/surface.styles.d.ts +13 -6
- package/types/src/types/surface.d.ts +17 -22
- package/types/src/utils/number.d.ts +1 -1
- package/dist/SchmancyElement-OG71FtNv.js +0 -286
- package/dist/SchmancyElement-OG71FtNv.js.map +0 -1
- package/dist/SchmancyElement-PS1u0j1B.cjs +0 -2
- package/dist/SchmancyElement-PS1u0j1B.cjs.map +0 -1
- package/dist/area-CaEI33G0.cjs +0 -21
- package/dist/area-CaEI33G0.cjs.map +0 -1
- package/dist/area-DtCNCb8w.js.map +0 -1
- package/dist/audio-B924fI5N.cjs.map +0 -1
- package/dist/audio-DdN76ikW.js.map +0 -1
- package/dist/autocomplete-Dq3BkitV.cjs +0 -115
- package/dist/autocomplete-Dq3BkitV.cjs.map +0 -1
- package/dist/autocomplete-UNOknYUz.js.map +0 -1
- package/dist/busy--WqiXKnl.cjs +0 -134
- package/dist/busy--WqiXKnl.cjs.map +0 -1
- package/dist/busy-DzXyO0z6.js +0 -173
- package/dist/busy-DzXyO0z6.js.map +0 -1
- package/dist/button-CTvS5YX4.cjs.map +0 -1
- package/dist/button-DgoDfcJx.js.map +0 -1
- package/dist/card-C6ijJZpF.js.map +0 -1
- package/dist/card-Ci3_9Dd4.cjs +0 -177
- package/dist/card-Ci3_9Dd4.cjs.map +0 -1
- package/dist/chips-9eG-96_D.cjs.map +0 -1
- package/dist/chips-DF7akwz7.js.map +0 -1
- package/dist/date-range-C13_R3OA.js +0 -966
- package/dist/date-range-C13_R3OA.js.map +0 -1
- package/dist/date-range-Q2xj5Syc.cjs +0 -142
- package/dist/date-range-Q2xj5Syc.cjs.map +0 -1
- package/dist/date-range-inline-BnOD-ddB.js.map +0 -1
- package/dist/date-range-inline-DV2c_gWM.cjs.map +0 -1
- package/dist/details-B2-jECBh.cjs.map +0 -1
- package/dist/details-ByF66CyY.js.map +0 -1
- package/dist/directives-BL7mzVsA.js.map +0 -1
- package/dist/directives-DCb_LA9R.cjs.map +0 -1
- package/dist/divider-Bv2QiOZL.cjs +0 -57
- package/dist/divider-Bv2QiOZL.cjs.map +0 -1
- package/dist/divider-gYuz0zDU.js +0 -89
- package/dist/divider-gYuz0zDU.js.map +0 -1
- package/dist/expand-B9IUGVtc.cjs +0 -141
- package/dist/expand-B9IUGVtc.cjs.map +0 -1
- package/dist/expand-cZ8rfCWP.js.map +0 -1
- package/dist/form-DowzVsgI.cjs.map +0 -1
- package/dist/form-tG7LwDm4.js.map +0 -1
- package/dist/icons-BZeCloP9.cjs +0 -24
- package/dist/icons-BZeCloP9.cjs.map +0 -1
- package/dist/icons-Dup5skuk.js.map +0 -1
- package/dist/iframe-CDJjnNmo.cjs.map +0 -1
- package/dist/iframe-Xc3EPMZT.js.map +0 -1
- package/dist/input-DnmC6J1T.cjs.map +0 -1
- package/dist/input-cTyDxW9L.js.map +0 -1
- package/dist/input-chip-CV91URyU.cjs +0 -146
- package/dist/input-chip-CV91URyU.cjs.map +0 -1
- package/dist/input-chip-CYI17YOq.js.map +0 -1
- package/dist/layout-CNlZSJFU.cjs.map +0 -1
- package/dist/layout-DDxw0EwL.js.map +0 -1
- package/dist/lightbox-CH-y3rYB.js.map +0 -1
- package/dist/lightbox-CvtqoInF.cjs.map +0 -1
- package/dist/list-Dl8KfxrF.cjs +0 -40
- package/dist/list-Dl8KfxrF.cjs.map +0 -1
- package/dist/list-DrsawQ5R.js.map +0 -1
- package/dist/menu-BFRcTe3o.cjs.map +0 -1
- package/dist/menu-CsY5lMqY.js.map +0 -1
- package/dist/mixins-BoMURWag.cjs.map +0 -1
- package/dist/mixins-bCEXbwJV.js.map +0 -1
- package/dist/notification-DFKRMmSq.js.map +0 -1
- package/dist/notification-FBf3Mb2e.cjs.map +0 -1
- package/dist/option-Ct0lGdH3.js.map +0 -1
- package/dist/option-Il1KpU8M.cjs +0 -43
- package/dist/option-Il1KpU8M.cjs.map +0 -1
- package/dist/overlay-Bh8Q_R01.js.map +0 -1
- package/dist/overlay-sRXiMkjn.cjs.map +0 -1
- package/dist/overlay.confirm-body-CQihsR20.js.map +0 -1
- package/dist/overlay.confirm-body-Jc1EuMGs.cjs.map +0 -1
- package/dist/overlay.service-9Dp3g7ot.cjs.map +0 -1
- package/dist/overlay.service-BXPgS7ay.js.map +0 -1
- package/dist/progress-CWC5XYZ_.cjs +0 -51
- package/dist/progress-CWC5XYZ_.cjs.map +0 -1
- package/dist/progress-CYLshdo2.js.map +0 -1
- package/dist/radio-group-6kCgOgBL.cjs.map +0 -1
- package/dist/radio-group-bZtZHOj_.js.map +0 -1
- package/dist/select-CU3X-PIa.js.map +0 -1
- package/dist/select-MXsF8KsU.cjs +0 -56
- package/dist/select-MXsF8KsU.cjs.map +0 -1
- package/dist/sound.service-B4ZmXpH9.js.map +0 -1
- package/dist/sound.service-DjlMvicQ.cjs.map +0 -1
- package/dist/splash-screen-CN9dZcqC.cjs +0 -41
- package/dist/splash-screen-CN9dZcqC.cjs.map +0 -1
- package/dist/splash-screen-emCLYoVl.js.map +0 -1
- package/dist/src-DGDTkOvC.js.map +0 -1
- package/dist/src-DK3111z_.cjs +0 -240
- package/dist/src-DK3111z_.cjs.map +0 -1
- package/dist/state-CumAEPQH.cjs.map +0 -1
- package/dist/state-DMd_FUeA.js.map +0 -1
- package/dist/surface-DGI-FBoi.cjs +0 -7
- package/dist/surface-DGI-FBoi.cjs.map +0 -1
- package/dist/tabs-4T_4kCf-.js.map +0 -1
- package/dist/tabs-Byxxt-AH.cjs.map +0 -1
- package/dist/textarea-BwYwH9fu.cjs.map +0 -1
- package/dist/textarea-kkYNk1ET.js.map +0 -1
- package/dist/theme.service-Dv_55nfE.js.map +0 -1
- package/dist/theme.service-pjkTM209.cjs.map +0 -1
- package/dist/typography-BVkU11_q.js +0 -358
- package/dist/typography-BVkU11_q.js.map +0 -1
- package/dist/typography-aaQaIcNc.cjs +0 -282
- package/dist/typography-aaQaIcNc.cjs.map +0 -1
- package/dist/utils-DTa3QHxk.cjs.map +0 -1
- package/dist/utils-H8wNknWC.js.map +0 -1
- package/dist/window-C76zstbV.js.map +0 -1
- package/dist/window-CmB9XZzT.cjs +0 -58
- package/dist/window-CmB9XZzT.cjs.map +0 -1
- package/src/form/fields/date-range/date-range-presets.ts +0 -220
- package/src/form/fields/date-range/date-utils.ts +0 -58
- package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
- package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
- /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
- /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
- /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
- /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
- /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
- /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
- /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
- /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { u as e } from "./SchmancyElement-
|
|
2
|
-
import { o as t } from "./mixins-
|
|
1
|
+
import { u as e } from "./SchmancyElement-Ob9yGkiG.js";
|
|
2
|
+
import { o as t } from "./mixins-q4KAL8Xr.js";
|
|
3
3
|
import { t as n } from "./search-MvIBA93K.js";
|
|
4
|
-
import "./input-chip-
|
|
4
|
+
import "./input-chip-C3a1fwKB.js";
|
|
5
5
|
import { BehaviorSubject as r, combineLatest as i, fromEvent as a, timer as o } from "rxjs";
|
|
6
6
|
import { debounceTime as s, distinctUntilChanged as c, takeUntil as l, tap as u } from "rxjs/operators";
|
|
7
7
|
import { classMap as d } from "lit/directives/class-map.js";
|
|
@@ -163,30 +163,32 @@ var T = class extends t(y(":host{display:block;border:unset!important;line-heigh
|
|
|
163
163
|
}
|
|
164
164
|
})();
|
|
165
165
|
return _`
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
<div class="relative">
|
|
167
|
+
<!-- Screen reader live region -->
|
|
168
|
+
<div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
<!-- Description -->
|
|
171
|
+
${this.description ? _`<div id="${e}" class="sr-only">${this.description}</div>` : ""}
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
173
|
+
<!-- Custom input wrapper for Gmail-style chip input -->
|
|
174
|
+
<slot name="trigger">
|
|
175
|
+
${w(this.multi, () => _`
|
|
176
|
+
<!-- Custom multi-select input with inline chips -->
|
|
177
|
+
<div class="relative">
|
|
178
|
+
${w(this.label, () => _`
|
|
179
|
+
<label
|
|
180
|
+
class="${d({
|
|
180
181
|
"block mb-1 font-medium": !0,
|
|
181
182
|
"text-primary-default": !this.error,
|
|
182
183
|
"text-error-default": this.error,
|
|
183
184
|
[i]: !0
|
|
184
|
-
})}"
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
185
|
+
})}"
|
|
186
|
+
>
|
|
187
|
+
${this.label}${this.required ? _`<span class="text-error-default ml-1">*</span>` : ""}
|
|
188
|
+
</label>
|
|
189
|
+
`)}
|
|
190
|
+
<div
|
|
191
|
+
class="${d({
|
|
190
192
|
"flex flex-wrap items-center gap-1": !0,
|
|
191
193
|
[t]: !0,
|
|
192
194
|
[n]: !0,
|
|
@@ -197,107 +199,107 @@ var T = class extends t(y(":host{display:block;border:unset!important;line-heigh
|
|
|
197
199
|
"ring-error-default focus-within:ring-error-default": this.error,
|
|
198
200
|
"cursor-text transition-colors duration-200": !0
|
|
199
201
|
})}"
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
202
|
+
@click=${() => this.focusTextInput()}
|
|
203
|
+
role="combobox"
|
|
204
|
+
aria-autocomplete="list"
|
|
205
|
+
aria-haspopup="listbox"
|
|
206
|
+
aria-controls="options"
|
|
207
|
+
aria-expanded=${this.open}
|
|
208
|
+
>
|
|
209
|
+
<!-- Render chips inline -->
|
|
210
|
+
${C(this.selectedValues$.value, (e) => e, (e) => _`
|
|
211
|
+
<schmancy-input-chip
|
|
212
|
+
.value=${e}
|
|
213
|
+
@remove=${(e) => this.handleChipRemove(e.detail.value)}
|
|
214
|
+
class="shrink-0 my-0.5"
|
|
215
|
+
>
|
|
216
|
+
${this.getChipLabel(e)}
|
|
217
|
+
</schmancy-input-chip>
|
|
218
|
+
`)}
|
|
217
219
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
220
|
+
<!-- Text input for typing -->
|
|
221
|
+
<input
|
|
222
|
+
${S(this.inputElementRef)}
|
|
223
|
+
id="autocomplete-input"
|
|
224
|
+
type="text"
|
|
225
|
+
class="flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${r} font-medium text-surface-on placeholder:text-muted"
|
|
226
|
+
name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-") || ""}
|
|
227
|
+
.placeholder=${this.selectedValues$.value.length > 0 ? "Add more..." : this.placeholder}
|
|
228
|
+
.value=${this.inputValue}
|
|
229
|
+
.autocomplete=${this.autocomplete}
|
|
230
|
+
aria-invalid=${this.error ? "true" : "false"}
|
|
231
|
+
aria-required=${this.required ? "true" : "false"}
|
|
232
|
+
aria-describedby=${this.error && this.validationMessage ? `${this.a11yId}-err` : v}
|
|
233
|
+
aria-label=${!this.label && this.placeholder ? this.placeholder : v}
|
|
234
|
+
@input=${(e) => {
|
|
233
235
|
let t = e.target.value;
|
|
234
236
|
this.inputValue = t, this.inputValue$.next(t);
|
|
235
237
|
}}
|
|
236
|
-
|
|
238
|
+
@focus=${(e) => {
|
|
237
239
|
e.stopPropagation(), this.inputValue = "", this.inputValue$.next(""), this.openDropdown();
|
|
238
240
|
}}
|
|
239
|
-
|
|
241
|
+
@keydown=${(e) => {
|
|
240
242
|
this.handleKeyDown(e);
|
|
241
243
|
}}
|
|
242
|
-
|
|
244
|
+
@blur=${() => {
|
|
243
245
|
this.handleAutoSelectOnBlur();
|
|
244
246
|
}}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
+
/>
|
|
248
|
+
</div>
|
|
247
249
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
250
|
+
<!-- Validation message -->
|
|
251
|
+
${w(this.error && this.validationMessage, () => _`
|
|
252
|
+
<div id="${this.a11yId}-err" class="mt-1 text-sm text-error-default" role="alert">
|
|
253
|
+
${this.validationMessage}
|
|
254
|
+
</div>
|
|
255
|
+
`)}
|
|
256
|
+
</div>
|
|
257
|
+
`, () => _`
|
|
258
|
+
<!-- Regular single-select input -->
|
|
259
|
+
<schmancy-input
|
|
260
|
+
.size=${this.size}
|
|
261
|
+
${S(this.inputElementRef)}
|
|
262
|
+
id="autocomplete-input"
|
|
263
|
+
class="w-full"
|
|
264
|
+
.name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-") || ""}
|
|
265
|
+
.label=${this.label}
|
|
266
|
+
.placeholder=${this.placeholder}
|
|
267
|
+
.required=${this.required}
|
|
268
|
+
.value=${this.inputValue}
|
|
269
|
+
type="text"
|
|
270
|
+
autocomplete=${this.autocomplete}
|
|
271
|
+
clickable
|
|
272
|
+
role="combobox"
|
|
273
|
+
aria-autocomplete="list"
|
|
274
|
+
aria-haspopup="listbox"
|
|
275
|
+
aria-controls="options"
|
|
276
|
+
aria-expanded=${this.open}
|
|
277
|
+
aria-describedby=${b(this.description ? e : void 0)}
|
|
278
|
+
@input=${(e) => {
|
|
277
279
|
let t = e.target.value;
|
|
278
280
|
this.inputValue = t, this.inputValue$.next(t);
|
|
279
281
|
}}
|
|
280
|
-
|
|
282
|
+
@focus=${(e) => {
|
|
281
283
|
e.stopPropagation(), this.openDropdown();
|
|
282
284
|
}}
|
|
283
|
-
|
|
285
|
+
@click=${(e) => {
|
|
284
286
|
e.stopPropagation(), this.openDropdown();
|
|
285
287
|
}}
|
|
286
|
-
|
|
288
|
+
@keydown=${(e) => {
|
|
287
289
|
this.handleKeyDown(e);
|
|
288
290
|
}}
|
|
289
|
-
|
|
291
|
+
@blur=${() => {
|
|
290
292
|
this.handleAutoSelectOnBlur();
|
|
291
293
|
}}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
294
|
+
>
|
|
295
|
+
</schmancy-input>
|
|
296
|
+
`)}
|
|
297
|
+
</slot>
|
|
296
298
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
<!-- Options dropdown -->
|
|
300
|
+
<ul
|
|
301
|
+
id="options"
|
|
302
|
+
class=${d({
|
|
301
303
|
absolute: !0,
|
|
302
304
|
"z-[1000]": !0,
|
|
303
305
|
"mt-1": !0,
|
|
@@ -310,22 +312,20 @@ var T = class extends t(y(":host{display:block;border:unset!important;line-heigh
|
|
|
310
312
|
flex: !0,
|
|
311
313
|
"flex-col": !0
|
|
312
314
|
})}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
315
|
+
role="listbox"
|
|
316
|
+
aria-multiselectable=${this.multi ? "true" : "false"}
|
|
317
|
+
aria-label=${`${this.label || "Options"} dropdown`}
|
|
318
|
+
?hidden=${!this.open}
|
|
319
|
+
style="max-height: ${this.maxHeight}; display: ${this.open ? "flex" : "none"};"
|
|
320
|
+
@slotchange=${() => {
|
|
319
321
|
this.setupOptionHandlers();
|
|
320
322
|
}}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
</div>
|
|
328
|
-
`;
|
|
323
|
+
>
|
|
324
|
+
<slot></slot>
|
|
325
|
+
${this.hasResults ? "" : _` <li class="px-3 py-2 text-sm text-muted">No results found</li> `}
|
|
326
|
+
</ul>
|
|
327
|
+
</div>
|
|
328
|
+
`;
|
|
329
329
|
}
|
|
330
330
|
handleAutoSelectOnBlur() {
|
|
331
331
|
if (this.multi || !this.open || !this.inputValue.trim()) return;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete-DV9RxCun.js","names":[],"sources":["../src/form/fields/autocomplete/autocomplete.scss?inline","../src/form/fields/autocomplete/autocomplete.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n\tborder: unset !important;\n\tline-height: unset !important;\n\tbackground: unset !important;\n\tpadding: unset !important;\n\tfont-size: unset !important;\n\tbox-shadow: unset !important;\n}\n\n:host:focus {\n\tbox-shadow: unset !important;\n}\n\n@keyframes onAutoFillStart {\n\tfrom {\n\t\t/**/\n\t}\n\tto {\n\t\t/**/\n\t}\n}\n\nsch-input::part(input):-webkit-autofill,\nsch-input input:-webkit-autofill {\n\tanimation-name: onAutoFillStart;\n\tanimation-duration: 1ms;\n}\n","import { SchmancyFormField } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport { BehaviorSubject, combineLatest, fromEvent, timer } from 'rxjs'\nimport { debounceTime, distinctUntilChanged, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../../../utils/search'\n// Import chip component for multi-select display\nimport '../../../chips/input-chip'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n\tvalues?: string[]\n}>\n\ninterface FilteredOption {\n\toption: SchmancyOption\n\tscore: number\n}\n\n/**\n * Autocomplete input component with filtering and multi-select support.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} label - Label text displayed above the input\n * @prop {string} placeholder - Placeholder text for the input\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} multi - Enable multi-select mode\n * @prop {string} value - Selected value (single select mode)\n * @prop {string[]} values - Selected values (multi-select mode)\n */\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends SchmancyFormField(unsafeCSS(style)) {\n\t// `formAssociated`, `internals`, `attachInternals`, `name`, `label`,\n\t// `required`, `disabled`, `error`, `validationMessage`, `hint`, `id`,\n\t// `validateOn`, `touched/dirty/submitted`, `markTouched/markSubmitted`,\n\t// `setCustomValidity`, `formDisabledCallback`, FIELD_CONNECT_EVENT dispatch\n\t// — all from the mixin.\n\n\t/** Override mixin's resetForm with autocomplete-specific subject reset. */\n\toverride resetForm(): void {\n\t\tif (this.multi) {\n\t\t\tthis.selectedValues$.next([])\n\t\t} else {\n\t\t\tthis.selectedValue$.next('')\n\t\t}\n\t\tthis.inputValue = ''\n\t\tthis.inputValue$.next('')\n\t\tsuper.resetForm()\n\t}\n\n\t// Track whether value/values have been explicitly set\n\tvalueSet: boolean = false\n\tvaluesSet: boolean = false\n\n\t// Autocomplete-specific properties only — `name`, `label`, `required`,\n\t// `error`, `validationMessage` come from the mixin.\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) maxHeight = '300px'\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) description = ''\n\t@property({ type: String, reflect: true }) size: InputSize = 'md'\n\t@property({ type: String }) autocomplete = 'off'\n\t@property({ type: Number }) debounceMs = 200\n\t@property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n\tprivate readonly a11yId = `schmancy-autocomplete-${Math.random().toString(36).slice(2, 10)}`\n\n\t// Values property for multi-select mode\n\t@property({ type: Array })\n\tget values() {\n\t\treturn [...this.selectedValues$.value]\n\t}\n\tset values(vals: string[]) {\n\t\tthis.valuesSet = true\n\t\tthis.selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n\t}\n\n\t// Value property — narrowed override of the mixin's wide value union.\n\t@property({ type: String, reflect: true })\n\toverride get value(): string {\n\t\treturn this.multi ? this.selectedValues$.value.join(',') : this.selectedValue$.value\n\t}\n\toverride set value(val: string) {\n\t\tthis.valueSet = true\n\t\tif (this.multi) {\n\t\t\tconst newValues = val\n\t\t\t\t? val\n\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t.map(v => v.trim())\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t: []\n\t\t\tconst currentValues = this.selectedValues$.value\n\t\t\t// Only update if values actually changed\n\t\t\tif (JSON.stringify(newValues) !== JSON.stringify(currentValues)) {\n\t\t\t\tthis.selectedValues$.next(newValues)\n\t\t\t}\n\t\t} else {\n\t\t\t// Only update if value actually changed\n\t\t\tif (val !== this.selectedValue$.value) {\n\t\t\t\tthis.selectedValue$.next(val)\n\t\t\t\t// Update the input display when value is set\n\t\t\t\tthis.updateInputDisplay()\n\t\t\t}\n\t\t}\n\t}\n\n\t// State\n\t@state() private open = false\n\t@state() private inputValue = ''\n\t@state() private visibleOptionsCount = 0\n\t@state() private hasResults = true\n\n\t// DOM references\n\t@query('#options') listbox!: HTMLUListElement\n\t@query('sch-input') input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate inputElementRef = createRef<HTMLInputElement>()\n\n\t// RxJS Subjects - only what we actually need\n\tprivate selectedValue$ = new BehaviorSubject<string>('')\n\tprivate selectedValues$ = new BehaviorSubject<string[]>([])\n\tprivate inputValue$ = new BehaviorSubject<string>('')\n\n\toverride connectedCallback() {\n\t\t// FIELD_CONNECT_EVENT is dispatched by the mixin's connectedCallback.\n\t\tsuper.connectedCallback()\n\t\tthis.setupAutocompleteLogic()\n\t\tthis.setupDocumentClickHandler()\n\t}\n\n\tprivate setupAutocompleteLogic() {\n\t\t// Sync selection state\n\t\tcombineLatest([this.selectedValue$, this.selectedValues$])\n\t\t\t.pipe(\n\t\t\t\ttap(([selectedValue, selectedValues]) => {\n\t\t\t\t\tthis.updateOptionSelection(selectedValue, selectedValues)\n\t\t\t\t\t// Keep ElementInternals form value in sync with selection (single and multi).\n\t\t\t\t\tconst formValue = this.multi ? selectedValues.join(',') : selectedValue\n\t\t\t\t\tthis.internals?.setFormValue(formValue || null)\n\t\t\t\t\tif (this.required) {\n\t\t\t\t\t\tconst missing = this.multi ? selectedValues.length === 0 : !selectedValue\n\t\t\t\t\t\tthis.internals?.setValidity(\n\t\t\t\t\t\t\tmissing ? { valueMissing: true } : {},\n\t\t\t\t\t\t\tmissing ? this.validationMessage || 'Please select an option.' : undefined,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Filter options based on input\n\t\tthis.inputValue$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tdebounceTime(this.debounceMs),\n\t\t\t\ttap(searchTerm => {\n\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\tthis.filterOptions(searchTerm)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate setupOptionHandlers() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\toption.tabIndex = -1\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\t// Idempotent: slotchange may fire repeatedly for the same option nodes,\n\t\t\t// and addEventListener doesn't replace prior handlers like onfoo= did.\n\t\t\tif (option.dataset.schmancyAutocompleteHandlers === 'attached') return\n\t\t\toption.dataset.schmancyAutocompleteHandlers = 'attached'\n\n\t\t\t// Prevent blur handler from interfering with option selection\n\t\t\tfromEvent<MouseEvent>(option, 'mousedown')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(e => e.preventDefault())\n\n\t\t\t// Handle the actual selection\n\t\t\tfromEvent<MouseEvent>(option, 'click')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(e => {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tthis.selectOption(option)\n\t\t\t\t})\n\t\t})\n\t}\n\n\tprivate updateOptionSelection(selectedValue: string, selectedValues: string[]) {\n\t\tthis.options.forEach(option => {\n\t\t\toption.selected = this.multi ? selectedValues.includes(option.value) : option.value === selectedValue\n\t\t\toption.setAttribute('aria-selected', String(option.selected))\n\t\t})\n\t}\n\n\tprivate filterOptions(searchTerm: string) {\n\t\tconst term = searchTerm.trim()\n\n\t\tif (!term) {\n\t\t\t// Show all options if no search term\n\t\t\tthis.options.forEach(option => {\n\t\t\t\toption.hidden = false\n\t\t\t\toption.style.order = '0'\n\t\t\t})\n\t\t\tthis.visibleOptionsCount = this.options.length\n\t\t\tthis.hasResults = true\n\t\t} else {\n\t\t\t// Calculate similarity scores for all options\n\t\t\tconst scoredOptions: FilteredOption[] = this.options.map(option => {\n\t\t\t\tconst optionLabel = option.label || option.textContent || ''\n\t\t\t\tconst optionValue = option.value\n\n\t\t\t\tconst labelScore = similarity(term, optionLabel)\n\t\t\t\tconst valueScore = similarity(term, optionValue)\n\t\t\t\tconst score = Math.max(labelScore * 1.1, valueScore)\n\n\t\t\t\treturn { option, score }\n\t\t\t})\n\n\t\t\t// Sort by score (highest first)\n\t\t\tscoredOptions.sort((a, b) => b.score - a.score)\n\n\t\t\t// Apply visibility and ordering\n\t\t\tlet visibleCount = 0\n\t\t\tscoredOptions.forEach((item, index) => {\n\t\t\t\tconst { option, score } = item\n\n\t\t\t\tif (score < this.similarityThreshold) {\n\t\t\t\t\toption.hidden = true\n\t\t\t\t} else {\n\t\t\t\t\toption.hidden = false\n\t\t\t\t\tvisibleCount++\n\t\t\t\t\toption.style.order = String(index)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.visibleOptionsCount = visibleCount\n\t\t\tthis.hasResults = visibleCount > 0\n\t\t}\n\n\t\tthis.announceToScreenReader(\n\t\t\tthis.visibleOptionsCount > 0\n\t\t\t\t? `${this.visibleOptionsCount} option${this.visibleOptionsCount === 1 ? '' : 's'} available.`\n\t\t\t\t: 'No results found.',\n\t\t)\n\t}\n\n\tprivate openDropdown() {\n\t\tthis.open = true\n\t\t// Reset filters based on current input value when dropdown opens\n\t\tthis.filterOptions(this.inputValue)\n\t}\n\n\tprivate selectOption(option: SchmancyOption) {\n\t\tif (this.multi) {\n\t\t\tconst currentValues = this.selectedValues$.value\n\t\t\tconst index = currentValues.indexOf(option.value)\n\t\t\tconst newValues = index > -1 ? currentValues.filter(v => v !== option.value) : [...currentValues, option.value]\n\n\t\t\tthis.selectedValues$.next(newValues)\n\t\t\tthis.announceToScreenReader(\n\t\t\t\tnewValues.length > 0 ? `Selected: ${this.getSelectedLabels().join(', ')}` : 'No options selected',\n\t\t\t)\n\t\t\tthis.fireChangeEvent()\n\t\t} else {\n\t\t\t// Update value first\n\t\t\tthis.selectedValue$.next(option.value)\n\n\t\t\t// Close dropdown IMMEDIATELY to prevent blur handler from firing\n\t\t\tthis.open = false\n\n\t\t\t// Now fire event with the NEW value\n\t\t\tthis.fireChangeEvent()\n\n\t\t\t// Update UI\n\t\t\tthis.inputValue = option.label || option.textContent || ''\n\t\t\tthis.inputValue$.next(this.inputValue)\n\n\t\t\tthis.announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n\t\t}\n\t}\n\n\tprivate setupDocumentClickHandler() {\n\t\tfromEvent<MouseEvent>(document, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\tif (!this.open) return\n\t\t\t\tconst path = e.composedPath()\n\t\t\t\tif (!path.includes(this) && !this.options.some(opt => path.includes(opt))) {\n\t\t\t\t\tthis.open = false\n\t\t\t\t\tthis.updateInputDisplay()\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tprivate updateInputDisplay() {\n\t\t// For multi-select, we don't update input display since chips show the selections\n\t\tif (this.multi) return\n\n\t\tconst selectedValue = this.selectedValue$.value\n\t\tconst option = this.options.find(opt => opt.value === selectedValue)\n\t\tthis.inputValue = option ? option.label || option.textContent || '' : ''\n\t\tthis.inputValue$.next(this.inputValue)\n\n\t\tif (this.inputElementRef.value) {\n\t\t\tthis.inputElementRef.value.value = this.inputValue\n\t\t}\n\t}\n\n\tprivate getSelectedLabels(): string[] {\n\t\treturn this.options\n\t\t\t.filter(option =>\n\t\t\t\tthis.multi ? this.selectedValues$.value.includes(option.value) : option.value === this.selectedValue$.value,\n\t\t\t)\n\t\t\t.map(option => option.label || option.textContent || '')\n\t}\n\n\tprivate announceToScreenReader(message: string) {\n\t\tconst liveRegion = this.shadowRoot?.querySelector('#live-status')\n\t\tif (liveRegion) {\n\t\t\tliveRegion.textContent = message\n\t\t}\n\t}\n\n\tprivate fireChangeEvent() {\n\t\tconst detail: SchmancyAutocompleteChangeEvent['detail'] = {\n\t\t\tvalue: this.value,\n\t\t}\n\n\t\tif (this.multi) {\n\t\t\tdetail.values = [...this.selectedValues$.value]\n\t\t}\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\tdetail,\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\tif (!this.required) return true\n\t\treturn this.multi ? this.selectedValues$.value.length > 0 : Boolean(this.selectedValue$.value)\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.inputElementRef.value) {\n\t\t\treturn this.inputElementRef.value.reportValidity()\n\t\t}\n\t\treturn this.checkValidity()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.setupOptionHandlers()\n\n\t\t// Sync initial value with display after options are available\n\t\tthis.updateInputDisplay()\n\n\t\t// Update options when slot changes\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tslot?.addEventListener('slotchange', () => {\n\t\t\tthis.setupOptionHandlers()\n\t\t\tthis.updateOptionSelection(this.selectedValue$.value, this.selectedValues$.value)\n\t\t})\n\t}\n\n\tprivate handleChipRemove(value: string) {\n\t\tconst currentValues = this.selectedValues$.value\n\t\tconst newValues = currentValues.filter(v => v !== value)\n\t\tthis.selectedValues$.next(newValues)\n\t\tthis.fireChangeEvent()\n\t\tthis.announceToScreenReader(`Removed: ${this.getChipLabel(value)}`)\n\t}\n\n\tprivate getChipLabel(value: string): string {\n\t\tconst option = this.options.find(opt => opt.value === value)\n\t\treturn option ? option.label || option.textContent || value : value\n\t}\n\n\tprivate focusTextInput() {\n\t\tif (this.inputElementRef.value) {\n\t\t\tthis.inputElementRef.value.focus()\n\t\t}\n\t}\n\n\trender() {\n\t\tconst descriptionId = `${this.id}-desc`\n\n\t\t// Get size-based styling to match Schmancy input\n\t\tconst getSizeStyles = () => {\n\t\t\tswitch (this.size) {\n\t\t\t\tcase 'sm':\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: 'min-h-[40px]',\n\t\t\t\t\t\tpadding: 'px-2',\n\t\t\t\t\t\tfontSize: 'text-sm', // 14px\n\t\t\t\t\t\tlabelSize: 'text-sm',\n\t\t\t\t\t}\n\t\t\t\tcase 'lg':\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: 'min-h-[60px]',\n\t\t\t\t\t\tpadding: 'px-5',\n\t\t\t\t\t\tfontSize: 'text-lg', // 18px\n\t\t\t\t\t\tlabelSize: 'text-lg',\n\t\t\t\t\t}\n\t\t\t\tcase 'md':\n\t\t\t\tdefault:\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: 'min-h-[50px]',\n\t\t\t\t\t\tpadding: 'px-4',\n\t\t\t\t\t\tfontSize: 'text-base', // 16px\n\t\t\t\t\t\tlabelSize: 'text-base',\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst { height, padding, fontSize, labelSize } = getSizeStyles()\n\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- Screen reader live region -->\n\t\t\t\t<div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n\t\t\t\t<!-- Description -->\n\t\t\t\t${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n\t\t\t\t<!-- Custom input wrapper for Gmail-style chip input -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.multi,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<!-- Custom multi-select input with inline chips -->\n\t\t\t\t\t\t\t<div class=\"relative\">\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\tthis.label,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\tclass=\"${classMap({\n\t\t\t\t\t\t\t\t\t\t\t\t'block mb-1 font-medium': true,\n\t\t\t\t\t\t\t\t\t\t\t\t'text-primary-default': !this.error,\n\t\t\t\t\t\t\t\t\t\t\t\t'text-error-default': this.error,\n\t\t\t\t\t\t\t\t\t\t\t\t[labelSize]: true,\n\t\t\t\t\t\t\t\t\t\t\t})}\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t${this.label}${this.required ? html`<span class=\"text-error-default ml-1\">*</span>` : ''}\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"${classMap({\n\t\t\t\t\t\t\t\t\t\t'flex flex-wrap items-center gap-1': true,\n\t\t\t\t\t\t\t\t\t\t[height]: true,\n\t\t\t\t\t\t\t\t\t\t[padding]: true,\n\t\t\t\t\t\t\t\t\t\t'block w-full min-w-0 rounded-[8px] border-0': true,\n\t\t\t\t\t\t\t\t\t\t'bg-surface-highest text-surface-on': true,\n\t\t\t\t\t\t\t\t\t\t'ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset': true,\n\t\t\t\t\t\t\t\t\t\t'ring-secondary-default focus-within:ring-secondary-default': !this.error,\n\t\t\t\t\t\t\t\t\t\t'ring-error-default focus-within:ring-error-default': this.error,\n\t\t\t\t\t\t\t\t\t\t'cursor-text transition-colors duration-200': true,\n\t\t\t\t\t\t\t\t\t})}\"\n\t\t\t\t\t\t\t\t\t@click=${() => this.focusTextInput()}\n\t\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\t\t\t\taria-expanded=${this.open}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<!-- Render chips inline -->\n\t\t\t\t\t\t\t\t\t${repeat(\n\t\t\t\t\t\t\t\t\t\tthis.selectedValues$.value,\n\t\t\t\t\t\t\t\t\t\tvalue => value,\n\t\t\t\t\t\t\t\t\t\tvalue => html`\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-input-chip\n\t\t\t\t\t\t\t\t\t\t\t\t.value=${value}\n\t\t\t\t\t\t\t\t\t\t\t\t@remove=${(e: CustomEvent) => this.handleChipRemove(e.detail.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"shrink-0 my-0.5\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${this.getChipLabel(value)}\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-input-chip>\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<!-- Text input for typing -->\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t${ref(this.inputElementRef)}\n\t\t\t\t\t\t\t\t\t\tid=\"autocomplete-input\"\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tclass=\"flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${fontSize} font-medium text-surface-on placeholder:text-muted\"\n\t\t\t\t\t\t\t\t\t\tname=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n\t\t\t\t\t\t\t\t\t\t.placeholder=${this.selectedValues$.value.length > 0 ? 'Add more...' : this.placeholder}\n\t\t\t\t\t\t\t\t\t\t.value=${this.inputValue}\n\t\t\t\t\t\t\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t\t\t\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\t\t\t\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\t\t\t\t\t\t\taria-describedby=${this.error && this.validationMessage ? `${this.a11yId}-err` : nothing}\n\t\t\t\t\t\t\t\t\t\taria-label=${!this.label && this.placeholder ? this.placeholder : nothing}\n\t\t\t\t\t\t\t\t\t\t@input=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\tconst value = (e.target as HTMLInputElement).value\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue = value\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue$.next(value)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t@focus=${(e: FocusEvent) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t// Clear input on focus for new searches\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue = ''\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue$.next('')\n\t\t\t\t\t\t\t\t\t\t\tthis.openDropdown()\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t@blur=${() => {\n\t\t\t\t\t\t\t\t\t\t\tthis.handleAutoSelectOnBlur()\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- Validation message -->\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\tthis.error && this.validationMessage,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<div id=\"${this.a11yId}-err\" class=\"mt-1 text-sm text-error-default\" role=\"alert\">\n\t\t\t\t\t\t\t\t\t\t\t${this.validationMessage}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<!-- Regular single-select input -->\n\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t.size=${this.size}\n\t\t\t\t\t\t\t\t${ref(this.inputElementRef)}\n\t\t\t\t\t\t\t\tid=\"autocomplete-input\"\n\t\t\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t\t\t.name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n\t\t\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\t\t\t.value=${this.inputValue}\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tautocomplete=${this.autocomplete}\n\t\t\t\t\t\t\t\tclickable\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\t\t\taria-expanded=${this.open}\n\t\t\t\t\t\t\t\taria-describedby=${ifDefined(this.description ? descriptionId : undefined)}\n\t\t\t\t\t\t\t\t@input=${(e: Event) => {\n\t\t\t\t\t\t\t\t\tconst value = (e.target as HTMLInputElement).value\n\t\t\t\t\t\t\t\t\tthis.inputValue = value\n\t\t\t\t\t\t\t\t\tthis.inputValue$.next(value)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@focus=${(e: FocusEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.openDropdown()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.openDropdown()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@blur=${() => {\n\t\t\t\t\t\t\t\t\tthis.handleAutoSelectOnBlur()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</schmancy-input>\n\t\t\t\t\t\t`,\n\t\t\t\t\t)}\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- Options dropdown -->\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\tabsolute: true,\n\t\t\t\t\t\t'z-[1000]': true,\n\t\t\t\t\t\t'mt-1': true,\n\t\t\t\t\t\t'w-full': true,\n\t\t\t\t\t\t'rounded-md': true,\n\t\t\t\t\t\t'shadow-md': true,\n\t\t\t\t\t\t'overflow-auto': true,\n\t\t\t\t\t\t'min-w-full': true,\n\t\t\t\t\t\t'bg-surface-low': true,\n\t\t\t\t\t\tflex: true,\n\t\t\t\t\t\t'flex-col': true, // Enable flexbox for ordering\n\t\t\t\t\t})}\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\taria-label=${`${this.label || 'Options'} dropdown`}\n\t\t\t\t\t?hidden=${!this.open}\n\t\t\t\t\tstyle=\"max-height: ${this.maxHeight}; display: ${this.open ? 'flex' : 'none'};\"\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tthis.setupOptionHandlers()\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t\t${!this.hasResults ? html` <li class=\"px-3 py-2 text-sm text-muted\">No results found</li> ` : ''}\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate handleAutoSelectOnBlur() {\n\t\t// Only auto-select in single-select mode and when dropdown is open with a search term\n\t\tif (this.multi || !this.open || !this.inputValue.trim()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst searchTerm = this.inputValue.trim()\n\n\t\t// Find the best matching option using the same similarity logic as filtering\n\t\tlet bestMatch: SchmancyOption | null = null\n\t\tlet bestScore = 0\n\n\t\tthis.options.forEach(option => {\n\t\t\t// Skip hidden options\n\t\t\tif (option.hidden) return\n\n\t\t\t// Get text to search in (prioritize label, then textContent, then value)\n\t\t\tconst optionLabel = option.label || option.textContent || ''\n\t\t\tconst optionValue = option.value\n\n\t\t\t// Calculate similarity scores for both label and value\n\t\t\tconst labelScore = similarity(searchTerm, optionLabel)\n\t\t\tconst valueScore = similarity(searchTerm, optionValue)\n\n\t\t\t// Use the higher score (prioritizing label matches)\n\t\t\tconst score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n\n\t\t\t// Keep track of best match that meets threshold\n\t\t\tif (score > bestScore && score >= this.similarityThreshold) {\n\t\t\t\tbestScore = score\n\t\t\t\tbestMatch = option\n\t\t\t}\n\t\t})\n\n\t\t// Auto-select the best match if found\n\t\tif (bestMatch) {\n\t\t\t// Silently update the selected value without firing change event\n\t\t\tthis.selectedValue$.next(bestMatch.value)\n\t\t\tthis.inputValue = bestMatch.label || bestMatch.textContent || ''\n\t\t\tthis.inputValue$.next(this.inputValue)\n\t\t\tthis.open = false\n\t\t}\n\t}\n\n\tprivate handleKeyDown(event: KeyboardEvent) {\n\t\tconst isOpen = this.open\n\t\tconst selectedValues = this.selectedValues$.value\n\n\t\t// Handle backspace to remove last chip in multi-select when input is empty\n\t\tif (this.multi && event.key === 'Backspace' && !this.inputValue && selectedValues.length > 0 && !isOpen) {\n\t\t\tevent.preventDefault()\n\t\t\tconst lastValue = selectedValues[selectedValues.length - 1]\n\t\t\tthis.handleChipRemove(lastValue)\n\t\t\treturn\n\t\t}\n\n\t\tif (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n\t\t\tevent.preventDefault()\n\t\t\tthis.openDropdown()\n\n\t\t\ttimer(10)\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tconst firstVisible = this.options.find(opt => !opt.hidden)\n\t\t\t\t\tfirstVisible?.focus()\n\t\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tif (!isOpen) return\n\n\t\tconst visibleOptions = this.options\n\t\t\t.filter(opt => !opt.hidden)\n\t\t\t.toSorted((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n\n\t\tconst focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n\t\tconst currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n\t\tswitch (event.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = false\n\t\t\t\tthis.updateInputDisplay()\n\t\t\t\tthis.inputElementRef.value?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'Tab':\n\t\t\t\tthis.open = false\n\t\t\t\tthis.updateInputDisplay()\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowDown':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tconst nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n\t\t\t\tvisibleOptions[nextIndex]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tconst prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n\t\t\t\tvisibleOptions[prevIndex]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvisibleOptions[0]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvisibleOptions[visibleOptions.length - 1]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tif (focusedOption) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tthis.selectOption(focusedOption)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"mappings":"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"}
|
package/dist/autocomplete.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./autocomplete-
|
|
1
|
+
require(`./autocomplete-CILzaDB7.cjs`);
|
package/dist/autocomplete.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import "./autocomplete-
|
|
1
|
+
import "./autocomplete-DV9RxCun.js";
|
package/dist/avatar.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);const t=require(`./directives-B2VxfwRL.cjs`),n=require(`./theme.interface-B-qxDsZQ.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.t{constructor(...e){super(...e),this.initials=``,this.src=``,this.icon=``,this.size=`md`,this.color=`primary`,this.shape=`circle`,this.bordered=!1,this.status=`none`}render(){let e;e=this.src?i.html`<img class="w-full h-full object-cover" src="${this.src}" alt="Avatar" />`:this.initials?i.html`<span class="text-center font-medium">${this.initials.substring(0,2).toUpperCase()}</span>`:this.icon?i.html`<schmancy-icon>${this.icon}</schmancy-icon>`:i.html`<schmancy-icon>person</schmancy-icon>`;let t={"relative flex items-center justify-center overflow-hidden":!0,[{xxs:`w-5 h-5 text-[8px]`,xs:`w-6 h-6 text-xs`,sm:`w-8 h-8 text-sm`,md:`w-10 h-10 text-base`,lg:`w-12 h-12 text-lg`,xl:`w-16 h-16 text-xl`}[this.size]]:!0,[{circle:`rounded-full`,square:`rounded-md`}[this.shape]]:!0,"border-2 border-surface-container":this.bordered},n=this.getColorAttributes();return i.html`
|
|
2
2
|
<div class="${this.classMap(t)}" ${n}>
|
|
3
3
|
${e} ${this.status===`none`?``:this.renderStatusIndicator()}
|
|
4
4
|
</div>
|
package/dist/avatar.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.cjs","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs',
|
|
1
|
+
{"version":3,"file":"avatar.cjs","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs', // 24px - M3 compact\n\t\t\tsm: 'w-8 h-8 text-sm', // 32px - M3 small\n\t\t\tmd: 'w-10 h-10 text-base', // 40px - M3 medium (default)\n\t\t\tlg: 'w-12 h-12 text-lg', // 48px - M3 large\n\t\t\txl: 'w-16 h-16 text-xl', // 64px - M3 extra large\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txxs: 'w-1 h-1',\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"mappings":"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"}
|
package/dist/avatar.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as e, u as t } from "./SchmancyElement-
|
|
2
|
-
import "./mixins-
|
|
3
|
-
import { S as n } from "./directives-
|
|
4
|
-
import { t as r } from "./theme.interface-
|
|
1
|
+
import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
|
|
2
|
+
import "./mixins-q4KAL8Xr.js";
|
|
3
|
+
import { S as n } from "./directives-Dj8jlv-Q.js";
|
|
4
|
+
import { t as r } from "./theme.interface-B7caS5cg.js";
|
|
5
5
|
import { customElement as i, property as a } from "lit/decorators.js";
|
|
6
6
|
import { html as o } from "lit";
|
|
7
7
|
var s = class extends e {
|
package/dist/avatar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.js","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs',
|
|
1
|
+
{"version":3,"file":"avatar.js","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs', // 24px - M3 compact\n\t\t\tsm: 'w-8 h-8 text-sm', // 32px - M3 small\n\t\t\tmd: 'w-10 h-10 text-base', // 40px - M3 medium (default)\n\t\t\tlg: 'w-12 h-12 text-lg', // 48px - M3 large\n\t\t\txl: 'w-16 h-16 text-xl', // 64px - M3 extra large\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txxs: 'w-1 h-1',\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"mappings":"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"}
|
package/dist/badge.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-DuRvYagm.cjs`);Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return e.w}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return e.T}});
|
package/dist/badge.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { T as e, w as t } from "./src-
|
|
1
|
+
import { T as e, w as t } from "./src-DAtcPmCb.js";
|
|
2
2
|
export { t as ScBadgeV2, e as SchmancyBadgeV2 };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { t as e, u as t } from "./SchmancyElement-
|
|
2
|
-
import "./mixins-
|
|
1
|
+
import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
|
|
2
|
+
import "./mixins-q4KAL8Xr.js";
|
|
3
3
|
import { d as n } from "./animation-DCznELuT.js";
|
|
4
4
|
import { t as r } from "./reduced-motion-D-L12p7G.js";
|
|
5
|
-
import { n as i } from "./theme.service-
|
|
6
|
-
import { o as a } from "./overlay.service-
|
|
5
|
+
import { n as i } from "./theme.service-D94nm7Bf.js";
|
|
6
|
+
import { o as a } from "./overlay.service-BuUeti6X.js";
|
|
7
7
|
import { exhaustMap as o, filter as s, finalize as c, fromEvent as l, merge as u, takeUntil as d, tap as f } from "rxjs";
|
|
8
8
|
import { classMap as p } from "lit/directives/class-map.js";
|
|
9
9
|
import { styleMap as m } from "lit/directives/style-map.js";
|
|
@@ -155,7 +155,7 @@ var S = "schmancy-boat-", C = class extends e {
|
|
|
155
155
|
return y`
|
|
156
156
|
<schmancy-surface
|
|
157
157
|
${x(this.containerRef)}
|
|
158
|
-
type="
|
|
158
|
+
type="container"
|
|
159
159
|
class="${e} overflow-hidden rounded-2xl shadow-md"
|
|
160
160
|
style=${t}
|
|
161
161
|
aria-expanded=${this.open}
|