@mhmo91/schmancy 0.8.6 → 0.9.3
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/README.md +54 -1
- package/ai/INDEX.md +321 -0
- package/ai/animation.md +64 -0
- package/ai/area.md +170 -237
- package/ai/audio.md +50 -222
- package/ai/autocomplete.md +44 -162
- package/ai/avatar.md +47 -178
- package/ai/badge.md +41 -108
- package/ai/boat.md +35 -41
- package/ai/busy.md +25 -184
- package/ai/button.md +52 -150
- package/ai/card.md +42 -215
- package/ai/charts.md +93 -0
- package/ai/checkbox.md +32 -135
- package/ai/chips.md +73 -383
- package/ai/code-highlight.md +33 -226
- package/ai/connectivity.md +36 -0
- package/ai/content-drawer.md +65 -232
- package/ai/date-range-inline.md +40 -258
- package/ai/date-range.md +43 -198
- package/ai/delay.md +31 -139
- package/ai/details.md +48 -453
- package/ai/dialog.md +55 -164
- package/ai/directives.md +258 -405
- package/ai/discovery.md +67 -0
- package/ai/divider.md +15 -137
- package/ai/dropdown.md +44 -235
- package/ai/expand.md +63 -0
- package/ai/extra.md +59 -0
- package/ai/float.md +14 -0
- package/ai/form.md +41 -137
- package/ai/icons.md +31 -235
- package/ai/iframe.md +44 -0
- package/ai/input.md +50 -210
- package/ai/json.md +33 -0
- package/ai/layout.md +45 -169
- package/ai/lightbox.md +25 -370
- package/ai/list.md +51 -130
- package/ai/mailbox.md +80 -508
- package/ai/map.md +47 -226
- package/ai/menu.md +25 -134
- package/ai/mixins.md +201 -0
- package/ai/nav-drawer.md +30 -184
- package/ai/navigation-bar.md +27 -184
- package/ai/navigation-rail.md +62 -630
- package/ai/notification.md +49 -183
- package/ai/option.md +30 -160
- package/ai/page.md +42 -0
- package/ai/progress.md +26 -65
- package/ai/qr-scanner.md +51 -0
- package/ai/radio-group.md +45 -189
- package/ai/range.md +47 -0
- package/ai/rxjs-utils.md +60 -0
- package/ai/select.md +49 -209
- package/ai/sheet.md +74 -506
- package/ai/slider.md +30 -214
- package/ai/steps.md +30 -392
- package/ai/store.md +173 -251
- package/ai/surface.md +58 -245
- package/ai/table.md +56 -330
- package/ai/tabs.md +31 -176
- package/ai/teleport.md +35 -177
- package/ai/textarea.md +48 -232
- package/ai/theme-button.md +16 -163
- package/ai/theme.md +40 -1089
- package/ai/tooltip.md +35 -146
- package/ai/tree.md +45 -271
- package/ai/typewriter.md +28 -317
- package/ai/typography.md +43 -296
- package/ai/utils.md +95 -0
- package/ai/window.md +67 -0
- package/custom-elements.json +10955 -0
- package/dist/ai/INDEX.md +321 -0
- package/dist/ai/animation.md +64 -0
- package/dist/ai/area.md +170 -237
- package/dist/ai/audio.md +50 -222
- package/dist/ai/autocomplete.md +44 -162
- package/dist/ai/avatar.md +47 -178
- package/dist/ai/badge.md +41 -108
- package/dist/ai/boat.md +35 -41
- package/dist/ai/busy.md +25 -184
- package/dist/ai/button.md +52 -150
- package/dist/ai/card.md +42 -215
- package/dist/ai/charts.md +93 -0
- package/dist/ai/checkbox.md +32 -135
- package/dist/ai/chips.md +73 -383
- package/dist/ai/code-highlight.md +33 -226
- package/dist/ai/connectivity.md +36 -0
- package/dist/ai/content-drawer.md +65 -232
- package/dist/ai/date-range-inline.md +40 -258
- package/dist/ai/date-range.md +43 -198
- package/dist/ai/delay.md +31 -139
- package/dist/ai/details.md +48 -453
- package/dist/ai/dialog.md +55 -164
- package/dist/ai/directives.md +258 -405
- package/dist/ai/discovery.md +67 -0
- package/dist/ai/divider.md +15 -137
- package/dist/ai/dropdown.md +44 -235
- package/dist/ai/expand.md +63 -0
- package/dist/ai/extra.md +59 -0
- package/dist/ai/float.md +14 -0
- package/dist/ai/form.md +41 -137
- package/dist/ai/icons.md +31 -235
- package/dist/ai/iframe.md +44 -0
- package/dist/ai/input.md +50 -210
- package/dist/ai/json.md +33 -0
- package/dist/ai/layout.md +45 -169
- package/dist/ai/lightbox.md +25 -370
- package/dist/ai/list.md +51 -130
- package/dist/ai/mailbox.md +80 -508
- package/dist/ai/map.md +47 -226
- package/dist/ai/menu.md +25 -134
- package/dist/ai/mixins.md +201 -0
- package/dist/ai/nav-drawer.md +30 -184
- package/dist/ai/navigation-bar.md +27 -184
- package/dist/ai/navigation-rail.md +62 -630
- package/dist/ai/notification.md +49 -183
- package/dist/ai/option.md +30 -160
- package/dist/ai/page.md +42 -0
- package/dist/ai/progress.md +26 -65
- package/dist/ai/qr-scanner.md +51 -0
- package/dist/ai/radio-group.md +45 -189
- package/dist/ai/range.md +47 -0
- package/dist/ai/rxjs-utils.md +60 -0
- package/dist/ai/select.md +49 -209
- package/dist/ai/sheet.md +74 -506
- package/dist/ai/slider.md +30 -214
- package/dist/ai/steps.md +30 -392
- package/dist/ai/store.md +173 -251
- package/dist/ai/surface.md +58 -245
- package/dist/ai/table.md +56 -330
- package/dist/ai/tabs.md +31 -176
- package/dist/ai/teleport.md +35 -177
- package/dist/ai/textarea.md +48 -232
- package/dist/ai/theme-button.md +16 -163
- package/dist/ai/theme.md +40 -1089
- package/dist/ai/tooltip.md +35 -146
- package/dist/ai/tree.md +45 -271
- package/dist/ai/typewriter.md +28 -317
- package/dist/ai/typography.md +43 -296
- package/dist/ai/utils.md +95 -0
- package/dist/ai/window.md +67 -0
- package/dist/animation-BK-8BwY8.js +173 -0
- package/dist/animation-BK-8BwY8.js.map +1 -0
- package/dist/animation-CO_Csq84.cjs +16 -0
- package/dist/animation-CO_Csq84.cjs.map +1 -0
- package/dist/area-CC8fUnra.js +590 -0
- package/dist/area-CC8fUnra.js.map +1 -0
- package/dist/area-wnWUAHEn.cjs +12 -0
- package/dist/area-wnWUAHEn.cjs.map +1 -0
- package/dist/area.cjs +1 -2
- package/dist/area.js +2 -29
- package/dist/audio-DtYYgzYD.cjs +1 -0
- package/dist/audio-DtYYgzYD.cjs.map +1 -0
- package/dist/audio-kz8UgPTO.js +335 -0
- package/dist/audio-kz8UgPTO.js.map +1 -0
- package/dist/audio.cjs +1 -2
- package/dist/audio.js +3 -9
- package/dist/autocomplete-B2Z3WK_7.cjs +111 -0
- package/dist/autocomplete-B2Z3WK_7.cjs.map +1 -0
- package/dist/autocomplete-CJ7YgtKN.js +378 -0
- package/dist/autocomplete-CJ7YgtKN.js.map +1 -0
- package/dist/autocomplete.cjs +1 -2
- package/dist/autocomplete.js +1 -2
- package/dist/badge.cjs +1 -2
- package/dist/badge.js +2 -6
- package/dist/boat-B57_4TzJ.cjs +80 -0
- package/dist/boat-B57_4TzJ.cjs.map +1 -0
- package/dist/boat-C9eU6NO-.js +347 -0
- package/dist/boat-C9eU6NO-.js.map +1 -0
- package/dist/boat.cjs +1 -2
- package/dist/boat.js +2 -5
- package/dist/busy--6oimtop.cjs +134 -0
- package/dist/busy--6oimtop.cjs.map +1 -0
- package/dist/busy-CGZXy0h-.js +167 -0
- package/dist/busy-CGZXy0h-.js.map +1 -0
- package/dist/busy.cjs +1 -2
- package/dist/busy.js +1 -2
- package/dist/button.cjs +113 -2
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +398 -5
- package/dist/button.js.map +1 -1
- package/dist/card-BGJ0Hb1O.cjs +177 -0
- package/dist/card-BGJ0Hb1O.cjs.map +1 -0
- package/dist/card-C-ee-l5O.js +284 -0
- package/dist/card-C-ee-l5O.js.map +1 -0
- package/dist/card.cjs +1 -2
- package/dist/card.js +1 -2
- package/dist/charts.cjs +112 -2
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.js +368 -8
- package/dist/charts.js.map +1 -1
- package/dist/checkbox-DuYaKoDZ.cjs +39 -0
- package/dist/checkbox-DuYaKoDZ.cjs.map +1 -0
- package/dist/checkbox-FRcorDrD.js +610 -0
- package/dist/checkbox-FRcorDrD.js.map +1 -0
- package/dist/checkbox.cjs +1 -2
- package/dist/checkbox.js +2 -5
- package/dist/chips-BpA0A-qr.cjs +253 -0
- package/dist/chips-BpA0A-qr.cjs.map +1 -0
- package/dist/chips-CyzNbKJD.js +645 -0
- package/dist/chips-CyzNbKJD.js.map +1 -0
- package/dist/chips.cjs +1 -2
- package/dist/chips.js +3 -10
- package/dist/chunk-BCfY8kxB.cjs +1 -0
- package/dist/chunk-C_1VqBVD.js +11 -0
- package/dist/code-highlight-C7O9ltXm.js +290 -0
- package/dist/code-highlight-C7O9ltXm.js.map +1 -0
- package/dist/code-highlight-DsBdSQBG.cjs +190 -0
- package/dist/code-highlight-DsBdSQBG.cjs.map +1 -0
- package/dist/code-highlight.cjs +1 -2
- package/dist/code-highlight.js +2 -7
- package/dist/components-CkMvOiTR.js +730 -0
- package/dist/components-CkMvOiTR.js.map +1 -0
- package/dist/components-dDI3xeIf.cjs +73 -0
- package/dist/components-dDI3xeIf.cjs.map +1 -0
- package/dist/components.cjs +1 -2
- package/dist/components.js +2 -5
- package/dist/connectivity.cjs +59 -0
- package/dist/connectivity.cjs.map +1 -0
- package/dist/connectivity.js +86 -0
- package/dist/connectivity.js.map +1 -0
- package/dist/content-drawer.cjs +1 -2
- package/dist/content-drawer.js +2 -13
- package/dist/cursor-glow-Ah7VXSj7.js +46 -0
- package/dist/cursor-glow-Ah7VXSj7.js.map +1 -0
- package/dist/cursor-glow-DtSy_PJd.cjs +1 -0
- package/dist/cursor-glow-DtSy_PJd.cjs.map +1 -0
- package/dist/date-range-70zhLUKE.cjs +131 -0
- package/dist/date-range-70zhLUKE.cjs.map +1 -0
- package/dist/date-range-BrN_Bs6_.js +946 -0
- package/dist/date-range-BrN_Bs6_.js.map +1 -0
- package/dist/date-range-inline-CPzD-tIv.cjs +43 -0
- package/dist/date-range-inline-CPzD-tIv.cjs.map +1 -0
- package/dist/date-range-inline-Cp294DxR.js +267 -0
- package/dist/date-range-inline-Cp294DxR.js.map +1 -0
- package/dist/date-range-inline.cjs +1 -2
- package/dist/date-range-inline.js +2 -5
- package/dist/date-range.cjs +1 -2
- package/dist/date-range.js +2 -6
- package/dist/delay-COcAkBqB.cjs +9 -0
- package/dist/delay-COcAkBqB.cjs.map +1 -0
- package/dist/delay-IV0Swce2.js +346 -0
- package/dist/delay-IV0Swce2.js.map +1 -0
- package/dist/delay.cjs +1 -2
- package/dist/delay.js +2 -6
- package/dist/details-CuKmr3Qw.js +293 -0
- package/dist/details-CuKmr3Qw.js.map +1 -0
- package/dist/details-DgWkPqmt.cjs +168 -0
- package/dist/details-DgWkPqmt.cjs.map +1 -0
- package/dist/details.cjs +1 -2
- package/dist/details.js +2 -5
- package/dist/dialog-service-NZEvyEK-.js +193 -0
- package/dist/dialog-service-NZEvyEK-.js.map +1 -0
- package/dist/dialog-service-VnW4gkmE.cjs +1 -0
- package/dist/dialog-service-VnW4gkmE.cjs.map +1 -0
- package/dist/dialog.cjs +82 -2
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +396 -9
- package/dist/dialog.js.map +1 -1
- package/dist/directives.cjs +108 -2
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js +1362 -14
- package/dist/directives.js.map +1 -1
- package/dist/discovery.cjs +1 -2
- package/dist/discovery.cjs.map +1 -1
- package/dist/discovery.js +61 -6
- package/dist/discovery.js.map +1 -1
- package/dist/divider-BWoUbfgZ.js +87 -0
- package/dist/divider-BWoUbfgZ.js.map +1 -0
- package/dist/divider-BghtrMbn.cjs +57 -0
- package/dist/divider-BghtrMbn.cjs.map +1 -0
- package/dist/divider.cjs +1 -2
- package/dist/divider.js +1 -2
- package/dist/dropdown.cjs +57 -2
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +160 -5
- package/dist/dropdown.js.map +1 -1
- package/dist/expand-CJU9m4ga.js +336 -0
- package/dist/expand-CJU9m4ga.js.map +1 -0
- package/dist/expand-XyDE5SsO.cjs +141 -0
- package/dist/expand-XyDE5SsO.cjs.map +1 -0
- package/dist/expand.cjs +1 -0
- package/dist/expand.js +2 -0
- package/dist/extra-BxXFmW1w.js +3435 -0
- package/dist/extra-BxXFmW1w.js.map +1 -0
- package/dist/extra-CsrRKKqE.cjs +31 -0
- package/dist/extra-CsrRKKqE.cjs.map +1 -0
- package/dist/extra.cjs +1 -2
- package/dist/extra.js +2 -6
- package/dist/float-BD86t_NU.js +5 -0
- package/dist/float-BD86t_NU.js.map +1 -0
- package/dist/float-DBv1FINW.cjs +1 -0
- package/dist/float-DBv1FINW.cjs.map +1 -0
- package/dist/float.cjs +1 -0
- package/dist/float.js +2 -0
- package/dist/flow-Bbwn6dRN.cjs +1 -0
- package/dist/flow-Bbwn6dRN.cjs.map +1 -0
- package/dist/flow-CUj0fDT_.js +386 -0
- package/dist/flow-CUj0fDT_.js.map +1 -0
- package/dist/form-Cp5-I_ZV.js +270 -0
- package/dist/form-Cp5-I_ZV.js.map +1 -0
- package/dist/form-D0bIeDWT.cjs +1 -0
- package/dist/form-D0bIeDWT.cjs.map +1 -0
- package/dist/form.cjs +1 -2
- package/dist/form.js +1 -2
- package/dist/hashContent-DYM21p6t.js +6 -0
- package/dist/hashContent-DYM21p6t.js.map +1 -0
- package/dist/hashContent-DaeGmY-p.cjs +1 -0
- package/dist/hashContent-DaeGmY-p.cjs.map +1 -0
- package/dist/icons-BpU0_l92.js +161 -0
- package/dist/icons-BpU0_l92.js.map +1 -0
- package/dist/icons-D8w_20mO.cjs +52 -0
- package/dist/icons-D8w_20mO.cjs.map +1 -0
- package/dist/icons.cjs +1 -2
- package/dist/icons.js +1 -2
- package/dist/iframe-BjwxA2Pg.cjs +24 -0
- package/dist/iframe-BjwxA2Pg.cjs.map +1 -0
- package/dist/iframe-tY1GY5g1.js +44 -0
- package/dist/iframe-tY1GY5g1.js.map +1 -0
- package/dist/iframe.cjs +1 -0
- package/dist/iframe.js +2 -0
- package/dist/index.cjs +1 -2
- package/dist/index.js +69 -285
- package/dist/input-BnfTpRN9.js +364 -0
- package/dist/input-BnfTpRN9.js.map +1 -0
- package/dist/input-BwxwognS.cjs +51 -0
- package/dist/input-BwxwognS.cjs.map +1 -0
- package/dist/input-chip-CkM2aYmO.js +301 -0
- package/dist/input-chip-CkM2aYmO.js.map +1 -0
- package/dist/input-chip-MjOwX5EY.cjs +146 -0
- package/dist/input-chip-MjOwX5EY.cjs.map +1 -0
- package/dist/input.cjs +1 -2
- package/dist/input.js +2 -6
- package/dist/intersection-BPLpqYEd.js +12 -0
- package/dist/intersection-BPLpqYEd.js.map +1 -0
- package/dist/intersection-CZpaIHeT.cjs +1 -0
- package/dist/intersection-CZpaIHeT.cjs.map +1 -0
- package/dist/json.cjs +11 -2
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +40 -4
- package/dist/json.js.map +1 -1
- package/dist/layout-4C-6_cre.cjs +1 -0
- package/dist/layout-4C-6_cre.cjs.map +1 -0
- package/dist/layout-BV0EeyUS.cjs +17 -0
- package/dist/layout-BV0EeyUS.cjs.map +1 -0
- package/dist/layout-CJSlZlFL.js +267 -0
- package/dist/layout-CJSlZlFL.js.map +1 -0
- package/dist/layout-yxSlLybo.js +94 -0
- package/dist/layout-yxSlLybo.js.map +1 -0
- package/dist/layout.cjs +1 -2
- package/dist/layout.js +3 -9
- package/dist/lightbox-CpNMZHZW.cjs +202 -0
- package/dist/lightbox-CpNMZHZW.cjs.map +1 -0
- package/dist/lightbox-groqGmJH.js +678 -0
- package/dist/lightbox-groqGmJH.js.map +1 -0
- package/dist/lightbox.cjs +1 -2
- package/dist/lightbox.js +2 -8
- package/dist/list-CyHd0Zc2.cjs +40 -0
- package/dist/list-CyHd0Zc2.cjs.map +1 -0
- package/dist/list-DzkqT_r-.js +105 -0
- package/dist/list-DzkqT_r-.js.map +1 -0
- package/dist/list.cjs +1 -2
- package/dist/list.js +2 -7
- package/dist/litElement.mixin-BG6_-nYX.cjs +1 -0
- package/dist/litElement.mixin-BG6_-nYX.cjs.map +1 -0
- package/dist/litElement.mixin-Dm-4L8zL.js +12 -0
- package/dist/litElement.mixin-Dm-4L8zL.js.map +1 -0
- package/dist/magnetic-BZGFxAWG.js +47 -0
- package/dist/magnetic-BZGFxAWG.js.map +1 -0
- package/dist/magnetic-Dux4QwO4.cjs +1 -0
- package/dist/magnetic-Dux4QwO4.cjs.map +1 -0
- package/dist/mailbox-BcqnXYVP.js +1584 -0
- package/dist/mailbox-BcqnXYVP.js.map +1 -0
- package/dist/mailbox-C5eYTd7p.cjs +1142 -0
- package/dist/mailbox-C5eYTd7p.cjs.map +1 -0
- package/dist/mailbox.cjs +1 -2
- package/dist/mailbox.js +2 -9
- package/dist/map-BncheFt5.cjs +80 -0
- package/dist/map-BncheFt5.cjs.map +1 -0
- package/dist/map-C0o1PgLE.js +205 -0
- package/dist/map-C0o1PgLE.js.map +1 -0
- package/dist/map.cjs +1 -2
- package/dist/map.js +2 -5
- package/dist/menu-uwqlQbLd.js +51 -0
- package/dist/menu-uwqlQbLd.js.map +1 -0
- package/dist/menu-yXzwJZFf.cjs +23 -0
- package/dist/menu-yXzwJZFf.cjs.map +1 -0
- package/dist/menu.cjs +1 -2
- package/dist/menu.js +1 -2
- package/dist/mixins.cjs +1 -2
- package/dist/mixins.cjs.map +1 -1
- package/dist/mixins.js +59 -12
- package/dist/mixins.js.map +1 -1
- package/dist/nav-drawer.cjs +1 -2
- package/dist/nav-drawer.js +2 -12
- package/dist/navigation-bar.cjs +1 -2
- package/dist/navigation-bar.js +2 -6
- package/dist/navigation-rail.cjs +71 -2
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +363 -5
- package/dist/navigation-rail.js.map +1 -1
- package/dist/notification-BjwTfLAl.cjs +23 -0
- package/dist/notification-BjwTfLAl.cjs.map +1 -0
- package/dist/notification-DzYT4deA.js +304 -0
- package/dist/notification-DzYT4deA.js.map +1 -0
- package/dist/notification.cjs +1 -2
- package/dist/notification.js +2 -9
- package/dist/option-BJsD3u2D.cjs +43 -0
- package/dist/option-BJsD3u2D.cjs.map +1 -0
- package/dist/option-JFHxgiYl.js +97 -0
- package/dist/option-JFHxgiYl.js.map +1 -0
- package/dist/option.cjs +1 -2
- package/dist/option.js +1 -2
- package/dist/overlay-stack-DQey9Qph.cjs +1 -0
- package/dist/overlay-stack-DQey9Qph.cjs.map +1 -0
- package/dist/overlay-stack-DT1SdaGW.js +39 -0
- package/dist/overlay-stack-DT1SdaGW.js.map +1 -0
- package/dist/page.cjs +20 -2
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +71 -4
- package/dist/page.js.map +1 -1
- package/dist/progress-BUh5WBqx.js +128 -0
- package/dist/progress-BUh5WBqx.js.map +1 -0
- package/dist/progress-BoRmyGAa.cjs +51 -0
- package/dist/progress-BoRmyGAa.cjs.map +1 -0
- package/dist/progress.cjs +1 -2
- package/dist/progress.js +1 -2
- package/dist/provide-8MrDz_qX.js +107 -0
- package/dist/provide-8MrDz_qX.js.map +1 -0
- package/dist/provide-CDkxgjHb.cjs +1 -0
- package/dist/provide-CDkxgjHb.cjs.map +1 -0
- package/dist/qr-scanner.cjs +35 -2
- package/dist/qr-scanner.cjs.map +1 -1
- package/dist/qr-scanner.js +119 -4
- package/dist/qr-scanner.js.map +1 -1
- package/dist/radio-group-DbOWUPhi.js +105 -0
- package/dist/radio-group-DbOWUPhi.js.map +1 -0
- package/dist/radio-group-rhrvhB5X.cjs +40 -0
- package/dist/radio-group-rhrvhB5X.cjs.map +1 -0
- package/dist/radio-group.cjs +1 -2
- package/dist/radio-group.js +2 -6
- package/dist/range.cjs +62 -0
- package/dist/range.cjs.map +1 -0
- package/dist/range.js +85 -0
- package/dist/range.js.map +1 -0
- package/dist/reduced-motion-D-L12p7G.js +7 -0
- package/dist/reduced-motion-D-L12p7G.js.map +1 -0
- package/dist/reduced-motion-Ds05GPyz.cjs +1 -0
- package/dist/reduced-motion-Ds05GPyz.cjs.map +1 -0
- package/dist/rxjs-utils-BSjmI9-Q.js +32 -0
- package/dist/rxjs-utils-BSjmI9-Q.js.map +1 -0
- package/dist/rxjs-utils-DCsfzeap.cjs +1 -0
- package/dist/rxjs-utils-DCsfzeap.cjs.map +1 -0
- package/dist/rxjs-utils.cjs +1 -2
- package/dist/rxjs-utils.js +2 -14
- package/dist/scroll-BE9W9PF2.cjs +26 -0
- package/dist/scroll-BE9W9PF2.cjs.map +1 -0
- package/dist/scroll-qGks1R0k.js +112 -0
- package/dist/scroll-qGks1R0k.js.map +1 -0
- package/dist/search-C4dFHYbX.js +91 -0
- package/dist/search-C4dFHYbX.js.map +1 -0
- package/dist/search-Ds8tt7Et.cjs +1 -0
- package/dist/search-Ds8tt7Et.cjs.map +1 -0
- package/dist/select-D9sgBRjU.js +305 -0
- package/dist/select-D9sgBRjU.js.map +1 -0
- package/dist/select-DXU2kzg4.cjs +56 -0
- package/dist/select-DXU2kzg4.cjs.map +1 -0
- package/dist/select.cjs +1 -2
- package/dist/select.js +2 -5
- package/dist/sheet-CIxCCJ3H.js +168 -0
- package/dist/sheet-CIxCCJ3H.js.map +1 -0
- package/dist/sheet-CeX6BbNp.cjs +35 -0
- package/dist/sheet-CeX6BbNp.cjs.map +1 -0
- package/dist/sheet.cjs +1 -2
- package/dist/sheet.js +3 -7
- package/dist/sheet.service-CAB7weBc.js +86 -0
- package/dist/sheet.service-CAB7weBc.js.map +1 -0
- package/dist/sheet.service-DPAp7E3x.cjs +1 -0
- package/dist/sheet.service-DPAp7E3x.cjs.map +1 -0
- package/dist/slider.cjs +82 -2
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +143 -5
- package/dist/slider.js.map +1 -1
- package/dist/sound.service-Bu3EQLv2.cjs +1 -0
- package/dist/sound.service-Bu3EQLv2.cjs.map +1 -0
- package/dist/sound.service-m3BrSfuH.js +2353 -0
- package/dist/sound.service-m3BrSfuH.js.map +1 -0
- package/dist/src-CbO5kJ2O.js +1244 -0
- package/dist/src-CbO5kJ2O.js.map +1 -0
- package/dist/src-SraDxEeg.cjs +269 -0
- package/dist/src-SraDxEeg.cjs.map +1 -0
- package/dist/steps.cjs +70 -2
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +178 -7
- package/dist/steps.js.map +1 -1
- package/dist/store-CorvD3bT.cjs +1 -0
- package/dist/store-CorvD3bT.cjs.map +1 -0
- package/dist/store-DYqDLAvT.js +1654 -0
- package/dist/store-DYqDLAvT.js.map +1 -0
- package/dist/store.cjs +1 -2
- package/dist/store.js +2 -47
- package/dist/surface-DuH0pm2v.cjs +7 -0
- package/dist/surface-DuH0pm2v.cjs.map +1 -0
- package/dist/surface-eN_Jy2MJ.js +21 -0
- package/dist/surface-eN_Jy2MJ.js.map +1 -0
- package/dist/surface.cjs +1 -2
- package/dist/surface.js +2 -6
- package/dist/surface.mixin-CIXgN6iw.cjs +297 -0
- package/dist/surface.mixin-CIXgN6iw.cjs.map +1 -0
- package/dist/surface.mixin-D9jv1sKG.js +320 -0
- package/dist/surface.mixin-D9jv1sKG.js.map +1 -0
- package/dist/table-C9rRQJEB.cjs +63 -0
- package/dist/table-C9rRQJEB.cjs.map +1 -0
- package/dist/table-Dg_tUGB_.js +631 -0
- package/dist/table-Dg_tUGB_.js.map +1 -0
- package/dist/table.cjs +1 -2
- package/dist/table.js +2 -6
- package/dist/tabs-BbFC9omR.js +125 -0
- package/dist/tabs-BbFC9omR.js.map +1 -0
- package/dist/tabs-soTL-x4G.cjs +31 -0
- package/dist/tabs-soTL-x4G.cjs.map +1 -0
- package/dist/tabs.cjs +1 -2
- package/dist/tabs.js +1 -2
- package/dist/tailwind.mixin-BIVhjNvD.js +225 -0
- package/dist/tailwind.mixin-BIVhjNvD.js.map +1 -0
- package/dist/tailwind.mixin-DSuEu-y3.cjs +2 -0
- package/dist/tailwind.mixin-DSuEu-y3.cjs.map +1 -0
- package/dist/teleport.cjs +1 -2
- package/dist/teleport.js +2 -8
- package/dist/textarea-DaRUJ0ri.cjs +35 -0
- package/dist/textarea-DaRUJ0ri.cjs.map +1 -0
- package/dist/textarea-hChvHbNM.js +195 -0
- package/dist/textarea-hChvHbNM.js.map +1 -0
- package/dist/textarea.cjs +1 -2
- package/dist/textarea.js +1 -2
- package/dist/theme-B0M8Hlyo.js +4121 -0
- package/dist/theme-B0M8Hlyo.js.map +1 -0
- package/dist/theme-ZYH2MqX9.cjs +181 -0
- package/dist/theme-ZYH2MqX9.cjs.map +1 -0
- package/dist/theme-button-BtlX_Zgd.js +19 -0
- package/dist/theme-button-BtlX_Zgd.js.map +1 -0
- package/dist/theme-button-Dvqg-rE_.cjs +8 -0
- package/dist/theme-button-Dvqg-rE_.cjs.map +1 -0
- package/dist/theme-button.cjs +1 -2
- package/dist/theme-button.js +1 -2
- package/dist/theme.cjs +1 -2
- package/dist/theme.events-Cv7N4Toe.js +2 -0
- package/dist/theme.events-Cv7N4Toe.js.map +1 -0
- package/dist/theme.events-DM4H5F2d.cjs +1 -0
- package/dist/theme.events-DM4H5F2d.cjs.map +1 -0
- package/dist/theme.interface-CXloMUCw.js +276 -0
- package/dist/theme.interface-CXloMUCw.js.map +1 -0
- package/dist/theme.interface-Da23QAYb.cjs +1 -0
- package/dist/theme.interface-Da23QAYb.cjs.map +1 -0
- package/dist/theme.js +6 -21
- package/dist/theme.service-C_tjlqgy.cjs +1 -0
- package/dist/theme.service-C_tjlqgy.cjs.map +1 -0
- package/dist/theme.service-D9lEas89.js +108 -0
- package/dist/theme.service-D9lEas89.js.map +1 -0
- package/dist/tooltip.cjs +6 -2
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js +200 -5
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +26 -2
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +64 -4
- package/dist/tree.js.map +1 -1
- package/dist/tslib.es6-D7BIeDVB.cjs +1 -0
- package/dist/tslib.es6-D7BIeDVB.cjs.map +1 -0
- package/dist/tslib.es6-ErZEp3OO.js +7 -0
- package/dist/tslib.es6-ErZEp3OO.js.map +1 -0
- package/dist/types.cjs +1 -2
- package/dist/types.cjs.map +1 -1
- package/dist/types.js +4 -5
- package/dist/types.js.map +1 -1
- package/dist/typewriter-CCel8Nta.js +700 -0
- package/dist/typewriter-CCel8Nta.js.map +1 -0
- package/dist/typewriter-Cf9f2bdx.cjs +123 -0
- package/dist/typewriter-Cf9f2bdx.cjs.map +1 -0
- package/dist/typewriter.cjs +1 -2
- package/dist/typewriter.js +2 -5
- package/dist/typography.cjs +282 -2
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +353 -4
- package/dist/typography.js.map +1 -1
- package/dist/utils-BcaKtQuA.cjs +1 -0
- package/dist/utils-BcaKtQuA.cjs.map +1 -0
- package/dist/utils-CoU7M2YS.js +259 -0
- package/dist/utils-CoU7M2YS.js.map +1 -0
- package/dist/utils.cjs +1 -2
- package/dist/utils.js +6 -9
- package/dist/window-B9_14c12.cjs +59 -0
- package/dist/window-B9_14c12.cjs.map +1 -0
- package/dist/window-CbgdwOZD.js +548 -0
- package/dist/window-CbgdwOZD.js.map +1 -0
- package/dist/window.cjs +1 -0
- package/dist/window.js +2 -0
- package/mixins/baseElement.ts +118 -1
- package/mixins/discovery.service.ts +162 -1
- package/mixins/formField.mixin.ts +13 -8
- package/mixins/index.ts +2 -0
- package/mixins/surface.mixin.ts +93 -0
- package/mixins/tailwind.css +331 -14
- package/package.json +32 -28
- package/src/CLAUDE.md +428 -0
- package/src/area/.excalidraw +357 -0
- package/src/area/area.component.ts +449 -0
- package/src/area/area.service.test.ts +1007 -0
- package/src/area/area.service.ts +748 -0
- package/src/area/ecrypt.ts +7 -0
- package/src/area/index.ts +7 -0
- package/src/area/lazy.ts +83 -0
- package/src/area/readme.md +338 -0
- package/src/area/route.component.ts +79 -0
- package/src/area/router-guide.md +360 -0
- package/src/area/router.types.ts +101 -0
- package/src/area/utils.ts +354 -0
- package/src/audio/emotional-sounds.ts +940 -0
- package/src/audio/index.ts +53 -0
- package/src/audio/sound.service.ts +1079 -0
- package/src/autocomplete/README.md +485 -0
- package/src/autocomplete/autocomplete.scss +24 -0
- package/src/autocomplete/autocomplete.ts +733 -0
- package/src/autocomplete/index.ts +1 -0
- package/src/avatar.ts +164 -0
- package/src/badge/badge.ts +286 -0
- package/src/badge/index.ts +1 -0
- package/src/boat/boat.ts +664 -0
- package/src/boat/index.ts +1 -0
- package/src/busy/busy.ts +39 -0
- package/src/busy/index.ts +2 -0
- package/src/busy/spinner.ts +165 -0
- package/src/button/button.ts +382 -0
- package/src/button/icon-button.ts +287 -0
- package/src/button/index.ts +2 -0
- package/src/card/actions.ts +28 -0
- package/src/card/card.ts +319 -0
- package/src/card/content.ts +24 -0
- package/src/card/index.ts +4 -0
- package/src/card/media.ts +77 -0
- package/src/charts/area-chart.ts +495 -0
- package/src/charts/index.ts +4 -0
- package/src/charts/pills.ts +350 -0
- package/src/charts/types.ts +66 -0
- package/src/charts/utils.ts +65 -0
- package/src/checkbox/checkbox.ts +122 -0
- package/src/checkbox/index.ts +1 -0
- package/src/chips/assist-chip.ts +261 -0
- package/src/chips/chips.ts +259 -0
- package/src/chips/filter-chip.ts +255 -0
- package/src/chips/index.ts +5 -0
- package/src/chips/input-chip.ts +408 -0
- package/src/chips/suggestion-chip.ts +266 -0
- package/src/code-highlight/code-highlight.ts +344 -0
- package/src/code-highlight/code-preview.ts +123 -0
- package/src/code-highlight/index.ts +3 -0
- package/src/components/form-elements/index.ts +1 -0
- package/src/components/form-elements/payment-card-form.ts +331 -0
- package/src/components/index.ts +1 -0
- package/src/connectivity/connectivity-status.ts +153 -0
- package/src/connectivity/index.ts +1 -0
- package/src/content-drawer/context.ts +13 -0
- package/src/content-drawer/drawer.service.ts +148 -0
- package/src/content-drawer/drawer.ts +183 -0
- package/src/content-drawer/index.ts +5 -0
- package/src/content-drawer/main.ts +83 -0
- package/src/content-drawer/readme.md +709 -0
- package/src/content-drawer/sheet.ts +180 -0
- package/src/date-range/date-range-dialog.ts +230 -0
- package/src/date-range/date-range-helpers.ts +135 -0
- package/src/date-range/date-range-presets.ts +220 -0
- package/src/date-range/date-range.ts +530 -0
- package/src/date-range/date-utils.ts +58 -0
- package/src/date-range/index.ts +2 -0
- package/src/date-range-inline/date-range-inline.ts +522 -0
- package/src/date-range-inline/index.ts +2 -0
- package/src/delay/delay.ts +136 -0
- package/src/delay/index.ts +1 -0
- package/src/details/details.ts +429 -0
- package/src/details/index.ts +1 -0
- package/src/dialog/dialog-base.mixin.ts +565 -0
- package/src/dialog/dialog-events.ts +17 -0
- package/src/dialog/dialog-service.ts +482 -0
- package/src/dialog/dialog.component.ts +394 -0
- package/src/dialog/index.ts +3 -0
- package/src/directives/animate-text.ts +551 -0
- package/src/directives/color.ts +41 -0
- package/src/directives/confirm-click.ts +350 -0
- package/src/directives/cursor-glow.ts +142 -0
- package/src/directives/cycle-text.ts +496 -0
- package/src/directives/depth-of-field.ts +83 -0
- package/src/directives/drag.ts +370 -0
- package/src/directives/gravity.ts +117 -0
- package/src/directives/index.ts +19 -0
- package/src/directives/intersect.ts +204 -0
- package/src/directives/layout.ts +261 -0
- package/src/directives/liquid.ts +150 -0
- package/src/directives/living-border.ts +166 -0
- package/src/directives/long-press.ts +150 -0
- package/src/directives/magnetic.ts +133 -0
- package/src/directives/nebula.ts +773 -0
- package/src/directives/reduced-motion.ts +30 -0
- package/src/directives/reveal.ts +158 -0
- package/src/directives/ripple.ts +102 -0
- package/src/directives/typewriter.ts +349 -0
- package/src/discovery/discovery.service.ts +210 -0
- package/src/discovery/index.ts +1 -0
- package/src/divider/divider.ts +100 -0
- package/src/divider/index.ts +1 -0
- package/src/dropdown/dropdown-component.ts +264 -0
- package/src/dropdown/dropdown-content.ts +108 -0
- package/src/dropdown/index.ts +2 -0
- package/src/expand/expand-root.component.ts +278 -0
- package/src/expand/expand.component.ts +287 -0
- package/src/expand/index.ts +2 -0
- package/src/extra/countries/countries.data.ts +196 -0
- package/src/extra/countries/countries.ts +107 -0
- package/src/extra/countries/index.ts +2 -0
- package/src/extra/index.ts +2 -0
- package/src/extra/timezone/index.ts +2 -0
- package/src/extra/timezone/timezone.ts +116 -0
- package/src/extra/timezone/timezones.data.ts +2546 -0
- package/src/float/float.ts +18 -0
- package/src/float/index.ts +1 -0
- package/src/form/form-v2.ts +268 -0
- package/src/form/form.ts +194 -0
- package/src/form/index.ts +2 -0
- package/src/icons/icon.ts +293 -0
- package/src/icons/index.ts +1 -0
- package/src/icons/readme.md +37 -0
- package/src/iframe/iframe.ts +98 -0
- package/src/iframe/index.ts +1 -0
- package/src/index.ts +69 -0
- package/src/input/index.ts +8 -0
- package/src/input/input.scss +211 -0
- package/src/input/input.ts +951 -0
- package/src/json/index.ts +1 -0
- package/src/json/json.ts +55 -0
- package/src/layout/flex/flex.scss +4 -0
- package/src/layout/flex/flex.ts +74 -0
- package/src/layout/flex/index.ts +1 -0
- package/src/layout/grid/.readme +79 -0
- package/src/layout/grid/grid.scss +5 -0
- package/src/layout/grid/grid.ts +121 -0
- package/src/layout/grid/index.ts +1 -0
- package/src/layout/index.ts +5 -0
- package/src/layout/layout.ts +122 -0
- package/src/layout/scroll/index.ts +1 -0
- package/src/layout/scroll/scroll.ts +351 -0
- package/src/layout/v2/flex.ts +243 -0
- package/src/layout/v2/grid.ts +93 -0
- package/src/layout/v2/index.ts +1 -0
- package/src/lightbox/flip-directive.ts +270 -0
- package/src/lightbox/index.ts +4 -0
- package/src/lightbox/lightbox-service.ts +378 -0
- package/src/lightbox/lightbox.directive.ts +256 -0
- package/src/lightbox/lightbox.ts +417 -0
- package/src/list/context.ts +3 -0
- package/src/list/index.ts +3 -0
- package/src/list/list-item.ts +94 -0
- package/src/list/list.ts +87 -0
- package/src/list/readme.md +62 -0
- package/src/mailbox/README.md +131 -0
- package/src/mailbox/email-editor.ts +1071 -0
- package/src/mailbox/email-layout-selector.ts +58 -0
- package/src/mailbox/email-recipients.ts +594 -0
- package/src/mailbox/email-template-picker.ts +296 -0
- package/src/mailbox/email-viewer.ts +715 -0
- package/src/mailbox/index.ts +31 -0
- package/src/mailbox/mailbox.ts +363 -0
- package/src/mailbox/types.ts +181 -0
- package/src/map/index.ts +1 -0
- package/src/map/map.ts +483 -0
- package/src/menu/index.ts +2 -0
- package/src/menu/menu-item.ts +26 -0
- package/src/menu/menu.ts +83 -0
- package/src/nav-drawer/$navbar.ts +51 -0
- package/src/nav-drawer/appbar.ts +26 -0
- package/src/nav-drawer/content.ts +32 -0
- package/src/nav-drawer/context.ts +6 -0
- package/src/nav-drawer/drawer.ts +128 -0
- package/src/nav-drawer/index.ts +6 -0
- package/src/nav-drawer/navbar.ts +191 -0
- package/src/navigation-bar/index.ts +2 -0
- package/src/navigation-bar/navigation-bar-item.ts +417 -0
- package/src/navigation-bar/navigation-bar.ts +482 -0
- package/src/navigation-rail/index.ts +2 -0
- package/src/navigation-rail/navigation-rail-item.ts +443 -0
- package/src/navigation-rail/navigation-rail.ts +492 -0
- package/src/notification/index.ts +6 -0
- package/src/notification/notification-service.ts +324 -0
- package/src/notification/notification.scss +117 -0
- package/src/notification/notification.ts +263 -0
- package/src/notification/notify.ts +207 -0
- package/src/notification/outlet.ts +16 -0
- package/src/option/index.ts +1 -0
- package/src/option/option.ts +180 -0
- package/src/page/index.ts +1 -0
- package/src/page/page.ts +135 -0
- package/src/progress/index.ts +1 -0
- package/src/progress/progress.ts +143 -0
- package/src/qr-scanner/index.ts +1 -0
- package/src/qr-scanner/qr-scanner.ts +240 -0
- package/src/radio-group/index.ts +2 -0
- package/src/radio-group/radio-button.ts +81 -0
- package/src/radio-group/radio-group.scss +4 -0
- package/src/radio-group/radio-group.ts +110 -0
- package/src/radio-group/readme.md +315 -0
- package/src/range/index.ts +1 -0
- package/src/range/range.ts +102 -0
- package/src/rxjs-utils/index.ts +6 -0
- package/src/rxjs-utils/mutation-observer.ts +22 -0
- package/src/rxjs-utils/waitForElement.ts +33 -0
- package/src/rxjs-utils/waitForElementAll.ts +34 -0
- package/src/rxjs-utils/waitForElements.ts +40 -0
- package/src/rxjs-utils/waitForElementsAll.ts +42 -0
- package/src/rxjs-utils/waitUntil.ts +16 -0
- package/src/select/README.md +405 -0
- package/src/select/index.ts +2 -0
- package/src/select/select.ts +766 -0
- package/src/sheet/hook.ts +40 -0
- package/src/sheet/index.ts +2 -0
- package/src/sheet/sheet.service.ts +235 -0
- package/src/sheet/sheet.ts +236 -0
- package/src/slider/index.ts +2 -0
- package/src/slider/slide.ts +107 -0
- package/src/slider/slider.ts +164 -0
- package/src/steps/index.ts +3 -0
- package/src/steps/schmancy-step.ts +213 -0
- package/src/steps/schmancy-steps-container.ts +109 -0
- package/src/steps/steps.context.ts +23 -0
- package/src/store/context-array.ts +358 -0
- package/src/store/context-collection.ts +218 -0
- package/src/store/context-create.ts +284 -0
- package/src/store/context-object.ts +298 -0
- package/src/store/filter-directive.ts +614 -0
- package/src/store/immer-integration.ts +99 -0
- package/src/store/index.ts +10 -0
- package/src/store/selector-hook.ts +259 -0
- package/src/store/selectors.ts +289 -0
- package/src/store/storage-manager.ts +269 -0
- package/src/store/store.class.ts +239 -0
- package/src/store/types.ts +327 -0
- package/src/surface/context.ts +3 -0
- package/src/surface/index.ts +1 -0
- package/src/surface/surface.styles.ts +334 -0
- package/src/surface/surface.ts +59 -0
- package/src/table/index.ts +2 -0
- package/src/table/row.ts +60 -0
- package/src/table/table.ts +266 -0
- package/src/tabs/Readme.md +397 -0
- package/src/tabs/context.ts +5 -0
- package/src/tabs/index.ts +4 -0
- package/src/tabs/tab.ts +39 -0
- package/src/tabs/tabs-compatibility.ts +20 -0
- package/src/tabs/tabs-group.ts +184 -0
- package/src/teleport/.excalidraw +2511 -0
- package/src/teleport/index.ts +2 -0
- package/src/teleport/readme.md +91 -0
- package/src/teleport/teleport.component.ts +132 -0
- package/src/teleport/teleport.service.ts +139 -0
- package/src/teleport/watcher.ts +20 -0
- package/src/textarea/index.ts +1 -0
- package/src/textarea/textarea.scss +54 -0
- package/src/textarea/textarea.ts +432 -0
- package/src/theme/context.ts +28 -0
- package/src/theme/index.ts +17 -0
- package/src/theme/theme-audio-player.ts +470 -0
- package/src/theme/theme-controller-boat.ts +49 -0
- package/src/theme/theme-controller-example.md +152 -0
- package/src/theme/theme-controller.ts +205 -0
- package/src/theme/theme.component.ts +305 -0
- package/src/theme/theme.events.ts +59 -0
- package/src/theme/theme.format.ts +417 -0
- package/src/theme/theme.interface.ts +399 -0
- package/src/theme/theme.service.ts +520 -0
- package/src/theme/theme.style.css +619 -0
- package/src/theme-button/index.ts +1 -0
- package/src/theme-button/theme-button.ts +35 -0
- package/src/tooltip/index.ts +2 -0
- package/src/tooltip/tooltip.directive.ts +277 -0
- package/src/tooltip/tooltip.ts +216 -0
- package/src/tree/README.md +59 -0
- package/src/tree/index.ts +1 -0
- package/src/tree/tree.ts +132 -0
- package/src/types/events.ts +5 -0
- package/src/types/index.ts +3 -0
- package/src/types/mood-audio.types.ts +220 -0
- package/src/types/surface.ts +52 -0
- package/src/typewriter/IMPROVEMENTS.md +174 -0
- package/src/typewriter/QUICK_REFERENCE.md +166 -0
- package/src/typewriter/index.ts +1 -0
- package/src/typewriter/test-typewriter.html +97 -0
- package/src/typewriter/typewriter.ts +376 -0
- package/src/typography/index.ts +1 -0
- package/src/typography/typography.ts +448 -0
- package/src/utils/animation.ts +418 -0
- package/src/utils/hashContent.ts +12 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/intersection.ts +22 -0
- package/src/utils/number.ts +529 -0
- package/src/utils/overlay-stack.ts +101 -0
- package/src/utils/search.ts +322 -0
- package/src/vite-env.d.ts +2 -0
- package/src/window/index.ts +10 -0
- package/src/window/window-manager.ts +204 -0
- package/src/window/window-position.ts +136 -0
- package/src/window/window-registry.ts +34 -0
- package/src/window/window.ts +724 -0
- package/types/mixins/baseElement.d.ts +12 -0
- package/types/mixins/discovery.service.d.ts +72 -0
- package/types/mixins/index.d.ts +2 -0
- package/types/mixins/surface.mixin.d.ts +39 -0
- package/types/src/area/area.service.d.ts +2 -0
- package/types/src/badge/badge.d.ts +1 -1
- package/types/src/boat/boat.d.ts +40 -33
- package/types/src/button/icon-button.d.ts +10 -0
- package/types/src/chips/filter-chip.d.ts +0 -12
- package/types/src/connectivity/connectivity-status.d.ts +25 -0
- package/types/src/connectivity/index.d.ts +1 -0
- package/types/src/content-drawer/drawer.service.d.ts +3 -0
- package/types/src/date-range/date-range.d.ts +2 -0
- package/types/src/details/details.d.ts +26 -2
- package/types/src/dialog/dialog-base.mixin.d.ts +7 -3
- package/types/src/dialog/dialog-service.d.ts +27 -1
- package/types/src/dialog/dialog.component.d.ts +35 -1
- package/types/src/directives/animate-text.d.ts +67 -0
- package/types/src/directives/color.d.ts +2 -3
- package/types/src/directives/confirm-click.d.ts +38 -0
- package/types/src/directives/cursor-glow.d.ts +38 -0
- package/types/src/directives/cycle-text.d.ts +44 -0
- package/types/src/directives/depth-of-field.d.ts +38 -0
- package/types/src/directives/drag.d.ts +8 -8
- package/types/src/directives/gravity.d.ts +40 -0
- package/types/src/directives/index.d.ts +16 -2
- package/types/src/directives/intersect.d.ts +60 -0
- package/types/src/directives/layout.d.ts +62 -0
- package/types/src/directives/liquid.d.ts +38 -0
- package/types/src/directives/living-border.d.ts +39 -0
- package/types/src/directives/long-press.d.ts +38 -0
- package/types/src/directives/magnetic.d.ts +35 -0
- package/types/src/directives/nebula.d.ts +80 -0
- package/types/src/directives/reduced-motion.d.ts +2 -0
- package/types/src/directives/reveal.d.ts +54 -0
- package/types/src/directives/ripple.d.ts +15 -5
- package/types/src/directives/typewriter.d.ts +50 -0
- package/types/src/discovery/discovery.service.d.ts +72 -0
- package/types/src/expand/expand-root.component.d.ts +30 -0
- package/types/src/expand/expand.component.d.ts +38 -0
- package/types/src/expand/index.d.ts +2 -0
- package/types/src/float/float.d.ts +14 -0
- package/types/src/float/index.d.ts +1 -0
- package/types/src/icons/icon.d.ts +14 -0
- package/types/src/iframe/iframe.d.ts +37 -0
- package/types/src/iframe/index.d.ts +1 -0
- package/types/src/index.d.ts +6 -1
- package/types/src/input/index.d.ts +1 -1
- package/types/src/layout/scroll/scroll.d.ts +11 -0
- package/types/src/lightbox/lightbox.d.ts +1 -0
- package/types/src/mailbox/email-recipients.d.ts +2 -2
- package/types/src/mailbox/types.d.ts +1 -1
- package/types/src/navigation-bar/navigation-bar.d.ts +17 -0
- package/types/src/notification/notification.d.ts +1 -0
- package/types/src/page/page.d.ts +6 -0
- package/types/src/range/index.d.ts +1 -0
- package/types/src/range/range.d.ts +25 -0
- package/types/src/sheet/sheet.d.ts +0 -1
- package/types/src/steps/schmancy-steps-container.d.ts +8 -6
- package/types/src/surface/surface.d.ts +4 -27
- package/types/src/surface/surface.styles.d.ts +31 -0
- package/types/src/tabs/tab.d.ts +1 -0
- package/types/src/textarea/textarea.d.ts +3 -2
- package/types/src/theme/context.d.ts +2 -282
- package/types/src/theme/theme.component.d.ts +9 -1
- package/types/src/theme/theme.format.d.ts +1 -1
- package/types/src/theme/theme.interface.d.ts +8 -1
- package/types/src/theme/theme.service.d.ts +20 -282
- package/types/src/types/surface.d.ts +27 -1
- package/types/src/typography/typography.d.ts +17 -3
- package/types/src/utils/animation.d.ts +254 -0
- package/types/src/utils/index.d.ts +2 -0
- package/types/src/utils/number.d.ts +18 -2
- package/types/src/utils/overlay-stack.d.ts +54 -0
- package/types/src/window/index.d.ts +3 -0
- package/types/src/window/window-manager.d.ts +49 -0
- package/types/src/window/window-position.d.ts +64 -0
- package/types/src/window/window-registry.d.ts +28 -0
- package/types/src/window/window.d.ts +67 -0
- package/ai/animated-text.md +0 -116
- package/ai/component-relationships.md +0 -93
- package/ai/context.md +0 -572
- package/ai/countries.md +0 -271
- package/ai/index.md +0 -112
- package/ai/navigation-bar-item.md +0 -259
- package/ai/payment-card-form.md +0 -242
- package/ai/spinner.md +0 -165
- package/ai/template.md +0 -144
- package/ai/timezone.md +0 -276
- package/dist/_commonjsHelpers-Dw9sPFZy.js +0 -7
- package/dist/_commonjsHelpers-Dw9sPFZy.js.map +0 -1
- package/dist/_commonjsHelpers-k2hpEU-q.cjs +0 -2
- package/dist/_commonjsHelpers-k2hpEU-q.cjs.map +0 -1
- package/dist/ai/animated-text.md +0 -116
- package/dist/ai/component-relationships.md +0 -93
- package/dist/ai/context.md +0 -572
- package/dist/ai/countries.md +0 -271
- package/dist/ai/index.md +0 -112
- package/dist/ai/navigation-bar-item.md +0 -259
- package/dist/ai/payment-card-form.md +0 -242
- package/dist/ai/spinner.md +0 -165
- package/dist/ai/template.md +0 -144
- package/dist/ai/timezone.md +0 -276
- package/dist/animated-text-B3DQRJBy.cjs +0 -37
- package/dist/animated-text-B3DQRJBy.cjs.map +0 -1
- package/dist/animated-text-BAj4-6hE.js +0 -76
- package/dist/animated-text-BAj4-6hE.js.map +0 -1
- package/dist/animated-text.cjs +0 -2
- package/dist/animated-text.cjs.map +0 -1
- package/dist/animated-text.js +0 -2
- package/dist/animated-text.js.map +0 -1
- package/dist/area.cjs.map +0 -1
- package/dist/area.component-CP4DZ0d8.js +0 -330
- package/dist/area.component-CP4DZ0d8.js.map +0 -1
- package/dist/area.component-ChxSLt16.cjs +0 -12
- package/dist/area.component-ChxSLt16.cjs.map +0 -1
- package/dist/area.js.map +0 -1
- package/dist/audio.cjs.map +0 -1
- package/dist/audio.js.map +0 -1
- package/dist/autocomplete-CAaVSg4g.cjs +0 -112
- package/dist/autocomplete-CAaVSg4g.cjs.map +0 -1
- package/dist/autocomplete-CGbACUYd.js +0 -333
- package/dist/autocomplete-CGbACUYd.js.map +0 -1
- package/dist/autocomplete.cjs.map +0 -1
- package/dist/autocomplete.js.map +0 -1
- package/dist/avatar-nWOZXEsW.cjs +0 -273
- package/dist/avatar-nWOZXEsW.cjs.map +0 -1
- package/dist/avatar-rLCF6MSI.js +0 -895
- package/dist/avatar-rLCF6MSI.js.map +0 -1
- package/dist/badge.cjs.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/boat-Ckt9v__d.js +0 -301
- package/dist/boat-Ckt9v__d.js.map +0 -1
- package/dist/boat-yNAZ2LLB.cjs +0 -97
- package/dist/boat-yNAZ2LLB.cjs.map +0 -1
- package/dist/boat.cjs.map +0 -1
- package/dist/boat.js.map +0 -1
- package/dist/busy.cjs.map +0 -1
- package/dist/busy.js.map +0 -1
- package/dist/card.cjs.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/checkbox-BnAlpsJN.cjs +0 -40
- package/dist/checkbox-BnAlpsJN.cjs.map +0 -1
- package/dist/checkbox-D22yfGe3.js +0 -526
- package/dist/checkbox-D22yfGe3.js.map +0 -1
- package/dist/checkbox.cjs.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/chips.cjs.map +0 -1
- package/dist/chips.js.map +0 -1
- package/dist/code-highlight.cjs.map +0 -1
- package/dist/code-highlight.js.map +0 -1
- package/dist/code-preview-DPlQayFd.js +0 -967
- package/dist/code-preview-DPlQayFd.js.map +0 -1
- package/dist/code-preview-jPnX60FF.cjs +0 -193
- package/dist/code-preview-jPnX60FF.cjs.map +0 -1
- package/dist/components.cjs.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/consume-5D1qfVWM.js +0 -38
- package/dist/consume-5D1qfVWM.js.map +0 -1
- package/dist/consume-edta5ng5.cjs +0 -2
- package/dist/consume-edta5ng5.cjs.map +0 -1
- package/dist/content-drawer.cjs.map +0 -1
- package/dist/content-drawer.js.map +0 -1
- package/dist/context-create-B_S-sD5B.js +0 -1107
- package/dist/context-create-B_S-sD5B.js.map +0 -1
- package/dist/context-create-DTybDbZp.cjs +0 -2
- package/dist/context-create-DTybDbZp.cjs.map +0 -1
- package/dist/date-range-GFm5NG33.js +0 -639
- package/dist/date-range-GFm5NG33.js.map +0 -1
- package/dist/date-range-inline-CgX2o0FP.cjs +0 -44
- package/dist/date-range-inline-CgX2o0FP.cjs.map +0 -1
- package/dist/date-range-inline-DTQLESAZ.js +0 -197
- package/dist/date-range-inline-DTQLESAZ.js.map +0 -1
- package/dist/date-range-inline.cjs.map +0 -1
- package/dist/date-range-inline.js.map +0 -1
- package/dist/date-range-ug3B9CFT.cjs +0 -119
- package/dist/date-range-ug3B9CFT.cjs.map +0 -1
- package/dist/date-range.cjs.map +0 -1
- package/dist/date-range.js.map +0 -1
- package/dist/delay-CWtBL0VD.cjs +0 -10
- package/dist/delay-CWtBL0VD.cjs.map +0 -1
- package/dist/delay-DEe1CmHc.js +0 -288
- package/dist/delay-DEe1CmHc.js.map +0 -1
- package/dist/delay.cjs.map +0 -1
- package/dist/delay.js.map +0 -1
- package/dist/details-D-LXW23W.js +0 -100
- package/dist/details-D-LXW23W.js.map +0 -1
- package/dist/details-DVke77dU.cjs +0 -55
- package/dist/details-DVke77dU.cjs.map +0 -1
- package/dist/details.cjs.map +0 -1
- package/dist/details.js.map +0 -1
- package/dist/dialog-service-C86xTS8q.cjs +0 -2
- package/dist/dialog-service-C86xTS8q.cjs.map +0 -1
- package/dist/dialog-service-D9E3jLAR.js +0 -118
- package/dist/dialog-service-D9E3jLAR.js.map +0 -1
- package/dist/dialog.component-BM0D-hK9.cjs +0 -48
- package/dist/dialog.component-BM0D-hK9.cjs.map +0 -1
- package/dist/dialog.component-a7FlKhGD.js +0 -145
- package/dist/dialog.component-a7FlKhGD.js.map +0 -1
- package/dist/discovery.service-BbYjU5x8.js +0 -21
- package/dist/discovery.service-BbYjU5x8.js.map +0 -1
- package/dist/discovery.service-BpGCuXPd.cjs +0 -2
- package/dist/discovery.service-BpGCuXPd.cjs.map +0 -1
- package/dist/divider-CzTpxOqt.js +0 -84
- package/dist/divider-CzTpxOqt.js.map +0 -1
- package/dist/divider-D8KStUhN.cjs +0 -58
- package/dist/divider-D8KStUhN.cjs.map +0 -1
- package/dist/divider.cjs.map +0 -1
- package/dist/divider.js.map +0 -1
- package/dist/dropdown-content-CngZN3vv.cjs +0 -58
- package/dist/dropdown-content-CngZN3vv.cjs.map +0 -1
- package/dist/dropdown-content-DCn-g0-f.js +0 -147
- package/dist/dropdown-content-DCn-g0-f.js.map +0 -1
- package/dist/email-recipients-BhntMZMf.cjs +0 -1173
- package/dist/email-recipients-BhntMZMf.cjs.map +0 -1
- package/dist/email-recipients-BzjAKNJ0.js +0 -1733
- package/dist/email-recipients-BzjAKNJ0.js.map +0 -1
- package/dist/emotional-sounds-BRnFhww6.js +0 -234
- package/dist/emotional-sounds-BRnFhww6.js.map +0 -1
- package/dist/emotional-sounds-DVGhmoZf.cjs +0 -2
- package/dist/emotional-sounds-DVGhmoZf.cjs.map +0 -1
- package/dist/extra.cjs.map +0 -1
- package/dist/extra.js.map +0 -1
- package/dist/flex-5dR48zie.js +0 -183
- package/dist/flex-5dR48zie.js.map +0 -1
- package/dist/flex-oHl2EfYB.cjs +0 -18
- package/dist/flex-oHl2EfYB.cjs.map +0 -1
- package/dist/flow-D0e7hGXO.cjs +0 -2
- package/dist/flow-D0e7hGXO.cjs.map +0 -1
- package/dist/flow-DXYqC9OA.js +0 -340
- package/dist/flow-DXYqC9OA.js.map +0 -1
- package/dist/form-BlPiAPt7.cjs +0 -2
- package/dist/form-BlPiAPt7.cjs.map +0 -1
- package/dist/form-BxVM6JTn.js +0 -141
- package/dist/form-BxVM6JTn.js.map +0 -1
- package/dist/form.cjs.map +0 -1
- package/dist/form.js.map +0 -1
- package/dist/formField.mixin-BCGA7Ea3.js +0 -48
- package/dist/formField.mixin-BCGA7Ea3.js.map +0 -1
- package/dist/formField.mixin-BfJMifU9.cjs +0 -2
- package/dist/formField.mixin-BfJMifU9.cjs.map +0 -1
- package/dist/height-CfECBO2j.js +0 -44
- package/dist/height-CfECBO2j.js.map +0 -1
- package/dist/height-Z70qJYJK.cjs +0 -2
- package/dist/height-Z70qJYJK.cjs.map +0 -1
- package/dist/icon-DHEXr3c-.cjs +0 -49
- package/dist/icon-DHEXr3c-.cjs.map +0 -1
- package/dist/icon-DYpLoegR.js +0 -84
- package/dist/icon-DYpLoegR.js.map +0 -1
- package/dist/icon-button-CmZBLHWC.js +0 -164
- package/dist/icon-button-CmZBLHWC.js.map +0 -1
- package/dist/icon-button-IbSX8C98.cjs +0 -70
- package/dist/icon-button-IbSX8C98.cjs.map +0 -1
- package/dist/icons.cjs.map +0 -1
- package/dist/icons.js.map +0 -1
- package/dist/index-CCi1otmh.cjs +0 -2
- package/dist/index-CCi1otmh.cjs.map +0 -1
- package/dist/index-CW6PhEkx.js +0 -17
- package/dist/index-CW6PhEkx.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/input-BByjYlgl.cjs +0 -51
- package/dist/input-BByjYlgl.cjs.map +0 -1
- package/dist/input-D0cQ9DOY.js +0 -237
- package/dist/input-D0cQ9DOY.js.map +0 -1
- package/dist/input-chip-B5ErXgCB.js +0 -206
- package/dist/input-chip-B5ErXgCB.js.map +0 -1
- package/dist/input-chip-DkWaTciP.cjs +0 -147
- package/dist/input-chip-DkWaTciP.cjs.map +0 -1
- package/dist/input.cjs.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/intersection-CJxzz8c-.js +0 -15
- package/dist/intersection-CJxzz8c-.js.map +0 -1
- package/dist/intersection-CVvaDv96.cjs +0 -2
- package/dist/intersection-CVvaDv96.cjs.map +0 -1
- package/dist/json-BZVe74np.cjs +0 -12
- package/dist/json-BZVe74np.cjs.map +0 -1
- package/dist/json-PKewOWuJ.js +0 -51
- package/dist/json-PKewOWuJ.js.map +0 -1
- package/dist/layout.cjs.map +0 -1
- package/dist/layout.js.map +0 -1
- package/dist/lightbox-service-D-0JtxB1.cjs +0 -202
- package/dist/lightbox-service-D-0JtxB1.cjs.map +0 -1
- package/dist/lightbox-service-DZMnb1eU.js +0 -458
- package/dist/lightbox-service-DZMnb1eU.js.map +0 -1
- package/dist/lightbox.cjs.map +0 -1
- package/dist/lightbox.js.map +0 -1
- package/dist/list-B_2m7l3g.cjs +0 -17
- package/dist/list-B_2m7l3g.cjs.map +0 -1
- package/dist/list-CW56LV-v.js +0 -69
- package/dist/list-CW56LV-v.js.map +0 -1
- package/dist/list.cjs.map +0 -1
- package/dist/list.js.map +0 -1
- package/dist/litElement.mixin-CrpeGpZ7.cjs +0 -2
- package/dist/litElement.mixin-CrpeGpZ7.cjs.map +0 -1
- package/dist/litElement.mixin-DHZXtvYq.js +0 -15
- package/dist/litElement.mixin-DHZXtvYq.js.map +0 -1
- package/dist/mailbox.cjs.map +0 -1
- package/dist/mailbox.js.map +0 -1
- package/dist/map-2Hl60a0A.js +0 -175
- package/dist/map-2Hl60a0A.js.map +0 -1
- package/dist/map-DyPS9G7M.cjs +0 -81
- package/dist/map-DyPS9G7M.cjs.map +0 -1
- package/dist/map.cjs.map +0 -1
- package/dist/map.js.map +0 -1
- package/dist/media-CS8HpKnK.cjs +0 -152
- package/dist/media-CS8HpKnK.cjs.map +0 -1
- package/dist/media-DtWbcRxL.js +0 -244
- package/dist/media-DtWbcRxL.js.map +0 -1
- package/dist/menu-Caju5-zd.js +0 -60
- package/dist/menu-Caju5-zd.js.map +0 -1
- package/dist/menu-rX5RPAI2.cjs +0 -24
- package/dist/menu-rX5RPAI2.cjs.map +0 -1
- package/dist/menu.cjs.map +0 -1
- package/dist/menu.js.map +0 -1
- package/dist/nav-drawer.cjs.map +0 -1
- package/dist/nav-drawer.js.map +0 -1
- package/dist/navigation-bar.cjs.map +0 -1
- package/dist/navigation-bar.js.map +0 -1
- package/dist/navigation-rail-Ctketq5a.js +0 -256
- package/dist/navigation-rail-Ctketq5a.js.map +0 -1
- package/dist/navigation-rail-DC9_oSIM.cjs +0 -79
- package/dist/navigation-rail-DC9_oSIM.cjs.map +0 -1
- package/dist/notification-service-CUlfXqmj.js +0 -155
- package/dist/notification-service-CUlfXqmj.js.map +0 -1
- package/dist/notification-service-DknbpqTt.cjs +0 -19
- package/dist/notification-service-DknbpqTt.cjs.map +0 -1
- package/dist/notification.cjs.map +0 -1
- package/dist/notification.js.map +0 -1
- package/dist/notify-DJSOWTxv.js +0 -35
- package/dist/notify-DJSOWTxv.js.map +0 -1
- package/dist/notify-DickIEHW.cjs +0 -2
- package/dist/notify-DickIEHW.cjs.map +0 -1
- package/dist/number-B7aCRYnH.cjs +0 -2
- package/dist/number-B7aCRYnH.cjs.map +0 -1
- package/dist/number-BhTiptLA.js +0 -99
- package/dist/number-BhTiptLA.js.map +0 -1
- package/dist/option-Bng41-rY.js +0 -77
- package/dist/option-Bng41-rY.js.map +0 -1
- package/dist/option-DYT5Rkgy.cjs +0 -44
- package/dist/option-DYT5Rkgy.cjs.map +0 -1
- package/dist/option.cjs.map +0 -1
- package/dist/option.js.map +0 -1
- package/dist/page-BLn9gtSd.cjs +0 -20
- package/dist/page-BLn9gtSd.cjs.map +0 -1
- package/dist/page-D-ROcQDd.js +0 -48
- package/dist/page-D-ROcQDd.js.map +0 -1
- package/dist/payment-card-form-5UtfWzoW.cjs +0 -74
- package/dist/payment-card-form-5UtfWzoW.cjs.map +0 -1
- package/dist/payment-card-form-BJa4RgF2.js +0 -515
- package/dist/payment-card-form-BJa4RgF2.js.map +0 -1
- package/dist/pills-BS5rZ6C3.js +0 -346
- package/dist/pills-BS5rZ6C3.js.map +0 -1
- package/dist/pills-Blf7IAeq.cjs +0 -113
- package/dist/pills-Blf7IAeq.cjs.map +0 -1
- package/dist/progress-DlhYniW_.cjs +0 -35
- package/dist/progress-DlhYniW_.cjs.map +0 -1
- package/dist/progress-yTIX6EqC.js +0 -56
- package/dist/progress-yTIX6EqC.js.map +0 -1
- package/dist/progress.cjs.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/provide-BxZ2kn_p.cjs +0 -2
- package/dist/provide-BxZ2kn_p.cjs.map +0 -1
- package/dist/provide-tcktw8xB.js +0 -100
- package/dist/provide-tcktw8xB.js.map +0 -1
- package/dist/qr-scanner-DOs7uNS_.cjs +0 -29
- package/dist/qr-scanner-DOs7uNS_.cjs.map +0 -1
- package/dist/qr-scanner-DjZ8mgHV.js +0 -743
- package/dist/qr-scanner-DjZ8mgHV.js.map +0 -1
- package/dist/radio-button-N_PrrxKB.cjs +0 -41
- package/dist/radio-button-N_PrrxKB.cjs.map +0 -1
- package/dist/radio-button-me3SRHGu.js +0 -115
- package/dist/radio-button-me3SRHGu.js.map +0 -1
- package/dist/radio-group.cjs.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/ripple-BgJXbNSP.js +0 -124
- package/dist/ripple-BgJXbNSP.js.map +0 -1
- package/dist/ripple-x6sTX02K.cjs +0 -16
- package/dist/ripple-x6sTX02K.cjs.map +0 -1
- package/dist/rxjs-utils.cjs.map +0 -1
- package/dist/rxjs-utils.js.map +0 -1
- package/dist/schmancy-steps-container-J6P-NNNj.js +0 -156
- package/dist/schmancy-steps-container-J6P-NNNj.js.map +0 -1
- package/dist/schmancy-steps-container-T57BKMzi.cjs +0 -70
- package/dist/schmancy-steps-container-T57BKMzi.cjs.map +0 -1
- package/dist/scroll-C_gfUgjn.js +0 -87
- package/dist/scroll-C_gfUgjn.js.map +0 -1
- package/dist/scroll-CecsowP7.cjs +0 -27
- package/dist/scroll-CecsowP7.cjs.map +0 -1
- package/dist/search-B1s7thB0.cjs +0 -2
- package/dist/search-B1s7thB0.cjs.map +0 -1
- package/dist/search-DxxnLa5u.js +0 -95
- package/dist/search-DxxnLa5u.js.map +0 -1
- package/dist/select-BBA0gBHf.js +0 -280
- package/dist/select-BBA0gBHf.js.map +0 -1
- package/dist/select-D9oCjv7N.cjs +0 -57
- package/dist/select-D9oCjv7N.cjs.map +0 -1
- package/dist/select.cjs.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/selector-hook-9w2auh2O.cjs +0 -2
- package/dist/selector-hook-9w2auh2O.cjs.map +0 -1
- package/dist/selector-hook-CHV4kDMd.js +0 -319
- package/dist/selector-hook-CHV4kDMd.js.map +0 -1
- package/dist/sheet-0oUfBmXX.cjs +0 -15
- package/dist/sheet-0oUfBmXX.cjs.map +0 -1
- package/dist/sheet-CNcDT3VP.js +0 -97
- package/dist/sheet-CNcDT3VP.js.map +0 -1
- package/dist/sheet.cjs.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sheet.service-2MobB-9z.js +0 -68
- package/dist/sheet.service-2MobB-9z.js.map +0 -1
- package/dist/sheet.service-su_7yDQ-.cjs +0 -2
- package/dist/sheet.service-su_7yDQ-.cjs.map +0 -1
- package/dist/slider-CV-Ehp_5.cjs +0 -83
- package/dist/slider-CV-Ehp_5.cjs.map +0 -1
- package/dist/slider-CkE-iFUy.js +0 -161
- package/dist/slider-CkE-iFUy.js.map +0 -1
- package/dist/sound.service-Nza4c6wv.js +0 -102
- package/dist/sound.service-Nza4c6wv.js.map +0 -1
- package/dist/sound.service-eRirZw59.cjs +0 -2
- package/dist/sound.service-eRirZw59.cjs.map +0 -1
- package/dist/spinner-Bfn8KC-9.cjs +0 -135
- package/dist/spinner-Bfn8KC-9.cjs.map +0 -1
- package/dist/spinner-DiMbWXp9.js +0 -168
- package/dist/spinner-DiMbWXp9.js.map +0 -1
- package/dist/store.cjs.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/suggestion-chip-CEDqUNoS.js +0 -481
- package/dist/suggestion-chip-CEDqUNoS.js.map +0 -1
- package/dist/suggestion-chip-HhsLtZXR.cjs +0 -271
- package/dist/suggestion-chip-HhsLtZXR.cjs.map +0 -1
- package/dist/surface-CW3H23Va.cjs +0 -199
- package/dist/surface-CW3H23Va.cjs.map +0 -1
- package/dist/surface-eBfnSwQS.js +0 -220
- package/dist/surface-eBfnSwQS.js.map +0 -1
- package/dist/surface.cjs.map +0 -1
- package/dist/surface.js.map +0 -1
- package/dist/table-D0tiSL_u.cjs +0 -64
- package/dist/table-D0tiSL_u.cjs.map +0 -1
- package/dist/table-Dmo4TvTx.js +0 -561
- package/dist/table-Dmo4TvTx.js.map +0 -1
- package/dist/table.cjs.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs-compatibility-Bit6y6en.js +0 -104
- package/dist/tabs-compatibility-Bit6y6en.js.map +0 -1
- package/dist/tabs-compatibility-Vq_2-ekz.cjs +0 -35
- package/dist/tabs-compatibility-Vq_2-ekz.cjs.map +0 -1
- package/dist/tabs.cjs.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tailwind.mixin-Bp_PR6yc.js +0 -67
- package/dist/tailwind.mixin-Bp_PR6yc.js.map +0 -1
- package/dist/tailwind.mixin-Cp4PyXok.cjs +0 -2
- package/dist/tailwind.mixin-Cp4PyXok.cjs.map +0 -1
- package/dist/teleport.cjs.map +0 -1
- package/dist/teleport.js.map +0 -1
- package/dist/textarea-B1d1QCqT.js +0 -134
- package/dist/textarea-B1d1QCqT.js.map +0 -1
- package/dist/textarea-DG8CHhZA.cjs +0 -44
- package/dist/textarea-DG8CHhZA.cjs.map +0 -1
- package/dist/textarea.cjs.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/theme-button-CPL6Eaqd.cjs +0 -9
- package/dist/theme-button-CPL6Eaqd.cjs.map +0 -1
- package/dist/theme-button-CrLuMQNe.js +0 -27
- package/dist/theme-button-CrLuMQNe.js.map +0 -1
- package/dist/theme-button.cjs.map +0 -1
- package/dist/theme-button.js.map +0 -1
- package/dist/theme-controller-boat-CXbNJSI3.cjs +0 -178
- package/dist/theme-controller-boat-CXbNJSI3.cjs.map +0 -1
- package/dist/theme-controller-boat-CzSmjyKq.js +0 -1159
- package/dist/theme-controller-boat-CzSmjyKq.js.map +0 -1
- package/dist/theme.cjs.map +0 -1
- package/dist/theme.events-CPSLaOlR.js +0 -6
- package/dist/theme.events-CPSLaOlR.js.map +0 -1
- package/dist/theme.events-Car6U_SQ.cjs +0 -2
- package/dist/theme.events-Car6U_SQ.cjs.map +0 -1
- package/dist/theme.interface-BLfE5J_1.js +0 -5
- package/dist/theme.interface-BLfE5J_1.js.map +0 -1
- package/dist/theme.interface-BMeNadVb.cjs +0 -2
- package/dist/theme.interface-BMeNadVb.cjs.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/timezone-4vwX0BgA.js +0 -112
- package/dist/timezone-4vwX0BgA.js.map +0 -1
- package/dist/timezone-BxvQcqe1.cjs +0 -32
- package/dist/timezone-BxvQcqe1.cjs.map +0 -1
- package/dist/tooltip-CjdvBf4X.js +0 -119
- package/dist/tooltip-CjdvBf4X.js.map +0 -1
- package/dist/tooltip-ZtnGjoJd.cjs +0 -7
- package/dist/tooltip-ZtnGjoJd.cjs.map +0 -1
- package/dist/tree-CBEjV7jP.js +0 -65
- package/dist/tree-CBEjV7jP.js.map +0 -1
- package/dist/tree-DP5U00NA.cjs +0 -27
- package/dist/tree-DP5U00NA.cjs.map +0 -1
- package/dist/tslib.es6-DgOcxv4s.cjs +0 -2
- package/dist/tslib.es6-DgOcxv4s.cjs.map +0 -1
- package/dist/tslib.es6-ujVQHAQ4.js +0 -10
- package/dist/tslib.es6-ujVQHAQ4.js.map +0 -1
- package/dist/typewriter-C6kFjLcX.cjs +0 -124
- package/dist/typewriter-C6kFjLcX.cjs.map +0 -1
- package/dist/typewriter-Eo5qXoGC.js +0 -555
- package/dist/typewriter-Eo5qXoGC.js.map +0 -1
- package/dist/typewriter.cjs.map +0 -1
- package/dist/typewriter.js.map +0 -1
- package/dist/typography-C_1gdM2I.js +0 -264
- package/dist/typography-C_1gdM2I.js.map +0 -1
- package/dist/typography-DGyjlLCE.cjs +0 -243
- package/dist/typography-DGyjlLCE.cjs.map +0 -1
- package/dist/utils-C38P63L6.cjs +0 -2
- package/dist/utils-C38P63L6.cjs.map +0 -1
- package/dist/utils-CYOVFxSx.js +0 -150
- package/dist/utils-CYOVFxSx.js.map +0 -1
- package/dist/utils.cjs.map +0 -1
- package/dist/utils.js.map +0 -1
- package/types/src/animated-text/animated-text.d.ts +0 -30
- package/types/src/animated-text/index.d.ts +0 -1
- package/types/src/directives/height.d.ts +0 -20
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { M as e } from "./store-DYqDLAvT.js";
|
|
2
|
+
import { n as t, t as n } from "./theme.events-Cv7N4Toe.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-D9lEas89.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":"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"}
|
package/dist/tooltip.cjs
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-DSuEu-y3.cjs`);let t=require(`rxjs`),n=require(`lit/decorators.js`),r=require(`lit`),i=require(`lit/directive.js`),a=require(`@floating-ui/dom`);var o=new WeakMap,s=class extends i.Directive{constructor(e){if(super(e),e.type!==i.PartType.ELEMENT)throw Error(`The tooltip directive can only be used on elements`)}render(e,t={}){return{text:e,options:t}}update(e,[n,r={}]){let i=e.element,s=r?.position||`top`,c=r?.delay||300,l=!1!==r?.showArrow,u=o.get(i);if(u)u.tooltipElement.textContent=n,u.arrowElement&&(u.arrowElement.style.visibility=l?`visible`:`hidden`);else{let e=document.createElement(`div`),r;e.className=`schmancy-tooltip`,Object.assign(e.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&&(r=document.createElement(`div`),r.className=`schmancy-tooltip-arrow`,Object.assign(r.style,{position:`absolute`,width:`8px`,height:`8px`,background:`inherit`,visibility:`hidden`,transform:`rotate(45deg)`}),e.appendChild(r)),e.setAttribute(`role`,`tooltip`);let d=`tooltip-${Math.random().toString(36).slice(2,9)}`;e.id=d,i.setAttribute(`aria-describedby`,d),document.body.appendChild(e),u={tooltipElement:e,arrowElement:r},o.set(i,u);let f=()=>{u?.showTimeout&&clearTimeout(u.showTimeout),u.showTimeout=window.setTimeout(()=>{u.tooltipElement.textContent=n,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,a.autoUpdate)(i,u.tooltipElement,()=>async function(e,t,n,r){let i=[(0,a.offset)(8),(0,a.flip)({fallbackPlacements:[`top`,`right`,`bottom`,`left`].filter(e=>e!==n),padding:5}),(0,a.shift)({padding:5})];r&&t.arrowElement&&i.push((0,a.arrow)({element:t.arrowElement}));let{x:o,y:s,placement:c,middlewareData:l}=await(0,a.computePosition)(e,t.tooltipElement,{placement:n,middleware:i,strategy:`fixed`});if(Object.assign(t.tooltipElement.style,{left:`${o}px`,top:`${s}px`,position:`fixed`}),r&&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`})}}(i,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,t.fromEvent)(i,`mouseenter`).subscribe(f),(0,t.fromEvent)(i,`focus`).subscribe(f),(0,t.fromEvent)(i,`mouseleave`).subscribe(p),(0,t.fromEvent)(i,`blur`).subscribe(p),(0,t.fromEvent)(document,`keydown`).subscribe(e=>{e.key===`Escape`&&u?.tooltipElement.style.opacity===`1`&&p()})];u.subscriptions=m}return{text:n,options:r}}disconnected(e){let t=e.element,n=o.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`),o.delete(t))}},c=(0,i.directive)(s),l=class extends e.t(r.css`
|
|
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;
|
package/dist/tooltip.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
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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"}
|
package/dist/tooltip.js
CHANGED
|
@@ -1,6 +1,201 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { i as e, t } from "./tailwind.mixin-BIVhjNvD.js";
|
|
2
|
+
import { fromEvent as n, merge as r, takeUntil as i } from "rxjs";
|
|
3
|
+
import { customElement as a, property as o, state as s } from "lit/decorators.js";
|
|
4
|
+
import { css as c, html as l } from "lit";
|
|
5
|
+
import { Directive as u, PartType as d, directive as f } from "lit/directive.js";
|
|
6
|
+
import { arrow as p, autoUpdate as m, computePosition as h, flip as g, offset as _, shift as v } from "@floating-ui/dom";
|
|
7
|
+
var y = /* @__PURE__ */ new WeakMap(), b = f(class extends u {
|
|
8
|
+
constructor(e) {
|
|
9
|
+
if (super(e), e.type !== d.ELEMENT) throw Error("The tooltip directive can only be used on elements");
|
|
10
|
+
}
|
|
11
|
+
render(e, t = {}) {
|
|
12
|
+
return {
|
|
13
|
+
text: e,
|
|
14
|
+
options: t
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
update(e, [t, r = {}]) {
|
|
18
|
+
let i = e.element, a = r?.position || "top", o = r?.delay || 300, s = !1 !== r?.showArrow, c = y.get(i);
|
|
19
|
+
if (c) c.tooltipElement.textContent = t, c.arrowElement && (c.arrowElement.style.visibility = s ? "visible" : "hidden");
|
|
20
|
+
else {
|
|
21
|
+
let e = document.createElement("div"), r;
|
|
22
|
+
e.className = "schmancy-tooltip", Object.assign(e.style, {
|
|
23
|
+
position: "absolute",
|
|
24
|
+
zIndex: "10000",
|
|
25
|
+
backgroundColor: "var(--schmancy-sys-color-surface-highest, #333)",
|
|
26
|
+
color: "var(--schmancy-sys-color-surface-on, white)",
|
|
27
|
+
padding: "8px 12px",
|
|
28
|
+
borderRadius: "4px",
|
|
29
|
+
fontSize: "14px",
|
|
30
|
+
fontWeight: "normal",
|
|
31
|
+
maxWidth: "300px",
|
|
32
|
+
pointerEvents: "none",
|
|
33
|
+
opacity: "0",
|
|
34
|
+
transition: "opacity 150ms ease",
|
|
35
|
+
boxShadow: "var(--schmancy-sys-elevation-2)",
|
|
36
|
+
textAlign: "center",
|
|
37
|
+
visibility: "hidden"
|
|
38
|
+
}), s && (r = document.createElement("div"), r.className = "schmancy-tooltip-arrow", Object.assign(r.style, {
|
|
39
|
+
position: "absolute",
|
|
40
|
+
width: "8px",
|
|
41
|
+
height: "8px",
|
|
42
|
+
background: "inherit",
|
|
43
|
+
visibility: "hidden",
|
|
44
|
+
transform: "rotate(45deg)"
|
|
45
|
+
}), e.appendChild(r)), e.setAttribute("role", "tooltip");
|
|
46
|
+
let l = `tooltip-${Math.random().toString(36).slice(2, 9)}`;
|
|
47
|
+
e.id = l, i.setAttribute("aria-describedby", l), document.body.appendChild(e), c = {
|
|
48
|
+
tooltipElement: e,
|
|
49
|
+
arrowElement: r
|
|
50
|
+
}, y.set(i, c);
|
|
51
|
+
let u = () => {
|
|
52
|
+
c?.showTimeout && clearTimeout(c.showTimeout), c.showTimeout = window.setTimeout(() => {
|
|
53
|
+
c.tooltipElement.textContent = t, s && c.arrowElement && !c.tooltipElement.contains(c.arrowElement) && c.tooltipElement.appendChild(c.arrowElement), c.tooltipElement.style.visibility = "visible", c.cleanup && c.cleanup(), c.cleanup = m(i, c.tooltipElement, () => async function(e, t, n, r) {
|
|
54
|
+
let i = [
|
|
55
|
+
_(8),
|
|
56
|
+
g({
|
|
57
|
+
fallbackPlacements: [
|
|
58
|
+
"top",
|
|
59
|
+
"right",
|
|
60
|
+
"bottom",
|
|
61
|
+
"left"
|
|
62
|
+
].filter((e) => e !== n),
|
|
63
|
+
padding: 5
|
|
64
|
+
}),
|
|
65
|
+
v({ padding: 5 })
|
|
66
|
+
];
|
|
67
|
+
r && t.arrowElement && i.push(p({ element: t.arrowElement }));
|
|
68
|
+
let { x: a, y: o, placement: s, middlewareData: c } = await h(e, t.tooltipElement, {
|
|
69
|
+
placement: n,
|
|
70
|
+
middleware: i,
|
|
71
|
+
strategy: "fixed"
|
|
72
|
+
});
|
|
73
|
+
if (Object.assign(t.tooltipElement.style, {
|
|
74
|
+
left: `${a}px`,
|
|
75
|
+
top: `${o}px`,
|
|
76
|
+
position: "fixed"
|
|
77
|
+
}), r && t.arrowElement && c.arrow) {
|
|
78
|
+
let { x: e, y: n } = c.arrow, r = {
|
|
79
|
+
top: "bottom",
|
|
80
|
+
right: "left",
|
|
81
|
+
bottom: "top",
|
|
82
|
+
left: "right"
|
|
83
|
+
}[s.split("-")[0]] || "bottom";
|
|
84
|
+
Object.assign(t.arrowElement.style, {
|
|
85
|
+
left: e == null ? "" : `${e}px`,
|
|
86
|
+
top: n == null ? "" : `${n}px`,
|
|
87
|
+
[r]: "-4px",
|
|
88
|
+
visibility: "visible"
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}(i, c, a, s)), requestAnimationFrame(() => {
|
|
92
|
+
c.tooltipElement.style.opacity = "1";
|
|
93
|
+
});
|
|
94
|
+
}, o);
|
|
95
|
+
}, d = () => {
|
|
96
|
+
c?.showTimeout && clearTimeout(c.showTimeout), c.tooltipElement.style.opacity = "0", setTimeout(() => {
|
|
97
|
+
c.tooltipElement.style.visibility = "hidden";
|
|
98
|
+
}, 150), c?.cleanup && (c.cleanup(), c.cleanup = void 0);
|
|
99
|
+
}, f = [
|
|
100
|
+
n(i, "mouseenter").subscribe(u),
|
|
101
|
+
n(i, "focus").subscribe(u),
|
|
102
|
+
n(i, "mouseleave").subscribe(d),
|
|
103
|
+
n(i, "blur").subscribe(d),
|
|
104
|
+
n(document, "keydown").subscribe((e) => {
|
|
105
|
+
e.key === "Escape" && c?.tooltipElement.style.opacity === "1" && d();
|
|
106
|
+
})
|
|
107
|
+
];
|
|
108
|
+
c.subscriptions = f;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
text: t,
|
|
112
|
+
options: r
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
disconnected(e) {
|
|
116
|
+
let t = e.element, n = y.get(t);
|
|
117
|
+
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"), y.delete(t));
|
|
118
|
+
}
|
|
119
|
+
}), x = class extends t(c`
|
|
120
|
+
:host {
|
|
121
|
+
display: inline-block;
|
|
122
|
+
position: relative;
|
|
123
|
+
}
|
|
124
|
+
`) {
|
|
125
|
+
constructor(...e) {
|
|
126
|
+
super(...e), this.text = "", this.position = "top", this.delay = 50, this.disabled = !1, this.visible = !1, this.triggerElement = null, this.tooltipElement = null;
|
|
127
|
+
}
|
|
128
|
+
connectedCallback() {
|
|
129
|
+
super.connectedCallback(), this.tooltipElement || this.createTooltipElement();
|
|
130
|
+
}
|
|
131
|
+
firstUpdated() {
|
|
132
|
+
this.updateComplete.then(() => {
|
|
133
|
+
let e = (this.shadowRoot?.querySelector("slot"))?.assignedElements() || [];
|
|
134
|
+
e.length > 0 && (this.triggerElement = e[0], this.setupEvents());
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
createTooltipElement() {
|
|
138
|
+
this.tooltipElement = document.createElement("div"), this.tooltipElement.className = "schmancy-tooltip", Object.assign(this.tooltipElement.style, {
|
|
139
|
+
position: "absolute",
|
|
140
|
+
zIndex: "10000",
|
|
141
|
+
backgroundColor: "var(--schmancy-sys-color-surface-highest, #333)",
|
|
142
|
+
color: "var(--schmancy-sys-color-surface-on, white)",
|
|
143
|
+
padding: "8px 12px",
|
|
144
|
+
borderRadius: "4px",
|
|
145
|
+
fontSize: "14px",
|
|
146
|
+
fontWeight: "normal",
|
|
147
|
+
maxWidth: "300px",
|
|
148
|
+
pointerEvents: "none",
|
|
149
|
+
opacity: "0",
|
|
150
|
+
transition: "opacity 150ms ease",
|
|
151
|
+
boxShadow: "var(--schmancy-sys-elevation-2)",
|
|
152
|
+
textAlign: "center"
|
|
153
|
+
}), this.tooltipElement.setAttribute("role", "tooltip"), document.body.appendChild(this.tooltipElement);
|
|
154
|
+
}
|
|
155
|
+
setupEvents() {
|
|
156
|
+
if (!this.triggerElement || this.disabled) return;
|
|
157
|
+
let e = `tooltip-${Math.random().toString(36).slice(2, 9)}`;
|
|
158
|
+
this.tooltipElement && (this.tooltipElement.id = e, this.triggerElement.setAttribute("aria-describedby", e));
|
|
159
|
+
let t = n(this.triggerElement, "mouseenter"), a = n(this.triggerElement, "focus"), o = n(this.triggerElement, "mouseleave"), s = n(this.triggerElement, "blur");
|
|
160
|
+
n(document, "keydown").pipe(i(this.disconnecting)).subscribe((e) => {
|
|
161
|
+
e.key === "Escape" && this.visible && this.hideTooltip();
|
|
162
|
+
}), r(t, a).pipe(i(this.disconnecting)).subscribe(() => {
|
|
163
|
+
this.showTooltip();
|
|
164
|
+
}), r(o, s).pipe(i(this.disconnecting)).subscribe(() => {
|
|
165
|
+
this.hideTooltip();
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
disconnectedCallback() {
|
|
169
|
+
this.tooltipElement && document.body.contains(this.tooltipElement) && document.body.removeChild(this.tooltipElement), this.cleanup?.(), clearTimeout(this.showTimeoutId), super.disconnectedCallback();
|
|
170
|
+
}
|
|
171
|
+
showTooltip() {
|
|
172
|
+
!this.disabled && this.tooltipElement && this.triggerElement && (clearTimeout(this.showTimeoutId), this.showTimeoutId = window.setTimeout(() => {
|
|
173
|
+
this.tooltipElement && (this.tooltipElement.textContent = this.text, this.visible = !0, this.tooltipElement.style.opacity = "1", this.initializePositioning());
|
|
174
|
+
}, this.delay));
|
|
175
|
+
}
|
|
176
|
+
hideTooltip() {
|
|
177
|
+
clearTimeout(this.showTimeoutId), this.tooltipElement && (this.visible = !1, this.tooltipElement.style.opacity = "0"), this.cleanup &&= (this.cleanup(), void 0);
|
|
178
|
+
}
|
|
179
|
+
initializePositioning() {
|
|
180
|
+
this.triggerElement && this.tooltipElement && (this.cleanup && this.cleanup(), this.cleanup = m(this.triggerElement, this.tooltipElement, () => {
|
|
181
|
+
h(this.triggerElement, this.tooltipElement, {
|
|
182
|
+
placement: this.position,
|
|
183
|
+
middleware: [
|
|
184
|
+
_(8),
|
|
185
|
+
g({ padding: 5 }),
|
|
186
|
+
v({ padding: 5 })
|
|
187
|
+
]
|
|
188
|
+
}).then(({ x: e, y: t }) => {
|
|
189
|
+
this.tooltipElement && Object.assign(this.tooltipElement.style, {
|
|
190
|
+
left: `${e}px`,
|
|
191
|
+
top: `${t}px`
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
render() {
|
|
197
|
+
return l`<slot></slot>`;
|
|
198
|
+
}
|
|
5
199
|
};
|
|
6
|
-
|
|
200
|
+
e([o({ type: String })], x.prototype, "text", void 0), e([o({ type: String })], x.prototype, "position", void 0), e([o({ type: Number })], x.prototype, "delay", void 0), e([o({ type: Boolean })], x.prototype, "disabled", void 0), e([s()], x.prototype, "visible", void 0), x = e([a("schmancy-tooltip")], x);
|
|
201
|
+
export { x as SchmancyTooltip, b as tooltip };
|
package/dist/tooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"tooltip.js","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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"}
|
package/dist/tree.cjs
CHANGED
|
@@ -1,2 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-DSuEu-y3.cjs`);require(`./mixins.cjs`);let t=require(`rxjs`),n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t(r.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: block;
|
|
4
|
+
position: relative;
|
|
5
|
+
background-color: initial;
|
|
6
|
+
}
|
|
7
|
+
::slotted([slot='root']) {
|
|
8
|
+
width: 100%;
|
|
9
|
+
text-align: left;
|
|
10
|
+
}
|
|
11
|
+
::slotted([slot='root'] + *) {
|
|
12
|
+
margin-top: 0.5rem;
|
|
13
|
+
}
|
|
14
|
+
`){constructor(...e){super(...e),this.open=!1}firstUpdated(){this.open||(this.defaultSlot.hidden=!0),(0,t.merge)((0,t.fromEvent)(this.toggler,`click`).pipe((0,t.takeUntil)(this.disconnecting),(0,t.tap)(e=>{e.preventDefault(),e.stopPropagation(),this.dispatchEvent(new CustomEvent(`toggle`,{bubbles:!1,composed:!0}))})),(0,t.fromEvent)(this.chevron,`click`)).pipe((0,t.switchMap)(()=>{let e=this.open?180:0,n=this.open?0:180,r=this.chevron.animate([{transform:`rotate(${e}deg)`},{transform:`rotate(${n}deg)`}],{duration:150,easing:`ease-in`,fill:`forwards`});this.open||(this.defaultSlot.hidden=!1);let i=+!!this.open,a=+!this.open,o=this.defaultSlot.animate([{opacity:i},{opacity:a}],{duration:150,easing:`ease-out`,fill:`forwards`});return o.onfinish=()=>{this.open?this.defaultSlot.hidden=!0:(this.defaultSlot.style.height=`auto`,this.defaultSlot.style.opacity=`1`)},(0,t.zip)((0,t.fromEvent)(r,`finish`),(0,t.fromEvent)(o,`finish`)).pipe((0,t.takeUntil)(this.disconnecting))}),(0,t.tap)(()=>{this.open=!this.open}),(0,t.takeUntil)(this.disconnecting)).subscribe()}render(){return r.html`
|
|
15
|
+
<div class="flex content-center items-center justify-between">
|
|
16
|
+
<!-- Root toggler content -->
|
|
17
|
+
<slot id="toggler" name="root"></slot>
|
|
18
|
+
|
|
19
|
+
<!-- The chevron or arrow symbol -->
|
|
20
|
+
<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->
|
|
21
|
+
<schmancy-button slot="trailing" id="chevron" @click=${e=>e.stopPropagation()}> ⌅ </schmancy-button>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<!-- The default slot: tree children -->
|
|
25
|
+
<slot></slot>
|
|
26
|
+
`}};e.i([(0,n.property)({type:Boolean})],i.prototype,`open`,void 0),e.i([(0,n.query)(`#toggler`)],i.prototype,`toggler`,void 0),e.i([(0,n.query)(`slot:not([name="root"])`)],i.prototype,`defaultSlot`,void 0),e.i([(0,n.query)(`#chevron`)],i.prototype,`chevron`,void 0),i=e.i([(0,n.customElement)(`schmancy-tree`)],i),Object.defineProperty(exports,`SchmancyTree`,{enumerable:!0,get:function(){return i}});
|
package/dist/tree.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.cjs","sources":[],"sourcesContent":[]
|
|
1
|
+
{"version":3,"file":"tree.cjs","names":[],"sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: false, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"mappings":"kPAWO,IAAA,EAAA,cAA2B,EAAA,EAAgB,EAAA,GAAG;;;;;;;;;;;;;4CAiBhB,EAQpC,cAAA,CAEM,KAAK,OACT,KAAK,YAAY,OAAA,CAAS,IAgB3B,EAAA,EAAA,QAAA,EAAA,EAAA,WAZ2C,KAAK,QAAS,QAAA,CAAS,MAAA,EAAA,EAAA,WACvD,KAAK,cAAA,EAAc,EAAA,EAAA,KACzB,GAAA,CACH,EAAE,gBAAA,CACF,EAAE,iBAAA,CACF,KAAK,cAAc,IAAI,YAAY,SAAU,CAAE,QAAA,CAAS,EAAO,SAAA,CAAU,EAAA,CAAA,CAAA,EAAA,CAAA,EAE1E,EAAA,EAAA,WAG2C,KAAK,QAAS,QAAA,CAAA,CAGxD,MAAA,EAAA,EAAA,eAAA,CAIC,IAAM,EAAU,KAAK,KAAO,IAAM,EAC5B,EAAQ,KAAK,KAAO,EAAI,IACxB,EAAmB,KAAK,QAAQ,QACrC,CAAC,CAAE,UAAW,UAAU,EAAA,MAAA,CAAiB,CAAE,UAAW,UAAU,EAAA,MAAA,CAAA,CAChE,CACC,SAAU,IACV,OAAQ,UACR,KAAM,WAAA,CAAA,CAKH,KAAK,OAET,KAAK,YAAY,OAAA,CAAS,GAG3B,IAAM,EAAc,QAAK,KACnB,EAAY,OAAK,KAEjB,EAAgB,KAAK,YAAY,QAAQ,CAAC,CAAE,QAAS,EAAA,CAAe,CAAE,QAAS,EAAA,CAAA,CAAc,CAClG,SAAU,IACV,OAAQ,WACR,KAAM,WAAA,CAAA,CAcP,MAVA,GAAc,aAAA,CACT,KAAK,KACR,KAAK,YAAY,OAAA,CAAS,GAE1B,KAAK,YAAY,MAAM,OAAS,OAChC,KAAK,YAAY,MAAM,QAAU,OAKnC,EAAA,EAAA,MAAA,EAAA,EAAA,WAAqB,EAAkB,SAAA,EAAS,EAAA,EAAA,WAAY,EAAe,SAAA,CAAA,CAAW,MAAA,EAAA,EAAA,WAC3E,KAAK,cAAA,CAAA,EAAA,EAEf,EAAA,EAAA,SAAA,CAGD,KAAK,KAAA,CAAQ,KAAK,MAAA,EACjB,EAAA,EAAA,WACQ,KAAK,cAAA,CAAA,CAEf,WAAA,CAGH,QAAA,CACC,MAAO,GAAA,IAAI;;;;;;;2DAO+C,GAAa,EAAE,iBAAA,CAAA;;;;;0BA1FhE,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAErB,WAAA,CAAA,CAAW,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OACX,0BAAA,CAAA,CAA0B,EAAA,UAAA,cAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAG1B,WAAA,CAAA,CAAW,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAxBJ,gBAAA,CAAA,CAAgB,EAAA,CAAA,OAAA,eAAA,QAAA,eAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
|
package/dist/tree.js
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { i as e, t } from "./tailwind.mixin-BIVhjNvD.js";
|
|
2
|
+
import "./mixins.js";
|
|
3
|
+
import { fromEvent as n, merge as r, switchMap as i, takeUntil as a, tap as o, zip as s } from "rxjs";
|
|
4
|
+
import { customElement as c, property as l, query as u } from "lit/decorators.js";
|
|
5
|
+
import { css as d, html as f } from "lit";
|
|
6
|
+
var p = class extends t(d`
|
|
7
|
+
:host {
|
|
8
|
+
display: block;
|
|
9
|
+
position: relative;
|
|
10
|
+
background-color: initial;
|
|
11
|
+
}
|
|
12
|
+
::slotted([slot='root']) {
|
|
13
|
+
width: 100%;
|
|
14
|
+
text-align: left;
|
|
15
|
+
}
|
|
16
|
+
::slotted([slot='root'] + *) {
|
|
17
|
+
margin-top: 0.5rem;
|
|
18
|
+
}
|
|
19
|
+
`) {
|
|
20
|
+
constructor(...e) {
|
|
21
|
+
super(...e), this.open = !1;
|
|
22
|
+
}
|
|
23
|
+
firstUpdated() {
|
|
24
|
+
this.open || (this.defaultSlot.hidden = !0), r(n(this.toggler, "click").pipe(a(this.disconnecting), o((e) => {
|
|
25
|
+
e.preventDefault(), e.stopPropagation(), this.dispatchEvent(new CustomEvent("toggle", {
|
|
26
|
+
bubbles: !1,
|
|
27
|
+
composed: !0
|
|
28
|
+
}));
|
|
29
|
+
})), n(this.chevron, "click")).pipe(i(() => {
|
|
30
|
+
let e = this.open ? 180 : 0, t = this.open ? 0 : 180, r = this.chevron.animate([{ transform: `rotate(${e}deg)` }, { transform: `rotate(${t}deg)` }], {
|
|
31
|
+
duration: 150,
|
|
32
|
+
easing: "ease-in",
|
|
33
|
+
fill: "forwards"
|
|
34
|
+
});
|
|
35
|
+
this.open || (this.defaultSlot.hidden = !1);
|
|
36
|
+
let i = +!!this.open, o = +!this.open, c = this.defaultSlot.animate([{ opacity: i }, { opacity: o }], {
|
|
37
|
+
duration: 150,
|
|
38
|
+
easing: "ease-out",
|
|
39
|
+
fill: "forwards"
|
|
40
|
+
});
|
|
41
|
+
return c.onfinish = () => {
|
|
42
|
+
this.open ? this.defaultSlot.hidden = !0 : (this.defaultSlot.style.height = "auto", this.defaultSlot.style.opacity = "1");
|
|
43
|
+
}, s(n(r, "finish"), n(c, "finish")).pipe(a(this.disconnecting));
|
|
44
|
+
}), o(() => {
|
|
45
|
+
this.open = !this.open;
|
|
46
|
+
}), a(this.disconnecting)).subscribe();
|
|
47
|
+
}
|
|
48
|
+
render() {
|
|
49
|
+
return f`
|
|
50
|
+
<div class="flex content-center items-center justify-between">
|
|
51
|
+
<!-- Root toggler content -->
|
|
52
|
+
<slot id="toggler" name="root"></slot>
|
|
53
|
+
|
|
54
|
+
<!-- The chevron or arrow symbol -->
|
|
55
|
+
<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->
|
|
56
|
+
<schmancy-button slot="trailing" id="chevron" @click=${(e) => e.stopPropagation()}> ⌅ </schmancy-button>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<!-- The default slot: tree children -->
|
|
60
|
+
<slot></slot>
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
4
63
|
};
|
|
5
|
-
|
|
64
|
+
e([l({ type: Boolean })], p.prototype, "open", void 0), e([u("#toggler")], p.prototype, "toggler", void 0), e([u("slot:not([name=\"root\"])")], p.prototype, "defaultSlot", void 0), e([u("#chevron")], p.prototype, "chevron", void 0), p = e([c("schmancy-tree")], p);
|
|
65
|
+
export { p as SchmancyTree };
|
package/dist/tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sources":[],"sourcesContent":[]
|
|
1
|
+
{"version":3,"file":"tree.js","names":[],"sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: false, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"mappings":";;;;;AAWO,IAAA,IAAA,cAA2B,EAAgB,CAAG;;;;;;;;;;;;;;;4BAiBhB;;CAQpC,eAAA;AAEM,OAAK,SACT,KAAK,YAAY,SAAA,CAAS,IAgB3B,EAZqB,EAAsB,KAAK,SAAS,QAAA,CAAS,KACjE,EAAU,KAAK,cAAA,EACf,GAAI,MAAA;AACH,KAAE,gBAAA,EACF,EAAE,iBAAA,EACF,KAAK,cAAc,IAAI,YAAY,UAAU;IAAE,SAAA,CAAS;IAAO,UAAA,CAAU;IAAA,CAAA,CAAA;IAAA,CAAA,EAKrD,EAAsB,KAAK,SAAS,QAAA,CAAA,CAGxD,KACA,QAAA;GAGC,IAAM,IAAU,KAAK,OAAO,MAAM,GAC5B,IAAQ,KAAK,OAAO,IAAI,KACxB,IAAmB,KAAK,QAAQ,QACrC,CAAC,EAAE,WAAW,UAAU,EAAA,OAAA,EAAiB,EAAE,WAAW,UAAU,EAAA,OAAA,CAAA,EAChE;IACC,UAAU;IACV,QAAQ;IACR,MAAM;IAAA,CAAA;AAKH,QAAK,SAET,KAAK,YAAY,SAAA,CAAS;GAG3B,IAAM,IAAc,QAAK,MACnB,IAAY,OAAK,MAEjB,IAAgB,KAAK,YAAY,QAAQ,CAAC,EAAE,SAAS,GAAA,EAAe,EAAE,SAAS,GAAA,CAAA,EAAc;IAClG,UAAU;IACV,QAAQ;IACR,MAAM;IAAA,CAAA;AAcP,UAVA,EAAc,iBAAA;AACT,SAAK,OACR,KAAK,YAAY,SAAA,CAAS,KAE1B,KAAK,YAAY,MAAM,SAAS,QAChC,KAAK,YAAY,MAAM,UAAU;MAK5B,EAAI,EAAU,GAAkB,SAAA,EAAW,EAAU,GAAe,SAAA,CAAA,CAAW,KACrF,EAAU,KAAK,cAAA,CAAA;IAAA,EAGjB,QAAA;AAEC,QAAK,OAAA,CAAQ,KAAK;IAAA,EAEnB,EAAU,KAAK,cAAA,CAAA,CAEf,WAAA;;CAGH,SAAA;AACC,SAAO,CAAI;;;;;;;4DAO+C,MAAa,EAAE,iBAAA,CAAA;;;;;;;;GA1FzE,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAE3B,EAAM,WAAA,CAAA,EAAW,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CACjB,EAAM,4BAAA,CAAA,EAA0B,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAGhC,EAAM,WAAA,CAAA,EAAW,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAxBlB,EAAc,gBAAA,CAAA,EAAgB,EAAA;AAAA,SAAA,KAAA"}
|