@mhmo91/schmancy 0.9.4 → 0.9.6
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/.claude-plugin/plugin.json +13 -0
- package/README.md +14 -4
- package/custom-elements.json +493 -718
- package/dist/.claude-plugin/plugin.json +13 -0
- package/dist/animation-Bcwh107v.cjs.map +1 -0
- package/dist/animation-CXKSuUoE.js.map +1 -0
- package/dist/area-BARjKpE9.js +590 -0
- package/dist/area-BARjKpE9.js.map +1 -0
- package/dist/area-D9b9dHQr.cjs +12 -0
- package/dist/area-D9b9dHQr.cjs.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/audio-C7TzWI8M.js +335 -0
- package/dist/audio-C7TzWI8M.js.map +1 -0
- package/dist/audio-DUVz7Ars.cjs +1 -0
- package/dist/audio-DUVz7Ars.cjs.map +1 -0
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/autocomplete-AI2CCJmK.cjs +115 -0
- package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
- package/dist/autocomplete-DOimwVMP.js +404 -0
- package/dist/autocomplete-DOimwVMP.js.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/boat-Bk4u-LzT.cjs +80 -0
- package/dist/boat-Bk4u-LzT.cjs.map +1 -0
- package/dist/boat-DrghVeWK.js +347 -0
- package/dist/boat-DrghVeWK.js.map +1 -0
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +34 -0
- package/dist/breadcrumb.cjs.map +1 -0
- package/dist/breadcrumb.js +73 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/busy-BmFfwyz_.js +168 -0
- package/dist/busy-BmFfwyz_.js.map +1 -0
- package/dist/busy-c_q_F8O0.cjs +134 -0
- package/dist/busy-c_q_F8O0.cjs.map +1 -0
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +4 -4
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +25 -6
- package/dist/button.js.map +1 -1
- package/dist/card-BADJHUMA.js +285 -0
- package/dist/card-BADJHUMA.js.map +1 -0
- package/dist/card-C_E944_Z.cjs +177 -0
- package/dist/card-C_E944_Z.cjs.map +1 -0
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +3 -3
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.js +2 -2
- package/dist/checkbox-D7rvCrGk.js +629 -0
- package/dist/checkbox-D7rvCrGk.js.map +1 -0
- package/dist/checkbox-ZqDoCagB.cjs +39 -0
- package/dist/checkbox-ZqDoCagB.cjs.map +1 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips-Cux635Qs.cjs +253 -0
- package/dist/chips-Cux635Qs.cjs.map +1 -0
- package/dist/chips-vdzIsesI.js +655 -0
- package/dist/chips-vdzIsesI.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight-C9lKek2p.cjs +190 -0
- package/dist/code-highlight-C9lKek2p.cjs.map +1 -0
- package/dist/code-highlight-D6yruol6.js +291 -0
- package/dist/code-highlight-D6yruol6.js.map +1 -0
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/components-ByRyEzz5.cjs +73 -0
- package/dist/components-ByRyEzz5.cjs.map +1 -0
- package/dist/components-DSvPKR9Q.js +730 -0
- package/dist/components-DSvPKR9Q.js.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +7 -7
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +5 -4
- 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-82y5h3E4.cjs +1 -0
- package/dist/cursor-glow-82y5h3E4.cjs.map +1 -0
- package/dist/cursor-glow-C2YRrB8Z.js +46 -0
- package/dist/cursor-glow-C2YRrB8Z.js.map +1 -0
- package/dist/date-range-DJsavigf.cjs +131 -0
- package/dist/date-range-DJsavigf.cjs.map +1 -0
- package/dist/date-range-inline-B87TDYI6.js +267 -0
- package/dist/date-range-inline-B87TDYI6.js.map +1 -0
- package/dist/date-range-inline-De-M0VmL.cjs +43 -0
- package/dist/date-range-inline-De-M0VmL.cjs.map +1 -0
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range-tEX2Jx2j.js +946 -0
- package/dist/date-range-tEX2Jx2j.js.map +1 -0
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay-BvVdfhAR.cjs +9 -0
- package/dist/delay-BvVdfhAR.cjs.map +1 -0
- package/dist/delay-CZw37zps.js +347 -0
- package/dist/delay-CZw37zps.js.map +1 -0
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/details-Bhz8_whd.cjs +168 -0
- package/dist/details-Bhz8_whd.cjs.map +1 -0
- package/dist/details-D7VTnLOh.js +294 -0
- package/dist/details-D7VTnLOh.js.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/dialog-service-ClFrOWf4.js +193 -0
- package/dist/dialog-service-ClFrOWf4.js.map +1 -0
- package/dist/dialog-service-DcuAavp2.cjs +1 -0
- package/dist/dialog-service-DcuAavp2.cjs.map +1 -0
- package/dist/dialog.cjs +18 -11
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +66 -43
- package/dist/dialog.js.map +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +5 -5
- package/dist/divider-S0bHwCCS.cjs +57 -0
- package/dist/divider-S0bHwCCS.cjs.map +1 -0
- package/dist/divider-zS232JDr.js +87 -0
- package/dist/divider-zS232JDr.js.map +1 -0
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +4 -4
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +8 -7
- package/dist/dropdown.js.map +1 -1
- package/dist/expand-BXt9SqAF.js +337 -0
- package/dist/expand-BXt9SqAF.js.map +1 -0
- package/dist/expand-Dr7TFXpl.cjs +141 -0
- package/dist/expand-Dr7TFXpl.cjs.map +1 -0
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/extra-BmZTXAp0.cjs +31 -0
- package/dist/extra-BmZTXAp0.cjs.map +1 -0
- package/dist/extra-COYhsOyZ.js +3435 -0
- package/dist/extra-COYhsOyZ.js.map +1 -0
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/float-CSRW-Rrd.cjs +1 -0
- package/dist/float-CSRW-Rrd.cjs.map +1 -0
- package/dist/float-DCXafWh6.js +5 -0
- package/dist/float-DCXafWh6.js.map +1 -0
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/flow-CqgDEIqK.js.map +1 -0
- package/dist/flow-DSu4PLt1.cjs.map +1 -0
- package/dist/form-CAY9GSCd.cjs +1 -0
- package/dist/form-CAY9GSCd.cjs.map +1 -0
- package/dist/form-D2cJ58TB.js +68 -0
- package/dist/form-D2cJ58TB.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +2 -1
- package/dist/hashContent-kKvXKFa9.cjs.map +1 -0
- package/dist/hashContent-nD2uWwi2.js.map +1 -0
- package/dist/icons-BbaI9Zf-.js +162 -0
- package/dist/icons-BbaI9Zf-.js.map +1 -0
- package/dist/icons-DPUeLS_Y.cjs +52 -0
- package/dist/icons-DPUeLS_Y.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/iframe-CEDOvkql.js +45 -0
- package/dist/iframe-CEDOvkql.js.map +1 -0
- package/dist/iframe-Ct50FYXq.cjs +24 -0
- package/dist/iframe-Ct50FYXq.cjs.map +1 -0
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +65 -59
- package/dist/input-DMjpf6V8.cjs +51 -0
- package/dist/input-DMjpf6V8.cjs.map +1 -0
- package/dist/input-Ri72dn5t.js +364 -0
- package/dist/input-Ri72dn5t.js.map +1 -0
- package/dist/input-chip-BhjGVpc3.cjs +146 -0
- package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
- package/dist/input-chip-CI4__N8w.js +305 -0
- package/dist/input-chip-CI4__N8w.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/intersection-D1v1UCVv.cjs.map +1 -0
- package/dist/intersection-LfEsy29T.js.map +1 -0
- package/dist/json.cjs +3 -3
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +5 -4
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +28 -0
- package/dist/kbd.cjs.map +1 -0
- package/dist/kbd.js +45 -0
- package/dist/kbd.js.map +1 -0
- package/dist/layout-BE2ld1IY.js +94 -0
- package/dist/layout-BE2ld1IY.js.map +1 -0
- package/dist/layout-D7xOqMkJ.cjs +17 -0
- package/dist/layout-D7xOqMkJ.cjs.map +1 -0
- package/dist/layout-PZCF3kwl.cjs +1 -0
- package/dist/layout-PZCF3kwl.cjs.map +1 -0
- package/dist/layout-uAQpJN31.js +268 -0
- package/dist/layout-uAQpJN31.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/lightbox-C0OEHns9.js +679 -0
- package/dist/lightbox-C0OEHns9.js.map +1 -0
- package/dist/lightbox-cXRnvHMN.cjs +202 -0
- package/dist/lightbox-cXRnvHMN.cjs.map +1 -0
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/list-CmJ5h35b.cjs +40 -0
- package/dist/list-CmJ5h35b.cjs.map +1 -0
- package/dist/list-d1mHar5p.js +106 -0
- package/dist/list-d1mHar5p.js.map +1 -0
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/litElement.mixin-Bj2q1yPw.cjs +1 -0
- package/dist/litElement.mixin-Bj2q1yPw.cjs.map +1 -0
- package/dist/litElement.mixin-CncaUoxz.js +12 -0
- package/dist/litElement.mixin-CncaUoxz.js.map +1 -0
- package/dist/magnetic-Dj52WplI.js +47 -0
- package/dist/magnetic-Dj52WplI.js.map +1 -0
- package/dist/magnetic-aBBnj_vk.cjs +1 -0
- package/dist/magnetic-aBBnj_vk.cjs.map +1 -0
- package/dist/mailbox-BmChskZc.cjs +1142 -0
- package/dist/mailbox-BmChskZc.cjs.map +1 -0
- package/dist/mailbox-C4-E93be.js +1585 -0
- package/dist/mailbox-C4-E93be.js.map +1 -0
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/map-DHyYLhvy.js +206 -0
- package/dist/map-DHyYLhvy.js.map +1 -0
- package/dist/map-DYEvlNl0.cjs +80 -0
- package/dist/map-DYEvlNl0.cjs.map +1 -0
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/menu-BlPTI6H9.cjs +23 -0
- package/dist/menu-BlPTI6H9.cjs.map +1 -0
- package/dist/menu-DFDBADp4.js +51 -0
- package/dist/menu-DFDBADp4.js.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.cjs.map +1 -1
- package/dist/mixins.js +43 -15
- package/dist/mixins.js.map +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 +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +2 -2
- package/dist/notification-DGpv8g2H.js +304 -0
- package/dist/notification-DGpv8g2H.js.map +1 -0
- package/dist/notification-DKVWYhqs.cjs +23 -0
- package/dist/notification-DKVWYhqs.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/option-BD2eh458.js +98 -0
- package/dist/option-BD2eh458.js.map +1 -0
- package/dist/option-LtSDy2xf.cjs +43 -0
- package/dist/option-LtSDy2xf.cjs.map +1 -0
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/overlay-stack-CEYGD9T1.cjs.map +1 -0
- package/dist/overlay-stack-Ca4EK2Mu.js.map +1 -0
- package/dist/page.cjs +2 -2
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +5 -5
- package/dist/progress-B5ChDPbB.cjs +51 -0
- package/dist/progress-B5ChDPbB.cjs.map +1 -0
- package/dist/progress-CE1Pk2hi.js +128 -0
- package/dist/progress-CE1Pk2hi.js.map +1 -0
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/provide-BZ9lq_Be.cjs +1 -0
- package/dist/provide-BZ9lq_Be.cjs.map +1 -0
- package/dist/provide-jn1Fj1vv.js +107 -0
- package/dist/provide-jn1Fj1vv.js.map +1 -0
- package/dist/qr-scanner.cjs +2 -2
- package/dist/qr-scanner.cjs.map +1 -1
- package/dist/qr-scanner.js +2 -2
- package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
- package/dist/radio-group-Cd9pZ2MR.cjs.map +1 -0
- package/dist/radio-group-CyRHgIF3.js +106 -0
- package/dist/radio-group-CyRHgIF3.js.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +4 -4
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +4 -3
- package/dist/range.js.map +1 -1
- package/dist/reduced-motion-B83yZbcO.js.map +1 -0
- package/dist/reduced-motion-DR32yKEO.cjs.map +1 -0
- package/dist/rxjs-utils-Bldch1RO.js.map +1 -0
- package/dist/rxjs-utils-hAgKC7vk.cjs.map +1 -0
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/scroll-C_iNOi7E.cjs +26 -0
- package/dist/scroll-C_iNOi7E.cjs.map +1 -0
- package/dist/scroll-DoliwpRu.js +113 -0
- package/dist/scroll-DoliwpRu.js.map +1 -0
- package/dist/search-BlGJ6uJv.js.map +1 -0
- package/dist/search-C8eAOzBm.cjs.map +1 -0
- package/dist/select-CWWuZ2iJ.cjs +56 -0
- package/dist/select-CWWuZ2iJ.cjs.map +1 -0
- package/dist/select-_vHPXi30.js +305 -0
- package/dist/select-_vHPXi30.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/sheet-i1KtxGIj.js +168 -0
- package/dist/sheet-i1KtxGIj.js.map +1 -0
- package/dist/sheet-r0oEYIdi.cjs +35 -0
- package/dist/sheet-r0oEYIdi.cjs.map +1 -0
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/sheet.service-Cr13Oo6G.cjs +1 -0
- package/dist/sheet.service-Cr13Oo6G.cjs.map +1 -0
- package/dist/sheet.service-DUO5_kmI.js +86 -0
- package/dist/sheet.service-DUO5_kmI.js.map +1 -0
- package/dist/skeleton.cjs +33 -0
- package/dist/skeleton.cjs.map +1 -0
- package/dist/skeleton.js +58 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/skills/INDEX.md +73 -0
- package/dist/skills/SKILL.md +120 -0
- package/dist/skills/breadcrumb.md +53 -0
- package/dist/skills/kbd.md +40 -0
- package/dist/skills/schmancy/INDEX.md +73 -0
- package/dist/skills/schmancy/SKILL.md +120 -0
- package/dist/skills/schmancy/breadcrumb.md +53 -0
- package/dist/skills/schmancy/kbd.md +40 -0
- package/dist/skills/schmancy/skeleton.md +40 -0
- package/dist/skills/schmancy/splash-screen.md +60 -0
- package/dist/skills/schmancy/switch.md +58 -0
- package/dist/skills/schmancy/tooltip.md +38 -0
- package/dist/skills/schmancy/visually-hidden.md +41 -0
- package/dist/skills/skeleton.md +40 -0
- package/dist/skills/splash-screen.md +60 -0
- package/dist/skills/switch.md +58 -0
- package/dist/skills/tooltip.md +38 -0
- package/dist/skills/visually-hidden.md +41 -0
- package/dist/slider.cjs +3 -3
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +2 -2
- package/dist/sound.service-BjSoGjmT.cjs +1 -0
- package/dist/sound.service-BjSoGjmT.cjs.map +1 -0
- package/dist/sound.service-cdkw3Wkv.js +2353 -0
- package/dist/sound.service-cdkw3Wkv.js.map +1 -0
- package/dist/splash-screen-CquyPP1C.cjs +41 -0
- package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
- package/dist/splash-screen-CvucPkpD.js +83 -0
- package/dist/splash-screen-CvucPkpD.js.map +1 -0
- package/dist/splash-screen.cjs +1 -0
- package/dist/splash-screen.js +1 -0
- package/dist/src-Bemk2C2P.cjs +269 -0
- package/dist/src-Bemk2C2P.cjs.map +1 -0
- package/dist/src-f5a3W9Mj.js +1251 -0
- package/dist/src-f5a3W9Mj.js.map +1 -0
- package/dist/steps.cjs +10 -10
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +10 -9
- package/dist/steps.js.map +1 -1
- package/dist/store-Bmj6rvZY.js.map +1 -0
- package/dist/store-CO4nJyGj.cjs.map +1 -0
- package/dist/store.cjs +1 -1
- package/dist/store.js +1 -1
- package/dist/surface-CDufon40.cjs +7 -0
- package/dist/surface-CDufon40.cjs.map +1 -0
- package/dist/surface-CkEYJCae.js +22 -0
- package/dist/surface-CkEYJCae.js.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/surface.mixin-CSKqQH-0.cjs +297 -0
- package/dist/surface.mixin-CSKqQH-0.cjs.map +1 -0
- package/dist/surface.mixin-DqMwoddO.js +320 -0
- package/dist/surface.mixin-DqMwoddO.js.map +1 -0
- package/dist/switch.cjs +69 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.js +132 -0
- package/dist/switch.js.map +1 -0
- package/dist/table-DWc1mkpj.cjs +63 -0
- package/dist/table-DWc1mkpj.cjs.map +1 -0
- package/dist/table-P6VGG7NK.js +631 -0
- package/dist/table-P6VGG7NK.js.map +1 -0
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/tabs-CjGjGrqY.js +126 -0
- package/dist/tabs-CjGjGrqY.js.map +1 -0
- package/dist/tabs-DGJEKuhC.cjs +31 -0
- package/dist/tabs-DGJEKuhC.cjs.map +1 -0
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Cpa-VnnX.cjs +2 -0
- package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
- package/dist/tailwind.mixin-DufHBjmb.js +219 -0
- package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/textarea-DZT_Ofp5.js +209 -0
- package/dist/textarea-DZT_Ofp5.js.map +1 -0
- package/dist/textarea-jmTOXrzl.cjs +39 -0
- package/dist/textarea-jmTOXrzl.cjs.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-CCKqaksQ.cjs +181 -0
- package/dist/theme-CCKqaksQ.cjs.map +1 -0
- package/dist/theme-CEc32pAv.js +4122 -0
- package/dist/theme-CEc32pAv.js.map +1 -0
- package/dist/theme-button-BsJcv-Zv.cjs +8 -0
- package/dist/theme-button-BsJcv-Zv.cjs.map +1 -0
- package/dist/theme-button-dOiAvdKU.js +20 -0
- package/dist/theme-button-dOiAvdKU.js.map +1 -0
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.events-Bw3mYjUA.js.map +1 -0
- package/dist/theme.events-EznKK2Y0.cjs.map +1 -0
- package/dist/theme.interface-CM26m9te.cjs.map +1 -0
- package/dist/theme.interface-FAUIgbIq.js.map +1 -0
- package/dist/theme.js +5 -5
- package/dist/theme.service-ETiKUwVy.cjs +1 -0
- package/dist/theme.service-ETiKUwVy.cjs.map +1 -0
- package/dist/theme.service-_qP5WvB9.js +108 -0
- package/dist/theme.service-_qP5WvB9.js.map +1 -0
- package/dist/tooltip.cjs +1 -6
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js +51 -135
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +14 -5
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +28 -6
- package/dist/tree.js.map +1 -1
- package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
- package/dist/tslib.es6-Bd-92OW3.cjs.map +1 -0
- package/dist/tslib.es6-CI1onEZb.js +7 -0
- package/dist/tslib.es6-CI1onEZb.js.map +1 -0
- package/dist/typewriter-ByIL2Mh-.cjs +123 -0
- package/dist/typewriter-ByIL2Mh-.cjs.map +1 -0
- package/dist/typewriter-vOQ3bDLb.js +701 -0
- package/dist/typewriter-vOQ3bDLb.js.map +1 -0
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +4 -4
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +10 -9
- package/dist/typography.js.map +1 -1
- package/dist/utils-Cq0m3LYo.js +259 -0
- package/dist/utils-Cq0m3LYo.js.map +1 -0
- package/dist/utils-D2kE-6zc.cjs +1 -0
- package/dist/utils-D2kE-6zc.cjs.map +1 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +5 -5
- package/dist/visually-hidden.cjs +13 -0
- package/dist/visually-hidden.cjs.map +1 -0
- package/dist/visually-hidden.js +24 -0
- package/dist/visually-hidden.js.map +1 -0
- package/dist/window-BS7ZQjgH.cjs +59 -0
- package/dist/window-BS7ZQjgH.cjs.map +1 -0
- package/dist/window-WnAihpsA.js +548 -0
- package/dist/window-WnAihpsA.js.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/mixins/formField.mixin.ts +96 -69
- package/mixins/tailwind.css +11 -0
- package/package.json +19 -28
- package/skills/schmancy/INDEX.md +73 -0
- package/skills/schmancy/SKILL.md +120 -0
- package/skills/schmancy/animation.md +64 -0
- package/skills/schmancy/area.md +141 -0
- package/skills/schmancy/audio.md +69 -0
- package/skills/schmancy/autocomplete.md +53 -0
- package/skills/schmancy/avatar.md +47 -0
- package/skills/schmancy/badge.md +41 -0
- package/skills/schmancy/boat.md +47 -0
- package/skills/schmancy/breadcrumb.md +53 -0
- package/skills/schmancy/busy.md +36 -0
- package/skills/schmancy/button.md +59 -0
- package/skills/schmancy/card.md +53 -0
- package/skills/schmancy/charts.md +93 -0
- package/skills/schmancy/checkbox.md +36 -0
- package/skills/schmancy/chips.md +87 -0
- package/skills/schmancy/code-highlight.md +47 -0
- package/skills/schmancy/connectivity.md +36 -0
- package/skills/schmancy/content-drawer.md +65 -0
- package/skills/schmancy/date-range-inline.md +44 -0
- package/skills/schmancy/date-range.md +50 -0
- package/skills/schmancy/delay.md +50 -0
- package/skills/schmancy/details.md +66 -0
- package/skills/schmancy/dialog.md +69 -0
- package/skills/schmancy/directives.md +298 -0
- package/skills/schmancy/discovery.md +67 -0
- package/skills/schmancy/divider.md +31 -0
- package/skills/schmancy/dropdown.md +47 -0
- package/skills/schmancy/expand.md +63 -0
- package/skills/schmancy/extra.md +59 -0
- package/skills/schmancy/float.md +14 -0
- package/skills/schmancy/form.md +49 -0
- package/skills/schmancy/icons.md +44 -0
- package/skills/schmancy/iframe.md +44 -0
- package/skills/schmancy/input.md +56 -0
- package/skills/schmancy/json.md +33 -0
- package/skills/schmancy/kbd.md +40 -0
- package/skills/schmancy/layout.md +63 -0
- package/skills/schmancy/lightbox.md +36 -0
- package/skills/schmancy/list.md +67 -0
- package/skills/schmancy/mailbox.md +102 -0
- package/skills/schmancy/map.md +55 -0
- package/skills/schmancy/menu.md +39 -0
- package/skills/schmancy/mixins.md +99 -0
- package/skills/schmancy/nav-drawer.md +52 -0
- package/skills/schmancy/navigation-bar.md +48 -0
- package/skills/schmancy/navigation-rail.md +62 -0
- package/skills/schmancy/notification.md +60 -0
- package/skills/schmancy/option.md +43 -0
- package/skills/schmancy/page.md +42 -0
- package/skills/schmancy/progress.md +30 -0
- package/skills/schmancy/qr-scanner.md +51 -0
- package/skills/schmancy/radio-group.md +50 -0
- package/skills/schmancy/range.md +47 -0
- package/skills/schmancy/rxjs-utils.md +60 -0
- package/skills/schmancy/select.md +49 -0
- package/skills/schmancy/sheet.md +76 -0
- package/skills/schmancy/skeleton.md +40 -0
- package/skills/schmancy/slider.md +43 -0
- package/skills/schmancy/splash-screen.md +60 -0
- package/skills/schmancy/steps.md +53 -0
- package/skills/schmancy/store.md +126 -0
- package/skills/schmancy/surface.md +86 -0
- package/skills/schmancy/switch.md +58 -0
- package/skills/schmancy/table.md +60 -0
- package/skills/schmancy/tabs.md +49 -0
- package/skills/schmancy/teleport.md +55 -0
- package/skills/schmancy/textarea.md +48 -0
- package/skills/schmancy/theme-button.md +26 -0
- package/skills/schmancy/theme.md +58 -0
- package/skills/schmancy/tooltip.md +38 -0
- package/skills/schmancy/tree.md +53 -0
- package/skills/schmancy/typewriter.md +46 -0
- package/skills/schmancy/typography.md +53 -0
- package/skills/schmancy/utils.md +95 -0
- package/skills/schmancy/visually-hidden.md +41 -0
- package/skills/schmancy/window.md +67 -0
- package/src/audio/emotional-sounds.ts +2 -4
- package/src/autocomplete/autocomplete.ts +52 -2
- package/src/breadcrumb/breadcrumb.ts +109 -0
- package/src/breadcrumb/index.ts +1 -0
- package/src/button/button.ts +40 -0
- package/src/button/icon-button.ts +2 -1
- package/src/checkbox/checkbox.test.ts +113 -0
- package/src/checkbox/checkbox.ts +41 -1
- package/src/chips/filter-chip.ts +15 -0
- package/src/chips/input-chip.ts +7 -0
- package/src/date-range/date-range-helpers.ts +0 -71
- package/src/dialog/dialog-base.mixin.ts +11 -0
- package/src/dialog/dialog.component.ts +28 -8
- package/src/dropdown/dropdown-content.ts +3 -1
- package/src/form/form.test.ts +137 -0
- package/src/form/form.ts +142 -158
- package/src/form/index.ts +2 -2
- package/src/icons/icon.ts +1 -0
- package/src/index.ts +6 -0
- package/src/kbd/index.ts +1 -0
- package/src/kbd/kbd.ts +59 -0
- package/src/skeleton/index.ts +1 -0
- package/src/skeleton/skeleton.ts +78 -0
- package/src/splash-screen/index.ts +1 -0
- package/src/splash-screen/splash-screen.ts +154 -0
- package/src/switch/index.ts +1 -0
- package/src/switch/switch.test.ts +93 -0
- package/src/switch/switch.ts +180 -0
- package/src/test-utils/a11y.ts +35 -0
- package/src/textarea/textarea.ts +32 -2
- package/src/tooltip/index.ts +1 -2
- package/src/tree/tree.ts +27 -2
- package/src/visually-hidden/index.ts +1 -0
- package/src/visually-hidden/visually-hidden.ts +39 -0
- package/src/window/window-position.ts +1 -74
- package/types/mixins/formField.mixin.d.ts +15 -8
- package/types/src/audio/emotional-sounds.d.ts +0 -2
- package/types/src/autocomplete/autocomplete.d.ts +7 -0
- package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
- package/types/src/breadcrumb/index.d.ts +1 -0
- package/types/src/button/button.d.ts +7 -0
- package/types/src/button/icon-button.d.ts +2 -1
- package/types/src/checkbox/checkbox.d.ts +6 -0
- package/types/src/checkbox/checkbox.test.d.ts +1 -0
- package/types/src/chips/filter-chip.d.ts +3 -0
- package/types/src/chips/input-chip.d.ts +1 -0
- package/types/src/date-range/date-range-helpers.d.ts +0 -12
- package/types/src/dialog/dialog.component.d.ts +6 -0
- package/types/src/dropdown/dropdown-content.d.ts +3 -1
- package/types/src/form/form-v2.d.ts +12 -63
- package/types/src/form/form.d.ts +58 -40
- package/types/src/form/form.test.d.ts +4 -0
- package/types/src/form/index.d.ts +1 -1
- package/types/src/icons/icon.d.ts +1 -0
- package/types/src/index.d.ts +6 -0
- package/types/src/kbd/index.d.ts +1 -0
- package/types/src/kbd/kbd.d.ts +25 -0
- package/types/src/skeleton/index.d.ts +1 -0
- package/types/src/skeleton/skeleton.d.ts +27 -0
- package/types/src/splash-screen/index.d.ts +1 -0
- package/types/src/splash-screen/splash-screen.d.ts +60 -0
- package/types/src/switch/index.d.ts +1 -0
- package/types/src/switch/switch.d.ts +54 -0
- package/types/src/switch/switch.test.d.ts +1 -0
- package/types/src/test-utils/a11y.d.ts +11 -0
- package/types/src/textarea/textarea.d.ts +5 -1
- package/types/src/tooltip/index.d.ts +0 -1
- package/types/src/tree/tree.d.ts +5 -0
- package/types/src/visually-hidden/index.d.ts +1 -0
- package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
- package/types/src/window/window-position.d.ts +1 -35
- package/ai/INDEX.md +0 -72
- package/ai/tooltip.md +0 -38
- package/dist/ai/INDEX.md +0 -72
- package/dist/ai/tooltip.md +0 -38
- package/dist/animation-BK-8BwY8.js.map +0 -1
- package/dist/animation-CO_Csq84.cjs.map +0 -1
- package/dist/area-CRoGqD_u.js +0 -590
- package/dist/area-CRoGqD_u.js.map +0 -1
- package/dist/area-JPykB7A9.cjs +0 -12
- package/dist/area-JPykB7A9.cjs.map +0 -1
- package/dist/audio-DtYYgzYD.cjs +0 -1
- package/dist/audio-DtYYgzYD.cjs.map +0 -1
- package/dist/audio-kz8UgPTO.js +0 -335
- package/dist/audio-kz8UgPTO.js.map +0 -1
- package/dist/autocomplete-5rVhbieU.cjs +0 -111
- package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
- package/dist/autocomplete-BllPQwr8.js +0 -378
- package/dist/autocomplete-BllPQwr8.js.map +0 -1
- package/dist/boat-BDTQ-du9.js +0 -347
- package/dist/boat-BDTQ-du9.js.map +0 -1
- package/dist/boat-DYEAZ8Qj.cjs +0 -80
- package/dist/boat-DYEAZ8Qj.cjs.map +0 -1
- package/dist/busy-ChDAeaKF.js +0 -167
- package/dist/busy-ChDAeaKF.js.map +0 -1
- package/dist/busy-Dj7Xn0Z0.cjs +0 -134
- package/dist/busy-Dj7Xn0Z0.cjs.map +0 -1
- package/dist/card-BvPWVEJX.cjs +0 -177
- package/dist/card-BvPWVEJX.cjs.map +0 -1
- package/dist/card-DZFPRPqs.js +0 -284
- package/dist/card-DZFPRPqs.js.map +0 -1
- package/dist/checkbox-BC_37rsG.cjs +0 -39
- package/dist/checkbox-BC_37rsG.cjs.map +0 -1
- package/dist/checkbox-GSSjqo6w.js +0 -610
- package/dist/checkbox-GSSjqo6w.js.map +0 -1
- package/dist/chips-B19XS8Xc.cjs +0 -253
- package/dist/chips-B19XS8Xc.cjs.map +0 -1
- package/dist/chips-B9oAEfE_.js +0 -645
- package/dist/chips-B9oAEfE_.js.map +0 -1
- package/dist/code-highlight-DCk5lJY-.js +0 -290
- package/dist/code-highlight-DCk5lJY-.js.map +0 -1
- package/dist/code-highlight-fSLrlgOb.cjs +0 -190
- package/dist/code-highlight-fSLrlgOb.cjs.map +0 -1
- package/dist/components-COsM6sJZ.js +0 -730
- package/dist/components-COsM6sJZ.js.map +0 -1
- package/dist/components-CyD6a7gQ.cjs +0 -73
- package/dist/components-CyD6a7gQ.cjs.map +0 -1
- package/dist/cursor-glow-Ah7VXSj7.js +0 -46
- package/dist/cursor-glow-Ah7VXSj7.js.map +0 -1
- package/dist/cursor-glow-DtSy_PJd.cjs +0 -1
- package/dist/cursor-glow-DtSy_PJd.cjs.map +0 -1
- package/dist/date-range-Sfyco9-n.js +0 -946
- package/dist/date-range-Sfyco9-n.js.map +0 -1
- package/dist/date-range-ZAaQB22I.cjs +0 -131
- package/dist/date-range-ZAaQB22I.cjs.map +0 -1
- package/dist/date-range-inline-Bl8qbiQF.js +0 -267
- package/dist/date-range-inline-Bl8qbiQF.js.map +0 -1
- package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
- package/dist/date-range-inline-m7nLjOMI.cjs.map +0 -1
- package/dist/delay-7boauN6N.cjs +0 -9
- package/dist/delay-7boauN6N.cjs.map +0 -1
- package/dist/delay-CgX6m0HN.js +0 -346
- package/dist/delay-CgX6m0HN.js.map +0 -1
- package/dist/details-BHnk8l4q.cjs +0 -168
- package/dist/details-BHnk8l4q.cjs.map +0 -1
- package/dist/details-BPkUg8Cq.js +0 -293
- package/dist/details-BPkUg8Cq.js.map +0 -1
- package/dist/dialog-service-NZEvyEK-.js +0 -193
- package/dist/dialog-service-NZEvyEK-.js.map +0 -1
- package/dist/dialog-service-VnW4gkmE.cjs +0 -1
- package/dist/dialog-service-VnW4gkmE.cjs.map +0 -1
- package/dist/divider-CW9a7MMj.js +0 -87
- package/dist/divider-CW9a7MMj.js.map +0 -1
- package/dist/divider-_khrhrZo.cjs +0 -57
- package/dist/divider-_khrhrZo.cjs.map +0 -1
- package/dist/expand-Cp7-PH8b.cjs +0 -141
- package/dist/expand-Cp7-PH8b.cjs.map +0 -1
- package/dist/expand-iQ7EOMP7.js +0 -336
- package/dist/expand-iQ7EOMP7.js.map +0 -1
- package/dist/extra-IKAiJJhv.cjs +0 -31
- package/dist/extra-IKAiJJhv.cjs.map +0 -1
- package/dist/extra-wEpvEFbK.js +0 -3435
- package/dist/extra-wEpvEFbK.js.map +0 -1
- package/dist/float-BQ_urmMs.js +0 -5
- package/dist/float-BQ_urmMs.js.map +0 -1
- package/dist/float-D5rNC82i.cjs +0 -1
- package/dist/float-D5rNC82i.cjs.map +0 -1
- package/dist/flow-Bbwn6dRN.cjs.map +0 -1
- package/dist/flow-CUj0fDT_.js.map +0 -1
- package/dist/form-BqN1AGFj.cjs +0 -1
- package/dist/form-BqN1AGFj.cjs.map +0 -1
- package/dist/form-CajC5HnO.js +0 -270
- package/dist/form-CajC5HnO.js.map +0 -1
- package/dist/hashContent-DYM21p6t.js.map +0 -1
- package/dist/hashContent-DaeGmY-p.cjs.map +0 -1
- package/dist/icons-B57_93VV.cjs +0 -52
- package/dist/icons-B57_93VV.cjs.map +0 -1
- package/dist/icons-BDqiGXrO.js +0 -161
- package/dist/icons-BDqiGXrO.js.map +0 -1
- package/dist/iframe-DNHL3GIk.cjs +0 -24
- package/dist/iframe-DNHL3GIk.cjs.map +0 -1
- package/dist/iframe-WnWPIrBG.js +0 -44
- package/dist/iframe-WnWPIrBG.js.map +0 -1
- package/dist/input-BiSrTcrR.cjs +0 -51
- package/dist/input-BiSrTcrR.cjs.map +0 -1
- package/dist/input-VaXHFrRn.js +0 -364
- package/dist/input-VaXHFrRn.js.map +0 -1
- package/dist/input-chip-Dy-AiP55.cjs +0 -146
- package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
- package/dist/input-chip-QejNcRnS.js +0 -301
- package/dist/input-chip-QejNcRnS.js.map +0 -1
- package/dist/intersection-BPLpqYEd.js.map +0 -1
- package/dist/intersection-CZpaIHeT.cjs.map +0 -1
- package/dist/layout-4C-6_cre.cjs +0 -1
- package/dist/layout-4C-6_cre.cjs.map +0 -1
- package/dist/layout-CnsXeCAy.js +0 -267
- package/dist/layout-CnsXeCAy.js.map +0 -1
- package/dist/layout-DNYG3phx.cjs +0 -17
- package/dist/layout-DNYG3phx.cjs.map +0 -1
- package/dist/layout-yxSlLybo.js +0 -94
- package/dist/layout-yxSlLybo.js.map +0 -1
- package/dist/lightbox-BrI1Z31s.js +0 -678
- package/dist/lightbox-BrI1Z31s.js.map +0 -1
- package/dist/lightbox-CmACf0t5.cjs +0 -202
- package/dist/lightbox-CmACf0t5.cjs.map +0 -1
- package/dist/list-Cm-jjXxM.js +0 -105
- package/dist/list-Cm-jjXxM.js.map +0 -1
- package/dist/list-swIL9VDv.cjs +0 -40
- package/dist/list-swIL9VDv.cjs.map +0 -1
- package/dist/litElement.mixin-3llHwB-8.cjs +0 -1
- package/dist/litElement.mixin-3llHwB-8.cjs.map +0 -1
- package/dist/litElement.mixin-6jJYHCrZ.js +0 -12
- package/dist/litElement.mixin-6jJYHCrZ.js.map +0 -1
- package/dist/magnetic-BZGFxAWG.js +0 -47
- package/dist/magnetic-BZGFxAWG.js.map +0 -1
- package/dist/magnetic-Dux4QwO4.cjs +0 -1
- package/dist/magnetic-Dux4QwO4.cjs.map +0 -1
- package/dist/mailbox-BuvsVaAQ.js +0 -1584
- package/dist/mailbox-BuvsVaAQ.js.map +0 -1
- package/dist/mailbox-D6LkQcN5.cjs +0 -1142
- package/dist/mailbox-D6LkQcN5.cjs.map +0 -1
- package/dist/map-CQiKAxC3.js +0 -205
- package/dist/map-CQiKAxC3.js.map +0 -1
- package/dist/map-D5NN4VET.cjs +0 -80
- package/dist/map-D5NN4VET.cjs.map +0 -1
- package/dist/menu-C1x04YZw.js +0 -51
- package/dist/menu-C1x04YZw.js.map +0 -1
- package/dist/menu-CkgMO9K5.cjs +0 -23
- package/dist/menu-CkgMO9K5.cjs.map +0 -1
- package/dist/notification-BnBgxjF-.js +0 -304
- package/dist/notification-BnBgxjF-.js.map +0 -1
- package/dist/notification-CZFEhWxc.cjs +0 -23
- package/dist/notification-CZFEhWxc.cjs.map +0 -1
- package/dist/option-BrxCVwSx.cjs +0 -43
- package/dist/option-BrxCVwSx.cjs.map +0 -1
- package/dist/option-DBO8xZwd.js +0 -97
- package/dist/option-DBO8xZwd.js.map +0 -1
- package/dist/overlay-stack-DQey9Qph.cjs.map +0 -1
- package/dist/overlay-stack-DT1SdaGW.js.map +0 -1
- package/dist/progress-Db2e4_Zd.cjs +0 -51
- package/dist/progress-Db2e4_Zd.cjs.map +0 -1
- package/dist/progress-DeiHxXo7.js +0 -128
- package/dist/progress-DeiHxXo7.js.map +0 -1
- package/dist/provide-C1aQhxYo.js +0 -107
- package/dist/provide-C1aQhxYo.js.map +0 -1
- package/dist/provide-DHnhQtCH.cjs +0 -1
- package/dist/provide-DHnhQtCH.cjs.map +0 -1
- package/dist/radio-group-Cspwd-Vw.cjs +0 -40
- package/dist/radio-group-Cspwd-Vw.cjs.map +0 -1
- package/dist/radio-group-zSO0AkJf.js +0 -105
- package/dist/radio-group-zSO0AkJf.js.map +0 -1
- package/dist/reduced-motion-D-L12p7G.js.map +0 -1
- package/dist/reduced-motion-Ds05GPyz.cjs.map +0 -1
- package/dist/rxjs-utils-BSjmI9-Q.js.map +0 -1
- package/dist/rxjs-utils-DCsfzeap.cjs.map +0 -1
- package/dist/scroll-QMCmbbDv.cjs +0 -26
- package/dist/scroll-QMCmbbDv.cjs.map +0 -1
- package/dist/scroll-cBDzye64.js +0 -112
- package/dist/scroll-cBDzye64.js.map +0 -1
- package/dist/search-C4dFHYbX.js.map +0 -1
- package/dist/search-Ds8tt7Et.cjs.map +0 -1
- package/dist/select-Ct37l3lg.cjs +0 -56
- package/dist/select-Ct37l3lg.cjs.map +0 -1
- package/dist/select-c6HbWvKP.js +0 -305
- package/dist/select-c6HbWvKP.js.map +0 -1
- package/dist/sheet-BMXcUiIm.js +0 -168
- package/dist/sheet-BMXcUiIm.js.map +0 -1
- package/dist/sheet-CQec-bCV.cjs +0 -35
- package/dist/sheet-CQec-bCV.cjs.map +0 -1
- package/dist/sheet.service-BcPV3Du4.js +0 -86
- package/dist/sheet.service-BcPV3Du4.js.map +0 -1
- package/dist/sheet.service-Dumvr1HT.cjs +0 -1
- package/dist/sheet.service-Dumvr1HT.cjs.map +0 -1
- package/dist/sound.service-Bu3EQLv2.cjs +0 -1
- package/dist/sound.service-Bu3EQLv2.cjs.map +0 -1
- package/dist/sound.service-m3BrSfuH.js +0 -2353
- package/dist/sound.service-m3BrSfuH.js.map +0 -1
- package/dist/src-BLngW2bl.js +0 -1244
- package/dist/src-BLngW2bl.js.map +0 -1
- package/dist/src-BtQVyqMy.cjs +0 -269
- package/dist/src-BtQVyqMy.cjs.map +0 -1
- package/dist/store-CorvD3bT.cjs.map +0 -1
- package/dist/store-DYqDLAvT.js.map +0 -1
- package/dist/surface-BjKZoJxK.cjs +0 -7
- package/dist/surface-BjKZoJxK.cjs.map +0 -1
- package/dist/surface-pK8hME5c.js +0 -21
- package/dist/surface-pK8hME5c.js.map +0 -1
- package/dist/surface.mixin-C5sDI1-_.cjs +0 -297
- package/dist/surface.mixin-C5sDI1-_.cjs.map +0 -1
- package/dist/surface.mixin-CBNRpJum.js +0 -320
- package/dist/surface.mixin-CBNRpJum.js.map +0 -1
- package/dist/table-BXIHX9h4.js +0 -631
- package/dist/table-BXIHX9h4.js.map +0 -1
- package/dist/table-CiqgZzSd.cjs +0 -63
- package/dist/table-CiqgZzSd.cjs.map +0 -1
- package/dist/tabs-CKa-W4qA.cjs +0 -31
- package/dist/tabs-CKa-W4qA.cjs.map +0 -1
- package/dist/tabs-nbV5eblZ.js +0 -125
- package/dist/tabs-nbV5eblZ.js.map +0 -1
- package/dist/tailwind.mixin-BCJOOX1_.js +0 -225
- package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
- package/dist/tailwind.mixin-BF1Huas7.cjs +0 -2
- package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
- package/dist/textarea-Cp1ZE60O.cjs +0 -35
- package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
- package/dist/textarea-D7q8exMg.js +0 -195
- package/dist/textarea-D7q8exMg.js.map +0 -1
- package/dist/theme-Da4SPq9X.cjs +0 -181
- package/dist/theme-Da4SPq9X.cjs.map +0 -1
- package/dist/theme-_VPV6Bxh.js +0 -4121
- package/dist/theme-_VPV6Bxh.js.map +0 -1
- package/dist/theme-button--sX8A-m1.js +0 -19
- package/dist/theme-button--sX8A-m1.js.map +0 -1
- package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
- package/dist/theme-button-Ci8VQ7KW.cjs.map +0 -1
- package/dist/theme.events-Cv7N4Toe.js.map +0 -1
- package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
- package/dist/theme.interface-CXloMUCw.js.map +0 -1
- package/dist/theme.interface-Da23QAYb.cjs.map +0 -1
- package/dist/theme.service-C_tjlqgy.cjs +0 -1
- package/dist/theme.service-C_tjlqgy.cjs.map +0 -1
- package/dist/theme.service-D9lEas89.js +0 -108
- package/dist/theme.service-D9lEas89.js.map +0 -1
- package/dist/tslib.es6-D7BIeDVB.cjs.map +0 -1
- package/dist/tslib.es6-ErZEp3OO.js.map +0 -1
- package/dist/typewriter-B2TnHPjw.cjs +0 -123
- package/dist/typewriter-B2TnHPjw.cjs.map +0 -1
- package/dist/typewriter-BrZNa8T-.js +0 -700
- package/dist/typewriter-BrZNa8T-.js.map +0 -1
- package/dist/utils-BcaKtQuA.cjs +0 -1
- package/dist/utils-BcaKtQuA.cjs.map +0 -1
- package/dist/utils-CoU7M2YS.js +0 -259
- package/dist/utils-CoU7M2YS.js.map +0 -1
- package/dist/window-CM1ycigo.js +0 -548
- package/dist/window-CM1ycigo.js.map +0 -1
- package/dist/window-Uii13x_r.cjs +0 -59
- package/dist/window-Uii13x_r.cjs.map +0 -1
- package/src/form/form-v2.ts +0 -268
- package/src/layout/v2/grid.ts +0 -93
- package/src/notification/outlet.ts +0 -16
- package/src/store/immer-integration.ts +0 -99
- package/src/tooltip/tooltip.ts +0 -216
- /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
- /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
- /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
- /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
- /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
- /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
- /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
- /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
- /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
- /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
- /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
- /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
- /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
- /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
- /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
- /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
- /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
- /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
- /package/{ai → dist/skills}/animation.md +0 -0
- /package/{ai → dist/skills}/area.md +0 -0
- /package/{ai → dist/skills}/audio.md +0 -0
- /package/{ai → dist/skills}/autocomplete.md +0 -0
- /package/{ai → dist/skills}/avatar.md +0 -0
- /package/{ai → dist/skills}/badge.md +0 -0
- /package/{ai → dist/skills}/boat.md +0 -0
- /package/{ai → dist/skills}/busy.md +0 -0
- /package/{ai → dist/skills}/button.md +0 -0
- /package/{ai → dist/skills}/card.md +0 -0
- /package/{ai → dist/skills}/charts.md +0 -0
- /package/{ai → dist/skills}/checkbox.md +0 -0
- /package/{ai → dist/skills}/chips.md +0 -0
- /package/{ai → dist/skills}/code-highlight.md +0 -0
- /package/{ai → dist/skills}/connectivity.md +0 -0
- /package/{ai → dist/skills}/content-drawer.md +0 -0
- /package/{ai → dist/skills}/date-range-inline.md +0 -0
- /package/{ai → dist/skills}/date-range.md +0 -0
- /package/{ai → dist/skills}/delay.md +0 -0
- /package/{ai → dist/skills}/details.md +0 -0
- /package/{ai → dist/skills}/dialog.md +0 -0
- /package/{ai → dist/skills}/directives.md +0 -0
- /package/{ai → dist/skills}/discovery.md +0 -0
- /package/{ai → dist/skills}/divider.md +0 -0
- /package/{ai → dist/skills}/dropdown.md +0 -0
- /package/{ai → dist/skills}/expand.md +0 -0
- /package/{ai → dist/skills}/extra.md +0 -0
- /package/{ai → dist/skills}/float.md +0 -0
- /package/{ai → dist/skills}/form.md +0 -0
- /package/{ai → dist/skills}/icons.md +0 -0
- /package/{ai → dist/skills}/iframe.md +0 -0
- /package/{ai → dist/skills}/input.md +0 -0
- /package/{ai → dist/skills}/json.md +0 -0
- /package/{ai → dist/skills}/layout.md +0 -0
- /package/{ai → dist/skills}/lightbox.md +0 -0
- /package/{ai → dist/skills}/list.md +0 -0
- /package/{ai → dist/skills}/mailbox.md +0 -0
- /package/{ai → dist/skills}/map.md +0 -0
- /package/{ai → dist/skills}/menu.md +0 -0
- /package/{ai → dist/skills}/mixins.md +0 -0
- /package/{ai → dist/skills}/nav-drawer.md +0 -0
- /package/{ai → dist/skills}/navigation-bar.md +0 -0
- /package/{ai → dist/skills}/navigation-rail.md +0 -0
- /package/{ai → dist/skills}/notification.md +0 -0
- /package/{ai → dist/skills}/option.md +0 -0
- /package/{ai → dist/skills}/page.md +0 -0
- /package/{ai → dist/skills}/progress.md +0 -0
- /package/{ai → dist/skills}/qr-scanner.md +0 -0
- /package/{ai → dist/skills}/radio-group.md +0 -0
- /package/{ai → dist/skills}/range.md +0 -0
- /package/{ai → dist/skills}/rxjs-utils.md +0 -0
- /package/dist/{ai → skills/schmancy}/animation.md +0 -0
- /package/dist/{ai → skills/schmancy}/area.md +0 -0
- /package/dist/{ai → skills/schmancy}/audio.md +0 -0
- /package/dist/{ai → skills/schmancy}/autocomplete.md +0 -0
- /package/dist/{ai → skills/schmancy}/avatar.md +0 -0
- /package/dist/{ai → skills/schmancy}/badge.md +0 -0
- /package/dist/{ai → skills/schmancy}/boat.md +0 -0
- /package/dist/{ai → skills/schmancy}/busy.md +0 -0
- /package/dist/{ai → skills/schmancy}/button.md +0 -0
- /package/dist/{ai → skills/schmancy}/card.md +0 -0
- /package/dist/{ai → skills/schmancy}/charts.md +0 -0
- /package/dist/{ai → skills/schmancy}/checkbox.md +0 -0
- /package/dist/{ai → skills/schmancy}/chips.md +0 -0
- /package/dist/{ai → skills/schmancy}/code-highlight.md +0 -0
- /package/dist/{ai → skills/schmancy}/connectivity.md +0 -0
- /package/dist/{ai → skills/schmancy}/content-drawer.md +0 -0
- /package/dist/{ai → skills/schmancy}/date-range-inline.md +0 -0
- /package/dist/{ai → skills/schmancy}/date-range.md +0 -0
- /package/dist/{ai → skills/schmancy}/delay.md +0 -0
- /package/dist/{ai → skills/schmancy}/details.md +0 -0
- /package/dist/{ai → skills/schmancy}/dialog.md +0 -0
- /package/dist/{ai → skills/schmancy}/directives.md +0 -0
- /package/dist/{ai → skills/schmancy}/discovery.md +0 -0
- /package/dist/{ai → skills/schmancy}/divider.md +0 -0
- /package/dist/{ai → skills/schmancy}/dropdown.md +0 -0
- /package/dist/{ai → skills/schmancy}/expand.md +0 -0
- /package/dist/{ai → skills/schmancy}/extra.md +0 -0
- /package/dist/{ai → skills/schmancy}/float.md +0 -0
- /package/dist/{ai → skills/schmancy}/form.md +0 -0
- /package/dist/{ai → skills/schmancy}/icons.md +0 -0
- /package/dist/{ai → skills/schmancy}/iframe.md +0 -0
- /package/dist/{ai → skills/schmancy}/input.md +0 -0
- /package/dist/{ai → skills/schmancy}/json.md +0 -0
- /package/dist/{ai → skills/schmancy}/layout.md +0 -0
- /package/dist/{ai → skills/schmancy}/lightbox.md +0 -0
- /package/dist/{ai → skills/schmancy}/list.md +0 -0
- /package/dist/{ai → skills/schmancy}/mailbox.md +0 -0
- /package/dist/{ai → skills/schmancy}/map.md +0 -0
- /package/dist/{ai → skills/schmancy}/menu.md +0 -0
- /package/dist/{ai → skills/schmancy}/mixins.md +0 -0
- /package/dist/{ai → skills/schmancy}/nav-drawer.md +0 -0
- /package/dist/{ai → skills/schmancy}/navigation-bar.md +0 -0
- /package/dist/{ai → skills/schmancy}/navigation-rail.md +0 -0
- /package/dist/{ai → skills/schmancy}/notification.md +0 -0
- /package/dist/{ai → skills/schmancy}/option.md +0 -0
- /package/dist/{ai → skills/schmancy}/page.md +0 -0
- /package/dist/{ai → skills/schmancy}/progress.md +0 -0
- /package/dist/{ai → skills/schmancy}/qr-scanner.md +0 -0
- /package/dist/{ai → skills/schmancy}/radio-group.md +0 -0
- /package/dist/{ai → skills/schmancy}/range.md +0 -0
- /package/dist/{ai → skills/schmancy}/rxjs-utils.md +0 -0
- /package/{ai → dist/skills/schmancy}/select.md +0 -0
- /package/{ai → dist/skills/schmancy}/sheet.md +0 -0
- /package/{ai → dist/skills/schmancy}/slider.md +0 -0
- /package/{ai → dist/skills/schmancy}/steps.md +0 -0
- /package/{ai → dist/skills/schmancy}/store.md +0 -0
- /package/{ai → dist/skills/schmancy}/surface.md +0 -0
- /package/{ai → dist/skills/schmancy}/table.md +0 -0
- /package/{ai → dist/skills/schmancy}/tabs.md +0 -0
- /package/{ai → dist/skills/schmancy}/teleport.md +0 -0
- /package/{ai → dist/skills/schmancy}/textarea.md +0 -0
- /package/{ai → dist/skills/schmancy}/theme-button.md +0 -0
- /package/{ai → dist/skills/schmancy}/theme.md +0 -0
- /package/{ai → dist/skills/schmancy}/tree.md +0 -0
- /package/{ai → dist/skills/schmancy}/typewriter.md +0 -0
- /package/{ai → dist/skills/schmancy}/typography.md +0 -0
- /package/{ai → dist/skills/schmancy}/utils.md +0 -0
- /package/{ai → dist/skills/schmancy}/window.md +0 -0
- /package/dist/{ai → skills}/select.md +0 -0
- /package/dist/{ai → skills}/sheet.md +0 -0
- /package/dist/{ai → skills}/slider.md +0 -0
- /package/dist/{ai → skills}/steps.md +0 -0
- /package/dist/{ai → skills}/store.md +0 -0
- /package/dist/{ai → skills}/surface.md +0 -0
- /package/dist/{ai → skills}/table.md +0 -0
- /package/dist/{ai → skills}/tabs.md +0 -0
- /package/dist/{ai → skills}/teleport.md +0 -0
- /package/dist/{ai → skills}/textarea.md +0 -0
- /package/dist/{ai → skills}/theme-button.md +0 -0
- /package/dist/{ai → skills}/theme.md +0 -0
- /package/dist/{ai → skills}/tree.md +0 -0
- /package/dist/{ai → skills}/typewriter.md +0 -0
- /package/dist/{ai → skills}/typography.md +0 -0
- /package/dist/{ai → skills}/utils.md +0 -0
- /package/dist/{ai → skills}/window.md +0 -0
- /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
- /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
- /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
- /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
- /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
- /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t(){render(){return r.html`
|
|
2
|
+
<schmancy-button
|
|
3
|
+
@click=${()=>{this.color.animate([{transform:`rotate(0deg)`},{transform:`rotate(360deg)`}],{duration:300})}}
|
|
4
|
+
variant="text"
|
|
5
|
+
>
|
|
6
|
+
<schmancy-icon id="color">palette</schmancy-icon>
|
|
7
|
+
</schmancy-button>
|
|
8
|
+
`}};t.t([(0,n.query)(`#color`)],i.prototype,`color`,void 0),i=t.t([(0,n.customElement)(`schmancy-theme-button`)],i);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-button-BsJcv-Zv.cjs","names":[],"sources":["../src/theme-button/theme-button.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\n@customElement('schmancy-theme-button')\nexport default class SchmancyThemeButton extends TailwindElement() {\n\t@query('#color') color!: HTMLElement\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-button\n\t\t\t\t@click=${() => {\n\t\t\t\t\t// Trigger any other effects you have\n\t\t\t\t\t// $newSchmancyTheme.next(undefined)\n\n\t\t\t\t\t// Native Web Animations API usage:\n\t\t\t\t\tthis.color.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }], {\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t// fill: 'forwards', // Use if you want it to remain rotated at 360°\n\t\t\t\t\t\t// easing: 'ease-out', // Or another easing function\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tvariant=\"text\"\n\t\t\t>\n\t\t\t\t<schmancy-icon id=\"color\">palette</schmancy-icon>\n\t\t\t</schmancy-button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-theme-button': SchmancyThemeButton\n\t}\n}\n"],"mappings":"kMAKe,IAAA,EAAA,cAAkC,EAAA,GAAA,AAAA,CAGhD,QAAA,CACC,MAAO,GAAA,IAAI;;kBAOR,KAAK,MAAM,QAAQ,CAAC,CAAE,UAAW,eAAA,CAAkB,CAAE,UAAW,iBAAA,CAAA,CAAqB,CACpF,SAAU,IAAA,CAAA,EAAA;;;;;uBAXR,SAAA,CAAA,CAAS,EAAA,UAAA,QAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAFF,wBAAA,CAAA,CAAwB,EAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { t as e } from "./tailwind.mixin-DufHBjmb.js";
|
|
2
|
+
import { t } from "./decorate-D_utPUsC.js";
|
|
3
|
+
import "./mixins.js";
|
|
4
|
+
import { customElement as n, query as r } from "lit/decorators.js";
|
|
5
|
+
import { html as i } from "lit";
|
|
6
|
+
var a = class extends e() {
|
|
7
|
+
render() {
|
|
8
|
+
return i`
|
|
9
|
+
<schmancy-button
|
|
10
|
+
@click=${() => {
|
|
11
|
+
this.color.animate([{ transform: "rotate(0deg)" }, { transform: "rotate(360deg)" }], { duration: 300 });
|
|
12
|
+
}}
|
|
13
|
+
variant="text"
|
|
14
|
+
>
|
|
15
|
+
<schmancy-icon id="color">palette</schmancy-icon>
|
|
16
|
+
</schmancy-button>
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
t([r("#color")], a.prototype, "color", void 0), a = t([n("schmancy-theme-button")], a);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-button-dOiAvdKU.js","names":[],"sources":["../src/theme-button/theme-button.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\n@customElement('schmancy-theme-button')\nexport default class SchmancyThemeButton extends TailwindElement() {\n\t@query('#color') color!: HTMLElement\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-button\n\t\t\t\t@click=${() => {\n\t\t\t\t\t// Trigger any other effects you have\n\t\t\t\t\t// $newSchmancyTheme.next(undefined)\n\n\t\t\t\t\t// Native Web Animations API usage:\n\t\t\t\t\tthis.color.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }], {\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t// fill: 'forwards', // Use if you want it to remain rotated at 360°\n\t\t\t\t\t\t// easing: 'ease-out', // Or another easing function\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tvariant=\"text\"\n\t\t\t>\n\t\t\t\t<schmancy-icon id=\"color\">palette</schmancy-icon>\n\t\t\t</schmancy-button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-theme-button': SchmancyThemeButton\n\t}\n}\n"],"mappings":";;;;;AAKe,IAAA,IAAA,cAAkC,GAAA,CAAA;CAGhD,SAAA;AACC,SAAO,CAAI;;;AAOR,QAAK,MAAM,QAAQ,CAAC,EAAE,WAAW,gBAAA,EAAkB,EAAE,WAAW,kBAAA,CAAA,EAAqB,EACpF,UAAU,KAAA,CAAA;IAAA;;;;;;;;GAXd,EAAM,SAAA,CAAA,EAAS,EAAA,WAAA,SAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAFhB,EAAc,wBAAA,CAAA,EAAwB,EAAA"}
|
package/dist/theme-button.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./theme-button-
|
|
1
|
+
require(`./theme-button-BsJcv-Zv.cjs`);
|
package/dist/theme-button.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import "./theme-button
|
|
1
|
+
import "./theme-button-dOiAvdKU.js";
|
package/dist/theme.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./tailwind.mixin-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./theme.events-EznKK2Y0.cjs`),n=require(`./theme.service-ETiKUwVy.cjs`),r=require(`./theme.interface-CM26m9te.cjs`),i=require(`./theme-CCKqaksQ.cjs`);exports.SchmancyGenerateMoodAudioEvent=i.n,exports.SchmancyTheme=r.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return i.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return i.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return i.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return i.t}}),exports.ThemeHereIAm=t.t,exports.ThemeWhereAreYou=t.n,exports.createDarkTonalPaletteFromBaseColor=i.s,exports.createLightTonalPaletteFromBaseColor=i.c,exports.formatTheme=i.l,exports.schmancyTheme=n.t,exports.tailwindStyles=i.o,exports.theme=n.n,exports.themeContext=e.i;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.events-Bw3mYjUA.js","names":[],"sources":["../src/theme/theme.events.ts"],"sourcesContent":["/**\n * Theme discovery event system.\n *\n * These events facilitate communication between theme components and consumers,\n * allowing components to discover the nearest theme provider in the DOM hierarchy.\n */\n\n/**\n * Event dispatched by components to discover the nearest theme provider.\n * Theme components listen for this event and respond with ThemeHereIAmEvent.\n *\n * @event ThemeWhereAreYouEvent\n * @type {CustomEvent<void>}\n *\n * @example\n * ```typescript\n * // Dispatch discovery request\n * window.dispatchEvent(\n * new CustomEvent('theme-where-are-you', {\n * bubbles: true,\n * composed: true\n * })\n * )\n * ```\n */\nexport type ThemeWhereAreYouEvent = CustomEvent<void>\n\n/**\n * Event name constant for theme discovery request.\n * @const {string}\n */\nexport const ThemeWhereAreYou = 'theme-where-are-you'\n\n/**\n * Event dispatched by theme components in response to discovery requests.\n * Contains reference to the theme component element.\n *\n * @event ThemeHereIAmEvent\n * @type {CustomEvent<{theme: HTMLElement}>}\n * @property {HTMLElement} detail.theme - The theme component element\n *\n * @example\n * ```typescript\n * // Listen for theme response\n * window.addEventListener('theme-here-i-am', (event: ThemeHereIAmEvent) => {\n * const themeComponent = event.detail.theme\n * console.log('Found theme component:', themeComponent)\n * })\n * ```\n */\nexport type ThemeHereIAmEvent = CustomEvent<{\n\ttheme: HTMLElement\n}>\n\n/**\n * Event name constant for theme discovery response.\n * @const {string}\n */\nexport const ThemeHereIAm = 'theme-here-i-am'"],"mappings":"AA+BA,IAAa,IAAmB,uBA2BnB,IAAe;AAAA,SAAA,KAAA,GAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.events-EznKK2Y0.cjs","names":[],"sources":["../src/theme/theme.events.ts"],"sourcesContent":["/**\n * Theme discovery event system.\n *\n * These events facilitate communication between theme components and consumers,\n * allowing components to discover the nearest theme provider in the DOM hierarchy.\n */\n\n/**\n * Event dispatched by components to discover the nearest theme provider.\n * Theme components listen for this event and respond with ThemeHereIAmEvent.\n *\n * @event ThemeWhereAreYouEvent\n * @type {CustomEvent<void>}\n *\n * @example\n * ```typescript\n * // Dispatch discovery request\n * window.dispatchEvent(\n * new CustomEvent('theme-where-are-you', {\n * bubbles: true,\n * composed: true\n * })\n * )\n * ```\n */\nexport type ThemeWhereAreYouEvent = CustomEvent<void>\n\n/**\n * Event name constant for theme discovery request.\n * @const {string}\n */\nexport const ThemeWhereAreYou = 'theme-where-are-you'\n\n/**\n * Event dispatched by theme components in response to discovery requests.\n * Contains reference to the theme component element.\n *\n * @event ThemeHereIAmEvent\n * @type {CustomEvent<{theme: HTMLElement}>}\n * @property {HTMLElement} detail.theme - The theme component element\n *\n * @example\n * ```typescript\n * // Listen for theme response\n * window.addEventListener('theme-here-i-am', (event: ThemeHereIAmEvent) => {\n * const themeComponent = event.detail.theme\n * console.log('Found theme component:', themeComponent)\n * })\n * ```\n */\nexport type ThemeHereIAmEvent = CustomEvent<{\n\ttheme: HTMLElement\n}>\n\n/**\n * Event name constant for theme discovery response.\n * @const {string}\n */\nexport const ThemeHereIAm = 'theme-here-i-am'"],"mappings":"sEA+BgC,uBAAA,CAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,MA2BJ,mBAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.interface-CM26m9te.cjs","names":[],"sources":["../src/theme/theme.interface.ts"],"sourcesContent":["/**\n * Material Design 3 Theme Definition\n * Complete theme system following Material Design 3 specifications\n * @see https://m3.material.io/foundations/customization\n *\n * @internal\n */\nconst ThemeDef = {\n\tsys: {\n\t\t// M3 Color System - Complete tonal palette support\n\t\tcolor: {\n\t\t\t// Neutral colors\n\t\t\tscrim: 'var(--schmancy-sys-color-scrim)',\n\t\t\toutline: 'var(--schmancy-sys-color-outline)',\n\t\t\toutlineVariant: 'var(--schmancy-sys-color-outlineVariant)',\n\t\t\tshadow: 'var(--schmancy-sys-color-shadow)',\n\n\t\t\t// Surface colors with complete tonal values\n\t\t\tsurface: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-surface-default)',\n\t\t\t\tdim: 'var(--schmancy-sys-color-surface-dim)',\n\t\t\t\tbright: 'var(--schmancy-sys-color-surface-bright)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-surface-container)',\n\t\t\t\tcontainerLow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\tcontainerLowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t\tcontainerHigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\tcontainerHighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\ton: 'var(--schmancy-sys-color-surface-on)',\n\t\t\t\tonVariant: 'var(--schmancy-sys-color-surface-onVariant)',\n\t\t\t\ttint: 'var(--schmancy-sys-color-surface-tint)',\n\t\t\t\t// Inverse colors\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-surface)',\n\t\t\t\tinverseOn: 'var(--schmancy-sys-color-inverse-onSurface)',\n\t\t\t\t// Deprecated mappings for backward compatibility\n\t\t\t\tlow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\thigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\thighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\tlowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t},\n\n\t\t\t// Primary color roles with fixed variants\n\t\t\tprimary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-primary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-primary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-primary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-primary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-primary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-primary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-primary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-primary-onFixedVariant)',\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-primary)',\n\t\t\t},\n\n\t\t\t// Secondary color roles with fixed variants\n\t\t\tsecondary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-secondary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-secondary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-secondary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-secondary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-secondary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-secondary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-secondary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-secondary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Tertiary color roles with fixed variants\n\t\t\ttertiary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-tertiary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-tertiary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-tertiary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-tertiary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-tertiary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-tertiary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-tertiary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-tertiary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Error color roles\n\t\t\terror: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-error-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-error-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-error-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-error-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Success\n\t\t\tsuccess: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-success-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-success-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-success-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-success-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Warning\n\t\t\twarning: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-warning-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-warning-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-warning-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-warning-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Info\n\t\t\tinfo: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-info-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-info-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-info-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-info-onContainer)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Typography System\n\t\ttypography: {\n\t\t\t// Display styles\n\t\t\tdisplay: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-display-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-display-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-display-small)',\n\t\t\t},\n\t\t\t// Headline styles\n\t\t\theadline: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-headline-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-headline-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-headline-small)',\n\t\t\t},\n\t\t\t// Title styles\n\t\t\ttitle: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-title-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-title-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-title-small)',\n\t\t\t},\n\t\t\t// Body styles\n\t\t\tbody: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-body-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-body-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-body-small)',\n\t\t\t},\n\t\t\t// Label styles\n\t\t\tlabel: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-label-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-label-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-label-small)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Shape System\n\t\tshape: {\n\t\t\tcorner: {\n\t\t\t\tnone: 'var(--schmancy-sys-shape-corner-none)',\n\t\t\t\textraSmall: 'var(--schmancy-sys-shape-corner-extraSmall)',\n\t\t\t\tsmall: 'var(--schmancy-sys-shape-corner-small)',\n\t\t\t\tmedium: 'var(--schmancy-sys-shape-corner-medium)',\n\t\t\t\tlarge: 'var(--schmancy-sys-shape-corner-large)',\n\t\t\t\textraLarge: 'var(--schmancy-sys-shape-corner-extraLarge)',\n\t\t\t\tfull: 'var(--schmancy-sys-shape-corner-full)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Elevation System with tinted shadows\n\t\televation: {\n\t\t\t0: 'var(--schmancy-sys-elevation-0)',\n\t\t\t1: 'var(--schmancy-sys-elevation-1)',\n\t\t\t2: 'var(--schmancy-sys-elevation-2)',\n\t\t\t3: 'var(--schmancy-sys-elevation-3)',\n\t\t\t4: 'var(--schmancy-sys-elevation-4)',\n\t\t\t5: 'var(--schmancy-sys-elevation-5)',\n\t\t},\n\n\t\t// M3 Motion System\n\t\tmotion: {\n\t\t\t// Easing tokens\n\t\t\teasing: {\n\t\t\t\temphasized: 'var(--schmancy-sys-motion-easing-emphasized)',\n\t\t\t\temphasizedDecelerate: 'var(--schmancy-sys-motion-easing-emphasized-decelerate)',\n\t\t\t\temphasizedAccelerate: 'var(--schmancy-sys-motion-easing-emphasized-accelerate)',\n\t\t\t\tstandard: 'var(--schmancy-sys-motion-easing-standard)',\n\t\t\t\tstandardDecelerate: 'var(--schmancy-sys-motion-easing-standard-decelerate)',\n\t\t\t\tstandardAccelerate: 'var(--schmancy-sys-motion-easing-standard-accelerate)',\n\t\t\t\tlegacy: 'var(--schmancy-sys-motion-easing-legacy)',\n\t\t\t\tlinear: 'var(--schmancy-sys-motion-easing-linear)',\n\t\t\t},\n\t\t\t// Duration tokens\n\t\t\tduration: {\n\t\t\t\tshort1: 'var(--schmancy-sys-motion-duration-short1)',\n\t\t\t\tshort2: 'var(--schmancy-sys-motion-duration-short2)',\n\t\t\t\tshort3: 'var(--schmancy-sys-motion-duration-short3)',\n\t\t\t\tshort4: 'var(--schmancy-sys-motion-duration-short4)',\n\t\t\t\tmedium1: 'var(--schmancy-sys-motion-duration-medium1)',\n\t\t\t\tmedium2: 'var(--schmancy-sys-motion-duration-medium2)',\n\t\t\t\tmedium3: 'var(--schmancy-sys-motion-duration-medium3)',\n\t\t\t\tmedium4: 'var(--schmancy-sys-motion-duration-medium4)',\n\t\t\t\tlong1: 'var(--schmancy-sys-motion-duration-long1)',\n\t\t\t\tlong2: 'var(--schmancy-sys-motion-duration-long2)',\n\t\t\t\tlong3: 'var(--schmancy-sys-motion-duration-long3)',\n\t\t\t\tlong4: 'var(--schmancy-sys-motion-duration-long4)',\n\t\t\t\textraLong1: 'var(--schmancy-sys-motion-duration-extraLong1)',\n\t\t\t\textraLong2: 'var(--schmancy-sys-motion-duration-extraLong2)',\n\t\t\t\textraLong3: 'var(--schmancy-sys-motion-duration-extraLong3)',\n\t\t\t\textraLong4: 'var(--schmancy-sys-motion-duration-extraLong4)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 State Layers\n\t\tstate: {\n\t\t\topacity: {\n\t\t\t\thover: 'var(--schmancy-sys-state-hover-opacity)',\n\t\t\t\tfocus: 'var(--schmancy-sys-state-focus-opacity)',\n\t\t\t\tpressed: 'var(--schmancy-sys-state-pressed-opacity)',\n\t\t\t\tdragged: 'var(--schmancy-sys-state-dragged-opacity)',\n\t\t\t\tdisabled: 'var(--schmancy-sys-state-disabled-opacity)',\n\t\t\t\tdisabledContainer: 'var(--schmancy-sys-state-disabled-container-opacity)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Spacing System\n\t\tspacing: {\n\t\t\t0: 'var(--schmancy-sys-spacing-0)',\n\t\t\t1: 'var(--schmancy-sys-spacing-1)',\n\t\t\t2: 'var(--schmancy-sys-spacing-2)',\n\t\t\t3: 'var(--schmancy-sys-spacing-3)',\n\t\t\t4: 'var(--schmancy-sys-spacing-4)',\n\t\t\t5: 'var(--schmancy-sys-spacing-5)',\n\t\t\t6: 'var(--schmancy-sys-spacing-6)',\n\t\t\t7: 'var(--schmancy-sys-spacing-7)',\n\t\t\t8: 'var(--schmancy-sys-spacing-8)',\n\t\t\t9: 'var(--schmancy-sys-spacing-9)',\n\t\t\t10: 'var(--schmancy-sys-spacing-10)',\n\t\t\t11: 'var(--schmancy-sys-spacing-11)',\n\t\t\t12: 'var(--schmancy-sys-spacing-12)',\n\t\t},\n\n\t\t// Legacy outline for backward compatibility\n\t\toutline: {\n\t\t\t1: 'var(--schmancy-sys-outline-1)',\n\t\t},\n\t},\n\n\t// Reference palette - complete tonal values\n\tref: {\n\t\tpalette: {\n\t\t\t// Primary tonal palette\n\t\t\tprimary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-primary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-primary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-primary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-primary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-primary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-primary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-primary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-primary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-primary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-primary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-primary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-primary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-primary-100)',\n\t\t\t},\n\t\t\t// Secondary tonal palette\n\t\t\tsecondary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-secondary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-secondary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-secondary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-secondary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-secondary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-secondary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-secondary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-secondary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-secondary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-secondary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-secondary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-secondary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-secondary-100)',\n\t\t\t},\n\t\t\t// Tertiary tonal palette\n\t\t\ttertiary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-tertiary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-tertiary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-tertiary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-tertiary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-tertiary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-tertiary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-tertiary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-tertiary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-tertiary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-tertiary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-tertiary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-tertiary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-tertiary-100)',\n\t\t\t},\n\t\t\t// Neutral tonal palette\n\t\t\tneutral: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutral-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutral-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutral-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutral-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutral-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutral-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutral-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutral-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutral-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutral-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutral-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutral-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutral-100)',\n\t\t\t},\n\t\t\t// Neutral variant tonal palette\n\t\t\tneutralVariant: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutralVariant-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutralVariant-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutralVariant-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutralVariant-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutralVariant-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutralVariant-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutralVariant-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutralVariant-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutralVariant-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutralVariant-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutralVariant-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutralVariant-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutralVariant-100)',\n\t\t\t},\n\t\t\t// Error tonal palette\n\t\t\terror: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-error-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-error-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-error-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-error-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-error-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-error-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-error-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-error-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-error-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-error-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-error-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-error-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-error-100)',\n\t\t\t},\n\t\t},\n\t},\n}\nconst theme = {\n\ttheme: ThemeDef,\n}\n\n/**\n * Type definition for the Schmancy Material Design 3 theme configuration.\n * Complete theme system with colors, typography, shape, motion, and state layers.\n *\n * @typedef {Object} TSchmancyTheme\n *\n * @example\n * ```typescript\n * import type { TSchmancyTheme } from '@schmancy/theme'\n *\n * const myTheme: Partial<TSchmancyTheme> = {\n * sys: {\n * color: {\n * primary: {\n * default: '#6750A4',\n * container: '#EADDFF'\n * }\n * },\n * shape: {\n * corner: {\n * medium: '12px'\n * }\n * }\n * }\n * }\n * ```\n */\nexport type TSchmancyTheme = (typeof theme)[keyof typeof theme] & {\n\t/**\n\t * Locale for number/date formatting (BCP 47 language tag).\n\t * Defaults to navigator.language, can be overridden via schmancy-theme locale attribute.\n\t * @example \"de-DE\", \"en-US\", \"ar-SA\"\n\t */\n\tlocale: string\n}\n\n/**\n * Default Schmancy theme configuration object.\n * Provides access to all theme CSS variables through JavaScript.\n *\n * @constant {TSchmancyTheme}\n *\n * @example\n * ```typescript\n * import { SchmancyTheme } from '@schmancy/theme'\n *\n * // Access primary color variable\n * const primaryColor = SchmancyTheme.sys.color.primary.default\n * // Returns: 'var(--schmancy-sys-color-primary-default)'\n * ```\n */\nconst SchmancyTheme: TSchmancyTheme = {\n\t...ThemeDef,\n\tlocale: typeof navigator !== 'undefined' ? navigator.language : 'de-DE',\n}\n\nexport { SchmancyTheme }\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.interface-FAUIgbIq.js","names":[],"sources":["../src/theme/theme.interface.ts"],"sourcesContent":["/**\n * Material Design 3 Theme Definition\n * Complete theme system following Material Design 3 specifications\n * @see https://m3.material.io/foundations/customization\n *\n * @internal\n */\nconst ThemeDef = {\n\tsys: {\n\t\t// M3 Color System - Complete tonal palette support\n\t\tcolor: {\n\t\t\t// Neutral colors\n\t\t\tscrim: 'var(--schmancy-sys-color-scrim)',\n\t\t\toutline: 'var(--schmancy-sys-color-outline)',\n\t\t\toutlineVariant: 'var(--schmancy-sys-color-outlineVariant)',\n\t\t\tshadow: 'var(--schmancy-sys-color-shadow)',\n\n\t\t\t// Surface colors with complete tonal values\n\t\t\tsurface: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-surface-default)',\n\t\t\t\tdim: 'var(--schmancy-sys-color-surface-dim)',\n\t\t\t\tbright: 'var(--schmancy-sys-color-surface-bright)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-surface-container)',\n\t\t\t\tcontainerLow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\tcontainerLowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t\tcontainerHigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\tcontainerHighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\ton: 'var(--schmancy-sys-color-surface-on)',\n\t\t\t\tonVariant: 'var(--schmancy-sys-color-surface-onVariant)',\n\t\t\t\ttint: 'var(--schmancy-sys-color-surface-tint)',\n\t\t\t\t// Inverse colors\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-surface)',\n\t\t\t\tinverseOn: 'var(--schmancy-sys-color-inverse-onSurface)',\n\t\t\t\t// Deprecated mappings for backward compatibility\n\t\t\t\tlow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\thigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\thighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\tlowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t},\n\n\t\t\t// Primary color roles with fixed variants\n\t\t\tprimary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-primary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-primary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-primary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-primary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-primary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-primary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-primary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-primary-onFixedVariant)',\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-primary)',\n\t\t\t},\n\n\t\t\t// Secondary color roles with fixed variants\n\t\t\tsecondary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-secondary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-secondary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-secondary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-secondary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-secondary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-secondary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-secondary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-secondary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Tertiary color roles with fixed variants\n\t\t\ttertiary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-tertiary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-tertiary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-tertiary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-tertiary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-tertiary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-tertiary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-tertiary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-tertiary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Error color roles\n\t\t\terror: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-error-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-error-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-error-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-error-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Success\n\t\t\tsuccess: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-success-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-success-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-success-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-success-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Warning\n\t\t\twarning: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-warning-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-warning-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-warning-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-warning-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Info\n\t\t\tinfo: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-info-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-info-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-info-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-info-onContainer)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Typography System\n\t\ttypography: {\n\t\t\t// Display styles\n\t\t\tdisplay: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-display-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-display-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-display-small)',\n\t\t\t},\n\t\t\t// Headline styles\n\t\t\theadline: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-headline-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-headline-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-headline-small)',\n\t\t\t},\n\t\t\t// Title styles\n\t\t\ttitle: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-title-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-title-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-title-small)',\n\t\t\t},\n\t\t\t// Body styles\n\t\t\tbody: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-body-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-body-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-body-small)',\n\t\t\t},\n\t\t\t// Label styles\n\t\t\tlabel: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-label-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-label-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-label-small)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Shape System\n\t\tshape: {\n\t\t\tcorner: {\n\t\t\t\tnone: 'var(--schmancy-sys-shape-corner-none)',\n\t\t\t\textraSmall: 'var(--schmancy-sys-shape-corner-extraSmall)',\n\t\t\t\tsmall: 'var(--schmancy-sys-shape-corner-small)',\n\t\t\t\tmedium: 'var(--schmancy-sys-shape-corner-medium)',\n\t\t\t\tlarge: 'var(--schmancy-sys-shape-corner-large)',\n\t\t\t\textraLarge: 'var(--schmancy-sys-shape-corner-extraLarge)',\n\t\t\t\tfull: 'var(--schmancy-sys-shape-corner-full)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Elevation System with tinted shadows\n\t\televation: {\n\t\t\t0: 'var(--schmancy-sys-elevation-0)',\n\t\t\t1: 'var(--schmancy-sys-elevation-1)',\n\t\t\t2: 'var(--schmancy-sys-elevation-2)',\n\t\t\t3: 'var(--schmancy-sys-elevation-3)',\n\t\t\t4: 'var(--schmancy-sys-elevation-4)',\n\t\t\t5: 'var(--schmancy-sys-elevation-5)',\n\t\t},\n\n\t\t// M3 Motion System\n\t\tmotion: {\n\t\t\t// Easing tokens\n\t\t\teasing: {\n\t\t\t\temphasized: 'var(--schmancy-sys-motion-easing-emphasized)',\n\t\t\t\temphasizedDecelerate: 'var(--schmancy-sys-motion-easing-emphasized-decelerate)',\n\t\t\t\temphasizedAccelerate: 'var(--schmancy-sys-motion-easing-emphasized-accelerate)',\n\t\t\t\tstandard: 'var(--schmancy-sys-motion-easing-standard)',\n\t\t\t\tstandardDecelerate: 'var(--schmancy-sys-motion-easing-standard-decelerate)',\n\t\t\t\tstandardAccelerate: 'var(--schmancy-sys-motion-easing-standard-accelerate)',\n\t\t\t\tlegacy: 'var(--schmancy-sys-motion-easing-legacy)',\n\t\t\t\tlinear: 'var(--schmancy-sys-motion-easing-linear)',\n\t\t\t},\n\t\t\t// Duration tokens\n\t\t\tduration: {\n\t\t\t\tshort1: 'var(--schmancy-sys-motion-duration-short1)',\n\t\t\t\tshort2: 'var(--schmancy-sys-motion-duration-short2)',\n\t\t\t\tshort3: 'var(--schmancy-sys-motion-duration-short3)',\n\t\t\t\tshort4: 'var(--schmancy-sys-motion-duration-short4)',\n\t\t\t\tmedium1: 'var(--schmancy-sys-motion-duration-medium1)',\n\t\t\t\tmedium2: 'var(--schmancy-sys-motion-duration-medium2)',\n\t\t\t\tmedium3: 'var(--schmancy-sys-motion-duration-medium3)',\n\t\t\t\tmedium4: 'var(--schmancy-sys-motion-duration-medium4)',\n\t\t\t\tlong1: 'var(--schmancy-sys-motion-duration-long1)',\n\t\t\t\tlong2: 'var(--schmancy-sys-motion-duration-long2)',\n\t\t\t\tlong3: 'var(--schmancy-sys-motion-duration-long3)',\n\t\t\t\tlong4: 'var(--schmancy-sys-motion-duration-long4)',\n\t\t\t\textraLong1: 'var(--schmancy-sys-motion-duration-extraLong1)',\n\t\t\t\textraLong2: 'var(--schmancy-sys-motion-duration-extraLong2)',\n\t\t\t\textraLong3: 'var(--schmancy-sys-motion-duration-extraLong3)',\n\t\t\t\textraLong4: 'var(--schmancy-sys-motion-duration-extraLong4)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 State Layers\n\t\tstate: {\n\t\t\topacity: {\n\t\t\t\thover: 'var(--schmancy-sys-state-hover-opacity)',\n\t\t\t\tfocus: 'var(--schmancy-sys-state-focus-opacity)',\n\t\t\t\tpressed: 'var(--schmancy-sys-state-pressed-opacity)',\n\t\t\t\tdragged: 'var(--schmancy-sys-state-dragged-opacity)',\n\t\t\t\tdisabled: 'var(--schmancy-sys-state-disabled-opacity)',\n\t\t\t\tdisabledContainer: 'var(--schmancy-sys-state-disabled-container-opacity)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Spacing System\n\t\tspacing: {\n\t\t\t0: 'var(--schmancy-sys-spacing-0)',\n\t\t\t1: 'var(--schmancy-sys-spacing-1)',\n\t\t\t2: 'var(--schmancy-sys-spacing-2)',\n\t\t\t3: 'var(--schmancy-sys-spacing-3)',\n\t\t\t4: 'var(--schmancy-sys-spacing-4)',\n\t\t\t5: 'var(--schmancy-sys-spacing-5)',\n\t\t\t6: 'var(--schmancy-sys-spacing-6)',\n\t\t\t7: 'var(--schmancy-sys-spacing-7)',\n\t\t\t8: 'var(--schmancy-sys-spacing-8)',\n\t\t\t9: 'var(--schmancy-sys-spacing-9)',\n\t\t\t10: 'var(--schmancy-sys-spacing-10)',\n\t\t\t11: 'var(--schmancy-sys-spacing-11)',\n\t\t\t12: 'var(--schmancy-sys-spacing-12)',\n\t\t},\n\n\t\t// Legacy outline for backward compatibility\n\t\toutline: {\n\t\t\t1: 'var(--schmancy-sys-outline-1)',\n\t\t},\n\t},\n\n\t// Reference palette - complete tonal values\n\tref: {\n\t\tpalette: {\n\t\t\t// Primary tonal palette\n\t\t\tprimary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-primary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-primary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-primary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-primary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-primary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-primary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-primary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-primary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-primary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-primary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-primary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-primary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-primary-100)',\n\t\t\t},\n\t\t\t// Secondary tonal palette\n\t\t\tsecondary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-secondary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-secondary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-secondary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-secondary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-secondary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-secondary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-secondary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-secondary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-secondary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-secondary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-secondary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-secondary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-secondary-100)',\n\t\t\t},\n\t\t\t// Tertiary tonal palette\n\t\t\ttertiary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-tertiary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-tertiary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-tertiary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-tertiary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-tertiary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-tertiary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-tertiary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-tertiary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-tertiary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-tertiary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-tertiary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-tertiary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-tertiary-100)',\n\t\t\t},\n\t\t\t// Neutral tonal palette\n\t\t\tneutral: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutral-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutral-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutral-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutral-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutral-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutral-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutral-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutral-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutral-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutral-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutral-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutral-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutral-100)',\n\t\t\t},\n\t\t\t// Neutral variant tonal palette\n\t\t\tneutralVariant: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutralVariant-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutralVariant-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutralVariant-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutralVariant-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutralVariant-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutralVariant-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutralVariant-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutralVariant-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutralVariant-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutralVariant-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutralVariant-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutralVariant-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutralVariant-100)',\n\t\t\t},\n\t\t\t// Error tonal palette\n\t\t\terror: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-error-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-error-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-error-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-error-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-error-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-error-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-error-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-error-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-error-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-error-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-error-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-error-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-error-100)',\n\t\t\t},\n\t\t},\n\t},\n}\nconst theme = {\n\ttheme: ThemeDef,\n}\n\n/**\n * Type definition for the Schmancy Material Design 3 theme configuration.\n * Complete theme system with colors, typography, shape, motion, and state layers.\n *\n * @typedef {Object} TSchmancyTheme\n *\n * @example\n * ```typescript\n * import type { TSchmancyTheme } from '@schmancy/theme'\n *\n * const myTheme: Partial<TSchmancyTheme> = {\n * sys: {\n * color: {\n * primary: {\n * default: '#6750A4',\n * container: '#EADDFF'\n * }\n * },\n * shape: {\n * corner: {\n * medium: '12px'\n * }\n * }\n * }\n * }\n * ```\n */\nexport type TSchmancyTheme = (typeof theme)[keyof typeof theme] & {\n\t/**\n\t * Locale for number/date formatting (BCP 47 language tag).\n\t * Defaults to navigator.language, can be overridden via schmancy-theme locale attribute.\n\t * @example \"de-DE\", \"en-US\", \"ar-SA\"\n\t */\n\tlocale: string\n}\n\n/**\n * Default Schmancy theme configuration object.\n * Provides access to all theme CSS variables through JavaScript.\n *\n * @constant {TSchmancyTheme}\n *\n * @example\n * ```typescript\n * import { SchmancyTheme } from '@schmancy/theme'\n *\n * // Access primary color variable\n * const primaryColor = SchmancyTheme.sys.color.primary.default\n * // Returns: 'var(--schmancy-sys-color-primary-default)'\n * ```\n */\nconst SchmancyTheme: TSchmancyTheme = {\n\t...ThemeDef,\n\tlocale: typeof navigator !== 'undefined' ? navigator.language : 'de-DE',\n}\n\nexport { SchmancyTheme }\n"],"mappings":"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"}
|
package/dist/theme.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as t, t as n } from "./theme.events-
|
|
3
|
-
import { n as r, t as i } from "./theme.service-
|
|
4
|
-
import { t as a } from "./theme.interface-
|
|
5
|
-
import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } from "./theme-
|
|
1
|
+
import { i as e } from "./tailwind.mixin-DufHBjmb.js";
|
|
2
|
+
import { n as t, t as n } from "./theme.events-Bw3mYjUA.js";
|
|
3
|
+
import { n as r, t as i } from "./theme.service-_qP5WvB9.js";
|
|
4
|
+
import { t as a } from "./theme.interface-FAUIgbIq.js";
|
|
5
|
+
import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } from "./theme-CEc32pAv.js";
|
|
6
6
|
export { u as SchmancyGenerateMoodAudioEvent, a as SchmancyTheme, f as SchmancyThemeAudioPlayer, o as SchmancyThemeComponent, c as SchmancyThemeController, m as SchmancyThemeControllerBoat, n as ThemeHereIAm, t as ThemeWhereAreYou, p as createDarkTonalPaletteFromBaseColor, s as createLightTonalPaletteFromBaseColor, l as formatTheme, i as schmancyTheme, d as tailwindStyles, r as theme, e as themeContext };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./chunk-BCfY8kxB.cjs`);const e=require(`./store-CO4nJyGj.cjs`),t=require(`./theme.events-EznKK2Y0.cjs`);let n=require(`rxjs`);var r=e.M({scheme:`auto`,color:`#6200ee`},`local`,`schmancy-theme-settings`),i=class e{get scheme(){return r.value.scheme}get color(){return r.value.color}get theme(){return this._theme$.getValue()}get themeComponent(){return this._themeComponent$.getValue()}get fullscreen(){return this._fullscreen$.getValue()}get bottomOffset(){return this._bottomOffset$.getValue()}constructor(){this._theme$=new n.BehaviorSubject({}),this._themeComponent$=new n.BehaviorSubject(null),this._fullscreen$=new n.BehaviorSubject(!1),this._bottomOffset$=new n.BehaviorSubject(0),this.scheme$=r.$.pipe((0,n.map)(e=>e.scheme),(0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),this.color$=r.$.pipe((0,n.map)(e=>e.color),(0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),this.theme$=this._theme$.asObservable().pipe((0,n.distinctUntilChanged)((e,t)=>JSON.stringify(e)===JSON.stringify(t)),(0,n.shareReplay)(1)),this.themeComponent$=this._themeComponent$.asObservable().pipe((0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),this.fullscreen$=this._fullscreen$.asObservable().pipe((0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),this.bottomOffset$=this._bottomOffset$.asObservable().pipe((0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),this.resolvedScheme$=this.scheme$.pipe((0,n.switchMap)(e=>{if(e===`auto`){let e=window.matchMedia(`(prefers-color-scheme: dark)`);return new n.Observable(t=>{let n=e=>{t.next(e.matches?`dark`:`light`)};return e.addEventListener(`change`,n),t.next(e.matches?`dark`:`light`),()=>e.removeEventListener(`change`,n)})}return(0,n.of)(e)}),(0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),this.discoverTheme()}discoverTheme(){return(0,n.fromEvent)(window,t.t).pipe((0,n.takeUntil)((0,n.timer)(100)),(0,n.map)(e=>e.detail.theme),(0,n.defaultIfEmpty)(null),(0,n.tap)(e=>{e&&this.registerThemeComponent(e)})).pipe((0,n.tap)(()=>{window.dispatchEvent(new CustomEvent(t.n,{bubbles:!0,composed:!0}))}),(0,n.switchMap)(()=>(0,n.fromEvent)(window,t.t).pipe((0,n.takeUntil)((0,n.timer)(100)),(0,n.map)(e=>e.detail.theme),(0,n.defaultIfEmpty)(null),(0,n.tap)(e=>{e&&this.registerThemeComponent(e)}))))}registerThemeComponent(e){this._themeComponent$.next(e),r.set({scheme:e.scheme,color:e.color}),this._theme$.next(e.theme)}updateTheme(e){let t={};e.scheme!==void 0&&(t.scheme=e.scheme),e.color!==void 0&&(t.color=e.color),Object.keys(t).length>0&&r.set(t),e.theme!==void 0&&this._theme$.next(e.theme)}setScheme(e){let t=this.themeComponent;t&&(t.scheme=e),r.set({scheme:e})}setColor(e){let t=this.themeComponent;t&&(t.color=e),r.set({color:e})}isDarkMode(){return this.resolvedScheme$.pipe((0,n.map)(e=>e===`dark`))}toggleScheme(){let e=this.scheme,t=e===`dark`?`light`:e===`light`?`dark`:`light`;this.setScheme(t)}getCSSVariable(e){let t=this.themeComponent;if(t){let n=t.root?document.body:t.shadowRoot?.host;if(n)return getComputedStyle(n).getPropertyValue(`--schmancy-${e}`).trim()}return``}watchCSSVariable(e){return this.theme$.pipe((0,n.map)(()=>this.getCSSVariable(e)),(0,n.distinctUntilChanged)())}setFullscreen(e){this._fullscreen$.next(e),window.dispatchEvent(new CustomEvent(`fullscreen`,{detail:e,bubbles:!0,composed:!0}))}toggleFullscreen(){this.setFullscreen(!this.fullscreen)}setBottomOffset(e){this._bottomOffset$.next(e)}next(e){e.fullscreen!==void 0&&this.setFullscreen(e.fullscreen),e.scheme!==void 0&&this.setScheme(e.scheme),e.color!==void 0&&this.setColor(e.color)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),a=i;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.service-ETiKUwVy.cjs","names":[],"sources":["../src/theme/theme.service.ts"],"sourcesContent":["import {\n BehaviorSubject,\n Observable,\n fromEvent,\n timer,\n map,\n takeUntil,\n defaultIfEmpty,\n distinctUntilChanged,\n shareReplay,\n tap,\n switchMap,\n of\n} from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from './theme.events'\nimport type { SchmancyThemeComponent } from './theme.component'\nimport type { TSchmancyTheme } from './theme.interface'\nimport { createContext } from '../store'\n\ninterface ThemeSettings {\n scheme: 'dark' | 'light' | 'auto'\n color: string\n}\n\n// Single context for all theme settings\nconst ThemeContext = createContext<ThemeSettings>(\n { scheme: 'auto', color: '#6200ee' },\n 'local',\n 'schmancy-theme-settings'\n)\n\n/**\n * Theme Service - Provides centralized theme management for Schmancy components.\n *\n * This service acts as a singleton interface to interact with the theme system,\n * providing reactive observables for theme state and methods to control theming.\n *\n * @example\n * ```typescript\n * import { theme } from '@schmancy/theme'\n *\n * // Subscribe to theme changes\n * theme.scheme$.subscribe(scheme => {\n * console.log('Current scheme:', scheme) // 'light' | 'dark' | 'auto'\n * })\n *\n * // Get current values synchronously\n * const currentScheme = theme.scheme\n * const currentColor = theme.color\n *\n * // Toggle between light and dark mode\n * theme.toggleScheme()\n *\n * // Set specific scheme\n * theme.setScheme('dark')\n *\n * // Check if dark mode is active\n * theme.isDarkMode().subscribe(isDark => {\n * console.log('Is dark mode:', isDark)\n * })\n * ```\n */\nclass ThemeService {\n private static instance: ThemeService\n\n // Observable properties for theme values\n private _theme$ = new BehaviorSubject<Partial<TSchmancyTheme>>({})\n private _themeComponent$ = new BehaviorSubject<SchmancyThemeComponent | null>(null)\n private _fullscreen$ = new BehaviorSubject<boolean>(false)\n private _bottomOffset$ = new BehaviorSubject<number>(0)\n\n // Public observables derived from context\n public readonly scheme$ = ThemeContext.$.pipe(\n map(settings => settings.scheme),\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly color$ = ThemeContext.$.pipe(\n map(settings => settings.color),\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly theme$ = this._theme$.asObservable().pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n shareReplay(1)\n )\n\n public readonly themeComponent$ = this._themeComponent$.asObservable().pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly fullscreen$ = this._fullscreen$.asObservable().pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly bottomOffset$ = this._bottomOffset$.asObservable().pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n // Getters for synchronous access to current values\n get scheme(): 'dark' | 'light' | 'auto' {\n return ThemeContext.value.scheme\n }\n\n get color(): string {\n return ThemeContext.value.color\n }\n\n get theme(): Partial<TSchmancyTheme> {\n return this._theme$.getValue()\n }\n\n get themeComponent(): SchmancyThemeComponent | null {\n return this._themeComponent$.getValue()\n }\n\n get fullscreen(): boolean {\n return this._fullscreen$.getValue()\n }\n\n get bottomOffset(): number {\n return this._bottomOffset$.getValue()\n }\n\n // Computed observable for actual scheme (resolving 'auto')\n public readonly resolvedScheme$ = this.scheme$.pipe(\n switchMap(scheme => {\n if (scheme === 'auto') {\n // Listen to system preference changes\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n return new Observable<'dark' | 'light'>(subscriber => {\n const handler = (e: MediaQueryListEvent) => {\n subscriber.next(e.matches ? 'dark' : 'light')\n }\n mediaQuery.addEventListener('change', handler)\n\n // Emit initial value\n subscriber.next(mediaQuery.matches ? 'dark' : 'light')\n\n // Cleanup\n return () => mediaQuery.removeEventListener('change', handler)\n })\n }\n return of(scheme as 'dark' | 'light')\n }),\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n constructor() {\n this.discoverTheme()\n }\n\n /**\n * Discover the nearest theme component in the DOM.\n * This method can be called to refresh the theme discovery process.\n *\n * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null\n *\n * @example\n * ```typescript\n * theme.discoverTheme().subscribe(component => {\n * if (component) {\n * console.log('Theme component found:', component)\n * } else {\n * console.log('No theme component found')\n * }\n * })\n * ```\n */\n public discoverTheme(): Observable<SchmancyThemeComponent | null> {\n // Dispatch discovery event and wait for response\n return fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n takeUntil(timer(100)), // Wait up to 100ms for response\n map(e => e.detail.theme as SchmancyThemeComponent),\n defaultIfEmpty(null),\n tap(themeComponent => {\n if (themeComponent) {\n this.registerThemeComponent(themeComponent)\n }\n })\n ).pipe(\n tap(() => {\n // Trigger theme discovery\n window.dispatchEvent(\n new CustomEvent(ThemeWhereAreYou, {\n bubbles: true,\n composed: true,\n })\n )\n }),\n switchMap(() =>\n fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n takeUntil(timer(100)),\n map(e => e.detail.theme as SchmancyThemeComponent),\n defaultIfEmpty(null),\n tap(themeComponent => {\n if (themeComponent) {\n this.registerThemeComponent(themeComponent)\n }\n })\n )\n )\n )\n }\n\n /**\n * Register a theme component and subscribe to its changes.\n * This is typically called internally by theme components when they mount or update.\n *\n * @param {SchmancyThemeComponent} component - The theme component to register\n *\n * @internal\n */\n public registerThemeComponent(component: SchmancyThemeComponent): void {\n this._themeComponent$.next(component)\n\n // Update values from the component\n ThemeContext.set({ scheme: component.scheme, color: component.color })\n this._theme$.next(component.theme)\n }\n\n /**\n * Update theme values. Usually called internally by theme components.\n *\n * @param {Object} values - Theme values to update\n * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set\n * @param {string} [values.color] - Primary color in hex format\n * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object\n *\n * @internal\n */\n public updateTheme(values: {\n scheme?: 'dark' | 'light' | 'auto'\n color?: string\n theme?: Partial<TSchmancyTheme>\n }): void {\n const updates: Partial<ThemeSettings> = {}\n if (values.scheme !== undefined) {\n updates.scheme = values.scheme\n }\n if (values.color !== undefined) {\n updates.color = values.color\n }\n if (Object.keys(updates).length > 0) {\n ThemeContext.set(updates)\n }\n if (values.theme !== undefined) {\n this._theme$.next(values.theme)\n }\n }\n\n /**\n * Set the color scheme for the application.\n *\n * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set\n *\n * @example\n * ```typescript\n * // Set to dark mode\n * theme.setScheme('dark')\n *\n * // Set to auto (follows system preference)\n * theme.setScheme('auto')\n * ```\n */\n public setScheme(scheme: 'dark' | 'light' | 'auto'): void {\n const component = this.themeComponent\n if (component) {\n component.scheme = scheme\n ThemeContext.set({ scheme })\n } else {\n console.warn('No theme component found. Scheme change may not persist.')\n ThemeContext.set({ scheme })\n }\n }\n\n /**\n * Set the primary color for the theme.\n *\n * @param {string} color - Primary color in hex format (e.g., '#6200ee')\n *\n * @example\n * ```typescript\n * // Set primary color to purple\n * theme.setColor('#6200ee')\n *\n * // Set primary color to blue\n * theme.setColor('#2196f3')\n * ```\n */\n public setColor(color: string): void {\n const component = this.themeComponent\n if (component) {\n component.color = color\n ThemeContext.set({ color })\n } else {\n console.warn('No theme component found. Color change may not persist.')\n ThemeContext.set({ color })\n }\n }\n\n /**\n * Check if dark mode is currently active.\n * This resolves 'auto' scheme to the actual value based on system preference.\n *\n * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise\n *\n * @example\n * ```typescript\n * theme.isDarkMode().subscribe(isDark => {\n * if (isDark) {\n * console.log('Dark mode is active')\n * } else {\n * console.log('Light mode is active')\n * }\n * })\n * ```\n */\n public isDarkMode(): Observable<boolean> {\n return this.resolvedScheme$.pipe(\n map(scheme => scheme === 'dark')\n )\n }\n\n /**\n * Toggle between light and dark mode.\n * If currently in 'auto' mode, defaults to 'light'.\n *\n * @example\n * ```typescript\n * // Toggle theme on button click\n * button.addEventListener('click', () => {\n * theme.toggleScheme()\n * })\n * ```\n */\n public toggleScheme(): void {\n const currentScheme = this.scheme\n const newScheme = currentScheme === 'dark' ? 'light' :\n currentScheme === 'light' ? 'dark' :\n 'light' // If 'auto', default to 'light'\n this.setScheme(newScheme)\n }\n\n /**\n * Get the current value of a CSS variable from the theme.\n *\n * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)\n * @returns {string} The CSS variable value or empty string if not found\n *\n * @example\n * ```typescript\n * // Get primary color variable\n * const primaryColor = theme.getCSSVariable('color-primary')\n *\n * // Get surface color\n * const surfaceColor = theme.getCSSVariable('color-surface')\n * ```\n */\n public getCSSVariable(variableName: string): string {\n const component = this.themeComponent\n if (component) {\n const host = component.root ? document.body : (component.shadowRoot?.host as HTMLElement)\n if (host) {\n return getComputedStyle(host).getPropertyValue(`--schmancy-${variableName}`).trim()\n }\n }\n return ''\n }\n\n /**\n * Subscribe to changes of a specific CSS variable.\n *\n * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)\n * @returns {Observable<string>} Observable that emits the CSS variable value when it changes\n *\n * @example\n * ```typescript\n * // Watch for primary color changes\n * theme.watchCSSVariable('color-primary').subscribe(color => {\n * console.log('Primary color changed to:', color)\n * })\n *\n * // Watch for surface color changes\n * theme.watchCSSVariable('color-surface').subscribe(color => {\n * console.log('Surface color changed to:', color)\n * })\n * ```\n */\n public watchCSSVariable(variableName: string): Observable<string> {\n return this.theme$.pipe(\n map(() => this.getCSSVariable(variableName)),\n distinctUntilChanged()\n )\n }\n\n /**\n * Set the fullscreen state for the application.\n * This emits a custom event that navigation components can listen to.\n *\n * @param {boolean} value - Whether fullscreen mode is active\n *\n * @example\n * ```typescript\n * // Enter fullscreen mode\n * theme.setFullscreen(true)\n *\n * // Exit fullscreen mode\n * theme.setFullscreen(false)\n * ```\n */\n public setFullscreen(value: boolean): void {\n this._fullscreen$.next(value)\n\n // Emit custom event for components to listen to\n window.dispatchEvent(\n new CustomEvent('fullscreen', {\n detail: value,\n bubbles: true,\n composed: true\n })\n )\n }\n\n /**\n * Toggle fullscreen mode.\n *\n * @example\n * ```typescript\n * // Toggle fullscreen mode on button click\n * button.addEventListener('click', () => {\n * theme.toggleFullscreen()\n * })\n * ```\n */\n public toggleFullscreen(): void {\n this.setFullscreen(!this.fullscreen)\n }\n\n /**\n * Set the bottom offset for viewport calculations.\n * Used by navigation bars to inform fullHeight directive of reserved space.\n *\n * @param {number} value - Bottom offset in pixels\n *\n * @example\n * ```typescript\n * // Set bottom offset when nav bar is visible\n * theme.setBottomOffset(80)\n *\n * // Clear bottom offset when nav bar is hidden\n * theme.setBottomOffset(0)\n * ```\n */\n public setBottomOffset(value: number): void {\n this._bottomOffset$.next(value)\n }\n\n /**\n * Convenience method to update theme state including fullscreen.\n * Can be called with next() like syntax for familiarity.\n *\n * @param {Object} values - Theme values to update\n * @param {boolean} [values.fullscreen] - Fullscreen state\n * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme\n * @param {string} [values.color] - Primary color\n *\n * @example\n * ```typescript\n * // Set fullscreen mode\n * theme.next({ fullscreen: true })\n *\n * // Update multiple values\n * theme.next({\n * fullscreen: true,\n * scheme: 'dark'\n * })\n * ```\n */\n public next(values: {\n fullscreen?: boolean\n scheme?: 'dark' | 'light' | 'auto'\n color?: string\n }): void {\n if (values.fullscreen !== undefined) {\n this.setFullscreen(values.fullscreen)\n }\n if (values.scheme !== undefined) {\n this.setScheme(values.scheme)\n }\n if (values.color !== undefined) {\n this.setColor(values.color)\n }\n }\n\n /**\n * Get the singleton instance of ThemeService.\n *\n * @returns {ThemeService} The singleton ThemeService instance\n *\n * @internal\n */\n static getInstance(): ThemeService {\n if (!ThemeService.instance) {\n ThemeService.instance = new ThemeService()\n }\n return ThemeService.instance\n }\n}\n\n// Export singleton instance\nexport const theme = ThemeService.getInstance()\nexport const schmancyTheme = theme // Alias for convenience\nexport default theme"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { M as e } from "./store-Bmj6rvZY.js";
|
|
2
|
+
import { n as t, t as n } from "./theme.events-Bw3mYjUA.js";
|
|
3
|
+
import { BehaviorSubject as r, Observable as i, defaultIfEmpty as a, distinctUntilChanged as o, fromEvent as s, map as c, of as l, shareReplay as u, switchMap as d, takeUntil as f, tap as p, timer as m } from "rxjs";
|
|
4
|
+
var h = e({
|
|
5
|
+
scheme: "auto",
|
|
6
|
+
color: "#6200ee"
|
|
7
|
+
}, "local", "schmancy-theme-settings"), g = class e {
|
|
8
|
+
get scheme() {
|
|
9
|
+
return h.value.scheme;
|
|
10
|
+
}
|
|
11
|
+
get color() {
|
|
12
|
+
return h.value.color;
|
|
13
|
+
}
|
|
14
|
+
get theme() {
|
|
15
|
+
return this._theme$.getValue();
|
|
16
|
+
}
|
|
17
|
+
get themeComponent() {
|
|
18
|
+
return this._themeComponent$.getValue();
|
|
19
|
+
}
|
|
20
|
+
get fullscreen() {
|
|
21
|
+
return this._fullscreen$.getValue();
|
|
22
|
+
}
|
|
23
|
+
get bottomOffset() {
|
|
24
|
+
return this._bottomOffset$.getValue();
|
|
25
|
+
}
|
|
26
|
+
constructor() {
|
|
27
|
+
this._theme$ = new r({}), this._themeComponent$ = new r(null), this._fullscreen$ = new r(!1), this._bottomOffset$ = new r(0), this.scheme$ = h.$.pipe(c((e) => e.scheme), o(), u(1)), this.color$ = h.$.pipe(c((e) => e.color), o(), u(1)), this.theme$ = this._theme$.asObservable().pipe(o((e, t) => JSON.stringify(e) === JSON.stringify(t)), u(1)), this.themeComponent$ = this._themeComponent$.asObservable().pipe(o(), u(1)), this.fullscreen$ = this._fullscreen$.asObservable().pipe(o(), u(1)), this.bottomOffset$ = this._bottomOffset$.asObservable().pipe(o(), u(1)), this.resolvedScheme$ = this.scheme$.pipe(d((e) => {
|
|
28
|
+
if (e === "auto") {
|
|
29
|
+
let e = window.matchMedia("(prefers-color-scheme: dark)");
|
|
30
|
+
return new i((t) => {
|
|
31
|
+
let n = (e) => {
|
|
32
|
+
t.next(e.matches ? "dark" : "light");
|
|
33
|
+
};
|
|
34
|
+
return e.addEventListener("change", n), t.next(e.matches ? "dark" : "light"), () => e.removeEventListener("change", n);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return l(e);
|
|
38
|
+
}), o(), u(1)), this.discoverTheme();
|
|
39
|
+
}
|
|
40
|
+
discoverTheme() {
|
|
41
|
+
return s(window, n).pipe(f(m(100)), c((e) => e.detail.theme), a(null), p((e) => {
|
|
42
|
+
e && this.registerThemeComponent(e);
|
|
43
|
+
})).pipe(p(() => {
|
|
44
|
+
window.dispatchEvent(new CustomEvent(t, {
|
|
45
|
+
bubbles: !0,
|
|
46
|
+
composed: !0
|
|
47
|
+
}));
|
|
48
|
+
}), d(() => s(window, n).pipe(f(m(100)), c((e) => e.detail.theme), a(null), p((e) => {
|
|
49
|
+
e && this.registerThemeComponent(e);
|
|
50
|
+
}))));
|
|
51
|
+
}
|
|
52
|
+
registerThemeComponent(e) {
|
|
53
|
+
this._themeComponent$.next(e), h.set({
|
|
54
|
+
scheme: e.scheme,
|
|
55
|
+
color: e.color
|
|
56
|
+
}), this._theme$.next(e.theme);
|
|
57
|
+
}
|
|
58
|
+
updateTheme(e) {
|
|
59
|
+
let t = {};
|
|
60
|
+
e.scheme !== void 0 && (t.scheme = e.scheme), e.color !== void 0 && (t.color = e.color), Object.keys(t).length > 0 && h.set(t), e.theme !== void 0 && this._theme$.next(e.theme);
|
|
61
|
+
}
|
|
62
|
+
setScheme(e) {
|
|
63
|
+
let t = this.themeComponent;
|
|
64
|
+
t && (t.scheme = e), h.set({ scheme: e });
|
|
65
|
+
}
|
|
66
|
+
setColor(e) {
|
|
67
|
+
let t = this.themeComponent;
|
|
68
|
+
t && (t.color = e), h.set({ color: e });
|
|
69
|
+
}
|
|
70
|
+
isDarkMode() {
|
|
71
|
+
return this.resolvedScheme$.pipe(c((e) => e === "dark"));
|
|
72
|
+
}
|
|
73
|
+
toggleScheme() {
|
|
74
|
+
let e = this.scheme, t = e === "dark" ? "light" : e === "light" ? "dark" : "light";
|
|
75
|
+
this.setScheme(t);
|
|
76
|
+
}
|
|
77
|
+
getCSSVariable(e) {
|
|
78
|
+
let t = this.themeComponent;
|
|
79
|
+
if (t) {
|
|
80
|
+
let n = t.root ? document.body : t.shadowRoot?.host;
|
|
81
|
+
if (n) return getComputedStyle(n).getPropertyValue(`--schmancy-${e}`).trim();
|
|
82
|
+
}
|
|
83
|
+
return "";
|
|
84
|
+
}
|
|
85
|
+
watchCSSVariable(e) {
|
|
86
|
+
return this.theme$.pipe(c(() => this.getCSSVariable(e)), o());
|
|
87
|
+
}
|
|
88
|
+
setFullscreen(e) {
|
|
89
|
+
this._fullscreen$.next(e), window.dispatchEvent(new CustomEvent("fullscreen", {
|
|
90
|
+
detail: e,
|
|
91
|
+
bubbles: !0,
|
|
92
|
+
composed: !0
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
toggleFullscreen() {
|
|
96
|
+
this.setFullscreen(!this.fullscreen);
|
|
97
|
+
}
|
|
98
|
+
setBottomOffset(e) {
|
|
99
|
+
this._bottomOffset$.next(e);
|
|
100
|
+
}
|
|
101
|
+
next(e) {
|
|
102
|
+
e.fullscreen !== void 0 && this.setFullscreen(e.fullscreen), e.scheme !== void 0 && this.setScheme(e.scheme), e.color !== void 0 && this.setColor(e.color);
|
|
103
|
+
}
|
|
104
|
+
static getInstance() {
|
|
105
|
+
return e.instance ||= new e(), e.instance;
|
|
106
|
+
}
|
|
107
|
+
}.getInstance(), _ = g;
|
|
108
|
+
export { g as n, _ as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.service-_qP5WvB9.js","names":[],"sources":["../src/theme/theme.service.ts"],"sourcesContent":["import {\n BehaviorSubject,\n Observable,\n fromEvent,\n timer,\n map,\n takeUntil,\n defaultIfEmpty,\n distinctUntilChanged,\n shareReplay,\n tap,\n switchMap,\n of\n} from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from './theme.events'\nimport type { SchmancyThemeComponent } from './theme.component'\nimport type { TSchmancyTheme } from './theme.interface'\nimport { createContext } from '../store'\n\ninterface ThemeSettings {\n scheme: 'dark' | 'light' | 'auto'\n color: string\n}\n\n// Single context for all theme settings\nconst ThemeContext = createContext<ThemeSettings>(\n { scheme: 'auto', color: '#6200ee' },\n 'local',\n 'schmancy-theme-settings'\n)\n\n/**\n * Theme Service - Provides centralized theme management for Schmancy components.\n *\n * This service acts as a singleton interface to interact with the theme system,\n * providing reactive observables for theme state and methods to control theming.\n *\n * @example\n * ```typescript\n * import { theme } from '@schmancy/theme'\n *\n * // Subscribe to theme changes\n * theme.scheme$.subscribe(scheme => {\n * console.log('Current scheme:', scheme) // 'light' | 'dark' | 'auto'\n * })\n *\n * // Get current values synchronously\n * const currentScheme = theme.scheme\n * const currentColor = theme.color\n *\n * // Toggle between light and dark mode\n * theme.toggleScheme()\n *\n * // Set specific scheme\n * theme.setScheme('dark')\n *\n * // Check if dark mode is active\n * theme.isDarkMode().subscribe(isDark => {\n * console.log('Is dark mode:', isDark)\n * })\n * ```\n */\nclass ThemeService {\n private static instance: ThemeService\n\n // Observable properties for theme values\n private _theme$ = new BehaviorSubject<Partial<TSchmancyTheme>>({})\n private _themeComponent$ = new BehaviorSubject<SchmancyThemeComponent | null>(null)\n private _fullscreen$ = new BehaviorSubject<boolean>(false)\n private _bottomOffset$ = new BehaviorSubject<number>(0)\n\n // Public observables derived from context\n public readonly scheme$ = ThemeContext.$.pipe(\n map(settings => settings.scheme),\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly color$ = ThemeContext.$.pipe(\n map(settings => settings.color),\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly theme$ = this._theme$.asObservable().pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n shareReplay(1)\n )\n\n public readonly themeComponent$ = this._themeComponent$.asObservable().pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly fullscreen$ = this._fullscreen$.asObservable().pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n public readonly bottomOffset$ = this._bottomOffset$.asObservable().pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n // Getters for synchronous access to current values\n get scheme(): 'dark' | 'light' | 'auto' {\n return ThemeContext.value.scheme\n }\n\n get color(): string {\n return ThemeContext.value.color\n }\n\n get theme(): Partial<TSchmancyTheme> {\n return this._theme$.getValue()\n }\n\n get themeComponent(): SchmancyThemeComponent | null {\n return this._themeComponent$.getValue()\n }\n\n get fullscreen(): boolean {\n return this._fullscreen$.getValue()\n }\n\n get bottomOffset(): number {\n return this._bottomOffset$.getValue()\n }\n\n // Computed observable for actual scheme (resolving 'auto')\n public readonly resolvedScheme$ = this.scheme$.pipe(\n switchMap(scheme => {\n if (scheme === 'auto') {\n // Listen to system preference changes\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n return new Observable<'dark' | 'light'>(subscriber => {\n const handler = (e: MediaQueryListEvent) => {\n subscriber.next(e.matches ? 'dark' : 'light')\n }\n mediaQuery.addEventListener('change', handler)\n\n // Emit initial value\n subscriber.next(mediaQuery.matches ? 'dark' : 'light')\n\n // Cleanup\n return () => mediaQuery.removeEventListener('change', handler)\n })\n }\n return of(scheme as 'dark' | 'light')\n }),\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n constructor() {\n this.discoverTheme()\n }\n\n /**\n * Discover the nearest theme component in the DOM.\n * This method can be called to refresh the theme discovery process.\n *\n * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null\n *\n * @example\n * ```typescript\n * theme.discoverTheme().subscribe(component => {\n * if (component) {\n * console.log('Theme component found:', component)\n * } else {\n * console.log('No theme component found')\n * }\n * })\n * ```\n */\n public discoverTheme(): Observable<SchmancyThemeComponent | null> {\n // Dispatch discovery event and wait for response\n return fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n takeUntil(timer(100)), // Wait up to 100ms for response\n map(e => e.detail.theme as SchmancyThemeComponent),\n defaultIfEmpty(null),\n tap(themeComponent => {\n if (themeComponent) {\n this.registerThemeComponent(themeComponent)\n }\n })\n ).pipe(\n tap(() => {\n // Trigger theme discovery\n window.dispatchEvent(\n new CustomEvent(ThemeWhereAreYou, {\n bubbles: true,\n composed: true,\n })\n )\n }),\n switchMap(() =>\n fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n takeUntil(timer(100)),\n map(e => e.detail.theme as SchmancyThemeComponent),\n defaultIfEmpty(null),\n tap(themeComponent => {\n if (themeComponent) {\n this.registerThemeComponent(themeComponent)\n }\n })\n )\n )\n )\n }\n\n /**\n * Register a theme component and subscribe to its changes.\n * This is typically called internally by theme components when they mount or update.\n *\n * @param {SchmancyThemeComponent} component - The theme component to register\n *\n * @internal\n */\n public registerThemeComponent(component: SchmancyThemeComponent): void {\n this._themeComponent$.next(component)\n\n // Update values from the component\n ThemeContext.set({ scheme: component.scheme, color: component.color })\n this._theme$.next(component.theme)\n }\n\n /**\n * Update theme values. Usually called internally by theme components.\n *\n * @param {Object} values - Theme values to update\n * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set\n * @param {string} [values.color] - Primary color in hex format\n * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object\n *\n * @internal\n */\n public updateTheme(values: {\n scheme?: 'dark' | 'light' | 'auto'\n color?: string\n theme?: Partial<TSchmancyTheme>\n }): void {\n const updates: Partial<ThemeSettings> = {}\n if (values.scheme !== undefined) {\n updates.scheme = values.scheme\n }\n if (values.color !== undefined) {\n updates.color = values.color\n }\n if (Object.keys(updates).length > 0) {\n ThemeContext.set(updates)\n }\n if (values.theme !== undefined) {\n this._theme$.next(values.theme)\n }\n }\n\n /**\n * Set the color scheme for the application.\n *\n * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set\n *\n * @example\n * ```typescript\n * // Set to dark mode\n * theme.setScheme('dark')\n *\n * // Set to auto (follows system preference)\n * theme.setScheme('auto')\n * ```\n */\n public setScheme(scheme: 'dark' | 'light' | 'auto'): void {\n const component = this.themeComponent\n if (component) {\n component.scheme = scheme\n ThemeContext.set({ scheme })\n } else {\n console.warn('No theme component found. Scheme change may not persist.')\n ThemeContext.set({ scheme })\n }\n }\n\n /**\n * Set the primary color for the theme.\n *\n * @param {string} color - Primary color in hex format (e.g., '#6200ee')\n *\n * @example\n * ```typescript\n * // Set primary color to purple\n * theme.setColor('#6200ee')\n *\n * // Set primary color to blue\n * theme.setColor('#2196f3')\n * ```\n */\n public setColor(color: string): void {\n const component = this.themeComponent\n if (component) {\n component.color = color\n ThemeContext.set({ color })\n } else {\n console.warn('No theme component found. Color change may not persist.')\n ThemeContext.set({ color })\n }\n }\n\n /**\n * Check if dark mode is currently active.\n * This resolves 'auto' scheme to the actual value based on system preference.\n *\n * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise\n *\n * @example\n * ```typescript\n * theme.isDarkMode().subscribe(isDark => {\n * if (isDark) {\n * console.log('Dark mode is active')\n * } else {\n * console.log('Light mode is active')\n * }\n * })\n * ```\n */\n public isDarkMode(): Observable<boolean> {\n return this.resolvedScheme$.pipe(\n map(scheme => scheme === 'dark')\n )\n }\n\n /**\n * Toggle between light and dark mode.\n * If currently in 'auto' mode, defaults to 'light'.\n *\n * @example\n * ```typescript\n * // Toggle theme on button click\n * button.addEventListener('click', () => {\n * theme.toggleScheme()\n * })\n * ```\n */\n public toggleScheme(): void {\n const currentScheme = this.scheme\n const newScheme = currentScheme === 'dark' ? 'light' :\n currentScheme === 'light' ? 'dark' :\n 'light' // If 'auto', default to 'light'\n this.setScheme(newScheme)\n }\n\n /**\n * Get the current value of a CSS variable from the theme.\n *\n * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)\n * @returns {string} The CSS variable value or empty string if not found\n *\n * @example\n * ```typescript\n * // Get primary color variable\n * const primaryColor = theme.getCSSVariable('color-primary')\n *\n * // Get surface color\n * const surfaceColor = theme.getCSSVariable('color-surface')\n * ```\n */\n public getCSSVariable(variableName: string): string {\n const component = this.themeComponent\n if (component) {\n const host = component.root ? document.body : (component.shadowRoot?.host as HTMLElement)\n if (host) {\n return getComputedStyle(host).getPropertyValue(`--schmancy-${variableName}`).trim()\n }\n }\n return ''\n }\n\n /**\n * Subscribe to changes of a specific CSS variable.\n *\n * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)\n * @returns {Observable<string>} Observable that emits the CSS variable value when it changes\n *\n * @example\n * ```typescript\n * // Watch for primary color changes\n * theme.watchCSSVariable('color-primary').subscribe(color => {\n * console.log('Primary color changed to:', color)\n * })\n *\n * // Watch for surface color changes\n * theme.watchCSSVariable('color-surface').subscribe(color => {\n * console.log('Surface color changed to:', color)\n * })\n * ```\n */\n public watchCSSVariable(variableName: string): Observable<string> {\n return this.theme$.pipe(\n map(() => this.getCSSVariable(variableName)),\n distinctUntilChanged()\n )\n }\n\n /**\n * Set the fullscreen state for the application.\n * This emits a custom event that navigation components can listen to.\n *\n * @param {boolean} value - Whether fullscreen mode is active\n *\n * @example\n * ```typescript\n * // Enter fullscreen mode\n * theme.setFullscreen(true)\n *\n * // Exit fullscreen mode\n * theme.setFullscreen(false)\n * ```\n */\n public setFullscreen(value: boolean): void {\n this._fullscreen$.next(value)\n\n // Emit custom event for components to listen to\n window.dispatchEvent(\n new CustomEvent('fullscreen', {\n detail: value,\n bubbles: true,\n composed: true\n })\n )\n }\n\n /**\n * Toggle fullscreen mode.\n *\n * @example\n * ```typescript\n * // Toggle fullscreen mode on button click\n * button.addEventListener('click', () => {\n * theme.toggleFullscreen()\n * })\n * ```\n */\n public toggleFullscreen(): void {\n this.setFullscreen(!this.fullscreen)\n }\n\n /**\n * Set the bottom offset for viewport calculations.\n * Used by navigation bars to inform fullHeight directive of reserved space.\n *\n * @param {number} value - Bottom offset in pixels\n *\n * @example\n * ```typescript\n * // Set bottom offset when nav bar is visible\n * theme.setBottomOffset(80)\n *\n * // Clear bottom offset when nav bar is hidden\n * theme.setBottomOffset(0)\n * ```\n */\n public setBottomOffset(value: number): void {\n this._bottomOffset$.next(value)\n }\n\n /**\n * Convenience method to update theme state including fullscreen.\n * Can be called with next() like syntax for familiarity.\n *\n * @param {Object} values - Theme values to update\n * @param {boolean} [values.fullscreen] - Fullscreen state\n * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme\n * @param {string} [values.color] - Primary color\n *\n * @example\n * ```typescript\n * // Set fullscreen mode\n * theme.next({ fullscreen: true })\n *\n * // Update multiple values\n * theme.next({\n * fullscreen: true,\n * scheme: 'dark'\n * })\n * ```\n */\n public next(values: {\n fullscreen?: boolean\n scheme?: 'dark' | 'light' | 'auto'\n color?: string\n }): void {\n if (values.fullscreen !== undefined) {\n this.setFullscreen(values.fullscreen)\n }\n if (values.scheme !== undefined) {\n this.setScheme(values.scheme)\n }\n if (values.color !== undefined) {\n this.setColor(values.color)\n }\n }\n\n /**\n * Get the singleton instance of ThemeService.\n *\n * @returns {ThemeService} The singleton ThemeService instance\n *\n * @internal\n */\n static getInstance(): ThemeService {\n if (!ThemeService.instance) {\n ThemeService.instance = new ThemeService()\n }\n return ThemeService.instance\n }\n}\n\n// Export singleton instance\nexport const theme = ThemeService.getInstance()\nexport const schmancyTheme = theme // Alias for convenience\nexport default theme"],"mappings":";;;AAyBA,IAAM,IAAe,EACnB;CAAE,QAAQ;CAAQ,OAAO;CAAA,EACzB,SACA,0BAAA,EAyeW,IAvcb,MAAM,EAAA;CA2CJ,IAAA,SAAI;AACF,SAAO,EAAa,MAAM;;CAG5B,IAAA,QAAI;AACF,SAAO,EAAa,MAAM;;CAG5B,IAAA,QAAI;AACF,SAAO,KAAK,QAAQ,UAAA;;CAGtB,IAAA,iBAAI;AACF,SAAO,KAAK,iBAAiB,UAAA;;CAG/B,IAAA,aAAI;AACF,SAAO,KAAK,aAAa,UAAA;;CAG3B,IAAA,eAAI;AACF,SAAO,KAAK,eAAe,UAAA;;CA4B7B,cAAA;AAAA,OAAA,UAxFkB,IAAI,EAAyC,EAAA,CAAA,EAAA,KAAA,mBACpC,IAAI,EAA+C,KAAA,EAAA,KAAA,eACvD,IAAI,EAAA,CAAyB,EAAA,EAAA,KAAA,iBAC3B,IAAI,EAAwB,EAAA,EAAA,KAAA,UAG3B,EAAa,EAAE,KACvC,GAAI,MAAY,EAAS,OAAA,EACzB,GAAA,EACA,EAAY,EAAA,CAAA,EAAA,KAAA,SAGW,EAAa,EAAE,KACtC,GAAI,MAAY,EAAS,MAAA,EACzB,GAAA,EACA,EAAY,EAAA,CAAA,EAAA,KAAA,SAGW,KAAK,QAAQ,cAAA,CAAe,KACnD,GAAsB,GAAG,MAAM,KAAK,UAAU,EAAA,KAAO,KAAK,UAAU,EAAA,CAAA,EACpE,EAAY,EAAA,CAAA,EAAA,KAAA,kBAGoB,KAAK,iBAAiB,cAAA,CAAe,KACrE,GAAA,EACA,EAAY,EAAA,CAAA,EAAA,KAAA,cAGgB,KAAK,aAAa,cAAA,CAAe,KAC7D,GAAA,EACA,EAAY,EAAA,CAAA,EAAA,KAAA,gBAGkB,KAAK,eAAe,cAAA,CAAe,KACjE,GAAA,EACA,EAAY,EAAA,CAAA,EAAA,KAAA,kBA6BoB,KAAK,QAAQ,KAC7C,GAAU,MAAA;AACR,OAAI,MAAW,QAAQ;IAErB,IAAM,IAAa,OAAO,WAAW,+BAAA;AACrC,WAAO,IAAI,GAA6B,MAAA;KACtC,IAAM,KAAW,MAAA;AACf,QAAW,KAAK,EAAE,UAAU,SAAS,QAAA;;AAQvC,YANA,EAAW,iBAAiB,UAAU,EAAA,EAGtC,EAAW,KAAK,EAAW,UAAU,SAAS,QAAA,QAGjC,EAAW,oBAAoB,UAAU,EAAA;MAAA;;AAG1D,UAAO,EAAG,EAAA;IAAA,EAEZ,GAAA,EACA,EAAY,EAAA,CAAA,EAIZ,KAAK,eAAA;;CAoBP,gBAAA;AAEE,SAAO,EAA6B,QAAQ,EAAA,CAAc,KACxD,EAAU,EAAM,IAAA,CAAA,EAChB,GAAI,MAAK,EAAE,OAAO,MAAA,EAClB,EAAe,KAAA,EACf,GAAI,MAAA;AACE,QACF,KAAK,uBAAuB,EAAA;IAAA,CAAA,CAGhC,KACA,QAAA;AAEE,UAAO,cACL,IAAI,YAAY,GAAkB;IAChC,SAAA,CAAS;IACT,UAAA,CAAU;IAAA,CAAA,CAAA;IAAA,EAIhB,QACE,EAA6B,QAAQ,EAAA,CAAc,KACjD,EAAU,EAAM,IAAA,CAAA,EAChB,GAAI,MAAK,EAAE,OAAO,MAAA,EAClB,EAAe,KAAA,EACf,GAAI,MAAA;AACE,QACF,KAAK,uBAAuB,EAAA;IAAA,CAAA,CAAA,CAAA;;CAgBxC,uBAA8B,GAAA;AAC5B,OAAK,iBAAiB,KAAK,EAAA,EAG3B,EAAa,IAAI;GAAE,QAAQ,EAAU;GAAQ,OAAO,EAAU;GAAA,CAAA,EAC9D,KAAK,QAAQ,KAAK,EAAU,MAAA;;CAa9B,YAAmB,GAAA;EAKjB,IAAM,IAAkC,EAAA;AAAA,EACpC,EAAO,WAD6B,KAClB,MACpB,EAAQ,SAAS,EAAO,SAEtB,EAAO,UAFe,KAEL,MACnB,EAAQ,QAAQ,EAAO,QAErB,OAAO,KAAK,EAAA,CAAS,SAAS,KAChC,EAAa,IAAI,EAAA,EAEf,EAAO,UAFQ,KAEE,KACnB,KAAK,QAAQ,KAAK,EAAO,MAAA;;CAkB7B,UAAiB,GAAA;EACf,IAAM,IAAY,KAAK;AACnB,QACF,EAAU,SAAS,IAInB,EAAa,IAAI,EAAE,QAAA,GAAA,CAAA;;CAkBvB,SAAgB,GAAA;EACd,IAAM,IAAY,KAAK;AACnB,QACF,EAAU,QAAQ,IAIlB,EAAa,IAAI,EAAE,OAAA,GAAA,CAAA;;CAqBvB,aAAA;AACE,SAAO,KAAK,gBAAgB,KAC1B,GAAI,MAAU,MAAW,OAAX,CAAA;;CAgBlB,eAAA;EACE,IAAM,IAAgB,KAAK,QACrB,IAAY,MAAkB,SAAS,UAC5B,MAAkB,UAAU,SAC5B;AACjB,OAAK,UAAU,EAAA;;CAkBjB,eAAsB,GAAA;EACpB,IAAM,IAAY,KAAK;AACvB,MAAI,GAAW;GACb,IAAM,IAAO,EAAU,OAAO,SAAS,OAAQ,EAAU,YAAY;AACrE,OAAI,EACF,QAAO,iBAAiB,EAAA,CAAM,iBAAiB,cAAc,IAAA,CAAgB,MAAA;;AAGjF,SAAO;;CAsBT,iBAAwB,GAAA;AACtB,SAAO,KAAK,OAAO,KACjB,QAAU,KAAK,eAAe,EAAA,CAAA,EAC9B,GAAA,CAAA;;CAmBJ,cAAqB,GAAA;AACnB,OAAK,aAAa,KAAK,EAAA,EAGvB,OAAO,cACL,IAAI,YAAY,cAAc;GAC5B,QAAQ;GACR,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAgBhB,mBAAA;AACE,OAAK,cAAA,CAAe,KAAK,WAAA;;CAkB3B,gBAAuB,GAAA;AACrB,OAAK,eAAe,KAAK,EAAA;;CAwB3B,KAAY,GAAA;AAAA,EAKN,EAAO,eALD,KAKgB,KACxB,KAAK,cAAc,EAAO,WAAA,EAExB,EAAO,WAFiB,KAEN,KACpB,KAAK,UAAU,EAAO,OAAA,EAEpB,EAAO,UAFa,KAEH,KACnB,KAAK,SAAS,EAAO,MAAA;;CAWzB,OAAA,cAAO;AAIL,SAHK,AACH,EAAa,aAAW,IAAI,GAAA,EAEvB,EAAa;;EAKU,aAAA,EACrB,IAAgB;AAAA,SAAA,KAAA,GAAA,KAAA"}
|
package/dist/tooltip.cjs
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);
|
|
2
|
-
:host {
|
|
3
|
-
display: inline-block;
|
|
4
|
-
position: relative;
|
|
5
|
-
}
|
|
6
|
-
`){constructor(...e){super(...e),this.text=``,this.position=`top`,this.delay=50,this.disabled=!1,this.visible=!1,this.triggerElement=null,this.tooltipElement=null}connectedCallback(){super.connectedCallback(),this.tooltipElement||this.createTooltipElement()}firstUpdated(){this.updateComplete.then(()=>{let e=(this.shadowRoot?.querySelector(`slot`))?.assignedElements()||[];e.length>0&&(this.triggerElement=e[0],this.setupEvents())})}createTooltipElement(){this.tooltipElement=document.createElement(`div`),this.tooltipElement.className=`schmancy-tooltip`,Object.assign(this.tooltipElement.style,{position:`absolute`,zIndex:`10000`,backgroundColor:`var(--schmancy-sys-color-surface-highest, #333)`,color:`var(--schmancy-sys-color-surface-on, white)`,padding:`8px 12px`,borderRadius:`4px`,fontSize:`14px`,fontWeight:`normal`,maxWidth:`300px`,pointerEvents:`none`,opacity:`0`,transition:`opacity 150ms ease`,boxShadow:`var(--schmancy-sys-elevation-2)`,textAlign:`center`}),this.tooltipElement.setAttribute(`role`,`tooltip`),document.body.appendChild(this.tooltipElement)}setupEvents(){if(!this.triggerElement||this.disabled)return;let e=`tooltip-${Math.random().toString(36).slice(2,9)}`;this.tooltipElement&&(this.tooltipElement.id=e,this.triggerElement.setAttribute(`aria-describedby`,e));let n=(0,t.fromEvent)(this.triggerElement,`mouseenter`),r=(0,t.fromEvent)(this.triggerElement,`focus`),i=(0,t.fromEvent)(this.triggerElement,`mouseleave`),a=(0,t.fromEvent)(this.triggerElement,`blur`);(0,t.fromEvent)(document,`keydown`).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(e=>{e.key===`Escape`&&this.visible&&this.hideTooltip()}),(0,t.merge)(n,r).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(()=>{this.showTooltip()}),(0,t.merge)(i,a).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(()=>{this.hideTooltip()})}disconnectedCallback(){this.tooltipElement&&document.body.contains(this.tooltipElement)&&document.body.removeChild(this.tooltipElement),this.cleanup?.(),clearTimeout(this.showTimeoutId),super.disconnectedCallback()}showTooltip(){!this.disabled&&this.tooltipElement&&this.triggerElement&&(clearTimeout(this.showTimeoutId),this.showTimeoutId=window.setTimeout(()=>{this.tooltipElement&&(this.tooltipElement.textContent=this.text,this.visible=!0,this.tooltipElement.style.opacity=`1`,this.initializePositioning())},this.delay))}hideTooltip(){clearTimeout(this.showTimeoutId),this.tooltipElement&&(this.visible=!1,this.tooltipElement.style.opacity=`0`),this.cleanup&&=(this.cleanup(),void 0)}initializePositioning(){this.triggerElement&&this.tooltipElement&&(this.cleanup&&this.cleanup(),this.cleanup=(0,a.autoUpdate)(this.triggerElement,this.tooltipElement,()=>{(0,a.computePosition)(this.triggerElement,this.tooltipElement,{placement:this.position,middleware:[(0,a.offset)(8),(0,a.flip)({padding:5}),(0,a.shift)({padding:5})]}).then(({x:e,y:t})=>{this.tooltipElement&&Object.assign(this.tooltipElement.style,{left:`${e}px`,top:`${t}px`})})}))}render(){return r.html`<slot></slot>`}};e.i([(0,n.property)({type:String})],l.prototype,`text`,void 0),e.i([(0,n.property)({type:String})],l.prototype,`position`,void 0),e.i([(0,n.property)({type:Number})],l.prototype,`delay`,void 0),e.i([(0,n.property)({type:Boolean})],l.prototype,`disabled`,void 0),e.i([(0,n.state)()],l.prototype,`visible`,void 0),l=e.i([(0,n.customElement)(`schmancy-tooltip`)],l),Object.defineProperty(exports,`SchmancyTooltip`,{enumerable:!0,get:function(){return l}}),exports.tooltip=c;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);let e=require(`rxjs`),t=require(`lit/directive.js`),n=require(`@floating-ui/dom`);var r=new WeakMap,i=class extends t.Directive{constructor(e){if(super(e),e.type!==t.PartType.ELEMENT)throw Error(`The tooltip directive can only be used on elements`)}render(e,t={}){return{text:e,options:t}}update(t,[i,a={}]){let o=t.element,s=a?.position||`top`,c=a?.delay||300,l=!1!==a?.showArrow,u=r.get(o);if(u)u.tooltipElement.textContent=i,u.arrowElement&&(u.arrowElement.style.visibility=l?`visible`:`hidden`);else{let t=document.createElement(`div`),a;t.className=`schmancy-tooltip`,Object.assign(t.style,{position:`absolute`,zIndex:`10000`,backgroundColor:`var(--schmancy-sys-color-surface-highest, #333)`,color:`var(--schmancy-sys-color-surface-on, white)`,padding:`8px 12px`,borderRadius:`4px`,fontSize:`14px`,fontWeight:`normal`,maxWidth:`300px`,pointerEvents:`none`,opacity:`0`,transition:`opacity 150ms ease`,boxShadow:`var(--schmancy-sys-elevation-2)`,textAlign:`center`,visibility:`hidden`}),l&&(a=document.createElement(`div`),a.className=`schmancy-tooltip-arrow`,Object.assign(a.style,{position:`absolute`,width:`8px`,height:`8px`,background:`inherit`,visibility:`hidden`,transform:`rotate(45deg)`}),t.appendChild(a)),t.setAttribute(`role`,`tooltip`);let d=`tooltip-${Math.random().toString(36).slice(2,9)}`;t.id=d,o.setAttribute(`aria-describedby`,d),document.body.appendChild(t),u={tooltipElement:t,arrowElement:a},r.set(o,u);let f=()=>{u?.showTimeout&&clearTimeout(u.showTimeout),u.showTimeout=window.setTimeout(()=>{u.tooltipElement.textContent=i,l&&u.arrowElement&&!u.tooltipElement.contains(u.arrowElement)&&u.tooltipElement.appendChild(u.arrowElement),u.tooltipElement.style.visibility=`visible`,u.cleanup&&u.cleanup(),u.cleanup=(0,n.autoUpdate)(o,u.tooltipElement,()=>async function(e,t,r,i){let a=[(0,n.offset)(8),(0,n.flip)({fallbackPlacements:[`top`,`right`,`bottom`,`left`].filter(e=>e!==r),padding:5}),(0,n.shift)({padding:5})];i&&t.arrowElement&&a.push((0,n.arrow)({element:t.arrowElement}));let{x:o,y:s,placement:c,middlewareData:l}=await(0,n.computePosition)(e,t.tooltipElement,{placement:r,middleware:a,strategy:`fixed`});if(Object.assign(t.tooltipElement.style,{left:`${o}px`,top:`${s}px`,position:`fixed`}),i&&t.arrowElement&&l.arrow){let{x:e,y:n}=l.arrow,r={top:`bottom`,right:`left`,bottom:`top`,left:`right`}[c.split(`-`)[0]]||`bottom`;Object.assign(t.arrowElement.style,{left:e==null?``:`${e}px`,top:n==null?``:`${n}px`,[r]:`-4px`,visibility:`visible`})}}(o,u,s,l)),requestAnimationFrame(()=>{u.tooltipElement.style.opacity=`1`})},c)},p=()=>{u?.showTimeout&&clearTimeout(u.showTimeout),u.tooltipElement.style.opacity=`0`,setTimeout(()=>{u.tooltipElement.style.visibility=`hidden`},150),u?.cleanup&&(u.cleanup(),u.cleanup=void 0)},m=[(0,e.fromEvent)(o,`mouseenter`).subscribe(f),(0,e.fromEvent)(o,`focus`).subscribe(f),(0,e.fromEvent)(o,`mouseleave`).subscribe(p),(0,e.fromEvent)(o,`blur`).subscribe(p),(0,e.fromEvent)(document,`keydown`).subscribe(e=>{e.key===`Escape`&&u?.tooltipElement.style.opacity===`1`&&p()})];u.subscriptions=m}return{text:i,options:a}}disconnected(e){let t=e.element,n=r.get(t);n&&(n.subscriptions&&n.subscriptions.forEach(e=>e.unsubscribe()),n.showTimeout&&clearTimeout(n.showTimeout),n.cleanup&&n.cleanup(),document.body.contains(n.tooltipElement)&&document.body.removeChild(n.tooltipElement),t.hasAttribute(`aria-describedby`)&&t.removeAttribute(`aria-describedby`),r.delete(t))}},a=(0,t.directive)(i);exports.tooltip=a;
|
package/dist/tooltip.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.cjs","names":[],"sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip.cjs","names":[],"sources":["../src/tooltip/tooltip.directive.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n"],"mappings":"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"}
|