@moni-labs/moni-ui 0.2.0
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/LICENSE +34 -0
- package/README.md +264 -0
- package/custom-elements.json +12510 -0
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +1 -0
- package/dist/assets/arch.svg +1 -0
- package/dist/assets/arrow.svg +1 -0
- package/dist/assets/boom.svg +1 -0
- package/dist/assets/bun.svg +1 -0
- package/dist/assets/burst.svg +1 -0
- package/dist/assets/circle.svg +1 -0
- package/dist/assets/clamshell.svg +1 -0
- package/dist/assets/diamond.svg +1 -0
- package/dist/assets/fan.svg +1 -0
- package/dist/assets/flower.svg +1 -0
- package/dist/assets/gem.svg +1 -0
- package/dist/assets/ghost-ish.svg +1 -0
- package/dist/assets/heart.svg +1 -0
- package/dist/assets/leaf-clover4.svg +1 -0
- package/dist/assets/leaf-clover8.svg +1 -0
- package/dist/assets/loading-indicator.svg +1 -0
- package/dist/assets/material-symbols-rounded.woff2 +0 -0
- package/dist/assets/material-symbols-subset.woff2 +0 -0
- package/dist/assets/oval.svg +1 -0
- package/dist/assets/pentagon.svg +1 -0
- package/dist/assets/pill.svg +1 -0
- package/dist/assets/pixel-circle.svg +1 -0
- package/dist/assets/pixel-triangle.svg +1 -0
- package/dist/assets/puffy-diamond.svg +1 -0
- package/dist/assets/puffy.svg +1 -0
- package/dist/assets/semicircle.svg +1 -0
- package/dist/assets/shapes/arch.svg +1 -0
- package/dist/assets/shapes/arrow.svg +1 -0
- package/dist/assets/shapes/boom.svg +1 -0
- package/dist/assets/shapes/burst.svg +1 -0
- package/dist/assets/shapes/circle.svg +1 -0
- package/dist/assets/shapes/clamshell.svg +1 -0
- package/dist/assets/shapes/diamond.svg +1 -0
- package/dist/assets/shapes/fan.svg +1 -0
- package/dist/assets/shapes/flower.svg +1 -0
- package/dist/assets/shapes/gem.svg +1 -0
- package/dist/assets/shapes/ghost-ish.svg +1 -0
- package/dist/assets/shapes/heart.svg +1 -0
- package/dist/assets/shapes/leaf-clover4.svg +1 -0
- package/dist/assets/shapes/leaf-clover8.svg +1 -0
- package/dist/assets/shapes/loading-indicator.svg +1 -0
- package/dist/assets/shapes/oval.svg +1 -0
- package/dist/assets/shapes/pentagon.svg +1 -0
- package/dist/assets/shapes/pill.svg +1 -0
- package/dist/assets/shapes/pixel-circle.svg +1 -0
- package/dist/assets/shapes/pixel-triangle.svg +1 -0
- package/dist/assets/shapes/puffy-diamond.svg +1 -0
- package/dist/assets/shapes/puffy.svg +1 -0
- package/dist/assets/shapes/semicircle.svg +1 -0
- package/dist/assets/shapes/sided-cookie12.svg +1 -0
- package/dist/assets/shapes/sided-cookie4.svg +1 -0
- package/dist/assets/shapes/sided-cookie6.svg +1 -0
- package/dist/assets/shapes/sided-cookie7.svg +1 -0
- package/dist/assets/shapes/sided-cookie9.svg +1 -0
- package/dist/assets/shapes/slanted.svg +1 -0
- package/dist/assets/shapes/soft-boom.svg +1 -0
- package/dist/assets/shapes/soft-burst.svg +1 -0
- package/dist/assets/shapes/square.svg +1 -0
- package/dist/assets/shapes/sunny.svg +1 -0
- package/dist/assets/shapes/triangle.svg +1 -0
- package/dist/assets/shapes/very-sunny.svg +1 -0
- package/dist/assets/shapes/wavy-circle.svg +1 -0
- package/dist/assets/shapes/wavy.svg +1 -0
- package/dist/assets/sided-cookie12.svg +1 -0
- package/dist/assets/sided-cookie4.svg +1 -0
- package/dist/assets/sided-cookie6.svg +1 -0
- package/dist/assets/sided-cookie7.svg +1 -0
- package/dist/assets/sided-cookie9.svg +1 -0
- package/dist/assets/slanted.svg +1 -0
- package/dist/assets/soft-boom.svg +1 -0
- package/dist/assets/soft-burst.svg +1 -0
- package/dist/assets/square.svg +1 -0
- package/dist/assets/star.svg +1 -0
- package/dist/assets/sunny.svg +1 -0
- package/dist/assets/triangle.svg +1 -0
- package/dist/assets/very-sunny.svg +1 -0
- package/dist/assets/wavy-circle.svg +1 -0
- package/dist/assets/wavy.svg +1 -0
- package/dist/components/_base/field-styles.d.ts +24 -0
- package/dist/components/_base/field-styles.d.ts.map +1 -0
- package/dist/components/_base/field-styles.js +504 -0
- package/dist/components/_base/index.d.ts +4 -0
- package/dist/components/_base/index.d.ts.map +1 -0
- package/dist/components/_base/index.js +3 -0
- package/dist/components/_base/interaction-styles.d.ts +22 -0
- package/dist/components/_base/interaction-styles.d.ts.map +1 -0
- package/dist/components/_base/interaction-styles.js +123 -0
- package/dist/components/_base/moni-element.d.ts +18 -0
- package/dist/components/_base/moni-element.d.ts.map +1 -0
- package/dist/components/_base/moni-element.js +19 -0
- package/dist/components/_base/shared-styles.d.ts +22 -0
- package/dist/components/_base/shared-styles.d.ts.map +1 -0
- package/dist/components/_base/shared-styles.js +146 -0
- package/dist/components/index.d.ts +42 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +43 -0
- package/dist/components/loading-shapes.d.ts +10 -0
- package/dist/components/loading-shapes.d.ts.map +1 -0
- package/dist/components/loading-shapes.js +9 -0
- package/dist/components/moni-app-bar.d.ts +52 -0
- package/dist/components/moni-app-bar.d.ts.map +1 -0
- package/dist/components/moni-app-bar.js +207 -0
- package/dist/components/moni-badge.d.ts +37 -0
- package/dist/components/moni-badge.d.ts.map +1 -0
- package/dist/components/moni-badge.js +153 -0
- package/dist/components/moni-bottom-sheet.d.ts +52 -0
- package/dist/components/moni-bottom-sheet.d.ts.map +1 -0
- package/dist/components/moni-bottom-sheet.js +440 -0
- package/dist/components/moni-button-group.d.ts +55 -0
- package/dist/components/moni-button-group.d.ts.map +1 -0
- package/dist/components/moni-button-group.js +278 -0
- package/dist/components/moni-button-segment.d.ts +29 -0
- package/dist/components/moni-button-segment.d.ts.map +1 -0
- package/dist/components/moni-button-segment.js +300 -0
- package/dist/components/moni-button.d.ts +70 -0
- package/dist/components/moni-button.d.ts.map +1 -0
- package/dist/components/moni-button.js +727 -0
- package/dist/components/moni-card.d.ts +48 -0
- package/dist/components/moni-card.d.ts.map +1 -0
- package/dist/components/moni-card.js +216 -0
- package/dist/components/moni-carousel.d.ts +111 -0
- package/dist/components/moni-carousel.d.ts.map +1 -0
- package/dist/components/moni-carousel.js +1007 -0
- package/dist/components/moni-checkbox.d.ts +39 -0
- package/dist/components/moni-checkbox.d.ts.map +1 -0
- package/dist/components/moni-checkbox.js +212 -0
- package/dist/components/moni-chip.d.ts +57 -0
- package/dist/components/moni-chip.d.ts.map +1 -0
- package/dist/components/moni-chip.js +340 -0
- package/dist/components/moni-color-field.d.ts +33 -0
- package/dist/components/moni-color-field.d.ts.map +1 -0
- package/dist/components/moni-color-field.js +170 -0
- package/dist/components/moni-context-menu.d.ts +55 -0
- package/dist/components/moni-context-menu.d.ts.map +1 -0
- package/dist/components/moni-context-menu.js +184 -0
- package/dist/components/moni-dialog.d.ts +37 -0
- package/dist/components/moni-dialog.d.ts.map +1 -0
- package/dist/components/moni-dialog.js +257 -0
- package/dist/components/moni-divider.d.ts +33 -0
- package/dist/components/moni-divider.d.ts.map +1 -0
- package/dist/components/moni-divider.js +81 -0
- package/dist/components/moni-expansion.d.ts +25 -0
- package/dist/components/moni-expansion.d.ts.map +1 -0
- package/dist/components/moni-expansion.js +94 -0
- package/dist/components/moni-fab-menu.d.ts +58 -0
- package/dist/components/moni-fab-menu.d.ts.map +1 -0
- package/dist/components/moni-fab-menu.js +247 -0
- package/dist/components/moni-fab.d.ts +48 -0
- package/dist/components/moni-fab.d.ts.map +1 -0
- package/dist/components/moni-fab.js +284 -0
- package/dist/components/moni-file-field.d.ts +47 -0
- package/dist/components/moni-file-field.d.ts.map +1 -0
- package/dist/components/moni-file-field.js +189 -0
- package/dist/components/moni-icon.d.ts +30 -0
- package/dist/components/moni-icon.d.ts.map +1 -0
- package/dist/components/moni-icon.js +107 -0
- package/dist/components/moni-list-item.d.ts +51 -0
- package/dist/components/moni-list-item.d.ts.map +1 -0
- package/dist/components/moni-list-item.js +239 -0
- package/dist/components/moni-list.d.ts +32 -0
- package/dist/components/moni-list.d.ts.map +1 -0
- package/dist/components/moni-list.js +67 -0
- package/dist/components/moni-loading-indicator.d.ts +32 -0
- package/dist/components/moni-loading-indicator.d.ts.map +1 -0
- package/dist/components/moni-loading-indicator.js +189 -0
- package/dist/components/moni-menu-item.d.ts +27 -0
- package/dist/components/moni-menu-item.d.ts.map +1 -0
- package/dist/components/moni-menu-item.js +99 -0
- package/dist/components/moni-menu.d.ts +55 -0
- package/dist/components/moni-menu.d.ts.map +1 -0
- package/dist/components/moni-menu.js +295 -0
- package/dist/components/moni-morph-modal.d.ts +78 -0
- package/dist/components/moni-morph-modal.d.ts.map +1 -0
- package/dist/components/moni-morph-modal.js +1223 -0
- package/dist/components/moni-nav-item.d.ts +38 -0
- package/dist/components/moni-nav-item.d.ts.map +1 -0
- package/dist/components/moni-nav-item.js +262 -0
- package/dist/components/moni-nav.d.ts +46 -0
- package/dist/components/moni-nav.d.ts.map +1 -0
- package/dist/components/moni-nav.js +272 -0
- package/dist/components/moni-progress.d.ts +45 -0
- package/dist/components/moni-progress.d.ts.map +1 -0
- package/dist/components/moni-progress.js +333 -0
- package/dist/components/moni-radio.d.ts +38 -0
- package/dist/components/moni-radio.d.ts.map +1 -0
- package/dist/components/moni-radio.js +218 -0
- package/dist/components/moni-ripple.d.ts +35 -0
- package/dist/components/moni-ripple.d.ts.map +1 -0
- package/dist/components/moni-ripple.js +156 -0
- package/dist/components/moni-segmented-button.d.ts +52 -0
- package/dist/components/moni-segmented-button.d.ts.map +1 -0
- package/dist/components/moni-segmented-button.js +208 -0
- package/dist/components/moni-select-option.d.ts +27 -0
- package/dist/components/moni-select-option.d.ts.map +1 -0
- package/dist/components/moni-select-option.js +102 -0
- package/dist/components/moni-select.d.ts +76 -0
- package/dist/components/moni-select.d.ts.map +1 -0
- package/dist/components/moni-select.js +1136 -0
- package/dist/components/moni-shape.d.ts +30 -0
- package/dist/components/moni-shape.d.ts.map +1 -0
- package/dist/components/moni-shape.js +146 -0
- package/dist/components/moni-side-sheet.d.ts +62 -0
- package/dist/components/moni-side-sheet.d.ts.map +1 -0
- package/dist/components/moni-side-sheet.js +576 -0
- package/dist/components/moni-slider.d.ts +73 -0
- package/dist/components/moni-slider.d.ts.map +1 -0
- package/dist/components/moni-slider.js +422 -0
- package/dist/components/moni-snackbar.d.ts +40 -0
- package/dist/components/moni-snackbar.d.ts.map +1 -0
- package/dist/components/moni-snackbar.js +161 -0
- package/dist/components/moni-split-button.d.ts +33 -0
- package/dist/components/moni-split-button.d.ts.map +1 -0
- package/dist/components/moni-split-button.js +122 -0
- package/dist/components/moni-step.d.ts +30 -0
- package/dist/components/moni-step.d.ts.map +1 -0
- package/dist/components/moni-step.js +175 -0
- package/dist/components/moni-stepper.d.ts +35 -0
- package/dist/components/moni-stepper.d.ts.map +1 -0
- package/dist/components/moni-stepper.js +101 -0
- package/dist/components/moni-switch.d.ts +39 -0
- package/dist/components/moni-switch.d.ts.map +1 -0
- package/dist/components/moni-switch.js +258 -0
- package/dist/components/moni-tab.d.ts +27 -0
- package/dist/components/moni-tab.d.ts.map +1 -0
- package/dist/components/moni-tab.js +147 -0
- package/dist/components/moni-tabs.d.ts +31 -0
- package/dist/components/moni-tabs.d.ts.map +1 -0
- package/dist/components/moni-tabs.js +106 -0
- package/dist/components/moni-text-field.d.ts +46 -0
- package/dist/components/moni-text-field.d.ts.map +1 -0
- package/dist/components/moni-text-field.js +190 -0
- package/dist/components/moni-textarea.d.ts +57 -0
- package/dist/components/moni-textarea.d.ts.map +1 -0
- package/dist/components/moni-textarea.js +228 -0
- package/dist/components/moni-time-picker.d.ts +51 -0
- package/dist/components/moni-time-picker.d.ts.map +1 -0
- package/dist/components/moni-time-picker.js +823 -0
- package/dist/components/moni-toolbar.d.ts +35 -0
- package/dist/components/moni-toolbar.d.ts.map +1 -0
- package/dist/components/moni-toolbar.js +128 -0
- package/dist/components/moni-tooltip.d.ts +65 -0
- package/dist/components/moni-tooltip.d.ts.map +1 -0
- package/dist/components/moni-tooltip.js +320 -0
- package/dist/components/moni-typography.d.ts +42 -0
- package/dist/components/moni-typography.d.ts.map +1 -0
- package/dist/components/moni-typography.js +205 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/styles/animations.css +46 -0
- package/dist/styles/base.css +248 -0
- package/dist/styles/index.css +3 -0
- package/dist/styles/tokens.css +190 -0
- package/dist/utils/color.d.ts +51 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js +107 -0
- package/dist/utils/theme.svelte.d.ts +45 -0
- package/dist/utils/theme.svelte.d.ts.map +1 -0
- package/dist/utils/theme.svelte.js +168 -0
- package/dist/web-components.d.ts +3 -0
- package/dist/web-components.d.ts.map +1 -0
- package/dist/web-components.js +4 -0
- package/package.json +76 -0
- package/src/actions/index.ts +2 -0
- package/src/assets/arch.svg +1 -0
- package/src/assets/arrow.svg +1 -0
- package/src/assets/boom.svg +1 -0
- package/src/assets/bun.svg +1 -0
- package/src/assets/burst.svg +1 -0
- package/src/assets/circle.svg +1 -0
- package/src/assets/clamshell.svg +1 -0
- package/src/assets/diamond.svg +1 -0
- package/src/assets/fan.svg +1 -0
- package/src/assets/flower.svg +1 -0
- package/src/assets/gem.svg +1 -0
- package/src/assets/ghost-ish.svg +1 -0
- package/src/assets/heart.svg +1 -0
- package/src/assets/leaf-clover4.svg +1 -0
- package/src/assets/leaf-clover8.svg +1 -0
- package/src/assets/loading-indicator.svg +1 -0
- package/src/assets/material-symbols-rounded.woff2 +0 -0
- package/src/assets/material-symbols-subset.woff2 +0 -0
- package/src/assets/oval.svg +1 -0
- package/src/assets/pentagon.svg +1 -0
- package/src/assets/pill.svg +1 -0
- package/src/assets/pixel-circle.svg +1 -0
- package/src/assets/pixel-triangle.svg +1 -0
- package/src/assets/puffy-diamond.svg +1 -0
- package/src/assets/puffy.svg +1 -0
- package/src/assets/semicircle.svg +1 -0
- package/src/assets/shapes/arch.svg +1 -0
- package/src/assets/shapes/arrow.svg +1 -0
- package/src/assets/shapes/boom.svg +1 -0
- package/src/assets/shapes/burst.svg +1 -0
- package/src/assets/shapes/circle.svg +1 -0
- package/src/assets/shapes/clamshell.svg +1 -0
- package/src/assets/shapes/diamond.svg +1 -0
- package/src/assets/shapes/fan.svg +1 -0
- package/src/assets/shapes/flower.svg +1 -0
- package/src/assets/shapes/gem.svg +1 -0
- package/src/assets/shapes/ghost-ish.svg +1 -0
- package/src/assets/shapes/heart.svg +1 -0
- package/src/assets/shapes/leaf-clover4.svg +1 -0
- package/src/assets/shapes/leaf-clover8.svg +1 -0
- package/src/assets/shapes/loading-indicator.svg +1 -0
- package/src/assets/shapes/oval.svg +1 -0
- package/src/assets/shapes/pentagon.svg +1 -0
- package/src/assets/shapes/pill.svg +1 -0
- package/src/assets/shapes/pixel-circle.svg +1 -0
- package/src/assets/shapes/pixel-triangle.svg +1 -0
- package/src/assets/shapes/puffy-diamond.svg +1 -0
- package/src/assets/shapes/puffy.svg +1 -0
- package/src/assets/shapes/semicircle.svg +1 -0
- package/src/assets/shapes/sided-cookie12.svg +1 -0
- package/src/assets/shapes/sided-cookie4.svg +1 -0
- package/src/assets/shapes/sided-cookie6.svg +1 -0
- package/src/assets/shapes/sided-cookie7.svg +1 -0
- package/src/assets/shapes/sided-cookie9.svg +1 -0
- package/src/assets/shapes/slanted.svg +1 -0
- package/src/assets/shapes/soft-boom.svg +1 -0
- package/src/assets/shapes/soft-burst.svg +1 -0
- package/src/assets/shapes/square.svg +1 -0
- package/src/assets/shapes/sunny.svg +1 -0
- package/src/assets/shapes/triangle.svg +1 -0
- package/src/assets/shapes/very-sunny.svg +1 -0
- package/src/assets/shapes/wavy-circle.svg +1 -0
- package/src/assets/shapes/wavy.svg +1 -0
- package/src/assets/sided-cookie12.svg +1 -0
- package/src/assets/sided-cookie4.svg +1 -0
- package/src/assets/sided-cookie6.svg +1 -0
- package/src/assets/sided-cookie7.svg +1 -0
- package/src/assets/sided-cookie9.svg +1 -0
- package/src/assets/slanted.svg +1 -0
- package/src/assets/soft-boom.svg +1 -0
- package/src/assets/soft-burst.svg +1 -0
- package/src/assets/square.svg +1 -0
- package/src/assets/star.svg +1 -0
- package/src/assets/sunny.svg +1 -0
- package/src/assets/triangle.svg +1 -0
- package/src/assets/very-sunny.svg +1 -0
- package/src/assets/wavy-circle.svg +1 -0
- package/src/assets/wavy.svg +1 -0
- package/src/assets.d.ts +12 -0
- package/src/components/_base/field-styles.ts +507 -0
- package/src/components/_base/index.ts +3 -0
- package/src/components/_base/interaction-styles.ts +125 -0
- package/src/components/_base/moni-element.ts +21 -0
- package/src/components/_base/shared-styles.ts +148 -0
- package/src/components/index.ts +45 -0
- package/src/components/loading-shapes.ts +9 -0
- package/src/components/moni-app-bar.test.ts +86 -0
- package/src/components/moni-app-bar.ts +190 -0
- package/src/components/moni-badge.ts +138 -0
- package/src/components/moni-bottom-sheet.test.ts +420 -0
- package/src/components/moni-bottom-sheet.ts +425 -0
- package/src/components/moni-button-group.test.ts +148 -0
- package/src/components/moni-button-group.ts +277 -0
- package/src/components/moni-button-segment.ts +291 -0
- package/src/components/moni-button.test.ts +166 -0
- package/src/components/moni-button.ts +709 -0
- package/src/components/moni-card.test.ts +83 -0
- package/src/components/moni-card.ts +203 -0
- package/src/components/moni-carousel.test.ts +238 -0
- package/src/components/moni-carousel.ts +1027 -0
- package/src/components/moni-checkbox.test.ts +78 -0
- package/src/components/moni-checkbox.ts +192 -0
- package/src/components/moni-chip.test.ts +168 -0
- package/src/components/moni-chip.ts +335 -0
- package/src/components/moni-color-field.test.ts +56 -0
- package/src/components/moni-color-field.ts +135 -0
- package/src/components/moni-context-menu.test.ts +99 -0
- package/src/components/moni-context-menu.ts +166 -0
- package/src/components/moni-dialog.ts +240 -0
- package/src/components/moni-divider.test.ts +42 -0
- package/src/components/moni-divider.ts +77 -0
- package/src/components/moni-expansion.ts +86 -0
- package/src/components/moni-fab-menu.test.ts +118 -0
- package/src/components/moni-fab-menu.ts +237 -0
- package/src/components/moni-fab.test.ts +128 -0
- package/src/components/moni-fab.ts +262 -0
- package/src/components/moni-file-field.test.ts +81 -0
- package/src/components/moni-file-field.ts +149 -0
- package/src/components/moni-icon.test.ts +70 -0
- package/src/components/moni-icon.ts +97 -0
- package/src/components/moni-list-item.test.ts +114 -0
- package/src/components/moni-list-item.ts +222 -0
- package/src/components/moni-list.ts +59 -0
- package/src/components/moni-loading-indicator.test.ts +41 -0
- package/src/components/moni-loading-indicator.ts +188 -0
- package/src/components/moni-menu-item.ts +85 -0
- package/src/components/moni-menu.test.ts +87 -0
- package/src/components/moni-menu.ts +287 -0
- package/src/components/moni-morph-modal.test.ts +286 -0
- package/src/components/moni-morph-modal.ts +1312 -0
- package/src/components/moni-nav-item.ts +243 -0
- package/src/components/moni-nav.test.ts +139 -0
- package/src/components/moni-nav.ts +266 -0
- package/src/components/moni-progress.test.ts +90 -0
- package/src/components/moni-progress.ts +322 -0
- package/src/components/moni-radio.test.ts +86 -0
- package/src/components/moni-radio.ts +196 -0
- package/src/components/moni-ripple.ts +146 -0
- package/src/components/moni-segmented-button.test.ts +99 -0
- package/src/components/moni-segmented-button.ts +220 -0
- package/src/components/moni-select-option.ts +85 -0
- package/src/components/moni-select.test.ts +210 -0
- package/src/components/moni-select.ts +1107 -0
- package/src/components/moni-shape.ts +128 -0
- package/src/components/moni-side-sheet.test.ts +128 -0
- package/src/components/moni-side-sheet.ts +544 -0
- package/src/components/moni-slider.test.ts +82 -0
- package/src/components/moni-slider.ts +387 -0
- package/src/components/moni-snackbar.test.ts +82 -0
- package/src/components/moni-snackbar.ts +146 -0
- package/src/components/moni-split-button.ts +121 -0
- package/src/components/moni-step.test.ts +57 -0
- package/src/components/moni-step.ts +155 -0
- package/src/components/moni-stepper.test.ts +116 -0
- package/src/components/moni-stepper.ts +100 -0
- package/src/components/moni-switch.test.ts +117 -0
- package/src/components/moni-switch.ts +237 -0
- package/src/components/moni-tab.test.ts +54 -0
- package/src/components/moni-tab.ts +133 -0
- package/src/components/moni-tabs.ts +92 -0
- package/src/components/moni-text-field.test.ts +115 -0
- package/src/components/moni-text-field.ts +149 -0
- package/src/components/moni-textarea.test.ts +147 -0
- package/src/components/moni-textarea.ts +176 -0
- package/src/components/moni-time-picker.test.ts +61 -0
- package/src/components/moni-time-picker.ts +800 -0
- package/src/components/moni-toolbar.test.ts +93 -0
- package/src/components/moni-toolbar.ts +119 -0
- package/src/components/moni-tooltip.test.ts +122 -0
- package/src/components/moni-tooltip.ts +324 -0
- package/src/components/moni-typography.test.ts +119 -0
- package/src/components/moni-typography.ts +195 -0
- package/src/index.ts +65 -0
- package/src/styles/animations.css +46 -0
- package/src/styles/base.css +248 -0
- package/src/styles/index.css +3 -0
- package/src/styles/tokens.css +190 -0
- package/src/types/svelte-runes.d.ts +7 -0
- package/src/utils/color.ts +170 -0
- package/src/utils/theme.svelte.ts +206 -0
- package/src/web-components.ts +5 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { MoniElement } from './_base/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Material 3 Toolbar (`m3-docs/components/top-app-bar/specs.md`).
|
|
4
|
+
*
|
|
5
|
+
* This is the larger/top-level variant. If you need the compact
|
|
6
|
+
* Navigation Bar at the bottom of the screen, use `<moni-app-bar>`.
|
|
7
|
+
*
|
|
8
|
+
* Supported M3 types:
|
|
9
|
+
* - **standard** (default): 64dp height, flat surface color, bottom shadow.
|
|
10
|
+
* - **floating**: 4dp margin, rounded 8dp corners, elevated.
|
|
11
|
+
*
|
|
12
|
+
* Slots:
|
|
13
|
+
* - default: title / center content.
|
|
14
|
+
* - leading: navigation icon/button.
|
|
15
|
+
* - trailing: action icons/buttons.
|
|
16
|
+
* - action-button: floating action button (moni-fab) anchored right.
|
|
17
|
+
*
|
|
18
|
+
* Attributes:
|
|
19
|
+
* - type: standard (default) | floating
|
|
20
|
+
* - scroll: true | false (default). When true, elevation increases on scroll.
|
|
21
|
+
*/
|
|
22
|
+
export declare class MoniToolbar extends MoniElement {
|
|
23
|
+
type: 'standard' | 'floating';
|
|
24
|
+
scrolled: boolean;
|
|
25
|
+
title: string;
|
|
26
|
+
static styles: import("lit").CSSResult[];
|
|
27
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
28
|
+
}
|
|
29
|
+
declare global {
|
|
30
|
+
interface HTMLElementTagNameMap {
|
|
31
|
+
'moni-toolbar': MoniToolbar;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export default MoniToolbar;
|
|
35
|
+
//# sourceMappingURL=moni-toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moni-toolbar.d.ts","sourceRoot":"","sources":["../../src/components/moni-toolbar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,IAAI,EAAE,UAAU,GAAG,UAAU,CAAc;IAE3C,QAAQ,UAAS;IACY,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA8DpB;IAEO,MAAM;CAcf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, css } from 'lit';
|
|
8
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
+
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Material 3 Toolbar (`m3-docs/components/top-app-bar/specs.md`).
|
|
12
|
+
*
|
|
13
|
+
* This is the larger/top-level variant. If you need the compact
|
|
14
|
+
* Navigation Bar at the bottom of the screen, use `<moni-app-bar>`.
|
|
15
|
+
*
|
|
16
|
+
* Supported M3 types:
|
|
17
|
+
* - **standard** (default): 64dp height, flat surface color, bottom shadow.
|
|
18
|
+
* - **floating**: 4dp margin, rounded 8dp corners, elevated.
|
|
19
|
+
*
|
|
20
|
+
* Slots:
|
|
21
|
+
* - default: title / center content.
|
|
22
|
+
* - leading: navigation icon/button.
|
|
23
|
+
* - trailing: action icons/buttons.
|
|
24
|
+
* - action-button: floating action button (moni-fab) anchored right.
|
|
25
|
+
*
|
|
26
|
+
* Attributes:
|
|
27
|
+
* - type: standard (default) | floating
|
|
28
|
+
* - scroll: true | false (default). When true, elevation increases on scroll.
|
|
29
|
+
*/
|
|
30
|
+
let MoniToolbar = class MoniToolbar extends MoniElement {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.type = 'standard';
|
|
34
|
+
this.scrolled = false;
|
|
35
|
+
this.title = '';
|
|
36
|
+
}
|
|
37
|
+
static { this.styles = [
|
|
38
|
+
sharedStyles,
|
|
39
|
+
css `
|
|
40
|
+
:host {
|
|
41
|
+
display: block;
|
|
42
|
+
position: relative;
|
|
43
|
+
z-index: var(--z-index-toolbar, 1000);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.container {
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
gap: 1rem;
|
|
50
|
+
block-size: 4rem;
|
|
51
|
+
padding-inline: 0.25rem;
|
|
52
|
+
padding-block: 0.5rem;
|
|
53
|
+
background-color: var(--surface-container);
|
|
54
|
+
color: var(--on-surface);
|
|
55
|
+
font-family: var(--font);
|
|
56
|
+
transition: box-shadow var(--speed2), background-color var(--speed2);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:host([type='standard']) .container {
|
|
60
|
+
box-shadow: var(--shadow1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:host([type='floating']) .container {
|
|
64
|
+
margin: 0.25rem;
|
|
65
|
+
border-radius: 0.5rem;
|
|
66
|
+
box-shadow: var(--shadow2);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:host([type='standard'][scroll]) .container {
|
|
70
|
+
box-shadow: var(--shadow3);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.leading,
|
|
74
|
+
.trailing {
|
|
75
|
+
display: inline-flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
gap: 0.25rem;
|
|
78
|
+
flex: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.title {
|
|
82
|
+
flex: auto;
|
|
83
|
+
font-size: 1.375rem;
|
|
84
|
+
line-height: 1.75rem;
|
|
85
|
+
font-weight: 400;
|
|
86
|
+
white-space: nowrap;
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
text-overflow: ellipsis;
|
|
89
|
+
padding-inline-start: 0.75rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
::slotted([slot='action-button']) {
|
|
93
|
+
position: absolute;
|
|
94
|
+
inset-block-end: -1.75rem;
|
|
95
|
+
inset-inline-end: 1rem;
|
|
96
|
+
z-index: 1;
|
|
97
|
+
}
|
|
98
|
+
`
|
|
99
|
+
]; }
|
|
100
|
+
render() {
|
|
101
|
+
return html `
|
|
102
|
+
<header class="container" part="container">
|
|
103
|
+
<span class="leading" part="leading"><slot name="leading"></slot></span>
|
|
104
|
+
<span class="title" part="title">
|
|
105
|
+
${this.title || html `<slot></slot>`}
|
|
106
|
+
</span>
|
|
107
|
+
<span class="trailing" part="trailing">
|
|
108
|
+
<slot name="trailing"></slot>
|
|
109
|
+
</span>
|
|
110
|
+
</header>
|
|
111
|
+
<slot name="action-button"></slot>
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
__decorate([
|
|
116
|
+
property({ reflect: true })
|
|
117
|
+
], MoniToolbar.prototype, "type", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
property({ type: Boolean, reflect: true, attribute: 'scroll' })
|
|
120
|
+
], MoniToolbar.prototype, "scrolled", void 0);
|
|
121
|
+
__decorate([
|
|
122
|
+
property({ reflect: true })
|
|
123
|
+
], MoniToolbar.prototype, "title", void 0);
|
|
124
|
+
MoniToolbar = __decorate([
|
|
125
|
+
customElement('moni-toolbar')
|
|
126
|
+
], MoniToolbar);
|
|
127
|
+
export { MoniToolbar };
|
|
128
|
+
export default MoniToolbar;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MoniElement } from './_base/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tooltip that faithfully ports BeerCSS's `.tooltip` styles and adds M3
|
|
4
|
+
* Expressive semantics.
|
|
5
|
+
*
|
|
6
|
+
* **M3 spec** (`m3-docs/components/tooltips/specs.md`):
|
|
7
|
+
* - Two types: **plain** (text only) and **rich** (HTML content).
|
|
8
|
+
* - 6 placements: top, top-start, top-end, bottom, bottom-start, bottom-end.
|
|
9
|
+
* - Trigger: hover (mouse) or focus (keyboard) on the parent.
|
|
10
|
+
* - Auto-dismiss: tooltip hides on `mouseleave` / `focusout` / `Escape`.
|
|
11
|
+
*
|
|
12
|
+
* The component delegates trigger detection to the parent element (consistent
|
|
13
|
+
* with the original BeerCSS port). The tooltip element is `position: absolute`
|
|
14
|
+
* inside the parent so it follows the trigger naturally.
|
|
15
|
+
*
|
|
16
|
+
* **Accessibility**:
|
|
17
|
+
* - The tooltip has `role="tooltip"` (M3 spec).
|
|
18
|
+
* - When `rich` content is used, the parent should also have
|
|
19
|
+
* `aria-describedby="<tooltip-id>"`. The component sets a unique `id` on
|
|
20
|
+
* the tooltip element and exposes it via `tooltipId` getter.
|
|
21
|
+
* - `Escape` closes the tooltip (WAI-ARIA tooltip pattern).
|
|
22
|
+
*
|
|
23
|
+
* Attributes:
|
|
24
|
+
* - text: tooltip text (plain tooltip)
|
|
25
|
+
* - position: top (default) | top-start | top-end | bottom | bottom-start | bottom-end
|
|
26
|
+
* - size: '' (default) | small | medium | large
|
|
27
|
+
* - rich: boolean — when true, the default slot accepts arbitrary HTML
|
|
28
|
+
* for rich content (links, icons, etc.). When false (default),
|
|
29
|
+
* the slot is rendered as text only.
|
|
30
|
+
* - id: forwarded to the tooltip element (useful for aria-describedby)
|
|
31
|
+
*/
|
|
32
|
+
export declare class MoniTooltip extends MoniElement {
|
|
33
|
+
text: string;
|
|
34
|
+
position: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';
|
|
35
|
+
size: '' | 'small' | 'medium' | 'large';
|
|
36
|
+
rich: boolean;
|
|
37
|
+
private _target;
|
|
38
|
+
private _tooltipEl;
|
|
39
|
+
private _docKeydown;
|
|
40
|
+
/**
|
|
41
|
+
* CSS `anchor-name` registered on the parent trigger so the tooltip
|
|
42
|
+
* can use `position-anchor` to bind to it. Generated per-instance via
|
|
43
|
+
* `crypto.randomUUID()` when CSS anchor positioning is supported.
|
|
44
|
+
*/
|
|
45
|
+
private _anchorName;
|
|
46
|
+
connectedCallback(): void;
|
|
47
|
+
disconnectedCallback(): void;
|
|
48
|
+
private _show;
|
|
49
|
+
private _hide;
|
|
50
|
+
private _handleDocKeydown;
|
|
51
|
+
/**
|
|
52
|
+
* Public ID of the tooltip element, suitable for `aria-describedby` on
|
|
53
|
+
* the trigger parent. Auto-generated if the consumer did not set `id`.
|
|
54
|
+
*/
|
|
55
|
+
get tooltipId(): string;
|
|
56
|
+
static styles: import("lit").CSSResult[];
|
|
57
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
58
|
+
}
|
|
59
|
+
declare global {
|
|
60
|
+
interface HTMLElementTagNameMap {
|
|
61
|
+
'moni-tooltip': MoniTooltip;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export default MoniTooltip;
|
|
65
|
+
//# sourceMappingURL=moni-tooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moni-tooltip.d.ts","sourceRoot":"","sources":["../../src/components/moni-tooltip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,WAAY,SAAQ,WAAW;IACd,IAAI,SAAM;IAEvC,QAAQ,EACL,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,CAAS;IAExB,IAAI,EAAE,EAAE,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAM;IACD,IAAI,UAAS;IAEzD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,WAAW,CAAmD;IACtE;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAuB;IAEjC,iBAAiB;IAoCjB,oBAAoB;IAe7B,OAAO,CAAC,KAAK,CAOX;IAEF,OAAO,CAAC,KAAK,CAOX;IAEF,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAgB,MAAM,4BA2JpB;IAEO,MAAM;CAgBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, css } from 'lit';
|
|
8
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
+
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Tooltip that faithfully ports BeerCSS's `.tooltip` styles and adds M3
|
|
12
|
+
* Expressive semantics.
|
|
13
|
+
*
|
|
14
|
+
* **M3 spec** (`m3-docs/components/tooltips/specs.md`):
|
|
15
|
+
* - Two types: **plain** (text only) and **rich** (HTML content).
|
|
16
|
+
* - 6 placements: top, top-start, top-end, bottom, bottom-start, bottom-end.
|
|
17
|
+
* - Trigger: hover (mouse) or focus (keyboard) on the parent.
|
|
18
|
+
* - Auto-dismiss: tooltip hides on `mouseleave` / `focusout` / `Escape`.
|
|
19
|
+
*
|
|
20
|
+
* The component delegates trigger detection to the parent element (consistent
|
|
21
|
+
* with the original BeerCSS port). The tooltip element is `position: absolute`
|
|
22
|
+
* inside the parent so it follows the trigger naturally.
|
|
23
|
+
*
|
|
24
|
+
* **Accessibility**:
|
|
25
|
+
* - The tooltip has `role="tooltip"` (M3 spec).
|
|
26
|
+
* - When `rich` content is used, the parent should also have
|
|
27
|
+
* `aria-describedby="<tooltip-id>"`. The component sets a unique `id` on
|
|
28
|
+
* the tooltip element and exposes it via `tooltipId` getter.
|
|
29
|
+
* - `Escape` closes the tooltip (WAI-ARIA tooltip pattern).
|
|
30
|
+
*
|
|
31
|
+
* Attributes:
|
|
32
|
+
* - text: tooltip text (plain tooltip)
|
|
33
|
+
* - position: top (default) | top-start | top-end | bottom | bottom-start | bottom-end
|
|
34
|
+
* - size: '' (default) | small | medium | large
|
|
35
|
+
* - rich: boolean — when true, the default slot accepts arbitrary HTML
|
|
36
|
+
* for rich content (links, icons, etc.). When false (default),
|
|
37
|
+
* the slot is rendered as text only.
|
|
38
|
+
* - id: forwarded to the tooltip element (useful for aria-describedby)
|
|
39
|
+
*/
|
|
40
|
+
let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
41
|
+
constructor() {
|
|
42
|
+
super(...arguments);
|
|
43
|
+
this.text = '';
|
|
44
|
+
this.position = 'top';
|
|
45
|
+
this.size = '';
|
|
46
|
+
this.rich = false;
|
|
47
|
+
this._target = null;
|
|
48
|
+
this._tooltipEl = null;
|
|
49
|
+
this._docKeydown = (e) => this._handleDocKeydown(e);
|
|
50
|
+
/**
|
|
51
|
+
* CSS `anchor-name` registered on the parent trigger so the tooltip
|
|
52
|
+
* can use `position-anchor` to bind to it. Generated per-instance via
|
|
53
|
+
* `crypto.randomUUID()` when CSS anchor positioning is supported.
|
|
54
|
+
*/
|
|
55
|
+
this._anchorName = null;
|
|
56
|
+
this._show = () => {
|
|
57
|
+
if (!this._tooltipEl) {
|
|
58
|
+
this._tooltipEl = this.shadowRoot?.querySelector('.tooltip');
|
|
59
|
+
}
|
|
60
|
+
if (this._tooltipEl) {
|
|
61
|
+
this._tooltipEl.classList.add('visible');
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
this._hide = () => {
|
|
65
|
+
if (!this._tooltipEl) {
|
|
66
|
+
this._tooltipEl = this.shadowRoot?.querySelector('.tooltip');
|
|
67
|
+
}
|
|
68
|
+
if (this._tooltipEl) {
|
|
69
|
+
this._tooltipEl.classList.remove('visible');
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
connectedCallback() {
|
|
74
|
+
super.connectedCallback();
|
|
75
|
+
this._target = this.parentElement;
|
|
76
|
+
if (this._target) {
|
|
77
|
+
// Ensure parent has position: relative so absolute tooltip is anchored
|
|
78
|
+
const style = getComputedStyle(this._target);
|
|
79
|
+
if (style.position === 'static') {
|
|
80
|
+
this._target.style.position = 'relative';
|
|
81
|
+
}
|
|
82
|
+
this._target.addEventListener('mouseenter', this._show);
|
|
83
|
+
this._target.addEventListener('focusin', this._show);
|
|
84
|
+
this._target.addEventListener('mouseleave', this._hide);
|
|
85
|
+
this._target.addEventListener('focusout', this._hide);
|
|
86
|
+
// Auto-register a CSS anchor name on the parent trigger when the
|
|
87
|
+
// browser supports anchor positioning. Consumers can opt out by
|
|
88
|
+
// setting `data-no-anchor` on the trigger.
|
|
89
|
+
const cssSupports = globalThis.CSS?.supports;
|
|
90
|
+
const supportsAnchor = cssSupports
|
|
91
|
+
? cssSupports.call(window.CSS, 'anchor-name: --x')
|
|
92
|
+
: false;
|
|
93
|
+
if (supportsAnchor && !this._target.hasAttribute('data-no-anchor')) {
|
|
94
|
+
const cryptoApi = globalThis.crypto;
|
|
95
|
+
const id = cryptoApi?.randomUUID?.()
|
|
96
|
+
?? `tt-${Math.random().toString(36).slice(2, 10)}`;
|
|
97
|
+
this._anchorName = `--moni-tooltip-anchor-${id}`;
|
|
98
|
+
this._target.style.setProperty('anchor-name', this._anchorName);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
document.addEventListener('keydown', this._docKeydown);
|
|
102
|
+
}
|
|
103
|
+
disconnectedCallback() {
|
|
104
|
+
if (this._target) {
|
|
105
|
+
this._target.removeEventListener('mouseenter', this._show);
|
|
106
|
+
this._target.removeEventListener('focusin', this._show);
|
|
107
|
+
this._target.removeEventListener('mouseleave', this._hide);
|
|
108
|
+
this._target.removeEventListener('focusout', this._hide);
|
|
109
|
+
if (this._anchorName) {
|
|
110
|
+
this._target.style.removeProperty('anchor-name');
|
|
111
|
+
this._anchorName = null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
document.removeEventListener('keydown', this._docKeydown);
|
|
115
|
+
super.disconnectedCallback();
|
|
116
|
+
}
|
|
117
|
+
_handleDocKeydown(e) {
|
|
118
|
+
if (e.key !== 'Escape')
|
|
119
|
+
return;
|
|
120
|
+
if (!this._tooltipEl?.classList.contains('visible'))
|
|
121
|
+
return;
|
|
122
|
+
this._hide();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Public ID of the tooltip element, suitable for `aria-describedby` on
|
|
126
|
+
* the trigger parent. Auto-generated if the consumer did not set `id`.
|
|
127
|
+
*/
|
|
128
|
+
get tooltipId() {
|
|
129
|
+
return this._tooltipEl?.id || '';
|
|
130
|
+
}
|
|
131
|
+
static { this.styles = [
|
|
132
|
+
sharedStyles,
|
|
133
|
+
css `
|
|
134
|
+
:host {
|
|
135
|
+
display: contents;
|
|
136
|
+
font-family: var(--font);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* M3 CSS anchor positioning (Baseline 2024, Chrome 125+, Edge 125+).
|
|
140
|
+
When the parent has a registered anchor-name and this tooltip
|
|
141
|
+
uses position-anchor, the browser positions the tooltip relative
|
|
142
|
+
to the trigger natively — no JS needed for placement.
|
|
143
|
+
Fallbacks to absolute positioning for older browsers. */
|
|
144
|
+
.tooltip {
|
|
145
|
+
position-anchor: var(--_anchor-name);
|
|
146
|
+
}
|
|
147
|
+
.tooltip.top,
|
|
148
|
+
.tooltip.top-start,
|
|
149
|
+
.tooltip.top-end {
|
|
150
|
+
position-area: block-start;
|
|
151
|
+
}
|
|
152
|
+
.tooltip.bottom,
|
|
153
|
+
.tooltip.bottom-start,
|
|
154
|
+
.tooltip.bottom-end {
|
|
155
|
+
position-area: block-end;
|
|
156
|
+
}
|
|
157
|
+
.tooltip.left {
|
|
158
|
+
position-area: inline-start;
|
|
159
|
+
}
|
|
160
|
+
.tooltip.right {
|
|
161
|
+
position-area: inline-end;
|
|
162
|
+
}
|
|
163
|
+
.tooltip.top-start,
|
|
164
|
+
.tooltip.bottom-start {
|
|
165
|
+
position-try-fallbacks: start;
|
|
166
|
+
}
|
|
167
|
+
.tooltip.top-end,
|
|
168
|
+
.tooltip.bottom-end {
|
|
169
|
+
position-try-fallbacks: end;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* BeerCSS .tooltip — faithful port */
|
|
173
|
+
.tooltip {
|
|
174
|
+
--_space: -0.5rem;
|
|
175
|
+
visibility: hidden;
|
|
176
|
+
display: flex;
|
|
177
|
+
align-items: center;
|
|
178
|
+
justify-content: center;
|
|
179
|
+
gap: 0.5rem;
|
|
180
|
+
background-color: var(--inverse-surface);
|
|
181
|
+
color: var(--inverse-on-surface);
|
|
182
|
+
font-size: 0.75rem;
|
|
183
|
+
text-align: center;
|
|
184
|
+
border-radius: 0.25rem;
|
|
185
|
+
padding: 0.5rem;
|
|
186
|
+
position: absolute;
|
|
187
|
+
z-index: 200;
|
|
188
|
+
/* BeerCSS default: top center */
|
|
189
|
+
inset: 0 auto auto 50%;
|
|
190
|
+
inline-size: auto;
|
|
191
|
+
white-space: nowrap;
|
|
192
|
+
font-weight: 500;
|
|
193
|
+
opacity: 0;
|
|
194
|
+
transition: all var(--speed2);
|
|
195
|
+
line-height: normal;
|
|
196
|
+
transform: translate(-50%, -100%) scale(0.9);
|
|
197
|
+
margin-block-start: var(--_space);
|
|
198
|
+
pointer-events: none;
|
|
199
|
+
max-inline-size: 20rem;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/* M3 6 placements — derived from BeerCSS's 4 + start/end variants. */
|
|
203
|
+
.tooltip.top,
|
|
204
|
+
.tooltip.top-start,
|
|
205
|
+
.tooltip.top-end {
|
|
206
|
+
inset: 0 auto auto 50%;
|
|
207
|
+
transform: translate(-50%, -100%) scale(0.9);
|
|
208
|
+
margin-block-start: var(--_space);
|
|
209
|
+
}
|
|
210
|
+
.tooltip.top-start {
|
|
211
|
+
inset-inline-start: 0;
|
|
212
|
+
transform: translate(0, -100%) scale(0.9);
|
|
213
|
+
}
|
|
214
|
+
.tooltip.top-end {
|
|
215
|
+
inset-inline-start: auto;
|
|
216
|
+
inset-inline-end: 0;
|
|
217
|
+
transform: translate(0, -100%) scale(0.9);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.tooltip.bottom,
|
|
221
|
+
.tooltip.bottom-start,
|
|
222
|
+
.tooltip.bottom-end {
|
|
223
|
+
inset: auto auto 0 50%;
|
|
224
|
+
transform: translate(-50%, 100%) scale(0.9);
|
|
225
|
+
margin-block-end: var(--_space);
|
|
226
|
+
margin-block-start: 0;
|
|
227
|
+
}
|
|
228
|
+
.tooltip.bottom-start {
|
|
229
|
+
inset-inline-start: 0;
|
|
230
|
+
transform: translate(0, 100%) scale(0.9);
|
|
231
|
+
}
|
|
232
|
+
.tooltip.bottom-end {
|
|
233
|
+
inset-inline-start: auto;
|
|
234
|
+
inset-inline-end: 0;
|
|
235
|
+
transform: translate(0, 100%) scale(0.9);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Legacy positions (left/right) — preserved for backward compat. */
|
|
239
|
+
.tooltip.left {
|
|
240
|
+
inset: 50% auto auto 0;
|
|
241
|
+
transform: translate(-100%, -50%) scale(0.9);
|
|
242
|
+
margin-inline: var(--_space);
|
|
243
|
+
margin-block-start: 0;
|
|
244
|
+
}
|
|
245
|
+
.tooltip.right {
|
|
246
|
+
inset: 50% 0 auto auto;
|
|
247
|
+
transform: translate(100%, -50%) scale(0.9);
|
|
248
|
+
margin-inline: var(--_space);
|
|
249
|
+
margin-block-start: 0;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Size variants */
|
|
253
|
+
.tooltip.small { inline-size: 8rem; white-space: normal; }
|
|
254
|
+
.tooltip.medium { inline-size: 12rem; white-space: normal; }
|
|
255
|
+
.tooltip.large { inline-size: 16rem; white-space: normal; }
|
|
256
|
+
|
|
257
|
+
/* Rich content — allow flex column for stacked content. */
|
|
258
|
+
:host([rich]) .tooltip {
|
|
259
|
+
flex-direction: column;
|
|
260
|
+
align-items: flex-start;
|
|
261
|
+
white-space: normal;
|
|
262
|
+
text-align: start;
|
|
263
|
+
padding: 0.75rem;
|
|
264
|
+
}
|
|
265
|
+
:host([rich]) .tooltip ::slotted(*) {
|
|
266
|
+
display: block;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/* Show state (triggered by JS class toggle) */
|
|
270
|
+
.tooltip.visible {
|
|
271
|
+
visibility: visible;
|
|
272
|
+
opacity: 1;
|
|
273
|
+
}
|
|
274
|
+
.tooltip.visible.top,
|
|
275
|
+
.tooltip.visible:not(.left, .right, .bottom, [class*='start'], [class*='end']) {
|
|
276
|
+
transform: translate(-50%, -100%) scale(1);
|
|
277
|
+
}
|
|
278
|
+
.tooltip.visible.top-start { transform: translate(0, -100%) scale(1); }
|
|
279
|
+
.tooltip.visible.top-end { transform: translate(0, -100%) scale(1); }
|
|
280
|
+
.tooltip.visible.bottom { transform: translate(-50%, 100%) scale(1); }
|
|
281
|
+
.tooltip.visible.bottom-start { transform: translate(0, 100%) scale(1); }
|
|
282
|
+
.tooltip.visible.bottom-end { transform: translate(0, 100%) scale(1); }
|
|
283
|
+
.tooltip.visible.left { transform: translate(-100%, -50%) scale(1); }
|
|
284
|
+
.tooltip.visible.right { transform: translate(100%, -50%) scale(1); }
|
|
285
|
+
`
|
|
286
|
+
]; }
|
|
287
|
+
render() {
|
|
288
|
+
const classes = [
|
|
289
|
+
'tooltip',
|
|
290
|
+
this.position,
|
|
291
|
+
this.size
|
|
292
|
+
].filter(Boolean).join(' ');
|
|
293
|
+
return html `<div
|
|
294
|
+
class=${classes}
|
|
295
|
+
role="tooltip"
|
|
296
|
+
id=${this.id || ''}
|
|
297
|
+
part="tooltip"
|
|
298
|
+
style=${this._anchorName ? `--_anchor-name: ${this._anchorName}` : ''}
|
|
299
|
+
>
|
|
300
|
+
<slot>${this.text}</slot>
|
|
301
|
+
</div>`;
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
__decorate([
|
|
305
|
+
property({ reflect: true })
|
|
306
|
+
], MoniTooltip.prototype, "text", void 0);
|
|
307
|
+
__decorate([
|
|
308
|
+
property({ reflect: true })
|
|
309
|
+
], MoniTooltip.prototype, "position", void 0);
|
|
310
|
+
__decorate([
|
|
311
|
+
property({ reflect: true })
|
|
312
|
+
], MoniTooltip.prototype, "size", void 0);
|
|
313
|
+
__decorate([
|
|
314
|
+
property({ type: Boolean, reflect: true })
|
|
315
|
+
], MoniTooltip.prototype, "rich", void 0);
|
|
316
|
+
MoniTooltip = __decorate([
|
|
317
|
+
customElement('moni-tooltip')
|
|
318
|
+
], MoniTooltip);
|
|
319
|
+
export { MoniTooltip };
|
|
320
|
+
export default MoniTooltip;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { MoniElement } from './_base/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Material 3 Typography (`m3-docs/components/`).
|
|
4
|
+
*
|
|
5
|
+
* Renders a single piece of text using the M3 type scale. The component
|
|
6
|
+
* chooses both the semantic tag and the typography class based on the
|
|
7
|
+
* `variant` attribute. Consumers can override the tag via `as`.
|
|
8
|
+
*
|
|
9
|
+
* M3 type scale (5 categories, 3 sizes each):
|
|
10
|
+
* - **display**: largest text, used for marketing or hero content.
|
|
11
|
+
* - **headline**: page-level headings (H1 equivalent).
|
|
12
|
+
* - **title**: section headings, dialog titles.
|
|
13
|
+
* - **body**: paragraph text.
|
|
14
|
+
* - **label**: button text, captions.
|
|
15
|
+
*
|
|
16
|
+
* Each category has `large`, `medium`, and `small` sizes (per M3 spec).
|
|
17
|
+
*
|
|
18
|
+
* Attributes:
|
|
19
|
+
* - variant: display | headline | title | body | label (default body)
|
|
20
|
+
* - size: large | medium | small (default medium)
|
|
21
|
+
* - as: override the rendered tag (e.g. "span", "p", "label")
|
|
22
|
+
*
|
|
23
|
+
* Slots:
|
|
24
|
+
* - default: text content (falls back to `text` attribute if empty)
|
|
25
|
+
*/
|
|
26
|
+
export declare class MoniTypography extends MoniElement {
|
|
27
|
+
variant: 'display' | 'headline' | 'title' | 'body' | 'label';
|
|
28
|
+
size: 'large' | 'medium' | 'small';
|
|
29
|
+
as: string | null;
|
|
30
|
+
text: string;
|
|
31
|
+
/** Default semantic tag for each variant per M3 spec. */
|
|
32
|
+
private static _tagFor;
|
|
33
|
+
render(): import("lit-html").TemplateResult;
|
|
34
|
+
static styles: import("lit").CSSResult[];
|
|
35
|
+
}
|
|
36
|
+
declare global {
|
|
37
|
+
interface HTMLElementTagNameMap {
|
|
38
|
+
'moni-typography': MoniTypography;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export default MoniTypography;
|
|
42
|
+
//# sourceMappingURL=moni-typography.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moni-typography.d.ts","sourceRoot":"","sources":["../../src/components/moni-typography.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,cAAe,SAAQ,WAAW;IAE9C,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAU;IAEtE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9C,EAAE,EAAE,MAAM,GAAG,IAAI,CAAQ;IACI,IAAI,SAAM;IAEvC,yDAAyD;IACzD,OAAO,CAAC,MAAM,CAAC,OAAO;IAiBb,MAAM;IAcf,OAAgB,MAAM,4BAkHpB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,iBAAiB,EAAE,cAAc,CAAC;KAClC;CACD;AAED,eAAe,cAAc,CAAC"}
|