@mhmo91/schmancy 0.10.22 → 0.10.24
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 +0 -106
- package/dist/agent/{overlay.confirm-body-xfOh5Q28.js → overlay.confirm-body-CvdVfCnN.js} +1 -1
- package/dist/agent/{overlay.confirm-body-xfOh5Q28.js.map → overlay.confirm-body-CvdVfCnN.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +1844 -1961
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +1 -89
- package/dist/{area-Ddk7P5wD.js → area-A_oUP4P1.js} +1 -1
- package/dist/{area-Ddk7P5wD.js.map → area-A_oUP4P1.js.map} +1 -1
- package/dist/{area-Cbkt0NX4.cjs → area-BuqdaUpQ.cjs} +1 -1
- package/dist/{area-Cbkt0NX4.cjs.map → area-BuqdaUpQ.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-Ds3Q2cwR.js → autocomplete-BoCWO26L.js} +2 -2
- package/dist/{autocomplete-Ds3Q2cwR.js.map → autocomplete-BoCWO26L.js.map} +1 -1
- package/dist/{autocomplete-CfBFDSc3.cjs → autocomplete-Cy46gJxK.cjs} +1 -1
- package/dist/{autocomplete-CfBFDSc3.cjs.map → autocomplete-Cy46gJxK.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-BF5P6p_f.js → boat-B0h5fuAA.js} +1 -1
- package/dist/{boat-BF5P6p_f.js.map → boat-B0h5fuAA.js.map} +1 -1
- package/dist/{boat-BPN8HLzZ.cjs → boat-RRtBhD3x.cjs} +1 -1
- package/dist/{boat-BPN8HLzZ.cjs.map → boat-RRtBhD3x.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-C7ejPa-Q.cjs → busy-Bn6Pioo8.cjs} +1 -1
- package/dist/{busy-C7ejPa-Q.cjs.map → busy-Bn6Pioo8.cjs.map} +1 -1
- package/dist/{busy-BuACDJy6.js → busy-DObY7lfu.js} +1 -1
- package/dist/{busy-BuACDJy6.js.map → busy-DObY7lfu.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button-DEi3M2nV.js +446 -0
- package/dist/button-DEi3M2nV.js.map +1 -0
- package/dist/button-XfdPzfZQ.cjs +120 -0
- package/dist/button-XfdPzfZQ.cjs.map +1 -0
- package/dist/button.cjs +1 -120
- package/dist/button.js +2 -447
- package/dist/{card-BIzaLuEg.cjs → card-BjUgRzFh.cjs} +1 -1
- package/dist/{card-BIzaLuEg.cjs.map → card-BjUgRzFh.cjs.map} +1 -1
- package/dist/{card-CgQwXO8L.js → card-jzUQK0EQ.js} +1 -1
- package/dist/{card-CgQwXO8L.js.map → card-jzUQK0EQ.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-BNdg57Om.js → checkbox-CfCm1vGN.js} +1 -1
- package/dist/{checkbox-BNdg57Om.js.map → checkbox-CfCm1vGN.js.map} +1 -1
- package/dist/{checkbox-BAqE3sTx.cjs → checkbox-rskgUBxQ.cjs} +1 -1
- package/dist/{checkbox-BAqE3sTx.cjs.map → checkbox-rskgUBxQ.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-DS3y4Lbn.cjs → chips-BiNZKu0J.cjs} +1 -1
- package/dist/{chips-DS3y4Lbn.cjs.map → chips-BiNZKu0J.cjs.map} +1 -1
- package/dist/{chips-DnqLaOb1.js → chips-Dfim_tQv.js} +2 -2
- package/dist/{chips-DnqLaOb1.js.map → chips-Dfim_tQv.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-CAqB-B0M.js → date-range-B8zoj6Cj.js} +2 -2
- package/dist/{date-range-CAqB-B0M.js.map → date-range-B8zoj6Cj.js.map} +1 -1
- package/dist/{date-range-VA1mi1N7.cjs → date-range-em7OwhlK.cjs} +1 -1
- package/dist/{date-range-VA1mi1N7.cjs.map → date-range-em7OwhlK.cjs.map} +1 -1
- package/dist/{date-range-inline-PeRt1iIF.js → date-range-inline-BfUL8_vX.js} +1 -1
- package/dist/{date-range-inline-PeRt1iIF.js.map → date-range-inline-BfUL8_vX.js.map} +1 -1
- package/dist/{date-range-inline-CAa0_4EI.cjs → date-range-inline-DYeqoBIO.cjs} +1 -1
- package/dist/{date-range-inline-CAa0_4EI.cjs.map → date-range-inline-DYeqoBIO.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-BnXbDpt7.cjs → details-CNM1tuma.cjs} +1 -1
- package/dist/{details-BnXbDpt7.cjs.map → details-CNM1tuma.cjs.map} +1 -1
- package/dist/{details-BpFjVclg.js → details-D246xN83.js} +1 -1
- package/dist/{details-BpFjVclg.js.map → details-D246xN83.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{divider-D8cBBkdG.js → divider-CbIp1je9.js} +1 -1
- package/dist/{divider-D8cBBkdG.js.map → divider-CbIp1je9.js.map} +1 -1
- package/dist/{divider-B84lt1A3.cjs → divider-DaKsGNW-.cjs} +1 -1
- package/dist/{divider-B84lt1A3.cjs.map → divider-DaKsGNW-.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{expand-DK-O37-j.cjs → expand-CQDm3BF3.cjs} +1 -1
- package/dist/{expand-DK-O37-j.cjs.map → expand-CQDm3BF3.cjs.map} +1 -1
- package/dist/{expand-BJiKggfg.js → expand-DRkiO4vw.js} +2 -2
- package/dist/{expand-BJiKggfg.js.map → expand-DRkiO4vw.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{float-RWR6Q1Hh.cjs → float-5O26zNRh.cjs} +1 -1
- package/dist/{float-RWR6Q1Hh.cjs.map → float-5O26zNRh.cjs.map} +1 -1
- package/dist/{float-B4FDN40h.js → float-CZtu8FnO.js} +1 -1
- package/dist/{float-B4FDN40h.js.map → float-CZtu8FnO.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-ha3df3K7.cjs → form-B90CMeqs.cjs} +1 -1
- package/dist/{form-ha3df3K7.cjs.map → form-B90CMeqs.cjs.map} +1 -1
- package/dist/{form-B-Sm6u25.js → form-CE6Gwz4r.js} +8 -8
- package/dist/{form-B-Sm6u25.js.map → form-CE6Gwz4r.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +6 -6
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/icons-B7ppo07M.cjs +33 -0
- package/dist/icons-B7ppo07M.cjs.map +1 -0
- package/dist/icons-CGhozJ5v.js +48 -0
- package/dist/icons-CGhozJ5v.js.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-CByrVlZy.js → iframe-C3PMj1MD.js} +1 -1
- package/dist/{iframe-CByrVlZy.js.map → iframe-C3PMj1MD.js.map} +1 -1
- package/dist/{iframe-BXe1TPx1.cjs → iframe-D98csbEo.cjs} +1 -1
- package/dist/{iframe-BXe1TPx1.cjs.map → iframe-D98csbEo.cjs.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +27 -27
- package/dist/{input-Q0fm34Co.js → input-CCOkeeVM.js} +1 -1
- package/dist/{input-Q0fm34Co.js.map → input-CCOkeeVM.js.map} +1 -1
- package/dist/{input-BY9OCQWr.cjs → input-_y92Pzon.cjs} +1 -1
- package/dist/{input-BY9OCQWr.cjs.map → input-_y92Pzon.cjs.map} +1 -1
- package/dist/{input-chip-CytUirVS.js → input-chip-Bzwr5-XL.js} +1 -1
- package/dist/{input-chip-CytUirVS.js.map → input-chip-Bzwr5-XL.js.map} +1 -1
- package/dist/{input-chip-BwNf3GD0.cjs → input-chip-CR66MWml.cjs} +1 -1
- package/dist/{input-chip-BwNf3GD0.cjs.map → input-chip-CR66MWml.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +2 -2
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +3 -3
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-p2E0oVR0.cjs → lightbox-Bk3ovcVu.cjs} +1 -1
- package/dist/{lightbox-p2E0oVR0.cjs.map → lightbox-Bk3ovcVu.cjs.map} +1 -1
- package/dist/{lightbox-Ckvn5YNF.js → lightbox-Dl--fEbP.js} +1 -1
- package/dist/{lightbox-Ckvn5YNF.js.map → lightbox-Dl--fEbP.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CsrPVvmm.js → list-B3WI_Nfs.js} +1 -1
- package/dist/{list-CsrPVvmm.js.map → list-B3WI_Nfs.js.map} +1 -1
- package/dist/{list-r57UFHu3.cjs → list-DWngbP2X.cjs} +1 -1
- package/dist/{list-r57UFHu3.cjs.map → list-DWngbP2X.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{menu-DBuZiPyW.cjs → menu-CdYjxJqm.cjs} +1 -1
- package/dist/{menu-DBuZiPyW.cjs.map → menu-CdYjxJqm.cjs.map} +1 -1
- package/dist/{menu-Csm6Fg88.js → menu-IDhVp6zm.js} +2 -2
- package/dist/{menu-Csm6Fg88.js.map → menu-IDhVp6zm.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-DTCHPEd4.cjs → mixins-BPUR4Kc4.cjs} +1 -1
- package/dist/{mixins-DTCHPEd4.cjs.map → mixins-BPUR4Kc4.cjs.map} +1 -1
- package/dist/{mixins-pU53qf6R.js → mixins-C42OILRS.js} +1 -1
- package/dist/{mixins-pU53qf6R.js.map → mixins-C42OILRS.js.map} +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-58tkVys8.cjs → notification-B3wVUC8l.cjs} +1 -1
- package/dist/{notification-58tkVys8.cjs.map → notification-B3wVUC8l.cjs.map} +1 -1
- package/dist/{notification-CgTBiAdf.js → notification-CllYkvlR.js} +2 -2
- package/dist/{notification-CgTBiAdf.js.map → notification-CllYkvlR.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-Bicf6xpI.js → option-CPOL0nHL.js} +1 -1
- package/dist/{option-Bicf6xpI.js.map → option-CPOL0nHL.js.map} +1 -1
- package/dist/{option-61YE3gub.cjs → option-cRsdshy8.cjs} +1 -1
- package/dist/{option-61YE3gub.cjs.map → option-cRsdshy8.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-CpvmytrQ.cjs → overlay-BnTvnNDc.cjs} +1 -1
- package/dist/{overlay-CpvmytrQ.cjs.map → overlay-BnTvnNDc.cjs.map} +1 -1
- package/dist/{overlay-CAI2FAp7.js → overlay-DJ-vlwtR.js} +3 -3
- package/dist/{overlay-CAI2FAp7.js.map → overlay-DJ-vlwtR.js.map} +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-QD-5cj3_.cjs → overlay.confirm-body-CQ-FwySO.cjs} +1 -1
- package/dist/{overlay.confirm-body-QD-5cj3_.cjs.map → overlay.confirm-body-CQ-FwySO.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-Cq25CkTw.js → overlay.confirm-body-DEb9xw5N.js} +1 -1
- package/dist/{overlay.confirm-body-Cq25CkTw.js.map → overlay.confirm-body-DEb9xw5N.js.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-BG0bqPwJ.cjs → overlay.service-CKBCIP2f.cjs} +1 -1
- package/dist/{overlay.service-BG0bqPwJ.cjs.map → overlay.service-CKBCIP2f.cjs.map} +1 -1
- package/dist/{overlay.service-Bpjrhaxh.js → overlay.service-XM1YHkTk.js} +2 -2
- package/dist/{overlay.service-Bpjrhaxh.js.map → overlay.service-XM1YHkTk.js.map} +1 -1
- package/dist/{progress-D8XZJVl5.cjs → progress-CcfLfHOE.cjs} +1 -1
- package/dist/{progress-D8XZJVl5.cjs.map → progress-CcfLfHOE.cjs.map} +1 -1
- package/dist/{progress-Zqx-S9NZ.js → progress-CnMPp-9a.js} +1 -1
- package/dist/{progress-Zqx-S9NZ.js.map → progress-CnMPp-9a.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-D9MU1Mxz.js → radio-group-BUJgfQFi.js} +1 -1
- package/dist/{radio-group-D9MU1Mxz.js.map → radio-group-BUJgfQFi.js.map} +1 -1
- package/dist/{radio-group-bl8K4Gls.cjs → radio-group-D97hflrE.cjs} +1 -1
- package/dist/{radio-group-bl8K4Gls.cjs.map → radio-group-D97hflrE.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{select-CMwkl-D6.js → select-BWEh5nRM.js} +1 -1
- package/dist/{select-CMwkl-D6.js.map → select-BWEh5nRM.js.map} +1 -1
- package/dist/{select-COIfVtZl.cjs → select-Cv5Oev6d.cjs} +1 -1
- package/dist/{select-COIfVtZl.cjs.map → select-Cv5Oev6d.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/overlay.md +4 -0
- package/dist/skills/schmancy/overlay.md +4 -0
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-xrMNpzkm.js → splash-screen-B6w7X2z9.js} +1 -1
- package/dist/{splash-screen-xrMNpzkm.js.map → splash-screen-B6w7X2z9.js.map} +1 -1
- package/dist/{splash-screen-2hxq8Sft.cjs → splash-screen-DFtxtO2D.cjs} +1 -1
- package/dist/{splash-screen-2hxq8Sft.cjs.map → splash-screen-DFtxtO2D.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-BoHs3kDi.cjs → src-Asw6A018.cjs} +3 -3
- package/dist/src-Asw6A018.cjs.map +1 -0
- package/dist/{src-DhbXaOrS.js → src-D_NK-vMA.js} +40 -40
- package/dist/src-D_NK-vMA.js.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-BkQ44Wuo.cjs → surface-B94ka2LY.cjs} +1 -1
- package/dist/{surface-BkQ44Wuo.cjs.map → surface-B94ka2LY.cjs.map} +1 -1
- package/dist/{surface-3nnvlxeE.js → surface-ctBcRGSZ.js} +1 -1
- package/dist/{surface-3nnvlxeE.js.map → surface-ctBcRGSZ.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/table.cjs +2 -2
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +2 -2
- package/dist/table.js.map +1 -1
- package/dist/{tabs-Dql0rcqZ.cjs → tabs-B7kaZIom.cjs} +1 -1
- package/dist/{tabs-Dql0rcqZ.cjs.map → tabs-B7kaZIom.cjs.map} +1 -1
- package/dist/{tabs-CnLIe8nE.js → tabs-CrMx5z_y.js} +1 -1
- package/dist/{tabs-CnLIe8nE.js.map → tabs-CrMx5z_y.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CGD6lAEe.cjs → textarea-D1crj8JD.cjs} +1 -1
- package/dist/{textarea-CGD6lAEe.cjs.map → textarea-D1crj8JD.cjs.map} +1 -1
- package/dist/{textarea-BAogS_Ff.js → textarea-DeHFl80i.js} +1 -1
- package/dist/{textarea-BAogS_Ff.js.map → textarea-DeHFl80i.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-CUK0HrS3.js → theme-C7Yo33nh.js} +2 -2
- package/dist/{theme-CUK0HrS3.js.map → theme-C7Yo33nh.js.map} +1 -1
- package/dist/{theme-button-CmTwFm3l.cjs → theme-button-CXSM5We4.cjs} +1 -1
- package/dist/{theme-button-CmTwFm3l.cjs.map → theme-button-CXSM5We4.cjs.map} +1 -1
- package/dist/{theme-button-Bb8qW2IH.js → theme-button-Cpc_hs2O.js} +1 -1
- package/dist/{theme-button-Bb8qW2IH.js.map → theme-button-Cpc_hs2O.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/{theme-DKrrQ-ic.cjs → theme-wE2N7Yu9.cjs} +2 -2
- package/dist/{theme-DKrrQ-ic.cjs.map → theme-wE2N7Yu9.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +2 -2
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-BbWlaPZv.cjs → window-Ck_zS4bb.cjs} +1 -1
- package/dist/{window-BbWlaPZv.cjs.map → window-Ck_zS4bb.cjs.map} +1 -1
- package/dist/{window-DuDAQa6y.js → window-JtkeHoxS.js} +1 -1
- package/dist/{window-DuDAQa6y.js.map → window-JtkeHoxS.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/overlay.md +4 -0
- package/src/badge/badge.ts +7 -11
- package/src/button/icon-button.ts +3 -4
- package/src/icons/icon.ts +43 -293
- package/src/json/json.ts +1 -1
- package/src/table/table.ts +2 -2
- package/src/theme/theme-audio-player.ts +1 -1
- package/types/src/badge/badge.d.ts +1 -1
- package/types/src/icons/icon.d.ts +0 -81
- package/dist/button.cjs.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/context-6oXCZmZN.js +0 -3
- package/dist/context-6oXCZmZN.js.map +0 -1
- package/dist/context-CRZeiCqq.cjs +0 -1
- package/dist/context-CRZeiCqq.cjs.map +0 -1
- package/dist/icons-BgUbHwy8.js +0 -169
- package/dist/icons-BgUbHwy8.js.map +0 -1
- package/dist/icons-morK4hHz.cjs +0 -52
- package/dist/icons-morK4hHz.cjs.map +0 -1
- package/dist/src-BoHs3kDi.cjs.map +0 -1
- package/dist/src-DhbXaOrS.js.map +0 -1
package/package.json
CHANGED
|
@@ -39,6 +39,10 @@ Centered is the fallback (no anchor given). Sheet is the responsive adaptation (
|
|
|
39
39
|
|
|
40
40
|
Always prefer `() => html\`...\`` over `html\`...\`` when the template closes over any variable — the factory form evaluates those variables at mount time rather than baking them in at the call site.
|
|
41
41
|
|
|
42
|
+
## Default padding
|
|
43
|
+
|
|
44
|
+
The overlay surface applies `padding: var(--schmancy-overlay-padding, 1.5rem)` to all content — `show()`, `confirm()`, and `prompt()` alike. Content components do **not** need their own padding against the surface edge. Override the token via `style="--schmancy-overlay-padding: 0"` on the host if a component supplies its own full-bleed layout.
|
|
45
|
+
|
|
42
46
|
## API
|
|
43
47
|
|
|
44
48
|
| Export | Signature | Purpose |
|
package/src/badge/badge.ts
CHANGED
|
@@ -132,17 +132,13 @@ export class SchmancyBadgeV2 extends SchmancyElement {
|
|
|
132
132
|
* Get icon size based on badge size with harmonious proportions
|
|
133
133
|
* Using golden ratio-inspired proportions relative to text size
|
|
134
134
|
*/
|
|
135
|
-
private
|
|
135
|
+
private getIconSizeClass(): string {
|
|
136
136
|
switch (this.size) {
|
|
137
|
-
case 'xs':
|
|
138
|
-
|
|
139
|
-
case '
|
|
140
|
-
return '13px' // Approximately 1.1 × text size (12px × 1.1)
|
|
141
|
-
case 'lg':
|
|
142
|
-
return '18px' // Approximately 1.1 × text size (16px × 1.1)
|
|
137
|
+
case 'xs': return 'text-xs'
|
|
138
|
+
case 'sm': return 'text-sm'
|
|
139
|
+
case 'lg': return 'text-lg'
|
|
143
140
|
case 'md':
|
|
144
|
-
default:
|
|
145
|
-
return '15px' // Approximately 1.1 × text size (14px × 1.1)
|
|
141
|
+
default: return 'text-sm'
|
|
146
142
|
}
|
|
147
143
|
}
|
|
148
144
|
|
|
@@ -219,7 +215,7 @@ export class SchmancyBadgeV2 extends SchmancyElement {
|
|
|
219
215
|
const sizeClasses = this.getSizeClasses()
|
|
220
216
|
const shapeClasses = this.getShapeClasses()
|
|
221
217
|
const colorStyles = this.getColorStyles()
|
|
222
|
-
const
|
|
218
|
+
const iconSizeClass = this.getIconSizeClass()
|
|
223
219
|
const exoticStyles = this.getExoticStyles()
|
|
224
220
|
|
|
225
221
|
const badgeClasses = {
|
|
@@ -259,7 +255,7 @@ export class SchmancyBadgeV2 extends SchmancyElement {
|
|
|
259
255
|
${this.icon
|
|
260
256
|
? html`
|
|
261
257
|
<div part="icon" class="shrink-0 flex items-center justify-center leading-none">
|
|
262
|
-
<schmancy-icon
|
|
258
|
+
<schmancy-icon class="${iconSizeClass} flex items-center justify-center">${this.icon}</schmancy-icon>
|
|
263
259
|
</div>
|
|
264
260
|
`
|
|
265
261
|
: ''}
|
|
@@ -235,8 +235,7 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
235
235
|
'hover:bg-secondary-container': effectiveVariant === 'filled tonal',
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
|
|
239
|
-
const iconSize = this.size === 'xxs' ? '12px' : this.size === 'xs' ? '16px' : this.size === 'sm' ? '20px' : this.size === 'md' ? '24px' : this.size === 'lg' ? '24px' : '40px';
|
|
238
|
+
const iconSizeClass = this.size === 'xxs' ? 'text-xs' : this.size === 'xs' ? 'text-base' : this.size === 'sm' ? 'text-xl' : this.size === 'md' ? 'text-2xl' : this.size === 'lg' ? 'text-2xl' : 'text-4xl';
|
|
240
239
|
|
|
241
240
|
// If href is provided, render an anchor element.
|
|
242
241
|
if (this.href) {
|
|
@@ -256,7 +255,7 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
256
255
|
? html`<slot></slot>`
|
|
257
256
|
: html`
|
|
258
257
|
<slot style="display:none" @slotchange=${this._handleSlotChange}></slot>
|
|
259
|
-
<schmancy-icon
|
|
258
|
+
<schmancy-icon class=${iconSizeClass}>${this.icon || this._capturedIcon}</schmancy-icon>
|
|
260
259
|
`
|
|
261
260
|
}
|
|
262
261
|
</a>
|
|
@@ -279,7 +278,7 @@ export class SchmnacyIconButton extends SchmancyElement {
|
|
|
279
278
|
? html`<slot></slot>`
|
|
280
279
|
: html`
|
|
281
280
|
<slot style="display:none" @slotchange=${this._handleSlotChange}></slot>
|
|
282
|
-
<schmancy-icon
|
|
281
|
+
<schmancy-icon class=${iconSizeClass}>${this.icon || this._capturedIcon}</schmancy-icon>
|
|
283
282
|
`
|
|
284
283
|
}
|
|
285
284
|
</button>
|
package/src/icons/icon.ts
CHANGED
|
@@ -1,306 +1,56 @@
|
|
|
1
1
|
import { SchmancyElement } from '@mixins/index'
|
|
2
|
-
import { consume } from '@lit/context'
|
|
3
2
|
import { css, html } from 'lit'
|
|
4
|
-
import { customElement
|
|
5
|
-
import { BehaviorSubject, combineLatest, takeUntil } from 'rxjs'
|
|
6
|
-
import { tap } from 'rxjs/operators'
|
|
7
|
-
import { SchmancyButtonSizeContext, type SchmancyButtonSize } from '../button/context'
|
|
3
|
+
import { customElement } from 'lit/decorators.js'
|
|
8
4
|
|
|
9
|
-
/**
|
|
10
|
-
* Icon size tokens - M3 aligned with optical size optimization
|
|
11
|
-
* - xxs: 12px (opsz: 20) - fits in 24px buttons (ultra-compact)
|
|
12
|
-
* - xs: 16px (opsz: 20) - fits in 32px buttons
|
|
13
|
-
* - sm: 20px (opsz: 20) - fits in 40px buttons
|
|
14
|
-
* - md: 24px (opsz: 24) - fits in 48px buttons (default)
|
|
15
|
-
* - lg: 32px (opsz: 40) - fits in 56px buttons
|
|
16
|
-
* - Or custom string like '48px'
|
|
17
|
-
*/
|
|
18
|
-
export type IconSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | string
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @element schmancy-icon
|
|
22
|
-
* Material Symbols icon component with flexible font variation properties
|
|
23
|
-
*
|
|
24
|
-
* @cssprop --schmancy-icon-size - The size of the icon (default: 24px)
|
|
25
|
-
* @cssprop --schmancy-icon-fill - Fill value for icon (0-1)
|
|
26
|
-
* @cssprop --schmancy-icon-weight - Weight value for icon (100-700)
|
|
27
|
-
* @cssprop --schmancy-icon-grade - Grade value for icon (-50-200)
|
|
28
|
-
* @cssprop --schmancy-icon-opsz - Optical size (default: 24)
|
|
29
|
-
* @csspart icon - The inner `<span>` carrying the Material Symbols glyph.
|
|
30
|
-
*/
|
|
31
5
|
@customElement('schmancy-icon')
|
|
32
6
|
export default class SchmancyIcon extends SchmancyElement {
|
|
33
7
|
static styles = [css`
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
display: flex;
|
|
73
|
-
align-items: center;
|
|
74
|
-
justify-content: center;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/* CSS-generated content is NOT translated by Google Translate */
|
|
78
|
-
.material-symbols[data-icon]::before {
|
|
79
|
-
content: attr(data-icon);
|
|
80
|
-
}
|
|
81
|
-
`];
|
|
82
|
-
// Static flag to track if Google Fonts have been loaded
|
|
83
|
-
private static fontsLoaded = false
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Load Material Symbols fonts from Google Fonts CDN
|
|
87
|
-
*/
|
|
88
|
-
private static loadFonts(): void {
|
|
89
|
-
if (SchmancyIcon.fontsLoaded) {
|
|
8
|
+
:host {
|
|
9
|
+
font-family: 'Material Symbols Outlined';
|
|
10
|
+
font-size: 24px;
|
|
11
|
+
width: 1em;
|
|
12
|
+
height: 1em;
|
|
13
|
+
color: inherit;
|
|
14
|
+
font-variation-settings: inherit;
|
|
15
|
+
font-weight: 400;
|
|
16
|
+
display: inline-flex;
|
|
17
|
+
font-style: normal;
|
|
18
|
+
place-items: center;
|
|
19
|
+
place-content: center;
|
|
20
|
+
line-height: 1;
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
letter-spacing: normal;
|
|
23
|
+
text-transform: none;
|
|
24
|
+
user-select: none;
|
|
25
|
+
white-space: nowrap;
|
|
26
|
+
flex-shrink: 0;
|
|
27
|
+
-webkit-font-smoothing: antialiased;
|
|
28
|
+
text-rendering: optimizeLegibility;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
::slotted(svg) {
|
|
32
|
+
fill: currentColor;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
::slotted(*) {
|
|
36
|
+
height: 100%;
|
|
37
|
+
width: 100%;
|
|
38
|
+
}
|
|
39
|
+
`]
|
|
40
|
+
|
|
41
|
+
override connectedCallback(): void {
|
|
42
|
+
super.connectedCallback()
|
|
43
|
+
const ariaHidden = this.getAttribute('aria-hidden')
|
|
44
|
+
if (ariaHidden === 'false') {
|
|
45
|
+
this.removeAttribute('aria-hidden')
|
|
90
46
|
return
|
|
91
47
|
}
|
|
92
|
-
|
|
93
|
-
const link = document.createElement('link')
|
|
94
|
-
link.rel = 'stylesheet'
|
|
95
|
-
link.href = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap'
|
|
96
|
-
document.head.appendChild(link)
|
|
97
|
-
|
|
98
|
-
SchmancyIcon.fontsLoaded = true
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Fill value for the icon (0-1)
|
|
103
|
-
* 0 = outlined, 1 = filled
|
|
104
|
-
*/
|
|
105
|
-
@property({ type: Number, reflect: true })
|
|
106
|
-
fill = 0
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Weight value for the icon (100-700)
|
|
110
|
-
* Controls the thickness of the icon strokes
|
|
111
|
-
*/
|
|
112
|
-
@property({ type: Number, reflect: true })
|
|
113
|
-
weight = 400
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Grade value for the icon (-50-200)
|
|
117
|
-
* Adjusts the visual weight/grade
|
|
118
|
-
*/
|
|
119
|
-
@property({ type: Number, reflect: true })
|
|
120
|
-
grade = 0
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Icon variant style
|
|
124
|
-
* @values outlined | rounded | sharp
|
|
125
|
-
*/
|
|
126
|
-
@property({ type: String, reflect: true })
|
|
127
|
-
variant: 'outlined' | 'rounded' | 'sharp' = 'outlined'
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Size of the icon - M3 aligned tokens or custom string
|
|
131
|
-
* Tokens: 'xxs' (12px), 'xs' (16px), 'sm' (20px), 'md' (24px), 'lg' (32px)
|
|
132
|
-
* Custom: any CSS size string like '48px', '2rem'
|
|
133
|
-
*
|
|
134
|
-
* When this icon is a descendant of `<schmancy-button>`, the button's
|
|
135
|
-
* `size` wins (via `SchmancyButtonSizeContext`). The local `size` only
|
|
136
|
-
* applies when there is no ancestor button.
|
|
137
|
-
*/
|
|
138
|
-
@property({ type: String, reflect: true })
|
|
139
|
-
size: IconSize = 'md'
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Size inherited from an ancestor `<schmancy-button>` via context.
|
|
143
|
-
* Undefined when the icon is not nested in a button.
|
|
144
|
-
*/
|
|
145
|
-
@consume({ context: SchmancyButtonSizeContext, subscribe: true })
|
|
146
|
-
@state()
|
|
147
|
-
private _buttonSize?: SchmancyButtonSize
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Icon name - use this instead of slot content to prevent translation breaking icons.
|
|
151
|
-
* When set, this takes precedence over slot content.
|
|
152
|
-
* Example: <schmancy-icon icon="delete"></schmancy-icon>
|
|
153
|
-
*/
|
|
154
|
-
@property({ type: String })
|
|
155
|
-
icon?: string
|
|
156
|
-
|
|
157
|
-
// M3 aligned token sizes with optimal optical sizes
|
|
158
|
-
private static readonly tokenSizes: Record<string, { size: string; opsz: number }> = {
|
|
159
|
-
xxs: { size: '12px', opsz: 20 }, // fits in 24px buttons (ultra-compact)
|
|
160
|
-
xs: { size: '16px', opsz: 20 }, // fits in 32px buttons
|
|
161
|
-
sm: { size: '20px', opsz: 20 }, // fits in 40px buttons
|
|
162
|
-
md: { size: '24px', opsz: 24 }, // fits in 48px buttons (default)
|
|
163
|
-
lg: { size: '32px', opsz: 40 }, // fits in 56px buttons
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/** Extract pixel value from a custom size string for optical size */
|
|
167
|
-
private static computeOpticalSize(size: string): number {
|
|
168
|
-
const px = parseFloat(size)
|
|
169
|
-
return isNaN(px) ? 24 : Math.max(20, Math.min(48, Math.round(px)))
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// RxJS subjects for reactive property updates
|
|
173
|
-
private fill$ = new BehaviorSubject(this.fill)
|
|
174
|
-
private weight$ = new BehaviorSubject(this.weight)
|
|
175
|
-
private grade$ = new BehaviorSubject(this.grade)
|
|
176
|
-
private variant$ = new BehaviorSubject(this.variant)
|
|
177
|
-
|
|
178
|
-
// Captured icon name from slot content (translation-proof)
|
|
179
|
-
@state()
|
|
180
|
-
private _capturedIcon?: string
|
|
181
|
-
|
|
182
|
-
// Observer for text content changes (ternaries update text nodes, not DOM structure)
|
|
183
|
-
private _observer?: MutationObserver
|
|
184
|
-
|
|
185
|
-
connectedCallback(): void {
|
|
186
|
-
super.connectedCallback()
|
|
187
|
-
|
|
188
|
-
// Capture initial icon name
|
|
189
|
-
this._updateCapturedIcon()
|
|
190
|
-
|
|
191
|
-
// Watch for text content changes (characterData) for dynamic icon updates
|
|
192
|
-
this._observer = new MutationObserver(() => this._updateCapturedIcon())
|
|
193
|
-
this._observer.observe(this, { childList: true, characterData: true, subtree: true })
|
|
194
|
-
|
|
195
|
-
// Load Google Fonts if not already loaded
|
|
196
|
-
SchmancyIcon.loadFonts()
|
|
197
|
-
|
|
198
|
-
// Prevent browser translation from breaking icon ligatures
|
|
199
|
-
// Using multiple methods for maximum compatibility:
|
|
200
|
-
// - translate="no" (HTML5 standard)
|
|
201
|
-
// - class="notranslate" (Google Translate specific)
|
|
48
|
+
this.setAttribute('aria-hidden', 'true')
|
|
202
49
|
this.setAttribute('translate', 'no')
|
|
203
|
-
this.classList.add('notranslate')
|
|
204
|
-
|
|
205
|
-
// Set accessibility attributes for decorative icons
|
|
206
|
-
if (!this.hasAttribute('aria-label') &&
|
|
207
|
-
!this.hasAttribute('aria-labelledby') &&
|
|
208
|
-
!this.hasAttribute('aria-hidden') &&
|
|
209
|
-
!this.hasAttribute('role')) {
|
|
210
|
-
this.setAttribute('aria-hidden', 'true')
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// Setup reactive CSS variable updates
|
|
214
|
-
combineLatest([
|
|
215
|
-
this.fill$,
|
|
216
|
-
this.weight$,
|
|
217
|
-
this.grade$,
|
|
218
|
-
this.variant$
|
|
219
|
-
]).pipe(
|
|
220
|
-
tap(([fill, weight, grade, variant]) => {
|
|
221
|
-
// Update CSS custom properties for smooth transitions
|
|
222
|
-
this.style.setProperty('--schmancy-icon-fill', String(fill))
|
|
223
|
-
this.style.setProperty('--schmancy-icon-weight', String(weight))
|
|
224
|
-
this.style.setProperty('--schmancy-icon-grade', String(grade))
|
|
225
|
-
|
|
226
|
-
// Update font family based on variant
|
|
227
|
-
const fontFamily = {
|
|
228
|
-
'outlined': 'Material Symbols Outlined',
|
|
229
|
-
'rounded': 'Material Symbols Rounded',
|
|
230
|
-
'sharp': 'Material Symbols Sharp'
|
|
231
|
-
}[variant] || 'Material Symbols Outlined'
|
|
232
|
-
|
|
233
|
-
this.style.setProperty('--schmancy-icon-font', fontFamily)
|
|
234
|
-
}),
|
|
235
|
-
takeUntil(this.disconnecting)
|
|
236
|
-
).subscribe()
|
|
237
|
-
|
|
238
50
|
}
|
|
239
51
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
*/
|
|
243
|
-
private _updateCapturedIcon(): void {
|
|
244
|
-
if (!this.icon) {
|
|
245
|
-
const textContent = this.textContent?.trim()
|
|
246
|
-
if (textContent && textContent !== this._capturedIcon) {
|
|
247
|
-
this._capturedIcon = textContent
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
protected updated(changedProperties: Map<string | number | symbol, unknown>): void {
|
|
253
|
-
super.updated(changedProperties)
|
|
254
|
-
|
|
255
|
-
// Update BehaviorSubjects when properties change
|
|
256
|
-
if (changedProperties.has('fill')) {
|
|
257
|
-
this.fill$.next(this.fill)
|
|
258
|
-
}
|
|
259
|
-
if (changedProperties.has('weight')) {
|
|
260
|
-
this.weight$.next(this.weight)
|
|
261
|
-
}
|
|
262
|
-
if (changedProperties.has('grade')) {
|
|
263
|
-
this.grade$.next(this.grade)
|
|
264
|
-
}
|
|
265
|
-
if (changedProperties.has('variant')) {
|
|
266
|
-
this.variant$.next(this.variant)
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
protected render(): unknown {
|
|
271
|
-
const fontFamily = {
|
|
272
|
-
'outlined': 'Material Symbols Outlined',
|
|
273
|
-
'rounded': 'Material Symbols Rounded',
|
|
274
|
-
'sharp': 'Material Symbols Sharp'
|
|
275
|
-
}[this.variant] || 'Material Symbols Outlined'
|
|
276
|
-
|
|
277
|
-
// Effective size: ancestor `<schmancy-button>` wins via context, else local `size`.
|
|
278
|
-
const effectiveSize: IconSize = this._buttonSize ?? this.size
|
|
279
|
-
// Resolve size: token → px, bare number → px, or pass through as-is
|
|
280
|
-
const sizeConfig = SchmancyIcon.tokenSizes[effectiveSize]
|
|
281
|
-
const isNumeric = !sizeConfig && /^\d+(\.\d+)?$/.test(effectiveSize)
|
|
282
|
-
const iconSize = sizeConfig?.size || (isNumeric ? `${effectiveSize}px` : effectiveSize)
|
|
283
|
-
const opticalSize = sizeConfig?.opsz || SchmancyIcon.computeOpticalSize(iconSize)
|
|
284
|
-
|
|
285
|
-
// Set size on HOST so :host CSS picks it up
|
|
286
|
-
this.style.setProperty('--schmancy-icon-size', iconSize)
|
|
287
|
-
this.style.setProperty('--schmancy-icon-opsz', String(opticalSize))
|
|
288
|
-
|
|
289
|
-
const style = {
|
|
290
|
-
'--schmancy-icon-fill': this.fill,
|
|
291
|
-
'--schmancy-icon-weight': this.weight,
|
|
292
|
-
'--schmancy-icon-grade': this.grade,
|
|
293
|
-
'--schmancy-icon-font': fontFamily,
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Priority: icon property > captured icon (for dynamic content)
|
|
297
|
-
const iconName = this.icon || this._capturedIcon
|
|
298
|
-
|
|
299
|
-
// Always render slot (hidden) to observe content changes, display via data-icon
|
|
300
|
-
return html`
|
|
301
|
-
<span class="material-symbols notranslate" part="icon" translate="no" data-icon=${iconName || ''} style=${this.styleMap(style)}></span>
|
|
302
|
-
<slot style="display:none"></slot>
|
|
303
|
-
`
|
|
52
|
+
protected override render(): unknown {
|
|
53
|
+
return html`<slot></slot>`
|
|
304
54
|
}
|
|
305
55
|
}
|
|
306
56
|
|
|
@@ -308,4 +58,4 @@ declare global {
|
|
|
308
58
|
interface HTMLElementTagNameMap {
|
|
309
59
|
'schmancy-icon': SchmancyIcon
|
|
310
60
|
}
|
|
311
|
-
}
|
|
61
|
+
}
|
package/src/json/json.ts
CHANGED
|
@@ -41,7 +41,7 @@ export class SchmancyJson extends SchmancyElement {
|
|
|
41
41
|
@click=${this.copyJSON}
|
|
42
42
|
>
|
|
43
43
|
<div class="flex items-center justify-between mb-1">
|
|
44
|
-
<schmancy-icon
|
|
44
|
+
<schmancy-icon class="text-xs text-on-surface-variant">content_copy</schmancy-icon>
|
|
45
45
|
</div>
|
|
46
46
|
<pre class="text-[10px] leading-tight">${unsafeHTML(highlighted)}</pre>
|
|
47
47
|
</div>
|
package/src/table/table.ts
CHANGED
|
@@ -182,9 +182,9 @@ export class SchmancyDataTable<T extends Record<string, any> = any> extends Schm
|
|
|
182
182
|
return html`
|
|
183
183
|
<span class="ml-1">
|
|
184
184
|
${this.sortDirection === 'asc'
|
|
185
|
-
? html`<schmancy-icon
|
|
185
|
+
? html`<schmancy-icon class="text-base">arrow_upward</schmancy-icon>`
|
|
186
186
|
: this.sortDirection === 'desc'
|
|
187
|
-
? html`<schmancy-icon
|
|
187
|
+
? html`<schmancy-icon class="text-base">arrow_downward</schmancy-icon>`
|
|
188
188
|
: null}
|
|
189
189
|
</span>
|
|
190
190
|
`
|
|
@@ -349,7 +349,7 @@ export class SchmancyThemeAudioPlayer extends SchmancyElement {
|
|
|
349
349
|
this.currentThemeName !== 'default',
|
|
350
350
|
() => html`
|
|
351
351
|
<schmancy-button variant="text" size="sm" @click=${() => this.resetToDefaults()}>
|
|
352
|
-
<schmancy-icon
|
|
352
|
+
<schmancy-icon class="text-base">refresh</schmancy-icon>
|
|
353
353
|
Reset
|
|
354
354
|
</schmancy-button>
|
|
355
355
|
`
|
|
@@ -68,7 +68,7 @@ export declare class SchmancyBadgeV2 extends SchmancyElement {
|
|
|
68
68
|
* Get icon size based on badge size with harmonious proportions
|
|
69
69
|
* Using golden ratio-inspired proportions relative to text size
|
|
70
70
|
*/
|
|
71
|
-
private
|
|
71
|
+
private getIconSizeClass;
|
|
72
72
|
/**
|
|
73
73
|
* Get additional styling for specific sizes
|
|
74
74
|
*/
|
|
@@ -1,88 +1,7 @@
|
|
|
1
1
|
import { SchmancyElement } from '@mixins/index';
|
|
2
|
-
/**
|
|
3
|
-
* Icon size tokens - M3 aligned with optical size optimization
|
|
4
|
-
* - xxs: 12px (opsz: 20) - fits in 24px buttons (ultra-compact)
|
|
5
|
-
* - xs: 16px (opsz: 20) - fits in 32px buttons
|
|
6
|
-
* - sm: 20px (opsz: 20) - fits in 40px buttons
|
|
7
|
-
* - md: 24px (opsz: 24) - fits in 48px buttons (default)
|
|
8
|
-
* - lg: 32px (opsz: 40) - fits in 56px buttons
|
|
9
|
-
* - Or custom string like '48px'
|
|
10
|
-
*/
|
|
11
|
-
export type IconSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | string;
|
|
12
|
-
/**
|
|
13
|
-
* @element schmancy-icon
|
|
14
|
-
* Material Symbols icon component with flexible font variation properties
|
|
15
|
-
*
|
|
16
|
-
* @cssprop --schmancy-icon-size - The size of the icon (default: 24px)
|
|
17
|
-
* @cssprop --schmancy-icon-fill - Fill value for icon (0-1)
|
|
18
|
-
* @cssprop --schmancy-icon-weight - Weight value for icon (100-700)
|
|
19
|
-
* @cssprop --schmancy-icon-grade - Grade value for icon (-50-200)
|
|
20
|
-
* @cssprop --schmancy-icon-opsz - Optical size (default: 24)
|
|
21
|
-
* @csspart icon - The inner `<span>` carrying the Material Symbols glyph.
|
|
22
|
-
*/
|
|
23
2
|
export default class SchmancyIcon extends SchmancyElement {
|
|
24
3
|
static styles: import("lit").CSSResult[];
|
|
25
|
-
private static fontsLoaded;
|
|
26
|
-
/**
|
|
27
|
-
* Load Material Symbols fonts from Google Fonts CDN
|
|
28
|
-
*/
|
|
29
|
-
private static loadFonts;
|
|
30
|
-
/**
|
|
31
|
-
* Fill value for the icon (0-1)
|
|
32
|
-
* 0 = outlined, 1 = filled
|
|
33
|
-
*/
|
|
34
|
-
fill: number;
|
|
35
|
-
/**
|
|
36
|
-
* Weight value for the icon (100-700)
|
|
37
|
-
* Controls the thickness of the icon strokes
|
|
38
|
-
*/
|
|
39
|
-
weight: number;
|
|
40
|
-
/**
|
|
41
|
-
* Grade value for the icon (-50-200)
|
|
42
|
-
* Adjusts the visual weight/grade
|
|
43
|
-
*/
|
|
44
|
-
grade: number;
|
|
45
|
-
/**
|
|
46
|
-
* Icon variant style
|
|
47
|
-
* @values outlined | rounded | sharp
|
|
48
|
-
*/
|
|
49
|
-
variant: 'outlined' | 'rounded' | 'sharp';
|
|
50
|
-
/**
|
|
51
|
-
* Size of the icon - M3 aligned tokens or custom string
|
|
52
|
-
* Tokens: 'xxs' (12px), 'xs' (16px), 'sm' (20px), 'md' (24px), 'lg' (32px)
|
|
53
|
-
* Custom: any CSS size string like '48px', '2rem'
|
|
54
|
-
*
|
|
55
|
-
* When this icon is a descendant of `<schmancy-button>`, the button's
|
|
56
|
-
* `size` wins (via `SchmancyButtonSizeContext`). The local `size` only
|
|
57
|
-
* applies when there is no ancestor button.
|
|
58
|
-
*/
|
|
59
|
-
size: IconSize;
|
|
60
|
-
/**
|
|
61
|
-
* Size inherited from an ancestor `<schmancy-button>` via context.
|
|
62
|
-
* Undefined when the icon is not nested in a button.
|
|
63
|
-
*/
|
|
64
|
-
private _buttonSize?;
|
|
65
|
-
/**
|
|
66
|
-
* Icon name - use this instead of slot content to prevent translation breaking icons.
|
|
67
|
-
* When set, this takes precedence over slot content.
|
|
68
|
-
* Example: <schmancy-icon icon="delete"></schmancy-icon>
|
|
69
|
-
*/
|
|
70
|
-
icon?: string;
|
|
71
|
-
private static readonly tokenSizes;
|
|
72
|
-
/** Extract pixel value from a custom size string for optical size */
|
|
73
|
-
private static computeOpticalSize;
|
|
74
|
-
private fill$;
|
|
75
|
-
private weight$;
|
|
76
|
-
private grade$;
|
|
77
|
-
private variant$;
|
|
78
|
-
private _capturedIcon?;
|
|
79
|
-
private _observer?;
|
|
80
4
|
connectedCallback(): void;
|
|
81
|
-
/**
|
|
82
|
-
* Update captured icon from current text content
|
|
83
|
-
*/
|
|
84
|
-
private _updateCapturedIcon;
|
|
85
|
-
protected updated(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
86
5
|
protected render(): unknown;
|
|
87
6
|
}
|
|
88
7
|
declare global {
|